Skip to main content

A Python package manager written in Rust inspired by Cargo.

Project description

ci-rust ci-python crates.io discord

huak

Huak logo


About

A Python package manager written in Rust. The Cargo for Python.

⚠️ Disclaimer: huak is currently in its proof-of-concept (PoC) phase.

Huak aims to support a base workflow for developing Python packages and projects. The process is linear and purpose oriented, establishing better familiarization with the steps.

graph LR
    A[Workflow Startup] --> B[Project Change]
    B --> C[Project Test]
    C --> D[Project Distribution]

See the design doc for more workflow details.

The goal is to create an opinionated tool to support a reliably inviting onboarding experience for the Python ecosystem, that feels responsive and snappy to use.

Milestones and Project Board

See either this milestone list or the issue board to check the status of this project at any point in time.

README Contents

Installation

A PoC and an 0.1.0 are expected.

During the PoC phase you'll need to explicitly install the latest pre-release available.

Install with pip:

❯ pip install huak --pre

Install with cargo:

❯ cargo install huak --version crates.io

Around 0.1.0 you'll be able to install huak using brew. More distribution plans will be finalized closer to 0.1.0.

❯ huak help

A Python package manager written in Rust inspired by Cargo

USAGE:
    huak [SUBCOMMAND]

OPTIONS:
    -h, --help       Print help information
    -V, --version    Print version information

SUBCOMMANDS:
    activate         Activate the project's virtual environment.
    add              Add a Python module to the existing project.
    build            Build tarball and wheel for the project.
    clean            Remove tarball and wheel from the built project.
    doc              Build the current project's documentation.*
    fmt              Format Python code.
    help             Display Huak commands and general usage information.
    init             Initialize the existing project.
    install          Install the dependencies of an existing project.
    lint             Lint Python code.
    new              Create a project from scratch.
    publish          Build and upload current project to a registry.*
    remove           Remove a dependency from the project.
    run              Run a command within the project's environment context.*
    test             Test Python code.
    update           Update dependencies added to the project.*
    version          Display the version of the project.
    
    # 0.1.0
    audit            Check for just vulnerable dependencies or check
                     everything including license compatibility with
                     your dependencies.*
    fix              Apply auto-fixing to your Python code.*

"*" indicates first-pass of implementation is incomplete.

Note that huak activate is currently unsupported on Windows. See the related issue for more details.

Documentation

If you've cloned the repository, run cargo doc --open.

Some documentation for 0.0.x releases will land on docs.rs. Around the 0.1.0 release I'd like to have more robust documentation about Huak for users, contributors, and the curious.

Goals

Besides some of my own experience with the Python ecosystem, there are a few additional guiding principles steering the development of Huak:

1. Open to open source 📚

Open source has done a lot for me both from a tooling and professional development perspective. I'd love to offer Huak as a way to help onboard the absolute and relative newcomers (like myself).

2. Just use huak

I love Rust's onboarding experience. Cargo has played a large role. It's a great tool for newcomers to use to get their feet wet. Huak can provide the same experience for Python.

3. Fast ⚡️

There's room for faster tooling in the Python ecosystem. One of the guiding principles will be "Is this the fastest it can be?"

4. Python 🤝 Rust

JavaScript has seen a "Going Rust" sub-community pop up. Python seems to be getting one too. Huak would be able to fuel contributions to the intersection of these two languages.

Contributing

Please read our contributing guide before you start contributing.

More

See the design doc for more about the project, design motivations, and various architecture docs.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

huak-0.0.7a2-cp310-none-win_amd64.whl (1.8 MB view hashes)

Uploaded CPython 3.10 Windows x86-64

huak-0.0.7a2-cp310-none-win32.whl (1.7 MB view hashes)

Uploaded CPython 3.10 Windows x86

huak-0.0.7a2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (4.8 MB view hashes)

Uploaded CPython 3.10 manylinux: glibc 2.17+ x86-64

huak-0.0.7a2-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl (5.0 MB view hashes)

Uploaded CPython 3.10 manylinux: glibc 2.17+ i686

huak-0.0.7a2-cp310-cp310-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl (4.9 MB view hashes)

Uploaded CPython 3.10 macOS 10.9+ universal2 (ARM64, x86-64) macOS 10.9+ x86-64 macOS 11.0+ ARM64

huak-0.0.7a2-cp39-none-win_amd64.whl (1.8 MB view hashes)

Uploaded CPython 3.9 Windows x86-64

huak-0.0.7a2-cp39-none-win32.whl (1.7 MB view hashes)

Uploaded CPython 3.9 Windows x86

huak-0.0.7a2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (4.8 MB view hashes)

Uploaded CPython 3.9 manylinux: glibc 2.17+ x86-64

huak-0.0.7a2-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl (5.0 MB view hashes)

Uploaded CPython 3.9 manylinux: glibc 2.17+ i686

huak-0.0.7a2-cp38-none-win_amd64.whl (1.8 MB view hashes)

Uploaded CPython 3.8 Windows x86-64

huak-0.0.7a2-cp38-none-win32.whl (1.7 MB view hashes)

Uploaded CPython 3.8 Windows x86

huak-0.0.7a2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (4.8 MB view hashes)

Uploaded CPython 3.8 manylinux: glibc 2.17+ x86-64

huak-0.0.7a2-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl (5.0 MB view hashes)

Uploaded CPython 3.8 manylinux: glibc 2.17+ i686

huak-0.0.7a2-cp37-none-win_amd64.whl (1.8 MB view hashes)

Uploaded CPython 3.7 Windows x86-64

huak-0.0.7a2-cp37-none-win32.whl (1.7 MB view hashes)

Uploaded CPython 3.7 Windows x86

huak-0.0.7a2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (4.8 MB view hashes)

Uploaded CPython 3.7m manylinux: glibc 2.17+ x86-64

huak-0.0.7a2-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl (5.0 MB view hashes)

Uploaded CPython 3.7m manylinux: glibc 2.17+ i686

Supported by

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