Skip to main content

Version PyPI version Python versions License Ruff Run ruff linter and tests codecov

gosecrets

Python client for gosecrets — encrypted credentials management. Read secrets encrypted by the Go CLI directly from your Python projects.

CLI Tool via Homebrew:

brew tap bilustek/tap
brew install gosecrets

or via go install:

go install github.com/bilustek/gosecrets/cmd/gosecrets@latest

Installation

pip install gosecrets

Quick Start

First, create your encrypted credentials using the gosecrets CLI:

gosecrets init                  # for development environment
gosecrets init --env production # or production environment

gosecrets edit                  # edit development environment
gosecrets edit --env production # or edit production environment

Then read them in Python:

from gosecrets import load

secrets = load()
print(secrets.string("database.password"))
print(secrets.integer("database.port"))

Usage

Loading Credentials

from gosecrets import load

# default: reads secrets/development.enc
secrets = load()

# specify environment
secrets = load(env="production")

# specify root directory
secrets = load(root="/app", env="production")

Environment resolution order:

  1. env parameter
  2. GOSECRETS_ENV environment variable
  3. "development" (default)

Master key resolution order:

  1. GOSECRETS_MASTER_KEY environment variable
  2. GOSECRETS_<ENV>_KEY environment variable (e.g. GOSECRETS_PRODUCTION_KEY)
  3. Key file on disk (secrets/<env>.key)

Accessing Values

All accessors support dot notation for nested keys:

secrets.get("database.password")       # Any — raw value or None
secrets.string("api_key")              # str — "" if missing
secrets.string("api_key", "default")   # str — with fallback
secrets.integer("database.port")       # int — 0 if missing
secrets.integer("port", 5432)          # int — with fallback
secrets.floating("rate")               # float — 0.0 if missing
secrets.boolean("debug")               # bool — False if missing
secrets.mapping("database")            # dict | None
secrets.has("api_key")                 # bool
secrets.keys()                         # list[str] — all dot-notation paths
secrets.all()                          # dict — entire credentials

Compatibility

This package reads credentials encrypted by the gosecrets CLI (AES-256-GCM). It is fully compatible with credentials created by the Go library.


Contributor(s)


Contribute

All PR’s are welcome!

  1. fork (https://github.com/bilustek/gosecrets-py/fork)
  2. Create your branch (git checkout -b my-feature)
  3. commit yours (git commit -am 'add some functionality')
  4. push your branch (git push origin my-feature)
  5. Then create a new Pull Request!

License

This project is licensed under MIT


This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the code of conduct.

Metadata

Release files for gosecrets 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for gosecrets 0.1.0
File Size Uploaded Provenance Actions
gosecrets-0.1.0.tar.gz 8.4 kB Without provenance Details for gosecrets-0.1.0.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for gosecrets 0.1.0
File Interpreter ABI Platform Actions
gosecrets-0.1.0-py3-none-any.whl Python 3 none any Details for gosecrets-0.1.0-py3-none-any.whl

Total release size: 15.2 kB

Release files / gosecrets-0.1.0.tar.gz

Download URL gosecrets-0.1.0.tar.gz
Size 8.4 kB
Tags Source
SHA-256 checksum
How to use checksums
9015f10080ea1723db059d915918c0a479a8b6047a50704548afccf2e9b7cb4c
BLAKE2b-256 checksum
How to use checksums
bfe1c81d09dea3915c15e00b59e04e836426fb74d947afd9b5b344ba471ddf5b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.14.2

Release files / gosecrets-0.1.0-py3-none-any.whl

Download URL gosecrets-0.1.0-py3-none-any.whl
Size 6.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
75abe90c81db4f3c62008cf1cabb3acb8971f4566aa6b7e3e10dc40f5adecca5
BLAKE2b-256 checksum
How to use checksums
8365bb4fb205191c91fb54c8927411bed30b5aedd6f1fa93edb2d5ccd60f6b15
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.14.2

Security for gosecrets 0.1.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 release files No provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page