📦 A Python package manager written in Rust inspired by Cargo.

Overview

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.
    clean-pycache    Remove all .pyc files and __pycache__ directories.
    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.

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.

Comments
  • Shell completion command

    Shell completion command

    Resolves #331

    This pr aims to add a shell completion command so users can add a command to their shell start up script. It currently supports bash, elvish, fish, powershell and zsh.

    This pr is initially opened as a draft, so there are still a number of tasks that need to be done.

    • [x] suggest command to shell start up script
      • [x] bash documentation ~~- [ ] elvish documentation~~
      • [x] include a link to the elvish not implemented issue
      • [x] fish documentation
      • [x] powershell documentation
      • [x] ~~fish~~ zsh documentation ~~- [ ] add a rename flag so the binary can be renamed by the user~~
    • [x] add docstring for main completion command
    • [x] automatically add the completion function to the correct shell init script ~~- [ ] Implement elvish installation~~ ~~- [ ] Implement elvish uninstallation~~ ~~- [ ] Implement powershell installation~~ ~~- [ ] Implement powershell uninstallation~~
    opened by MitchellBerend 35
  • Improve error handling

    Improve error handling

    Problem

    It feels like there isn't clear differentiation of use between CliResult/CliError and generic anyhow::Errors. At time I'll myself forcing myself to create one or the other depending on how deeper logic handles errors.

    Solution

    TBD

    good first issue 
    opened by cnpryer 34
  • python binary resolution

    python binary resolution

    Resolves #241

    This pr aims to add a way to find the location of the python binary. It checks all directories defined in the $PATH environment variable and returns the first of the following list it finds.

    • python3
    • python
    • python2
    opened by MitchellBerend 32
  • Issue #109 | Improving errors

    Issue #109 | Improving errors

    Tag #109

    Alright, so this is the work I've done so far. It's not in a complete stage yet, and some more work needs to be done. I think I could finish whatever changes are needed tomorrow, but a solution needs to be found for one stark problem, and that it can be very hard to know exactly where and what broke when these happen, and I think we can fix that by:

    1. Enforce a "standard" error message. This could be something like "Function run() | src/run.rs | 'Failed to start up' "
    2. Add a String to each enum so that we can print out said string
    3. Use more error matching the like so we can solve errors on the spot than piping them up if we don't absolutely need to pipe them up.

    Sidenote: I'm glad this project is using MIT. Maybe we can add a file called CONTRIBUTORS adding everyone's individual copyright license, but I digress, it's not important for me.

    Also, the majority of files were edited, but the majority is just converting the new function. The majority of changes happened in main.rs and errors.rs.

    There are failing tests but that can be fixed at the end, I'm guessing the majority of them is just not made for the new kinds of errors.

    opened by AdrianRBerg 31
  • initiate new projects with version control

    initiate new projects with version control

    Description of request

    I didn't see an issue related to this, so i figured I'd open this one up since it's one of my favorite cargo defaults.

    Title is pretty self explanatory. Just like cargo, by default Huak would initiate a git repo with a new project.

    Could probably get by with git without someone else even mentioning other VCSs for a long time.

    enhancement good first issue dependencies 
    opened by dpgraham4401 18
  • Add basic run command

    Add basic run command

    Closes #256

    This is a very basic bare-bone implementation of huak run. Currently requires quotes around the command, for example I tested with huak run "cowsay Hello World --character tux". Of course it needs huak add cowsay beforehand to work.

    opened by icp1994 15
  • Update .gitignore

    Update .gitignore

    .gitignore was matching src/huak/env folder, so I re-included it. Alternatively we could make venv dir matching more specific (e.g. only match them in root directory and/or huak-py). Should be fine either way. Or we could remove matching env/ altogether, because pretty much no one uses that AFAIK ;) Let me know what would you prefer!

    opened by LoipesMas 15
  • Basic add command

    Basic add command

    huak add

    Run huak add to add a new dependency to the pyproject.toml and install it to a virtual environment.

    The first iteration of this command would wrap pip to install the dependency and allow --dev to indicate it's a dev dependency. If a virtual environment doesn't exist then one will be generated.

    enhancement 
    opened by cnpryer 14
  • Bootstrap with template

    Bootstrap with template

    Changes from this PR

    closes #270

    1. For the new command, make argument required
      • inspiration for this came from cargo
      • users can still use the current directory via passing the cwd
    2. Re-organize the project module
      • For example, things are now accessible via project:::Config instead of project::config::Config
      • also removes all the logic out of mod.rs, mod.rs is just used for controlling the project module internal API
    3. Moves create_toml function that was in the funky project_utils.rs file in commands to a method of Project.
    4. Adds the templates discussed in #270
      • here's the structure I went with

    Library template

    <lib_name>
    ├── pyproject.toml
    ├── src
    │   ├── __init__.py
    │   └── my_math.py    # includes an example library with 2 function
    └── test.py           # Also includes an example python UnitTest (not pytest)
    

    App template

    <app_name>
    ├── pyproject.toml
    └── src
        └── <app_name>
            └── main.py
    
    opened by dpgraham4401 13
  • Add git initialization to `new` command

    Add git initialization to `new` command

    Closes #281 Added initialization of basic git repo to the new command. Can be skipped with --no-vcs. Adds git2 dependency, as discussed in the issue. I considered moving the init call to create_project, but that didn't feel right.

    opened by LoipesMas 11
  • `activate` command

    `activate` command

    Closes #12

    Implements the activate command. Pretty much just translated from poetry :sweat_smile:

    Adds expectrl dependency for pseudo-shell-session (shout-out to that crate, made this possible at all) and terminal_size to get terminal size ;P

    Not perfect, but should be good enough for 90% of use-cases.

    Should probably be tested on different systems (especially Windows, because I haven't tested that at all).

    Let me know if you find any bugs or want anything changed!

    opened by LoipesMas 11
  • Bump toml_edit from 0.14.4 to 0.16.2

    Bump toml_edit from 0.14.4 to 0.16.2

    Bumps toml_edit from 0.14.4 to 0.16.2.

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 0
  • Bump serde from 1.0.145 to 1.0.152

    Bump serde from 1.0.145 to 1.0.152

    Bumps serde from 1.0.145 to 1.0.152.

    Release notes

    Sourced from serde's releases.

    v1.0.152

    • Documentation improvements

    v1.0.151

    • Update serde::{ser,de}::StdError to re-export core::error::Error when serde is built with feature="std" off and feature="unstable" on (#2344)

    v1.0.150

    • Relax some trait bounds from the Serialize impl of HashMap and BTreeMap (#2334)
    • Enable Serialize and Deserialize impls of std::sync::atomic types on more platforms (#2337, thanks @​badboy)

    v1.0.149

    • Relax some trait bounds from the Serialize impl of BinaryHeap, BTreeSet, and HashSet (#2333, thanks @​jonasbb)

    v1.0.148

    • Support remote derive for generic types that have private fields (#2327)

    v1.0.147

    • Add serde::de::value::EnumAccessDeserializer which transforms an EnumAccess into a Deserializer (#2305)

    v1.0.146

    • Allow internally tagged newtype variant to contain unit (#2303, thanks @​tage64)
    Commits
    • ccf9c6f Release 1.0.152
    • b25d0ea Link to Hjson data format
    • 4f4557f Link to bencode data format
    • bf400d6 Link to serde_tokenstream data format
    • 4d2e36d Wrap flexbuffers bullet point to 80 columns
    • df6310e Merge pull request #2347 from dtolnay/docsrs
    • 938ab5d Replace docs.serde.rs links with intra-rustdoc links
    • ef5a0de Point documentation links to docs.rs instead of docs.serde.rs
    • 5d186c7 Opt out -Zrustdoc-scrape-examples on docs.rs
    • 44bf363 Release 1.0.151
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 0
  • Bump serde_json from 1.0.86 to 1.0.91

    Bump serde_json from 1.0.86 to 1.0.91

    Bumps serde_json from 1.0.86 to 1.0.91.

    Release notes

    Sourced from serde_json's releases.

    v1.0.90

    • Documentation improvements

    v1.0.89

    • Fix invalid JSON incorrectly accepted when a large number has no digits after decimal point (#953)

    v1.0.88

    • Optimize serde_json::Map's implementation of append and clone_from (#952, thanks @​Lucretiel)

    v1.0.87

    • Add write_i128 and write_u128 methods to serde_json::Formatter to control the formatting of 128-bit integers (#940, thanks @​Lucretiel)
    Commits
    • 26f147f Release 1.0.91
    • d9cdb98 Opt out -Zrustdoc-scrape-examples on docs.rs
    • 331511d Release 1.0.90
    • 8753829 Replace ancient CI service provider in readme
    • 0a43394 Update build status badge
    • 8794844 Prevent build.rs rerunning unnecessarily on all source changes
    • 0b54871 Time out workflows after 45 minutes
    • ecad462 Fix renamed let_underscore_drop lint
    • 9295c96 Resolve needless_borrowed_reference clippy lints
    • d2f9368 Release 1.0.89
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 0
  • Bump reqwest from 0.11.12 to 0.11.13

    Bump reqwest from 0.11.12 to 0.11.13

    Bumps reqwest from 0.11.12 to 0.11.13.

    Release notes

    Sourced from reqwest's releases.

    v0.11.13

    What's Changed

    • Add ClientBuilder::dns_resolver() option for custom DNS resolvers.
    • Add ClientBuilder::tls_sni(bool) option to enable or disable TLS Server Name Indication.
    • Add Identity::from_pkcs8_pem() constructor when using native-tls.
    • Fix redirect::Policy::limited(0) from following any redirects.

    New Contributors

    Changelog

    Sourced from reqwest's changelog.

    v0.11.13

    • Add ClientBuilder::dns_resolver() option for custom DNS resolvers.
    • Add ClientBuilder::tls_sni(bool) option to enable or disable TLS Server Name Indication.
    • Add Identity::from_pkcs8_pem() constructor when using native-tls.
    • Fix redirect::Policy::limited(0) from following any redirects.
    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 0
  • Improvements for Python binary resolution

    Improvements for Python binary resolution

    Following up on #335.

    • Use the implementation for Venv.create() to search the system for a Python binary to use to generate a venv with.
    • Optional Refactor the implementation for less redundant walking.
    • Optional Refactor the implementation for generic recursive path searching.
    • Optional Add recursion limit for walking dirs.
    opened by cnpryer 2
Releases(v0.0.7-alpha.3)
  • v0.0.7-alpha.3(Oct 22, 2022)

    ⚠️ Disclaimer: huak is entering its Alpha phase and is still considered a proof-of-concept.

    Highlights

    • huak new initializes projects with .git
    • Update huak activate for more Windows compatibility
    • Add basic huak run command

    What's Changed

    • Indicate start of Alpha phase by @cnpryer in https://github.com/cnpryer/huak/pull/307
    • Implement first-pass activate command for Windows by @LoipesMas in https://github.com/cnpryer/huak/pull/306
    • Update README.md by @cnpryer in https://github.com/cnpryer/huak/pull/308
    • Bump toml_edit from 0.13.4 to 0.14.4 by @dependabot in https://github.com/cnpryer/huak/pull/309
    • Bump clap from 4.0.10 to 4.0.11 by @dependabot in https://github.com/cnpryer/huak/pull/310
    • Bump serde_json from 1.0.85 to 1.0.86 by @dependabot in https://github.com/cnpryer/huak/pull/311
    • Handle errors in activate better by @LoipesMas in https://github.com/cnpryer/huak/pull/314
    • CI updates by @dpgraham4401 in https://github.com/cnpryer/huak/pull/313
    • Fix README.md by @cnpryer in https://github.com/cnpryer/huak/pull/316
    • Reorganize ci-rust by @cnpryer in https://github.com/cnpryer/huak/pull/315
    • Bump clap from 4.0.11 to 4.0.15 by @dependabot in https://github.com/cnpryer/huak/pull/317
    • Add git initialization to new command by @LoipesMas in https://github.com/cnpryer/huak/pull/320
    • Add basic run command by @icp1994 in https://github.com/cnpryer/huak/pull/319
    • Update ci-python.yaml by @cnpryer in https://github.com/cnpryer/huak/pull/323
    • Default new command to Library project type by @cnpryer in https://github.com/cnpryer/huak/pull/322
    • Bump to v0.0.7-alpha.3 by @cnpryer in https://github.com/cnpryer/huak/pull/324

    Full Changelog: https://github.com/cnpryer/huak/compare/v0.0.7-alpha.2...v0.0.7-alpha.3

    Source code(tar.gz)
    Source code(zip)
  • v0.0.7-alpha.2(Oct 9, 2022)

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

    Highlights

    • Sets huak activate as unsupported on windows (https://github.com/cnpryer/huak/pull/302)

    What's Changed

    • Add windows and macos to ci-rust action by @cnpryer in https://github.com/cnpryer/huak/pull/300
    • Set activate command to unimplemented on windows by @cnpryer in https://github.com/cnpryer/huak/pull/301
    • Bump to v0.0.7-alpha.2 by @cnpryer in https://github.com/cnpryer/huak/pull/304
    • Update README.md by @cnpryer in https://github.com/cnpryer/huak/pull/305

    Full Changelog: https://github.com/cnpryer/huak/compare/v0.0.7-alpha.1...v0.0.7-alpha.2

    Source code(tar.gz)
    Source code(zip)
  • v0.0.7-alpha.1(Oct 9, 2022)

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

    Highlights

    • Adds huak activate
    • Moves huak clean-pycache to huak clean --pycache

    What's Changed

    • Update .gitignore by @LoipesMas in https://github.com/cnpryer/huak/pull/295
    • activate command by @LoipesMas in https://github.com/cnpryer/huak/pull/283
    • Move clean-pycache command to clean flag by @cnpryer in https://github.com/cnpryer/huak/pull/296
    • Indicate activate command availability in README by @cnpryer in https://github.com/cnpryer/huak/pull/297
    • Bump to v0.0.7-alpha.1 by @cnpryer in https://github.com/cnpryer/huak/pull/298

    New Contributors

    • @LoipesMas made their first contribution in https://github.com/cnpryer/huak/pull/295

    Full Changelog: https://github.com/cnpryer/huak/compare/v0.0.6-alpha.1...v0.0.7-alpha.1

    Source code(tar.gz)
    Source code(zip)
  • v0.0.6-alpha.1(Oct 8, 2022)

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

    Highlights

    • Adds project type bootstrapping to huak new
    • Bootstrapped project structure no longer uses src (temporary)
    • Adds basic fix command

    What's Changed

    • Use map_err by @cnpryer in https://github.com/cnpryer/huak/pull/287
    • Bootstrap with template by @dpgraham4401 in https://github.com/cnpryer/huak/pull/289
    • Basic fix command by @snapdgn in https://github.com/cnpryer/huak/pull/282
    • Update fix_project test by @cnpryer in https://github.com/cnpryer/huak/pull/292
    • Handle ruff --fix suggestion by @cnpryer in https://github.com/cnpryer/huak/pull/293
    • Bump to v0.0.6-alpha.1 by @cnpryer in https://github.com/cnpryer/huak/pull/294

    New Contributors

    • @snapdgn made their first contribution in https://github.com/cnpryer/huak/pull/282

    Full Changelog: https://github.com/cnpryer/huak/compare/v0.0.5-alpha.2...v0.0.6-alpha.1

    Source code(tar.gz)
    Source code(zip)
  • v0.0.5-alpha.2(Oct 7, 2022)

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

    What's Changed

    • Use pyproject-toml by @FoundedNahte in https://github.com/cnpryer/huak/pull/278
    • Allow huak install with optional dependency groups by @icp1994 in https://github.com/cnpryer/huak/pull/276
    • Bump to v0.0.5-alpha.2 by @cnpryer in https://github.com/cnpryer/huak/pull/284

    Full Changelog: https://github.com/cnpryer/huak/compare/v0.0.5-alpha.1...v0.0.5-alpha.2

    Source code(tar.gz)
    Source code(zip)
  • v0.0.5-alpha.1(Oct 5, 2022)

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

    Highlights

    • PyPI distribution 🎉
    • Basic build command
    • Basic optional dependencies enhancements
    • Basic project type bootstrapping option
    • Updated error handling

    Note that we expect a v0.0.5-alpha.2 soon with enhanced pyproject.toml management.

    What's Changed

    • Small chores by @cnpryer in https://github.com/cnpryer/huak/pull/251
    • PythonPackage parse from string++ by @dpgraham4401 in https://github.com/cnpryer/huak/pull/253
    • Use HuakError in PythonPackage init by @cnpryer in https://github.com/cnpryer/huak/pull/255
    • Update to clap 4 by @FoundedNahte in https://github.com/cnpryer/huak/pull/259
    • Use hatchling build system for PoC by @cnpryer in https://github.com/cnpryer/huak/pull/260
    • Add discord link to CONTRIBUTING.md by @cnpryer in https://github.com/cnpryer/huak/pull/262
    • Restructure optional dependencies by @icp1994 in https://github.com/cnpryer/huak/pull/263
    • Add install --all by @cnpryer in https://github.com/cnpryer/huak/pull/265
    • Add basic build command by @cnpryer in https://github.com/cnpryer/huak/pull/266
    • Rename Venv.install_package dependency param to package by @cnpryer in https://github.com/cnpryer/huak/pull/267
    • Initialize PythonPackage using from with ref by @cnpryer in https://github.com/cnpryer/huak/pull/268
    • add project type selection in new command by @backwardspy in https://github.com/cnpryer/huak/pull/269
    • Bump clap from 4.0.6 to 4.0.8 by @dependabot in https://github.com/cnpryer/huak/pull/273
    • Use thiserror throughout huak by @aaronleopold in https://github.com/cnpryer/huak/pull/275
    • Indicate basic build command available in README by @cnpryer in https://github.com/cnpryer/huak/pull/277
    • Publishing CI for PyPI by @dpgraham4401 in https://github.com/cnpryer/huak/pull/274
    • Bump to v0.0.5-alpha.1 by @cnpryer in https://github.com/cnpryer/huak/pull/279
    • Indicate pypi availability in README by @cnpryer in https://github.com/cnpryer/huak/pull/280

    New Contributors

    • @FoundedNahte made their first contribution in https://github.com/cnpryer/huak/pull/259
    • @icp1994 made their first contribution in https://github.com/cnpryer/huak/pull/263
    • @backwardspy made their first contribution in https://github.com/cnpryer/huak/pull/269
    • @dependabot made their first contribution in https://github.com/cnpryer/huak/pull/273
    • @aaronleopold made their first contribution in https://github.com/cnpryer/huak/pull/275

    Full Changelog: https://github.com/cnpryer/huak/compare/v0.0.4-alpha.1...v0.0.5-alpha.1

    Source code(tar.gz)
    Source code(zip)
  • v0.0.4-alpha.1(Sep 28, 2022)

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

    Highlights

    • Adds huak add command
    • Adds optional dependencies
    • Updates author formatting in pyproject.toml
    • Improves error handling
    • Print help if no commands are passed
    • Fix huak new for sub-projects.
    • Made Discord 🎉
    • Use python3 alias for macOS and linux
    • Adds basic management of exit codes
    • Reduce some chattiness
    • Docs and CI enhancments

    See below for all changes...

    What's Changed

    • Add digital ocean getting started article to CONTRIBUTING.md by @cnpryer in https://github.com/cnpryer/huak/pull/194
    • Use array of strings for toml dependencies by @cnpryer in https://github.com/cnpryer/huak/pull/195
    • Fix an eprintln by @cnpryer in https://github.com/cnpryer/huak/pull/196
    • Only show version in install badge by @cnpryer in https://github.com/cnpryer/huak/pull/202
    • Add PoC disclaimer and update project structure in architecture.md by @cnpryer in https://github.com/cnpryer/huak/pull/203
    • move guides to docs, add Cargo.lock, and misc typos by @dpgraham4401 in https://github.com/cnpryer/huak/pull/204
    • Update Cargo.lock by @cnpryer in https://github.com/cnpryer/huak/pull/205
    • Fix cargo install comment in README.md by @cnpryer in https://github.com/cnpryer/huak/pull/206
    • Issue #109 | Improving errors by @AdrianRBerg in https://github.com/cnpryer/huak/pull/184
    • Add PythonNotFound enum to errors.rs by @cnpryer in https://github.com/cnpryer/huak/pull/208
    • Use HuakError placeholder enum name by @cnpryer in https://github.com/cnpryer/huak/pull/209
    • Update discord badge by @cnpryer in https://github.com/cnpryer/huak/pull/210
    • Remove zip dev dependency by @cnpryer in https://github.com/cnpryer/huak/pull/211
    • Updated PythonPackage initializing functions by @cnpryer in https://github.com/cnpryer/huak/pull/212
    • Use python3 alias on linux by @cnpryer in https://github.com/cnpryer/huak/pull/213
    • Add wrapped cli errors for ruff, black, pytest by @cnpryer in https://github.com/cnpryer/huak/pull/214
    • Fix PyTestError and other minor fixes by @cnpryer in https://github.com/cnpryer/huak/pull/215
    • Update AnyhowError display by @cnpryer in https://github.com/cnpryer/huak/pull/217
    • Fix huak new 'subproject' error by @cnpryer in https://github.com/cnpryer/huak/pull/218
    • Add PyProjectTomlNotFound and make huak less chatty by @cnpryer in https://github.com/cnpryer/huak/pull/219
    • Update README.md by @cnpryer in https://github.com/cnpryer/huak/pull/220
    • Use CliError in bin and exit with ExitCode by @cnpryer in https://github.com/cnpryer/huak/pull/221
    • Handle Project init with VenvNotFound by @cnpryer in https://github.com/cnpryer/huak/pull/224
    • Update issue templates by @cnpryer in https://github.com/cnpryer/huak/pull/225
    • Update architecture.md by @cnpryer in https://github.com/cnpryer/huak/pull/226
    • Update venv.create to return anyhow by @cnpryer in https://github.com/cnpryer/huak/pull/230
    • Update docs and add Project struct documentation example by @cnpryer in https://github.com/cnpryer/huak/pull/231
    • Add optional-dependencies by @cnpryer in https://github.com/cnpryer/huak/pull/233
    • docs(readme): fix typo by @HigherOrderLogic in https://github.com/cnpryer/huak/pull/234
    • Reword 'about' docs by @cnpryer in https://github.com/cnpryer/huak/pull/240
    • Add basic add command by @0101coding in https://github.com/cnpryer/huak/pull/227
    • Indicate first-pass add is available in README.md by @cnpryer in https://github.com/cnpryer/huak/pull/242
    • Rename architecture.md to design_doc and update README.md by @cnpryer in https://github.com/cnpryer/huak/pull/243
    • Add version to serialized dep in add command by @cnpryer in https://github.com/cnpryer/huak/pull/244
    • Delete src/huak/pyproject directory by @cnpryer in https://github.com/cnpryer/huak/pull/245
    • Use python3 for macos by @cnpryer in https://github.com/cnpryer/huak/pull/246
    • Remove from optional deps with huak remove by @cnpryer in https://github.com/cnpryer/huak/pull/248
    • Bump to version 0.0.4-alpha.1 by @cnpryer in https://github.com/cnpryer/huak/pull/249

    New Contributors

    • @AdrianRBerg made their first contribution in https://github.com/cnpryer/huak/pull/184
    • @HigherOrderLogic made their first contribution in https://github.com/cnpryer/huak/pull/234
    • @0101coding made their first contribution in https://github.com/cnpryer/huak/pull/227

    Full Changelog: https://github.com/cnpryer/huak/compare/v0.0.3-alpha.1...v0.0.4-alpha.1

    Source code(tar.gz)
    Source code(zip)
  • v0.0.3-alpha.1(Sep 23, 2022)

    From 0.0.1-alpha.1 and 0.0.2-alpha.1

    Started:

    • huak new
    • huak init
    • huak install
    • huak remove
    • huak fmt
    • huak lint
    • huak fmt
    • huak test
    • huak help
    • huak version
    • huak clean
    • huak clean-pycache
    • huak version

    What's Changed

    • Rename HUAK_MUTE_SUBCOMMAND to HUAK_MUTE_COMMAND by @cnpryer in https://github.com/cnpryer/huak/pull/173
    • Start a v0.0.2-alpha.1 for docs by @cnpryer in https://github.com/cnpryer/huak/pull/174
    • Update docs to include publish and doc in scope by @cnpryer in https://github.com/cnpryer/huak/pull/175
    • Fix overflow from package install on windows by @cnpryer in https://github.com/cnpryer/huak/pull/178
    • Use ruff by @cnpryer in https://github.com/cnpryer/huak/pull/179
    • Use ruff --extend-exclude by @cnpryer in https://github.com/cnpryer/huak/pull/180
    • Use constants for wrapped modules by @cnpryer in https://github.com/cnpryer/huak/pull/181
    • Create CODE_OF_CONDUCT.md by @cnpryer in https://github.com/cnpryer/huak/pull/183
    • Update BUG_REPORT.md by @cnpryer in https://github.com/cnpryer/huak/pull/186
    • add ArgRequiredElseHelp to clap settings by @dpgraham4401 in https://github.com/cnpryer/huak/pull/189
    • Serialize as [[project.authors]] in pyproject.toml by @cnpryer in https://github.com/cnpryer/huak/pull/190
    • Set Author toml attributes to Options by @cnpryer in https://github.com/cnpryer/huak/pull/192
    • Bump version to 0.0.3-alpha.1 by @cnpryer in https://github.com/cnpryer/huak/pull/193

    New Contributors

    • @dpgraham4401 made their first contribution in https://github.com/cnpryer/huak/pull/189

    Full Changelog: https://github.com/cnpryer/huak/compare/v0.0.1...v0.0.3-alpha.1

    Source code(tar.gz)
    Source code(zip)
Owner
Chris Pryer
Supply Chain Modeler · Data Engineer · Software Developer
Chris Pryer
A command line tool written in Rust and designed to be a modern build tool + package manager for C/C++ projects.

CCake CCake is a command line tool written in Rust and designed to be a modern build tool + package manager for C/C++ projects. Goals To be easily und

Boston Vanseghi 4 Oct 24, 2022
A new gen package manager, written in rust

Run It run it is a package manager that is based on containers (yes like apx but declarative and written in rust), the difference is that run it is we

null 7 Sep 6, 2024
A Python package written in Rust for email verification without sending any emails.

PyRustify PyRustify is a Python package written in Rust that verifies the email addresses. Features Feature Description Syntax validation Checks if th

Mng 8 Apr 16, 2023
Python package for topological data analysis written in Rust. Not limited to just H0 and H1.

Topological Data Analysis (TDA) Contents Installation Compiling from source Roadmap TDA is a python package for topological data analysis written in R

António Leitão 5 Feb 12, 2024
Dead simple, memoized cargo subcommand to hoist cargo-built binaries into the current working directory, written in Rust.

cargo-hoist Dead simple cargo subcommand to hoist cargo-built binaries into scope. stable Install | User Docs | Crate Docs | Reference | Contributing

refcell.eth 6 Nov 9, 2023
Beautiful, minimal, opinionated CLI prompts inspired by the Clack NPM package

Effortlessly build beautiful command-line apps with Rust ?? ✨ Beautiful, minimal, opinionated CLI prompts inspired by the @clack/prompts npm package.

Alexander Fadeev 7 Jul 23, 2023
Rust Imaging Library's Python binding: A performant and high-level image processing library for Python written in Rust

ril-py Rust Imaging Library for Python: Python bindings for ril, a performant and high-level image processing library written in Rust. What's this? Th

Cryptex 13 Dec 6, 2022
Yet another package manager for Rust.

Rpip Installing. Make sure you have just (packages) installed! Once you have just installed move into the root directory (where this file is) and run

null 2 Apr 27, 2022
The high-speed IAPWS-IF97 package in Rust with C and Python binding

SEUIF97 This is the Rust implementation of the high-speed IAPWS-IF97 package seuif97 with C and Python binding. It is suitable for computation-intensi

Cheng Maohua 5 Aug 12, 2023
Cargo-eval - A cargo plugin to quickly evaluate some Rust source code.

cargo eval A cargo plugin to quickly evaluate some Rust source code. Installation $ cargo install --git https://github.com/timClicks/cargo-eval.git Us

Tim McNamara 9 Dec 21, 2022
Gecko's trusty package manager and command-line utility.

Geckos have super-powers, ya'know? Grip is Gecko's trusty package manager and command-line utility. USAGE: grip [FLAGS] [file] [SUBCOMMAND] FLAGS

Gecko 2 Jan 3, 2022
Yfin is the Official package manager for the Y-flat programming language

Yfin is the Official package manager for the Y-flat programming language. Yfin allows the user to install, upgrade, and uninstall packages. It also allows a user to initialize a package with the Y-flat package structure and files automatically generated. In future, Yfin will also allow users to publish packages.

Jake Roggenbuck 0 Mar 3, 2022
The safe, fast and sane package manager for Linux

moss-rs A rewrite of the Serpent OS tooling in Rust, enabling a robust implementation befitting Serpent and Solus We will initially focus on moss and

Serpent OS 16 Oct 10, 2023
🗽 Universal Node Package Manager

?? NY Universal Node Package Manager node • yarn • pnpm Features Universal - Picks the right package manager for you based on the lockfile in your fol

Kris Kaczor 46 Oct 12, 2023
BASIC build system and package manager.

Bargo BASIC build system and package manager. Bargo is a tool to make it simpler to program in the BASIC programming language. Early versions of BASIC

Vasco Costa 3 Apr 6, 2024
A cargo plugin to shrink cargo's output

cargo single-line A simple cargo plugin that shrinks the visible cargo output to a single line (okay, in the best case scenario). In principle, the pl

Denis 5 Oct 30, 2022
Cargo-about - 📜 Cargo plugin to generate list of all licenses for a crate 🦀

?? cargo-about Cargo plugin for generating a license listing for all dependencies of a crate See the book ?? for in-depth documentation. Please Note:

Embark 281 Jan 1, 2023
Cargo subcommand for running cargo without dev-dependencies.

cargo-no-dev-deps Cargo subcommand for running cargo without dev-dependencies. This is an extraction of the --no-dev-deps flag of cargo-hack to be use

Taiki Endo 5 Jan 12, 2023
Yet another Python environment manager.

yen The easiest Python environment manager. Create virtual environments for any Python version, without needing Python pre-installed. Installation Get

Tushar Sadhwani 19 Oct 7, 2023