Skip to main content

A Python library for parsing and loading Compose files

Project description

compose-py

A Python library for parsing and loading Compose files

Installation

pip install compose-py

By default, the library doesn't have any dependencies for dataclass libraries. Choose 'pydantic' or 'dataclasses' and install the library. We also provide extras for the libraries:

# If you prefer Pydantic models
pip install "compose-py[pydantic]"

# If you prefer dataclasses models
pip install "compose-py[dataclasses]"

Tutorial: Load, modify, and save docker-compose.yml

Pydantic.BaseModel (default)

import compose_py

with open("docker-compose.yml", "r") as f:
    obj = compose_py.load_yaml(f)
print(obj)  # Prints 'compose_py.models_pydantic.ComposeSpecification(...)'
print(obj.services["web"])  # Prints 'compose_py.models_pydantic.Service(...)'

# Copy and modify the existing service, then add it to the specification
web2 = obj.services["web"].copy()
web2.command = "--port 8081"
obj.services["web2"] = web2

print(compose_py.dump_yaml_str(obj))
with open("docker-compose-modified.yml", "w") as f:
    compose_py.dump_yaml(obj, f)

You can find more APIs under compose_py.models_pydantic package.

dataclasses.dataclass

import compose_py

with open("docker-compose.yml", "r") as f:
    obj = compose_py.load_yaml(f, model=compose_py.ModelType.DATACLASSES)
print(obj)  # Prints 'compose_py.models_dataclasses.ComposeSpecification(...)'
print(obj.services["web"])  # Prints 'compose_py.models_dataclasses.Service(...)'

# Copy and modify the existing service, then add it to the specification
web2 = obj.services["web"].copy()
web2.command = "--port 8081"
obj.services["web2"] = web2

print(compose_py.dump_yaml_str(obj))
with open("docker-compose-modified.yml", "w") as f:
    compose_py.dump_yaml(obj, f, model=compose_py.ModelType.DATACLASSES)

You can find more APIs under compose_py.models_dataclasses package.

Examples

See examples/ directory to find examples.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

compose-py-0.3.0.tar.gz (9.8 kB view details)

Uploaded Source

Built Distribution

compose_py-0.3.0-py3-none-any.whl (13.4 kB view details)

Uploaded Python 3

File details

Details for the file compose-py-0.3.0.tar.gz.

File metadata

  • Download URL: compose-py-0.3.0.tar.gz
  • Upload date:
  • Size: 9.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.8.15

File hashes

Hashes for compose-py-0.3.0.tar.gz
Algorithm Hash digest
SHA256 83e69487bb315f45dcdc4b862cae9bec40545675616cd1dcae938715645c5800
MD5 aab35ceb9adb70064ae852108746811d
BLAKE2b-256 ee8e64bd40f1b2e54dd0845fd5f243021ae493a787372853bea5324cdd1d772a

See more details on using hashes here.

File details

Details for the file compose_py-0.3.0-py3-none-any.whl.

File metadata

  • Download URL: compose_py-0.3.0-py3-none-any.whl
  • Upload date:
  • Size: 13.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.8.15

File hashes

Hashes for compose_py-0.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 86029436cb79f62972d697cf228abe5c9e7a15b7585879d95e8ec96a9d622c9b
MD5 ac786705178097ee6dbb9a77507fef47
BLAKE2b-256 aa987758b62352b53479a4c31e2e9d2f13b629197d6d04a64fd5888a7021012e

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page