Hello everyone. Sorry for the delayed response. I...
# welcome
Hello everyone. Sorry for the delayed response. I'm Alireza Roshanzamir, software engineer and QA technical lead at a company called Mahsan. Some of the activities that my team does include: - Developing system/acceptance/deployment test framework using Python. - Research and development of practices and tools for requirement engineering and traceability. - Developing generic infrastructure management application to support creation/deletion, logical/physical resource management, and unique interface protocol for each environment (such as development, test, and production) of company products. - Providing system/acceptance/deployment test best practices. - Defining QA metrics and developing some tools for automatic measuring. - Providing Jenkins CI infrastructure and best practices for all the teams. - Providing the necessary training to achieve high-quality code/programmer/architecture. We are deciding to make our company Pythons' projects Pants compatible. The main reason for this migration is to avoid too many files and tools when developing code and managing the interdependence between projects: 1. Tox (tox.ini) for virtual environment manipulation, clean task execution, and multi-python version testing. 2. Many requirements.in (installation, development, type-check, format, ...) in editable/non-editable versions. They install first-party dependencies using the flags for relative Python projects and requirements.txt installation (which has an inconsistent relative path resolution between relative requirements.in and relative Python project). 3. Setuptools (setup.py) for packaging which reads one of the requirements.in files for preventing duplication. 4. Makefile for some virtual environment independent tasks and a single-point-of-entry for task running. Also, automatic installation of non-Python dependencies (such as Docker images) is handled using Makefiles. 5. Flake8, isort, mypy, and pytest tools and corresponding config files. However, the config files can be put in a single file (such as tox.ini). 6. Lock files and Pip-tools for dependency pinning. 7. There is also a Makefile at the root of the repository to run tasks in parallel on projects that support them. 8. Some other files and tools (such as Twine, Jenkins/Jenkinsfile, MANIFEST.in, sphinx-build, etc). For novice developers, there are many tools and flows to learn for starting development. So, we decided to minimize and integrate these numerous technologies and internal practices. I find the Pants by googling "python monorepo". Sorry for the long description 🙂
👋 5