pyproject-ops


Namepyproject-ops JSON
Version 0.8.1 PyPI version JSON
download
home_pagehttps://github.com/MacHu-GWU/pyproject_ops-project
SummaryPython project Ops automation.
upload_time2024-01-14 16:49:00
maintainerSanhe Hu
docs_urlNone
authorSanhe Hu
requires_python>=3.7
licenseMIT
keywords
VCS
bugtrack_url
requirements fire pathlib_mate cached-property
Travis-CI No Travis.
coveralls test coverage
            
.. .. image:: https://readthedocs.org/projects/pyproject_ops/badge/?version=latest
    :target: https://pyproject-ops.readthedocs.io/index.html
    :alt: Documentation Status

.. image:: https://github.com/MacHu-GWU/pyproject_ops-project/workflows/CI/badge.svg
    :target: https://github.com/MacHu-GWU/pyproject_ops-project/actions?query=workflow:CI

.. .. image:: https://codecov.io/gh/MacHu-GWU/pyproject_ops-project/branch/main/graph/badge.svg
    :target: https://codecov.io/gh/MacHu-GWU/pyproject_ops-project

.. image:: https://img.shields.io/pypi/v/pyproject_ops.svg
    :target: https://pypi.python.org/pypi/pyproject_ops

.. image:: https://img.shields.io/pypi/l/pyproject_ops.svg
    :target: https://pypi.python.org/pypi/pyproject_ops

.. image:: https://img.shields.io/pypi/pyversions/pyproject_ops.svg
    :target: https://pypi.python.org/pypi/pyproject_ops

.. image:: https://img.shields.io/badge/release_history!--None.svg?style=social
    :target: https://github.com/MacHu-GWU/pyproject_ops-project/blob/main/release-history.rst

.. image:: https://img.shields.io/badge/STAR_Me_on_GitHub!--None.svg?style=social
    :target: https://github.com/MacHu-GWU/pyproject_ops-project

------

.. .. image:: https://img.shields.io/badge/Link-Document-blue.svg
    :target: https://pyproject-ops.readthedocs.io/index.html

.. .. image:: https://img.shields.io/badge/Link-API-blue.svg
    :target: https://pyproject-ops.readthedocs.io/py-modindex.html

.. .. image:: https://img.shields.io/badge/Link-Source_Code-blue.svg
    :target: https://pyproject-ops.readthedocs.io/py-modindex.html

.. image:: https://img.shields.io/badge/Link-Install-blue.svg
    :target: `install`_

.. image:: https://img.shields.io/badge/Link-GitHub-blue.svg
    :target: https://github.com/MacHu-GWU/pyproject_ops-project

.. image:: https://img.shields.io/badge/Link-Submit_Issue-blue.svg
    :target: https://github.com/MacHu-GWU/pyproject_ops-project/issues

.. image:: https://img.shields.io/badge/Link-Request_Feature-blue.svg
    :target: https://github.com/MacHu-GWU/pyproject_ops-project/issues

.. image:: https://img.shields.io/badge/Link-Download-blue.svg
    :target: https://pypi.org/pypi/pyproject_ops#files


Welcome to ``pyproject_ops`` Documentation
==============================================================================
.. image:: https://github.com/MacHu-GWU/pyproject_ops-project/assets/6800411/a5c05a80-04ff-4a29-b637-021b7320f581
    :target: https://github.com/MacHu-GWU/pyproject_ops-project


What is this project?
------------------------------------------------------------------------------
There are various folder structures for Python projects, each with its own merits. Drawing from my extensive Python career experience, I have developed a personal best practice. To streamline the creation of the codebase skeleton according to this practice, I have introduced a tool called `cookiecutter-pyproject <https://github.com/MacHu-GWU/cookiecutter-pyproject>`_.

By adopting this folder structure setup, ``pyproject_ops`` is an automation tool, capable of handling common tasks throughout the Python project development lifecycle. These tasks include "creating virtual environments", "installing dependencies", "running tests", "building documentation sites", and more.

This tool is, in essence, my secret weapon for efficiently managing over 120 Python open source projects, all available on PyPI at https://pypi.org/user/machugwu/. Each of these projects is equipped with essential features such as continuous integration (CI), code coverage testing, matrix testing, and documentation websites.

A little history about this project:

    I previously had an automation tool called `pygitrepo <https://github.com/MacHu-GWU/pygitrepo-project>`_ that was tailored to my former development workflow. ``pygitrepo`` primarily relied on ``setup.py`` and ``requirements.txt`` files. Even today, ``pyproject_ops`` continues to support the old convention while also accommodating ``pyproject.toml`` and ``poetry``. This versatility enables me to write less code when automating Python development workflows.


How to Use
------------------------------------------------------------------------------


Use as a CLI
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.. code-block:: bash

    $ pip install pyproject_ops
    $ pyops --help
    NAME
        pyops - python project ops command line interface.

    SYNOPSIS
        pyops COMMAND | <flags>

    DESCRIPTION
        python project ops command line interface.

    FLAGS
        -v, --version=VERSION
            Type: bool
            Default: False

    COMMANDS
        COMMAND is one of the following:

         build_doc
           ** ๐Ÿ“” Build documentation website locally

         build_doc_only
           ๐Ÿ“” Build documentation website locally without checking doc dependencies

         bump_version
           ๐Ÿ”ผ Bump semantic version.

         cov
           ** ๐Ÿงช Run code coverage test

         cov_only
           ๐Ÿงช Run code coverage test without checking test dependencies

         deploy_latest_doc
           ๐Ÿš€ ๐Ÿ“” Deploy Documentation Site To S3 as Latest Doc

         deploy_versioned_doc
           ๐Ÿš€ ๐Ÿ“” Deploy Documentation Site To S3 as Versioned Doc

         install
           ** ๐Ÿ’พ Install main dependencies and Package itself

         install_all
           ** ๐Ÿ’พ ๐Ÿ’ป ๐Ÿงช ๐Ÿ“” ๐Ÿค– Install All Dependencies

         install_automation
           ๐Ÿ’พ ๐Ÿค– Install Dependencies for Automation Script

         install_dev
           ๐Ÿ’พ ๐Ÿ’ป Install Development Dependencies

         install_doc
           ๐Ÿ’พ ๐Ÿ“” Install Document Dependencies

         install_test
           ๐Ÿ’พ ๐Ÿงช Install Test Dependencies

         int
           ** ๐Ÿงช Run integration test

         int_only
           ๐Ÿงช Run integration test without checking test dependencies

         poetry_export
           Export requirements-*.txt from poetry.lock file

         poetry_lock
           ** Resolve dependencies using poetry, update poetry.lock file

         publish
           ๐Ÿ“ฆ Publish package to PyPI

         test
           ** ๐Ÿงช Run test

         test_only
           ๐Ÿงช Run test without checking test dependencies

         venv_create
           ** ๐Ÿ Create Virtual Environment

         venv_remove
           ** ๐Ÿ—‘ ๐Ÿ Remove Virtual Environment

         view_cov
           ๐Ÿ‘€ ๐Ÿงช View coverage test output html file locally in web browser.

         view_doc
           ** ๐Ÿ‘€ ๐Ÿ“” View documentation website locally

         view_latest_doc
           ๐Ÿ‘€ ๐Ÿ“” View the latest documentation website on S3


Use as a Python library
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.. code-block:: python

    >>> from pyproject_ops.api import PyProjectOps
    >>> pyops = PyProjectOps.from_pyproject_toml("pyproject.toml")
    >>> pyops.create_virtualenv()
    >>> pyops.pip_install_all()
    >>> pyops.poetry_lock()
    >>> pyops.poetry_install_all()
    >>> pyops.run_cov_test()
    >>> pyops.view_cov()
    >>> pyops.build_doc()
    >>> pyops.view_cov()
    >>> pyops.python_build()
    >>> pyops.twine_upload()


Folder Structure
------------------------------------------------------------------------------
Below is the folder structured used in ``pyproject_ops``. The first item is the relative path from the project root directory. The second item is the attribute name that you can use to access the path in ``pyproject_ops``. The third item is the description of the path. You can find a concrete example at `HERE <https://github.com/MacHu-GWU/cookiecutter-pyproject/tree/main/%7B%7B%20cookiecutter.package_name%20%7D%7D-project>`_

- ``.venv``: ``PyProjectOps.dir_venv``, The virtualenv directory.
- ``.venv/bin``: ``PyProjectOps.dir_venv_bin``, The bin folder in virtualenv.
- ``.venv/bin/pip``: ``PyProjectOps.path_venv_bin_pip``, The pip command in virtualenv.
- ``.venv/bin/pytest``: ``PyProjectOps.path_venv_bin_pytest``, The pytest command in virtualenv.
- ``.venv/bin/python``: ``PyProjectOps.path_sys_executable``, The current Python interpreter path.
- ``.venv/bin/python``: ``PyProjectOps.path_venv_bin_python``, The python executable in virtualenv.
- ``.venv/bin/twine``: ``PyProjectOps.path_bin_twine``, The twine CLI command path.
- ``build``: ``PyProjectOps.dir_build``, The build folder for Python or artifacts build.
- ``build/glue``: ``PyProjectOps.dir_build_glue``, The AWS glue artifacts build folder.
- ``build/glue/extra_py_files``: ``PyProjectOps.dir_build_glue_extra_py_files``, The AWS glue extra Python files build folder.
- ``build/glue/extra_py_files.zip``: ``PyProjectOps.path_build_glue_extra_py_files_zip``, The AWS glue extra Python files zip file path.
- ``build/lambda``: ``PyProjectOps.dir_build_lambda``, The AWS Lambda artifacts build folder.
- ``build/lambda/layer.zip``: ``PyProjectOps.path_build_lambda_layer_zip``, The AWS Lambda layer zip file path.
- ``build/lambda/python``: ``PyProjectOps.dir_build_lambda_python``, The AWS Lambda layer build folder. This folder contains the dependencies.
- ``build/lambda/python/aws``: ``PyProjectOps.path_build_lambda_bin_aws``, This is the AWS CLI executable path in Lambda layer.
- ``build/lambda/source.zip``: ``PyProjectOps.path_build_lambda_source_zip``, The AWS Lambda source code deployment package zip file path.
- ``config``: ``PyProjectOps.dir_config``, The folder that stores the config files.
- ``config/config.json``: ``PyProjectOps.path_config_json``, Path to the JSON file that stores the non-sensitive config.
- ``dist``: ``PyProjectOps.dir_dist``, The dist folder for Python package distribution (.whl file).
- ``docs``: ``PyProjectOps.dir_sphinx_doc``, Sphinx docs folder.
- ``docs/build``: ``PyProjectOps.dir_sphinx_doc_build``, The temp Sphinx doc build folder.
- ``docs/build/html``: ``PyProjectOps.dir_sphinx_doc_build_html``, The built Sphinx doc build HTML folder.
- ``docs/build/html/index.html``: ``PyProjectOps.path_sphinx_doc_build_index_html``, The built Sphinx doc site entry HTML file path.
- ``docs/source``: ``PyProjectOps.dir_sphinx_doc_source``, Sphinx docs source code folder.
- ``docs/source/conf.py``: ``PyProjectOps.dir_sphinx_doc_source_conf_py``, Sphinx docs ``conf.py`` file path.
- ``docs/source/pyproject_ops``: ``PyProjectOps.dir_sphinx_doc_source_python_lib``, The generated Python library API reference Sphinx docs folder.
- ``htmlcov``: ``PyProjectOps.dir_htmlcov``, The code coverage test results HTML output folder.
- ``htmlcov/index.html``: ``PyProjectOps.path_htmlcov_index_html``, The code coverage test results HTML file.
- ``lambda_app``: ``PyProjectOps.dir_lambda_app``, The AWS Lambda app handler file and Lambda related code directory.
- ``lambda_app/.chalice/config.json``: ``PyProjectOps.path_chalice_config``, The AWS Chalice framework's config file path.
- ``lambda_app/.chalice/deployed``: ``PyProjectOps.dir_lambda_app_deployed``, The generated ``deployed.json`` file for AWS Chalice framework's.
- ``lambda_app/app.py``: ``PyProjectOps.path_lambda_app_py``, The app.py file for AWS Chalice framework.
- ``lambda_app/lambda_function.py``: ``PyProjectOps.path_lambda_function_py``, The lambda_function.py handler file for AWS Lambda, if you are not using
- ``lambda_app/update_chalice_config.py``: ``PyProjectOps.path_lambda_update_chalice_config_script``, Example: ``${dir_project_root}/lambda_app/update_chalice_config.py``
- ``lambda_app/vendor``: ``PyProjectOps.dir_lambda_app_vendor``, The vendor folder for AWS Chalice framework's packaging.
- ``lambda_app/vendor/pyproject_ops``: ``PyProjectOps.dir_lambda_app_vendor_python_lib``, The source python library folder in AWS Chalice framework's vendor folder.
- ``poetry-lock-hash.json``: ``PyProjectOps.path_poetry_lock_hash_json``, The poetry-lock-hash.json file path. It is the cache of the poetry.lock file hash.
- ``poetry.lock``: ``PyProjectOps.path_poetry_lock``, The poetry.lock file path.
- ``pyproject.toml``: ``PyProjectOps.path_pyproject_toml``, The pyproject.toml file path.
- ``pyproject_ops``: ``PyProjectOps.dir_python_lib``, The current Python library directory.
- ``pyproject_ops/_version.py``: ``PyProjectOps.path_version_py``, Path to the ``_version.py`` file where the package version is defined.
- ``requirements-automation.txt``: ``PyProjectOps.path_requirements_automation``, The requirements-automation.txt file path.
- ``requirements-dev.txt``: ``PyProjectOps.path_requirements_dev``, The requirements-dev.txt file path.
- ``requirements-doc.txt``: ``PyProjectOps.path_requirements_doc``, The requirements-doc.txt file path.
- ``requirements-test.txt``: ``PyProjectOps.path_requirements_test``, The requirements-test.txt file path.
- ``requirements.txt``: ``PyProjectOps.path_requirements``, The requirements.txt file path.
- ``tests``: ``PyProjectOps.dir_tests``, Unit test folder.
- ``tests_int``: ``PyProjectOps.dir_tests_int``, Integration test folder.
- ``tests_load``: ``PyProjectOps.dir_tests_load``, Load test folder.


Develop and Release Strategy
------------------------------------------------------------------------------
This project is a "meta" project for other projects, it is very hard to test. I keep using this project in many of my production projects, and continuously improving it. I will merge all the changes manually into this every three months.


.. _install:

Install
------------------------------------------------------------------------------

``pyproject_ops`` is released on PyPI, so all you need is:

.. code-block:: console

    $ pip install pyproject_ops

To upgrade to latest version:

.. code-block:: console

    $ pip install --upgrade pyproject_ops

            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/MacHu-GWU/pyproject_ops-project",
    "name": "pyproject-ops",
    "maintainer": "Sanhe Hu",
    "docs_url": null,
    "requires_python": ">=3.7",
    "maintainer_email": "husanhe@gmail.com",
    "keywords": "",
    "author": "Sanhe Hu",
    "author_email": "husanhe@gmail.com",
    "download_url": "https://files.pythonhosted.org/packages/e5/14/f37e58f21e0f8e7ffe82b1049baa9c8bd97f1756f826d6f7ef744d7491a3/pyproject_ops-0.8.1.tar.gz",
    "platform": "Windows",
    "description": "\n.. .. image:: https://readthedocs.org/projects/pyproject_ops/badge/?version=latest\n    :target: https://pyproject-ops.readthedocs.io/index.html\n    :alt: Documentation Status\n\n.. image:: https://github.com/MacHu-GWU/pyproject_ops-project/workflows/CI/badge.svg\n    :target: https://github.com/MacHu-GWU/pyproject_ops-project/actions?query=workflow:CI\n\n.. .. image:: https://codecov.io/gh/MacHu-GWU/pyproject_ops-project/branch/main/graph/badge.svg\n    :target: https://codecov.io/gh/MacHu-GWU/pyproject_ops-project\n\n.. image:: https://img.shields.io/pypi/v/pyproject_ops.svg\n    :target: https://pypi.python.org/pypi/pyproject_ops\n\n.. image:: https://img.shields.io/pypi/l/pyproject_ops.svg\n    :target: https://pypi.python.org/pypi/pyproject_ops\n\n.. image:: https://img.shields.io/pypi/pyversions/pyproject_ops.svg\n    :target: https://pypi.python.org/pypi/pyproject_ops\n\n.. image:: https://img.shields.io/badge/release_history!--None.svg?style=social\n    :target: https://github.com/MacHu-GWU/pyproject_ops-project/blob/main/release-history.rst\n\n.. image:: https://img.shields.io/badge/STAR_Me_on_GitHub!--None.svg?style=social\n    :target: https://github.com/MacHu-GWU/pyproject_ops-project\n\n------\n\n.. .. image:: https://img.shields.io/badge/Link-Document-blue.svg\n    :target: https://pyproject-ops.readthedocs.io/index.html\n\n.. .. image:: https://img.shields.io/badge/Link-API-blue.svg\n    :target: https://pyproject-ops.readthedocs.io/py-modindex.html\n\n.. .. image:: https://img.shields.io/badge/Link-Source_Code-blue.svg\n    :target: https://pyproject-ops.readthedocs.io/py-modindex.html\n\n.. image:: https://img.shields.io/badge/Link-Install-blue.svg\n    :target: `install`_\n\n.. image:: https://img.shields.io/badge/Link-GitHub-blue.svg\n    :target: https://github.com/MacHu-GWU/pyproject_ops-project\n\n.. image:: https://img.shields.io/badge/Link-Submit_Issue-blue.svg\n    :target: https://github.com/MacHu-GWU/pyproject_ops-project/issues\n\n.. image:: https://img.shields.io/badge/Link-Request_Feature-blue.svg\n    :target: https://github.com/MacHu-GWU/pyproject_ops-project/issues\n\n.. image:: https://img.shields.io/badge/Link-Download-blue.svg\n    :target: https://pypi.org/pypi/pyproject_ops#files\n\n\nWelcome to ``pyproject_ops`` Documentation\n==============================================================================\n.. image:: https://github.com/MacHu-GWU/pyproject_ops-project/assets/6800411/a5c05a80-04ff-4a29-b637-021b7320f581\n    :target: https://github.com/MacHu-GWU/pyproject_ops-project\n\n\nWhat is this project?\n------------------------------------------------------------------------------\nThere are various folder structures for Python projects, each with its own merits. Drawing from my extensive Python career experience, I have developed a personal best practice. To streamline the creation of the codebase skeleton according to this practice, I have introduced a tool called `cookiecutter-pyproject <https://github.com/MacHu-GWU/cookiecutter-pyproject>`_.\n\nBy adopting this folder structure setup, ``pyproject_ops`` is an automation tool, capable of handling common tasks throughout the Python project development lifecycle. These tasks include \"creating virtual environments\", \"installing dependencies\", \"running tests\", \"building documentation sites\", and more.\n\nThis tool is, in essence, my secret weapon for efficiently managing over 120 Python open source projects, all available on PyPI at https://pypi.org/user/machugwu/. Each of these projects is equipped with essential features such as continuous integration (CI), code coverage testing, matrix testing, and documentation websites.\n\nA little history about this project:\n\n    I previously had an automation tool called `pygitrepo <https://github.com/MacHu-GWU/pygitrepo-project>`_ that was tailored to my former development workflow. ``pygitrepo`` primarily relied on ``setup.py`` and ``requirements.txt`` files. Even today, ``pyproject_ops`` continues to support the old convention while also accommodating ``pyproject.toml`` and ``poetry``. This versatility enables me to write less code when automating Python development workflows.\n\n\nHow to Use\n------------------------------------------------------------------------------\n\n\nUse as a CLI\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n.. code-block:: bash\n\n    $ pip install pyproject_ops\n    $ pyops --help\n    NAME\n        pyops - python project ops command line interface.\n\n    SYNOPSIS\n        pyops COMMAND | <flags>\n\n    DESCRIPTION\n        python project ops command line interface.\n\n    FLAGS\n        -v, --version=VERSION\n            Type: bool\n            Default: False\n\n    COMMANDS\n        COMMAND is one of the following:\n\n         build_doc\n           ** \ud83d\udcd4 Build documentation website locally\n\n         build_doc_only\n           \ud83d\udcd4 Build documentation website locally without checking doc dependencies\n\n         bump_version\n           \ud83d\udd3c Bump semantic version.\n\n         cov\n           ** \ud83e\uddea Run code coverage test\n\n         cov_only\n           \ud83e\uddea Run code coverage test without checking test dependencies\n\n         deploy_latest_doc\n           \ud83d\ude80 \ud83d\udcd4 Deploy Documentation Site To S3 as Latest Doc\n\n         deploy_versioned_doc\n           \ud83d\ude80 \ud83d\udcd4 Deploy Documentation Site To S3 as Versioned Doc\n\n         install\n           ** \ud83d\udcbe Install main dependencies and Package itself\n\n         install_all\n           ** \ud83d\udcbe \ud83d\udcbb \ud83e\uddea \ud83d\udcd4 \ud83e\udd16 Install All Dependencies\n\n         install_automation\n           \ud83d\udcbe \ud83e\udd16 Install Dependencies for Automation Script\n\n         install_dev\n           \ud83d\udcbe \ud83d\udcbb Install Development Dependencies\n\n         install_doc\n           \ud83d\udcbe \ud83d\udcd4 Install Document Dependencies\n\n         install_test\n           \ud83d\udcbe \ud83e\uddea Install Test Dependencies\n\n         int\n           ** \ud83e\uddea Run integration test\n\n         int_only\n           \ud83e\uddea Run integration test without checking test dependencies\n\n         poetry_export\n           Export requirements-*.txt from poetry.lock file\n\n         poetry_lock\n           ** Resolve dependencies using poetry, update poetry.lock file\n\n         publish\n           \ud83d\udce6 Publish package to PyPI\n\n         test\n           ** \ud83e\uddea Run test\n\n         test_only\n           \ud83e\uddea Run test without checking test dependencies\n\n         venv_create\n           ** \ud83d\udc0d Create Virtual Environment\n\n         venv_remove\n           ** \ud83d\uddd1 \ud83d\udc0d Remove Virtual Environment\n\n         view_cov\n           \ud83d\udc40 \ud83e\uddea View coverage test output html file locally in web browser.\n\n         view_doc\n           ** \ud83d\udc40 \ud83d\udcd4 View documentation website locally\n\n         view_latest_doc\n           \ud83d\udc40 \ud83d\udcd4 View the latest documentation website on S3\n\n\nUse as a Python library\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n.. code-block:: python\n\n    >>> from pyproject_ops.api import PyProjectOps\n    >>> pyops = PyProjectOps.from_pyproject_toml(\"pyproject.toml\")\n    >>> pyops.create_virtualenv()\n    >>> pyops.pip_install_all()\n    >>> pyops.poetry_lock()\n    >>> pyops.poetry_install_all()\n    >>> pyops.run_cov_test()\n    >>> pyops.view_cov()\n    >>> pyops.build_doc()\n    >>> pyops.view_cov()\n    >>> pyops.python_build()\n    >>> pyops.twine_upload()\n\n\nFolder Structure\n------------------------------------------------------------------------------\nBelow is the folder structured used in ``pyproject_ops``. The first item is the relative path from the project root directory. The second item is the attribute name that you can use to access the path in ``pyproject_ops``. The third item is the description of the path. You can find a concrete example at `HERE <https://github.com/MacHu-GWU/cookiecutter-pyproject/tree/main/%7B%7B%20cookiecutter.package_name%20%7D%7D-project>`_\n\n- ``.venv``: ``PyProjectOps.dir_venv``, The virtualenv directory.\n- ``.venv/bin``: ``PyProjectOps.dir_venv_bin``, The bin folder in virtualenv.\n- ``.venv/bin/pip``: ``PyProjectOps.path_venv_bin_pip``, The pip command in virtualenv.\n- ``.venv/bin/pytest``: ``PyProjectOps.path_venv_bin_pytest``, The pytest command in virtualenv.\n- ``.venv/bin/python``: ``PyProjectOps.path_sys_executable``, The current Python interpreter path.\n- ``.venv/bin/python``: ``PyProjectOps.path_venv_bin_python``, The python executable in virtualenv.\n- ``.venv/bin/twine``: ``PyProjectOps.path_bin_twine``, The twine CLI command path.\n- ``build``: ``PyProjectOps.dir_build``, The build folder for Python or artifacts build.\n- ``build/glue``: ``PyProjectOps.dir_build_glue``, The AWS glue artifacts build folder.\n- ``build/glue/extra_py_files``: ``PyProjectOps.dir_build_glue_extra_py_files``, The AWS glue extra Python files build folder.\n- ``build/glue/extra_py_files.zip``: ``PyProjectOps.path_build_glue_extra_py_files_zip``, The AWS glue extra Python files zip file path.\n- ``build/lambda``: ``PyProjectOps.dir_build_lambda``, The AWS Lambda artifacts build folder.\n- ``build/lambda/layer.zip``: ``PyProjectOps.path_build_lambda_layer_zip``, The AWS Lambda layer zip file path.\n- ``build/lambda/python``: ``PyProjectOps.dir_build_lambda_python``, The AWS Lambda layer build folder. This folder contains the dependencies.\n- ``build/lambda/python/aws``: ``PyProjectOps.path_build_lambda_bin_aws``, This is the AWS CLI executable path in Lambda layer.\n- ``build/lambda/source.zip``: ``PyProjectOps.path_build_lambda_source_zip``, The AWS Lambda source code deployment package zip file path.\n- ``config``: ``PyProjectOps.dir_config``, The folder that stores the config files.\n- ``config/config.json``: ``PyProjectOps.path_config_json``, Path to the JSON file that stores the non-sensitive config.\n- ``dist``: ``PyProjectOps.dir_dist``, The dist folder for Python package distribution (.whl file).\n- ``docs``: ``PyProjectOps.dir_sphinx_doc``, Sphinx docs folder.\n- ``docs/build``: ``PyProjectOps.dir_sphinx_doc_build``, The temp Sphinx doc build folder.\n- ``docs/build/html``: ``PyProjectOps.dir_sphinx_doc_build_html``, The built Sphinx doc build HTML folder.\n- ``docs/build/html/index.html``: ``PyProjectOps.path_sphinx_doc_build_index_html``, The built Sphinx doc site entry HTML file path.\n- ``docs/source``: ``PyProjectOps.dir_sphinx_doc_source``, Sphinx docs source code folder.\n- ``docs/source/conf.py``: ``PyProjectOps.dir_sphinx_doc_source_conf_py``, Sphinx docs ``conf.py`` file path.\n- ``docs/source/pyproject_ops``: ``PyProjectOps.dir_sphinx_doc_source_python_lib``, The generated Python library API reference Sphinx docs folder.\n- ``htmlcov``: ``PyProjectOps.dir_htmlcov``, The code coverage test results HTML output folder.\n- ``htmlcov/index.html``: ``PyProjectOps.path_htmlcov_index_html``, The code coverage test results HTML file.\n- ``lambda_app``: ``PyProjectOps.dir_lambda_app``, The AWS Lambda app handler file and Lambda related code directory.\n- ``lambda_app/.chalice/config.json``: ``PyProjectOps.path_chalice_config``, The AWS Chalice framework's config file path.\n- ``lambda_app/.chalice/deployed``: ``PyProjectOps.dir_lambda_app_deployed``, The generated ``deployed.json`` file for AWS Chalice framework's.\n- ``lambda_app/app.py``: ``PyProjectOps.path_lambda_app_py``, The app.py file for AWS Chalice framework.\n- ``lambda_app/lambda_function.py``: ``PyProjectOps.path_lambda_function_py``, The lambda_function.py handler file for AWS Lambda, if you are not using\n- ``lambda_app/update_chalice_config.py``: ``PyProjectOps.path_lambda_update_chalice_config_script``, Example: ``${dir_project_root}/lambda_app/update_chalice_config.py``\n- ``lambda_app/vendor``: ``PyProjectOps.dir_lambda_app_vendor``, The vendor folder for AWS Chalice framework's packaging.\n- ``lambda_app/vendor/pyproject_ops``: ``PyProjectOps.dir_lambda_app_vendor_python_lib``, The source python library folder in AWS Chalice framework's vendor folder.\n- ``poetry-lock-hash.json``: ``PyProjectOps.path_poetry_lock_hash_json``, The poetry-lock-hash.json file path. It is the cache of the poetry.lock file hash.\n- ``poetry.lock``: ``PyProjectOps.path_poetry_lock``, The poetry.lock file path.\n- ``pyproject.toml``: ``PyProjectOps.path_pyproject_toml``, The pyproject.toml file path.\n- ``pyproject_ops``: ``PyProjectOps.dir_python_lib``, The current Python library directory.\n- ``pyproject_ops/_version.py``: ``PyProjectOps.path_version_py``, Path to the ``_version.py`` file where the package version is defined.\n- ``requirements-automation.txt``: ``PyProjectOps.path_requirements_automation``, The requirements-automation.txt file path.\n- ``requirements-dev.txt``: ``PyProjectOps.path_requirements_dev``, The requirements-dev.txt file path.\n- ``requirements-doc.txt``: ``PyProjectOps.path_requirements_doc``, The requirements-doc.txt file path.\n- ``requirements-test.txt``: ``PyProjectOps.path_requirements_test``, The requirements-test.txt file path.\n- ``requirements.txt``: ``PyProjectOps.path_requirements``, The requirements.txt file path.\n- ``tests``: ``PyProjectOps.dir_tests``, Unit test folder.\n- ``tests_int``: ``PyProjectOps.dir_tests_int``, Integration test folder.\n- ``tests_load``: ``PyProjectOps.dir_tests_load``, Load test folder.\n\n\nDevelop and Release Strategy\n------------------------------------------------------------------------------\nThis project is a \"meta\" project for other projects, it is very hard to test. I keep using this project in many of my production projects, and continuously improving it. I will merge all the changes manually into this every three months.\n\n\n.. _install:\n\nInstall\n------------------------------------------------------------------------------\n\n``pyproject_ops`` is released on PyPI, so all you need is:\n\n.. code-block:: console\n\n    $ pip install pyproject_ops\n\nTo upgrade to latest version:\n\n.. code-block:: console\n\n    $ pip install --upgrade pyproject_ops\n",
    "bugtrack_url": null,
    "license": "MIT",
    "summary": "Python project Ops automation.",
    "version": "0.8.1",
    "project_urls": {
        "Download": "https://pypi.python.org/pypi/pyproject_ops/0.8.1#downloads",
        "Homepage": "https://github.com/MacHu-GWU/pyproject_ops-project"
    },
    "split_keywords": [],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "0b87d777d5cab9c0f77c89df70fceaa57a5307d2d47b9c78da6a49d8b5a089f9",
                "md5": "f76032a66b689392d9a2f464a1044d99",
                "sha256": "bf910136d6bdd56e41496236fa40b9809056264c5f9a691a4f13575590c800f0"
            },
            "downloads": -1,
            "filename": "pyproject_ops-0.8.1-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "f76032a66b689392d9a2f464a1044d99",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.7",
            "size": 39988,
            "upload_time": "2024-01-14T16:48:58",
            "upload_time_iso_8601": "2024-01-14T16:48:58.643986Z",
            "url": "https://files.pythonhosted.org/packages/0b/87/d777d5cab9c0f77c89df70fceaa57a5307d2d47b9c78da6a49d8b5a089f9/pyproject_ops-0.8.1-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "e514f37e58f21e0f8e7ffe82b1049baa9c8bd97f1756f826d6f7ef744d7491a3",
                "md5": "6f2938f65128421e4e87e6da8730c81b",
                "sha256": "5adba9566dd8e32c60389f5303788eae10c761b07ec08460f8e544527fc1a1a6"
            },
            "downloads": -1,
            "filename": "pyproject_ops-0.8.1.tar.gz",
            "has_sig": false,
            "md5_digest": "6f2938f65128421e4e87e6da8730c81b",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.7",
            "size": 37533,
            "upload_time": "2024-01-14T16:49:00",
            "upload_time_iso_8601": "2024-01-14T16:49:00.405059Z",
            "url": "https://files.pythonhosted.org/packages/e5/14/f37e58f21e0f8e7ffe82b1049baa9c8bd97f1756f826d6f7ef744d7491a3/pyproject_ops-0.8.1.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-01-14 16:49:00",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "MacHu-GWU",
    "github_project": "pyproject_ops-project",
    "travis_ci": false,
    "coveralls": true,
    "github_actions": true,
    "requirements": [
        {
            "name": "fire",
            "specs": [
                [
                    ">=",
                    "0.1.3"
                ],
                [
                    "<",
                    "1.0.0"
                ]
            ]
        },
        {
            "name": "pathlib_mate",
            "specs": [
                [
                    ">=",
                    "1.3.1"
                ],
                [
                    "<",
                    "2.0.0"
                ]
            ]
        },
        {
            "name": "cached-property",
            "specs": [
                [
                    ">=",
                    "1.5.2"
                ]
            ]
        }
    ],
    "lcname": "pyproject-ops"
}
        
Elapsed time: 0.97742s