{"id":25180973,"url":"https://github.com/vmagamedov/pi","last_synced_at":"2026-03-09T10:03:03.680Z","repository":{"id":52700460,"uuid":"47871722","full_name":"vmagamedov/pi","owner":"vmagamedov","description":"Command-line tool for managing containerized development environments","archived":false,"fork":false,"pushed_at":"2023-06-15T19:42:15.000Z","size":317,"stargazers_count":8,"open_issues_count":15,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-09-23T14:58:29.324Z","etag":null,"topics":["containers","devtools","docker","management","python"],"latest_commit_sha":null,"homepage":"https://pi-env.readthedocs.io/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/vmagamedov.png","metadata":{"files":{"readme":"README.rst","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2015-12-12T09:09:49.000Z","updated_at":"2023-06-15T19:42:20.000Z","dependencies_parsed_at":"2025-02-09T16:48:23.047Z","dependency_job_id":null,"html_url":"https://github.com/vmagamedov/pi","commit_stats":null,"previous_names":[],"tags_count":9,"template":false,"template_full_name":null,"purl":"pkg:github/vmagamedov/pi","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vmagamedov%2Fpi","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vmagamedov%2Fpi/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vmagamedov%2Fpi/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vmagamedov%2Fpi/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/vmagamedov","download_url":"https://codeload.github.com/vmagamedov/pi/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vmagamedov%2Fpi/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30290939,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-09T02:57:19.223Z","status":"ssl_error","status_checked_at":"2026-03-09T02:56:26.373Z","response_time":61,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["containers","devtools","docker","management","python"],"created_at":"2025-02-09T16:38:15.375Z","updated_at":"2026-03-09T10:03:03.666Z","avatar_url":"https://github.com/vmagamedov.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"Command-line tool for managing containerized environments. Helps you build nice\nand unique CLI for your project, manage containers, images and services.\n\nLicensed under **BSD-3-Clause** license. See LICENSE.txt\n\n**Project CLI** means that you can create nested structure of commands, which\nwill use containers (Docker) to run and services (e.g. PostgreSQL) to perform\nsome complex tasks.\n\n**Managing images** means that you can define hierarchical images structure\nand Pi will build them on demand, for example when you call a command, which\nrequire some images to run, which are not built yet. You don't have to assign\nversions (tags) for these images yourself, Pi will use hashing algorithm to\nautomatically create them.\n\n**Managing services** means that you can specify, that some services should be\nstarted before running a command. Or you can manually start and stop services.\n\nInstallation\n~~~~~~~~~~~~\n\nPi requires Python 3.5 or higher. You can install Pi directly into your\nsystem packages, it has zero dependencies, so it can be uninstalled without\nleaving any traces in your system:\n\n.. code-block:: shell\n\n    $ pip3 install pi-env\n\nExample\n~~~~~~~\n\nExample ``pi.yaml`` file:\n\n.. code-block:: yaml\n\n    - !Meta\n      namespace: foo\n      description: |\n        Project command-line interface\n\n    - !Service\n      name: pg\n      network-name: postgres\n      image: !DockerImage postgres:10-alpine\n\n    - !Image\n      name: test\n      from: !DockerImage python:3.6-alpine\n      repository: localhost/foo/test\n      tasks:\n      - run: pip3 install --no-deps --no-cache-dir -r {{reqs}}\n        reqs: !File requirements.txt\n\n    - !Command\n      name: test\n      image: test\n      requires: [pg]\n      description: Run py.test\n      params:\n      - !Argument {name: tests, default: ''}\n      run: py.test {{tests}}\n\nIf you call ``pi test``, Pi will build ``test`` image if needed and will make\nsure that ``pg`` service is running, which is required to run tests.\n\nThis ``pg`` service will be available for the tests at ``postgres:5432``\naddress. Both command ``pi test`` and ``pg`` service will be running inside\ncontainers, which will be in the same unique network, automatically created for\nspecified ``foo`` namespace.\n\nHere is how your project will be looking in the shell:\n\n.. code-block:: shell\n\n    $ pi\n    Usage: pi [OPTIONS] COMMAND [ARGS]...\n\n      Project command-line interface\n\n    Options:\n      --debug  Run in debug mode\n      --help   Show this message and exit.\n\n    Core commands:\n      + image    Images creation and delivery\n      + service  Services status and management\n\n    Custom commands:\n      test  Run py.test\n\nYou can see list of all defined images:\n\n.. code-block:: shell\n\n    $ pi image -l\n      Image name    Docker image                     Size        Versions\n    --------------  -------------------------------  --------  ----------\n    ✔ test          localhost/foo/test:4efe5a0454a9  88.58 MB           1\n\nYou also can see status of all defined services:\n\n.. code-block:: shell\n\n    $ pi service -s\n    Service name    Status    Docker image\n    --------------  --------  ------------------\n    pg              running   postgres:10-alpine\n\nAnd of cause you can run your commands:\n\n.. code-block:: shell\n\n    $ pi test\n    ...............................\n    31 passed in 0.35 seconds\n\nContributing\n~~~~~~~~~~~~\n\nRun ``python -m pi test`` and ``python -m pi lint`` in order to test and lint\nyour changes before submitting your pull requests.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvmagamedov%2Fpi","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fvmagamedov%2Fpi","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvmagamedov%2Fpi/lists"}