Skip to main content

Reusable libraries for Sourcegraph projects

Project description

src-py-lib

Reusable libraries for Sourcegraph projects

Experimental - This is not a supported Sourcegraph product

This repo was created for Sourcegraph Implementation Engineering deployments, and is not intended, designed, built, or supported for use in any other scenario. Feel free to open issues or PRs, but responses are best effort.

Semantic Versioning

  • Release versions are major.minor.patch
  • Because this project is still major version 0:
    • Minor version updates are breaking changes
    • Patch version updates are not breaking changes

Install

From PyPI:

uv add src-py-lib

From this repository:

uv add git+https://github.com/sourcegraph/src-py-lib.git

Use it for

  • Typed config models loaded from defaults, .env, environment variables, and CLI flags
  • Root logger setup with terminal output, optional JSONL events, timing, and run metadata
  • A shared httpx JSON client with timeouts, retries, Retry-After, and contextual errors
  • Small helpers for TSV output, JSON caches, GraphQL pagination, and batched GraphQL queries
  • Thin clients for Sourcegraph, Linear, Slack, GitHub, Google Sheets, and 1Password

Prefer vendor SDKs when they handle complex auth, token refresh, quota behavior, pagination, retries, or request models better than a thin wrapper

Quick example

Define a project config, parse it once, and configure logging at startup:

from pathlib import Path

import src_py_lib as src


class LinearExportConfig(src.LinearClientConfig):
    output_dir: Path = src.config_field(
        default=Path("."),
        env_var="LINEAR_EXPORT_OUTPUT_DIR",
        cli_flag="--output-dir",
        metavar="PATH",
        help="Directory for generated files.",
    )

config = src.parse_args(LinearExportConfig, description="Export Linear data")

with src.logging(config):
    client = src.linear_client_from_config(config)
    client.validate()
    src.info("Starting export", output_dir=str(config.output_dir))
  • Config precedence is code defaults, .env, shell environment, then CLI overrides
  • parse_args resolves op://... references by default
  • Mark sensitive fields with secret=True so config snapshots redact resolved values
  • src.logging() configures the root logger by default so project code and src_py_lib internals share the same handlers
  • Use event() for timed work, stage() for workflow context, and info() / warning() / error() for structured one-off events

Development

uv sync
uv run ruff format .
uv run ruff check .
uv run pyright
uv run python -m unittest discover -s tests
npx --yes markdownlint-cli2

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

src_py_lib-0.1.2.tar.gz (69.4 kB view details)

Uploaded Source

Built Distribution

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

src_py_lib-0.1.2-py3-none-any.whl (44.2 kB view details)

Uploaded Python 3

File details

Details for the file src_py_lib-0.1.2.tar.gz.

File metadata

  • Download URL: src_py_lib-0.1.2.tar.gz
  • Upload date:
  • Size: 69.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for src_py_lib-0.1.2.tar.gz
Algorithm Hash digest
SHA256 2a533fd2f684f91c9a676b2f0da6fa5502eef366d647f3f2523448285ca896e9
MD5 f4421a0a10e521dad0ef4dcdab87951c
BLAKE2b-256 a307af0d1ab4af7c2f10b03efe640e2d67bfa3403d098bc72caf2783c62b82b1

See more details on using hashes here.

Provenance

The following attestation bundles were made for src_py_lib-0.1.2.tar.gz:

Publisher: release.yml on sourcegraph/src-py-lib

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

File details

Details for the file src_py_lib-0.1.2-py3-none-any.whl.

File metadata

  • Download URL: src_py_lib-0.1.2-py3-none-any.whl
  • Upload date:
  • Size: 44.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for src_py_lib-0.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 7e0d3f5c1a667b8ebc31fa54b82a9dc9bd17fa08310bfb67ee763996909fda0f
MD5 f46f4e2ca9befc9b4dc9704ca8030170
BLAKE2b-256 6b00b75fd3a12d5233fa8f913639805ef157c576e357c0b5098fce3416d2f519

See more details on using hashes here.

Provenance

The following attestation bundles were made for src_py_lib-0.1.2-py3-none-any.whl:

Publisher: release.yml on sourcegraph/src-py-lib

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