Skip to main content

Python projects management toolset

Project description

ndev

ndev is an ultimate tool to manage development lifecycle.

To install ndev run:

uv tool install ndev

To update ndev run:

uv tool upgrade ndev

You can use it to install and debug:

git clone https://github.com/numdes/ndev 
cd ndev
uv tool install --editable .

Release management

When you have a big repository with complicated structure, and you want to release it for customers with a specific structure, you can use ndev release command.

flowchart LR
    SourceRepo[Source Repository]
    DestinationRepo[Destination Repository]
    SourceRepo -->|ndev release| DestinationRepo

Basic use case is to transfer some sources codes to another repository:

    ndev release \
        --origin . \
        --destination git@example.com:libs/example1.git \
        --author_name "$GITLAB_USER_NAME" \
        --author_email "$GITLAB_USER_EMAIL"

Here --origin is a path to the sources you want to release, --destination is a path to the repository where you want to release the sources.

--author_name and --author_email are optional parameters that will be used to set author of the commit in the destination repository.

After running this command, ndev will:

  1. Wipe out all the files in the destination repository
  2. Copy all the files from the origin repository to the destination repository
  3. Commit all the changes

All configuration is stored in pyproject.toml in tool.ndev section. Config sample:

[tool.ndev]
# relative path in origin repository to be a root of the release in destination repository
release-root = "releases/customer-root"

# generate and copy requirements.txt
copy-requirements = true

# manage pyproject.toml 
manage-pyproject = true

# generate poetry lock after all steps
generate-poetry-lock = true

# generate and copy version.json
add-version-json = true

# list of files to be copied from origin to destination
copy-local = [
    { from = "example1", to = "services/example1" },
]

# list of wheels to be copied from origin dependecies to destination
copy-wheel-src = [
    # wheels sources for external use
    { from = "example2", to = "wheels/example2" },
    # ignore some files while copying
    { from = "example2", to = "wheels/example2", ignores = ["*.txt", "README.md"] },
    # specify platform for the wheel. This is useful when you run `ndev release` 
    # on a different platform than the one you want to release for.
    { from = "example2", to = "wheels/example2", platform = "manylinux_2_36_x86_64" },
]

# list of repositories to be copied to destination
# if repo has ndev configuration, it will use it recursively
copy-repo-src = [
    { from = "git@example.com:collction/example3.git", to = "libs/example3/cpp-src", ref = "main" },
]

# below is an example of how to copy a repository with specific package name and platform
# it uses custom configuration for package name to follow specific tag
[[tool.ndev.copy-repo-src]]
from = "git@example.com:repo/example4.git"
to = "libs/example4/cpp-src"
ref = "$NAME$-$VERSION$"
package_name = "some_package_name"
platform = "manylinux_2_36_x86_64"

# patch files before release
[[tool.ndev.patches]]
glob = "**/_extern/pybind11/**"
regex = "https?:\\/\\/[^\\s)'\"]+"
subst = "LINK-REMOVED-DUE-TO-SECURITY-REQUIREMENTS"

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

ndev-0.6.1.tar.gz (57.8 kB view details)

Uploaded Source

Built Distribution

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

ndev-0.6.1-py3-none-any.whl (20.6 kB view details)

Uploaded Python 3

File details

Details for the file ndev-0.6.1.tar.gz.

File metadata

  • Download URL: ndev-0.6.1.tar.gz
  • Upload date:
  • Size: 57.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.5

File hashes

Hashes for ndev-0.6.1.tar.gz
Algorithm Hash digest
SHA256 e4671e9bdee2cc2f7c91cfcc578d2d043e26c775c1eac295375aadc8e70f33d5
MD5 d8f92464c5e5996e05071d169273626b
BLAKE2b-256 a78f1d4d12703775f2e6282e4e18e359c42c87151e00cd083f5a1e585b6eee00

See more details on using hashes here.

File details

Details for the file ndev-0.6.1-py3-none-any.whl.

File metadata

  • Download URL: ndev-0.6.1-py3-none-any.whl
  • Upload date:
  • Size: 20.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.5

File hashes

Hashes for ndev-0.6.1-py3-none-any.whl
Algorithm Hash digest
SHA256 d1286212db9286dec352ed42e7018e63b0bfe03e4fbcbf092cc8ce907ec6c78a
MD5 a237c0824e0aa3c11c2c361c34c1b2b4
BLAKE2b-256 fccb412c2a379cb271b58afd85ec90c7ffa66513b16155ddc7fffc4874b76b7f

See more details on using hashes here.

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