PyPackIT#
PyPackIT [ˈpaɪˌpækɪt] is a comprehensive cloud-based automation tool for production of FAIR and professional software on GitHub, in accordance with the latest engineering best practices and standards. It is a ready-to-use software suite that streamlines the initiation, configuration, development, publication, management, and maintenance of high-quality software libraries in Python. By taking charge of repetitive tasks and automatically enforcing best practices throughout the software development life-cycle, PyPackIT enables its users to solely focus on the creative aspects of their projects, while improving quality and lowering production costs. Using state-of-the-art tools and methodologies, PyPackIT offers a robust project infrastructure, including a build-ready Python package skeleton, a fully operational test suite, a complete documentation website, and a comprehensive control center facilitating Continuous Configuration Automation (CCA) and dynamic project management. PyPackIT establishes a complete cloud-native development environment on GitHub, integrating with its version control system, issue tracker, and pull-based model to provide a fully automated software development workflow, complete with features like issue management, branching model, and version scheme. Leveraging GitHub Actions (GHA), PyPackIT implements a cloud-native development process with specialized Continuous Integration (CI), Deployment (CD), Testing (CT), Refactoring (CR), and Maintenance (CM) pipelines, using Agile, Continuous software engineering, and DevOps methodologies. PyPackIT is a free and open-source software suite that readily integrates with both new and existing projects to ensure their long-term sustainability and high quality, thus enabling developers to rapidly implement their ideas and easily maintain their software.
PyPackIT is fully preconfigured and readily installed in both new and existing repositories, requiring most users to only fill project-specific metadata. PyPackIT then takes over, automatically setting up the repository and generating a complete infrastructure for the project where the only remaining steps software development process are adding your code, unit-tests and documentation content.
While fully configured out of the box, PyPackIT is highly customizable, allowing users to tailor every aspect of their project and development pipeline to their specific needs. PyPackIT’s control center provides detailed configuration options in a declarative format, while enabling the dynamic generation of custom specifications and metadata during runtime. All these can be used to generate and augment other files, rendering the entire project dynamic and eliminating redundancy.
PyPackIT is a cloud-based solution that integrates with GitHub and uses GitHub Actions to automate the software development process. It provides a cloud-native development environment that eliminates the need for initial setup and configuration, enabling users to immediately begin the actual implementation of software, even directly from the web browser. This promotes collaboration, which is essential for project sustainability.
PyPackIT provides a centralized user interface based on DevOps practices like Infrastructure-as-Code (IaC) to enable Continuous Configuration Automation (CCA) for the entire project. PyPackIT’s control center simplifies project configuration, customization, and management via automatic data templating and augmentation, cross-repository inheritance, and synchronization features that instantly apply modifications to all project components.
PyPackIT includes a fully-configured and build-ready package skeleton automatically maintained via the control center. Users only need to add application code in the provided source files, while PyPackIT automates all integration, packaging, and deployment tasks. To facilitate software findability and usage, each new release is published to GitHub, PyPI, and Zenodo, with a persistent DOI ensuring reproducibility and reliable citations.
PyPackIT’s fully operational testing infrastructure enables the immediate adoption of test-driven methodologies, requiring users to only provide test cases in the provided skeleton. Testing is then automatically performed throughout the development life-cycle, while improving awareness of software health status via notifications and reports. The test suite is automatically packaged and distributed along each release, allowing for verification of software functionality and performance by its users.
PyPackIT offers an automated solution for maintaining a comprehensive documentation website, requiring users to simply provide docstrings. A fully designed website is included, prefilled with content that is automatically customized with project-specific information and continuously complemented throughout the development process. The website is automatically deployed to GitHub Pages and ReadTheDocs, requiring no web development knowledge.
PyPackIT fully integrates with Git to automate tasks like branch and commit management, versioning, tagging, and merging. It implements a specialized branching model and version scheme for simultaneous publication and support of multiple releases, thus enabling rapid project evolution according to Agile and Continuous software engineering methodologies, while ensuring the availability and sustainability of earlier releases.
PyPackIT dynamically maintains the project’s issue tracking system, providing type-specific submission forms designed according to best practices. These collect user inputs in a structured and machine-readable format, allowing PyPackIT to automate issue management activities such as ticket formatting, labeling and organization, task assignment, design documentation, issue–commit linkage, and progress monitoring. PyPackIT can also execute tests from issue comments, greatly simplifying bug triage.
PyPackIT’s CI/CD pipelines automate tasks such as code style formatting, static code analysis, type checking, testing, dependency monitoring, versioning, packaging, build, release, and distribution. They eliminate the need for dedicated integration and deployment teams, while increasing control, integrity, scalability, security, and transparency of the Agile development process.
PyPackIT ensures long-term project sustainability by periodically performs automated testing, refactoring, and maintenance tasks such as testing previous releases with updated dependencies, analyzing and formatting code according to the latest standards, upgrading development tools and project infrastructure, and maintaining the health of the project and its development environment by automatically creating issues and pull requests for applying updates and fixes.
PyPackIT is fully integrated with the SPDX license standard and supports all SPDX License List entries as well as user-defined licenses. Projects can define complex licenses simply by providing an SPDX expression. PyPackIT will then automatically retrieve the required license data, customize it with project-specific information, produce visually appealing and valid license files, and integrate license information into all project components and releases.
PyPackIT improves project security while supporting community collaboration by incorporating security measures like branch/tag protection, vulnerability scanning, dependency monitoring, and private security advisories. All workflows and Actions are developed according to the latest security standards to prevent unauthorized access, data breaches, and code injection attacks. To ensure that PyPackIT itself is highly secure, its entire infrastructure is natively implemented and self-contained.
Start off with the introduction section to learn more about PyPackIT’s motivations, objectives and capabilities. This section offers a high-level overview of PyPackIT, highlighting its main features, the challenges they address, and the value they bring to your projects. Serving as an excellent starting point for new users, it also provides a summary of fundamental concepts and background information that are essential to fully understanding and utilizing PyPackIT.
Dive into the user manual for in-depth information on the key concepts of PyPackIT, along with detailed explanations of all its features and functionalities. From step-by-step instructions on setting up PyPackIT for the first time and integrating it into your new or existing project, to comprehensive guides on how to use its various features and functionalities in your software development process, the user manual covers everything you need to know to fully leverage PyPackIT’s capabilities.
Check out our blog to stay up to date with the latest announcements and developments of the PyPackIT project. This section keeps you informed about PyPackIT’s new releases with detailed changelogs, and provides insights into the project’s roadmap and the team’s plans for the future of PyPackIT. Being the main source of information about PyPackIT’s latest developments, the news section is a full-fledged blog with RSS feed support that you can subscribe to, so you never miss out on any important updates.
PyPackIT is a free and open-source project that can only survive and grow through the help and support of great members like you. If you are interested in joining the PyPackIT community, head over to our contribution guide to learn more about how you can help. From sharing feedback and ideas or becoming a collaborator and helping us develop the project, to spreading the word and helping us reach more people or becoming a sponsor and supporting the project financially, we highly appreciate all your contributions!
Learn more about the team behind PyPackIT and the project’s history. The About section offers insights into our mission, core values, and the dedication driving PyPackIT’s success.
The Help section is your go-to resource for assistance with any challenges you encounter. Explore FAQs, troubleshoot common issues, and connect with our support team for personalized solutions.