Skip to main content

Stuff I often need.

Project description

yootils

Stuff I often need. Also born out of work at the NYT.

Usage

This package is available on PyPI. Run

pip install yootils

to install utilities without any extra external dependencies. To install utilities that require external dependencies, such as those for GCP authentication, inside yootils/google, add an extra, e.g.,

pip install 'yootils[google]'

See all available extras in pyproject.toml.

Development

This project uses uv to manage Python dependencies.

Frequently used commands or groups of commands are defined as Makefile recipes. Run make help to see a list of available recipes.

Setting up system dependencies

Run direnv allow to enable direnv for this project, if you haven't already.

Edit the list of system dependencies in shell.nix. When you're ready, cd again into the project directory. All system dependencies will be installed in a sealed environment specific to your project. This environment will unload if you cd out of the project directory, and reload if you cd back in. Any changes you make to shell.nix, including adding or removing dependencies from the declared packages list automatically sync to your environment every time you hit Enter on the command line.

The Nix package repository is a good place to search for packages you can install (use the unstable channel). If a package isn't available, you can try building it from scratch directly within shell.nix. Here's an example of how to install Vespa

let
    nixpkgs = fetchTarball "https://github.com/NixOS/nixpkgs/tarball/nixos-unstable";
    pkgs = import nixpkgs { 
        config = {
            allowUnfree = true;
        }; 
        overlays = []; 
    };
    
    # Install vespa-cli from source since it isn't available on nixpkgs
    # Then you can reference vespa-cli below
    vespa-cli = pkgs.stdenv.mkDerivation {
        name = "vespa-cli";
        version = "8.489.59";
        src = pkgs.fetchurl {
            url = "https://github.com/vespa-engine/vespa/releases/download/v8.489.59/vespa-cli_8.489.59_darwin_arm64.tar.gz";
            sha256 = "sha256-lyRR50CTi4eBYz5zhfFfp/lhFHonb2ruVUOsnJaKaHo=";
        };
        unpackPhase = "tar -xzf $src";
        installPhase = ''
            mkdir -p $out/bin
            cp vespa-cli_8.489.59_darwin_arm64/bin/vespa $out/bin/vespa
        '';
        buildPhase = " : "; # No build needed, it's precompiled
    };
in
pkgs.mkShellNoCC {
    packages = with pkgs; [
        vespa-cli # References the vespa-cli derivation created above
    ];
}

Setting up project dependencies

It's literally as easy as

make install

Running tests

Run

make test

to run all unit and (if available) integration tests.

Code formatting

Applies to Python and (if applicable) Terraform code.

make format

We use Ruff as the formatter for Python. Rules are specified in pyproject.toml.

Code linting

Here, "linting" refers to the process of static-type checking in Python and (if applicable) validation of Terraform configurations.

make lint

We use Pyright as the Python static type checker. Rules are also specified in pyproject.toml.

Deployment

This package is automatically deployed to PyPI when pull request to the main branch is merged and the version number is bumped, via GitHub Actions.

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

yootils-0.2.5.tar.gz (15.9 kB view details)

Uploaded Source

Built Distribution

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

yootils-0.2.5-py3-none-any.whl (16.9 kB view details)

Uploaded Python 3

File details

Details for the file yootils-0.2.5.tar.gz.

File metadata

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

File hashes

Hashes for yootils-0.2.5.tar.gz
Algorithm Hash digest
SHA256 bb1194ac61ade74eafd5eca00c5c91e1032e1f401b13ffabfeb4a88435f5956f
MD5 1ad57eb6a0b6ead9c97a9058afb13f84
BLAKE2b-256 5374736b3b457097de7719e8ced5699dcb7311d21966887a82f925d1bd6c13ab

See more details on using hashes here.

Provenance

The following attestation bundles were made for yootils-0.2.5.tar.gz:

Publisher: on-merge-to-main.yaml on duynguyen158/yootils

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

File details

Details for the file yootils-0.2.5-py3-none-any.whl.

File metadata

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

File hashes

Hashes for yootils-0.2.5-py3-none-any.whl
Algorithm Hash digest
SHA256 a6f106e44ad46a7a3a0c583c41d245816e4fb67f14c5233cd50f41479cbb8244
MD5 8c373914f7f5f467e0c8f32841101f4a
BLAKE2b-256 947f2a001c2843a18dd9d114b8bdd937378170e49cbac2143a18873592adbf43

See more details on using hashes here.

Provenance

The following attestation bundles were made for yootils-0.2.5-py3-none-any.whl:

Publisher: on-merge-to-main.yaml on duynguyen158/yootils

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