Skip to main content

For everything that you really should not be hardcoding.

Project description

PyPI - Downloads

This package wants to replace your hardcoded.password, your hardcoded.api_key, actually hardcoded("Everything you really shouldn't be hardcoding").

Try it!

To move a hardcoded value from your code to an external file, use hardcoded.foo as if it was holding your value already.

import hardcoded
print(hardcoded.foo)

How does it work?

On running the code, this will happen:

  • if an environment variable exist with exactly the same name ("foo" in our example), the value of that environment variable is returned
  • otherwise, hardcoded will find a file holding your data
    • if you initialised hardcoded as hardcoded.File(path='secrets.yml'), secrets.yml is used
    • if you are running code inside a git repository, .hardcoded.yml is used, at the root of the repository (next to .git/)
    • otherwise, ~/.config/hardcoded.yml is used
  • if the file is encrypted:
    • with GPG, then hardcoded interfaces with your GPG installation (possibly using the gpg-agent)
    • if symmetric encryption was used:
      • if a password was cached, it is used to decrypt the data
      • if Apple Keychain is available, a password is requested to decrypt the data
      • if running interactively, you will be asked for a decryption password
  • the (decrypted if needed) YAML data is loaded
  • if "foo" is a key in the YAML, the value of that key is returned
  • if "foo" does not exist in the YAML yet:
    • if not running interactively (stdin is not an open TTY), a KeyError is raised
    • if running interactively, you are asked to input the value
      • if encryption is requested with hardcoded.File(secret=True), the YAML is encrypted:
        • if GPG is available, the YAML is GPG encrypted with a key of your choosing
        • if Apple Keychain is available, a random password is generated and stored in the keychain
        • otherwise, you are asked for a new password
  • the value of foo is returned to your code

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

hardcoded-0.14.22.tar.gz (10.7 kB view details)

Uploaded Source

Built Distribution

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

hardcoded-0.14.22-py3-none-any.whl (11.7 kB view details)

Uploaded Python 3

File details

Details for the file hardcoded-0.14.22.tar.gz.

File metadata

  • Download URL: hardcoded-0.14.22.tar.gz
  • Upload date:
  • Size: 10.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.0.1.dev0+g94f810c.d20240510 CPython/3.12.4

File hashes

Hashes for hardcoded-0.14.22.tar.gz
Algorithm Hash digest
SHA256 5891a50e0dd3bef2d9f1f7390e21df433df91021ad9f83ecc93e4aebd0b07800
MD5 e47f2a1d62f55f59ba1a9d9fd3392613
BLAKE2b-256 bb2517bb92e53e5af9b026d1ff24a81fe454db5f36ed3435173e7c205db6fc9f

See more details on using hashes here.

File details

Details for the file hardcoded-0.14.22-py3-none-any.whl.

File metadata

  • Download URL: hardcoded-0.14.22-py3-none-any.whl
  • Upload date:
  • Size: 11.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.0.1.dev0+g94f810c.d20240510 CPython/3.12.4

File hashes

Hashes for hardcoded-0.14.22-py3-none-any.whl
Algorithm Hash digest
SHA256 60d18fd73aefc865e039082298e0d4deb7616135b55c29bf7ca2041c972cc91d
MD5 fe4fd0d3844c1ffc3a0fc28683bf58d3
BLAKE2b-256 05fa9dd02c3bbbf44e956abadd4eaac9042790922cee43bbfe30cdda7cf5b045

See more details on using hashes here.

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