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 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 in the 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. These can be used to generate and augment other configurations and 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.
Project Initialization
This is an initial emtpy release.
Project | |
Health | |
Standards | |
Downloads | |
Users | |
Issues | |
PRs | |
Commits | |
Discussions | |
Community | |
DevOps |
PyPackIT was developed in Volkamer Lab.