$npx skillfedfor your agent

shrub.py

Library for creating evergreen configurations

With conditionsPyPI Build ToolsReleased Jun 20263.0M downloads / moApache-2.0Pure Python

Decision gist · record as of 2026-08-14

pure-Python wheel — shrub_py-3.11.0-py3-none-any.whl
v3.11.0 · released 2026-06-04 · Python >=3.8.1 · 5 runtime deps: PyYaml, dataclasses, pydantic, typing-extensions, croniter

Yes, if you are using Evergreen CI and need to generate configurations programmatically. The package is actively maintained, has low install friction, carries a permissive license, and has no known vulnerabilities. The low star count and niche use case (Evergreen-specific) mean it is not a general-purpose tool, but it is well-suited for its intended audience.AI-flagged interpretation of the facts on this page — verify before relying

Before you install

  • Low install friction with a pure-Python wheel and five runtime dependencies.
  • Active maintenance with a recent release (71 days old) and current commit history.

License · maintenance · safety

Apache-2.0 (permissive) — Apache-2.0 permissive license allows commercial and private use with minimal restrictions.

last release 2026-06-04 (71 days) · last repo commit 2026-06-04 · 1 stars

0 known vulnerabilities (OSV.dev, 2026-08-14) · 2,997,023 downloads/mo, #2,793 on PyPI

Verify before relying

pip install shrub.py

from shrub.v3.evg_project import EvgProject
from shrub.v3.evg_build_variant import BuildVariant
from shrub.v3.evg_task import EvgTask
from shrub.v3.shrub_service import ShrubService

task = EvgTask(name="test", commands=[])
variant = BuildVariant(name="linux", tasks=[])
project = EvgProject(buildvariants=[variant], tasks=[task])
print(ShrubService.generate_json(project))
  • Whether the package is actively maintained beyond the single recent commit shown, or if development is sporadic
  • What the low star count (1) indicates about adoption or community engagement
Same gist for agents: .md · .json

What it is and what it does

shrub.py is a Python library for building Evergreen CI project configurations programmatically. Instead of writing YAML or JSON by hand, you define tasks, build variants, and display tasks as Python objects, then generate the final configuration JSON. It wraps the Evergreen project file format with a type-safe, composable API.

The library depends on PyYaml, pydantic, croniter, dataclasses, and typing-extensions to provide validation and scheduling support. It supports Python 3.9 through 3.14 and requires Python 3.8.1 or later. The main use case is automating CI/CD configuration generation for projects using MongoDB's Evergreen CI system, particularly when you need to generate many similar tasks or variants programmatically.

Use it for

  • Generate parallel test tasks with shared dependencies and display them under a single display task
  • Programmatically create build variants for multiple platforms or configurations from a template
  • Build task definitions with function calls and parameterized variables without manual JSON editing
  • Automate CI configuration for projects that need dynamic task generation based on input data

Worth the install?

AI-flagged interpretation of the facts on this page. Verify before relying on it.

With conditions

Yes, if you are using Evergreen CI and need to generate configurations programmatically.

The package is actively maintained, has low install friction, carries a permissive license, and has no known vulnerabilities. The low star count and niche use case (Evergreen-specific) mean it is not a general-purpose tool, but it is well-suited for its intended audience.

Install

shrub-py on PyPI

Before you install

Low install friction with a pure-Python wheel and five runtime dependencies. Active maintenance with a recent release (71 days old) and current commit history.

License in practice

Apache-2.0 permissive license allows commercial and private use with minimal restrictions.

Quickstart

pip install shrub.py

from shrub.v3.evg_project import EvgProject
from shrub.v3.evg_build_variant import BuildVariant
from shrub.v3.evg_task import EvgTask
from shrub.v3.shrub_service import ShrubService

task = EvgTask(name="test", commands=[])
variant = BuildVariant(name="linux", tasks=[])
project = EvgProject(buildvariants=[variant], tasks=[task])
print(ShrubService.generate_json(project))

Verify before relying

  • Whether the package is actively maintained beyond the single recent commit shown, or if development is sporadic
  • What the low star count (1) indicates about adoption or community engagement

Package facts

LicenseApache-2.0 permissive
Python supportSupports the current Python release >=3.8.1
Install frictionLow. Pure-Python wheel
Runtime dependencies
5 packages
PyYamldataclassespydantictyping-extensionscroniter
MaintenanceActively maintained 71 days since the last release
Last repo commit
First released
Downloads2,997,023 / month, #2,793 on PyPI 30-day window, as of 2026-08-14
Known vulnerabilitiesNone known OSV.dev, checked 2026-08-14
Classifiers
License :: OSI Approved :: Apache Software LicenseProgramming Language :: Python :: 3Programming Language :: Python :: 3.10Programming Language :: Python :: 3.11Programming Language :: Python :: 3.12Programming Language :: Python :: 3.13Programming Language :: Python :: 3.14Programming Language :: Python :: 3.9

Evidence: shrub_py-3.11.0-py3-none-any.whl

Tags

Capabilities
evergreen project config generationbuild task definitions programmaticallyci configuration as codeevergreen json buildertask dependency managementdisplay task orchestrationbuild variant configuration
Topics
ci-cdevergreenconfig-generation

Let your AI agent find packages like this

Example. Real query, live index.

You found this page by searching. An agent finds it by wishing: SkillFed indexes 14,416 PyPI packages by what they can do, searchable in plain language.

wish › “evergreen project config generation”

  • shrub.pyProgrammatically generate Evergreen project configurations in JSON…
  • evergreen.pyA Python client library for the Evergreen API (V2) that enables…
  • esp-idf-kconfigProvides kconfig language support and IDE tooling for configuring…

Give your agent the search over MCP, or paste the wish link into any chat.

More Build Tools packages

packaging Worth it
PyPI · Build Tools · released Aug 2026

Provides reusable utilities for Python packaging interoperability, including version handling, specifiers, markers, requirements, tags, and metadata parsing according to standards like PEP 440 and PEP 425.

Apache-2.0 OR BSD-2-Clausepure Python · 3.9+
2.2Bdownloads / mo
tqdm Worth it
PyPI · Libraries · released Jul 2026

Wraps any iterable to display a real-time progress bar in the terminal or Jupyter notebook, showing iteration count, elapsed time, and estimated time remaining.

copyleftpure Python · 3.8+
648.6Mdownloads / mo
pip Worth it
PyPI · Build Tools · released Aug 2026

pip is the standard installer for Python packages, enabling you to download and install packages from the Python Package Index and other indexes into your Python environment.

MITpure Python · 3.10+
617.5Mdownloads / mo
hatchling Worth it
PyPI · Python Modules · released Aug 2026

Hatchling is a standards-compliant Python build backend that handles packaging, metadata, and distribution of Python projects when configured in a project's pyproject.toml file.

MITpure Python · 3.10+
484.2Mdownloads / mo
grpcio-tools Worth it
PyPI · Build Tools · released Jul 2026

Generates Python gRPC service stubs and message classes from Protocol Buffer definitions, enabling developers to build gRPC clients and servers.

Apache-2.0compiled wheel · 3.10+
278.2Mdownloads / mo
pre-commit Worth it
PyPI · Build Tools · released Aug 2026

pre-commit is a framework for installing and running git hooks written in any language before commits are made, automating code quality and validation checks across multi-language projects.

Install it if your team needs consistent, automated validation at commit time.

permissive licensepure Python · 3.10+
179.9Mdownloads / mo

See also evergreen.py · taskcluster-urls · taskipy · jsonschema-gentypes · taskcluster-taskgraph · curatorbin · azure-appconfiguration-provider · sample-helper-aws-appconfig · jupyter-packaging · Paver