{"id":15861840,"url":"https://github.com/yakdriver/envary","last_synced_at":"2026-01-27T13:02:32.200Z","repository":{"id":97599896,"uuid":"172794570","full_name":"YakDriver/envary","owner":"YakDriver","description":":recycle: Test what can be done with YAML and pipenv.","archived":false,"fork":false,"pushed_at":"2019-03-01T15:20:43.000Z","size":22,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2025-05-30T12:59:33.976Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/YakDriver.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","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":"2019-02-26T21:37:40.000Z","updated_at":"2019-03-01T15:20:44.000Z","dependencies_parsed_at":null,"dependency_job_id":"4377be3b-0202-4230-b284-714e96269a0e","html_url":"https://github.com/YakDriver/envary","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/YakDriver/envary","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/YakDriver%2Fenvary","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/YakDriver%2Fenvary/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/YakDriver%2Fenvary/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/YakDriver%2Fenvary/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/YakDriver","download_url":"https://codeload.github.com/YakDriver/envary/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/YakDriver%2Fenvary/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28813224,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-27T12:25:15.069Z","status":"ssl_error","status_checked_at":"2026-01-27T12:25:05.297Z","response_time":168,"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":[],"created_at":"2024-10-05T22:20:28.749Z","updated_at":"2026-01-27T13:02:32.194Z","avatar_url":"https://github.com/YakDriver.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"# envary\nA project to make Pipenv work across many environmental needs based on platform, Python version, and a variety of custom environments (e.g., install, build, test).\n\n# Setup\n\n## Step 1: Write the YAML file\n\nPut all package requirements for each environment in one file called `.envary.yml`. This YAML file will list a default environment and dependency information for each environment.\n\nVersion numbers of packages should be excluded as much as possible from `.envary.yml`. Pipfiles will be generated based on the YAML and version numbers can be manually and automatically adjusted (e.g., Dependabot) there.\n\nFor example, if you wanted to control Python package version numbers independently based on versions of Python, you could include the YAML below `.envary.yml`. It looks a little strange but would generate two Pipfiles where versions could be separately manually (or automatically) adjusted for each Python version.\n\n```yaml\n  - environment: test\n    python_version:\n    - equal: 2.6\n      packages:\n      - pytest\n    - equal: 2.7\n      packages:\n      - pytest\n```\n\nAn example `.envary.yml` file: https://github.com/YakDriver/envary/blob/master/.envary.yml\n\n## Step 2: Generate Pipfiles\n\nRun a command like `envary init`.\n\nEnvary will read the `.envary.yml` file and generate all the necessary Pipfiles (including locks). (Semi-complicated tree traverse.)\n\nThe parent directory is `.envary`, but every Pipfile gets its own subdirectory. All the Pipfiles should be included in version control. With separate Pipfiles, Dependabot can manage dependencies.\n\nFor example, the directory structure might look something like this for the YAML above:\n\n```\nproject\n│   .envary.yml\n│\n└───.envary\n│   │\n│   └───test-py-eq-2-6\n│   |   │   Pipfile\n│   |   │   Pipfile.lock\n│   |\n│   └───test-py-eq-2-7\n│       │   Pipfile\n│       │   Pipfile.lock\n```\n\n\n## Step 3: Manually massage Pipfiles\n\nAvoid placing version numbers in `.envary.yml` as much as possible so that Dependabot can help manage versions of all the Pipfiles. Instead, manually and/or automatically massage versions in Pipfiles. Then run a command like `envary lock` to generate new lock files.\n\n# Use\n\n## Step 4: Use Envary\n\nRun a command like `envary --env=install`.\n\nBased on the platform, Python version, and environment provided (e.g., `install`), Envary will use the correct Pipfile to launch a pipenv (i.e., virtualenv) with the exact packages provided in the lock file.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyakdriver%2Fenvary","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fyakdriver%2Fenvary","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyakdriver%2Fenvary/lists"}