Skip to main content

No project description provided

Project description

cuddly_dicts

Turn a KDL document like this:

landtable version=1 {
    // Minimum compatible Landtable version
    ensure_landtable_version "0.0.1"
    
    provisioning {
        // Whether to allow runtime provisioning
        // (whether you can add/remove fields via the API or the web)
        allow_runtime_provisioning true
        
        // A provisioning strategy defines how a new database can be
        // created.
        strategy "Nest Postgres" {
            primary {
                using "postgres_provisioning_plugin"
                hostname "hackclub.app"
                
                authentication "userpass" {
                    username "sarah"
                    password "i_l0ve_hC!"
                }
                
                // or:
                
                authentication "vault-pg" {
                    path "database/creds/landtable"
                }
            }
        }
    }
}

Into a dict like this:

{
    "landtable": {
        "version": 1,
        "ensure_landtable_version": "0.0.1",
        "provisioning": {
            "allow_runtime_provisioning": True,
            "strategy": {
                "Nest Postgres": {
                    "primary": {
                        "using": "postgres_provisioning_plugin",
                        "hostname": "hackclub.app",
                        "authentication": {
                            "userpass": {
                                "username": "sarah",
                                "password": "i_l0ve_hC!"
                            }
                        }
                    }
                }
            }
        }
    }
}

Conversion rules

version 1

becomes

{
    "version": 1
}

version 1
version 2

becomes

{
    "version": [1, 2]
}

connector "foo"
connector "bar" {
  port /dev/ttyUSB0
}

becomes

{
    "connector": {
        "foo": {},
        "bar": {
            "port": "/dev/ttyUSB0"
        }
    }
}

[!INFO] New in 3.0.2.


connector "foo" port="/dev/ttyUSB0"

becomes

{
    "connector": {
        "foo": {
            "port": "/dev/ttyUSB0"
        }
    }
}

connector "foo" port="/dev/ttyUSB0" {
    baud_rate 24000
}

becomes

{
    "connector": {
        "foo": {
            "port": "/dev/ttyUSB0",
            "baud_rate": 24000
        }
    }
}

cuddly_dicts (as of v3) supports value converters, so you can do things like this:

definitely_encrypted_ssn (base64)"QUFBLUdHLVNTU1M="

License

MIT or WTFPL, depending on how much of a prude you are

Motivation

  • Keep using Landtable's existing validation library (Pydantic)
  • Support multiple configuration languages (TOML, JSON, YAML, whatever!) by making them all compile down to the same representation that can be validated

cuddly_dicts proved to be more useful to me in other projects, so now I use it in most things.

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

cuddly_dicts-3.0.2.tar.gz (5.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

cuddly_dicts-3.0.2-py3-none-any.whl (5.0 kB view details)

Uploaded Python 3

File details

Details for the file cuddly_dicts-3.0.2.tar.gz.

File metadata

  • Download URL: cuddly_dicts-3.0.2.tar.gz
  • Upload date:
  • Size: 5.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for cuddly_dicts-3.0.2.tar.gz
Algorithm Hash digest
SHA256 a722e97df6f898e23a186e2580cdba038ed4ddf31121965978c10390e254b61a
MD5 d19ccec26403fcde0337c5f6b1765040
BLAKE2b-256 d9ea71409617b040187369c1784246394574685d520a73d35b9481a44b4fb1bd

See more details on using hashes here.

Provenance

The following attestation bundles were made for cuddly_dicts-3.0.2.tar.gz:

Publisher: workflow.yml on iamawatermelo/cuddly-dicts

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file cuddly_dicts-3.0.2-py3-none-any.whl.

File metadata

  • Download URL: cuddly_dicts-3.0.2-py3-none-any.whl
  • Upload date:
  • Size: 5.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for cuddly_dicts-3.0.2-py3-none-any.whl
Algorithm Hash digest
SHA256 9531ecb2d7150262e450f1caa864ce21d8db648b6adf9c35dd2bf1328928e7ce
MD5 f6c6f8f5e64f059a819eef4aa8487f98
BLAKE2b-256 0ba0eb58010aff67023904b139abb7c19d3c3c97d886a55a651324d605c05cbc

See more details on using hashes here.

Provenance

The following attestation bundles were made for cuddly_dicts-3.0.2-py3-none-any.whl:

Publisher: workflow.yml on iamawatermelo/cuddly-dicts

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

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