Skip to main content
DepHell MIT License Travis CI Powered by DepHell

DepHell – project management for Python.

See documentation for more details.

Installation

The simplest way:

python3 -m pip install --user dephell[full]

See installation documentation for better ways.

Supported formats

  1. Archives:

    1. *.egg-info (egginfo)

    2. *.tar.gz (sdist)

    3. *.whl (wheel)

  2. pip:

    1. requirements.txt (pip)

    2. requirements.lock (piplock)

  3. pipenv:

    1. Pipfile (pipfile)

    2. Pipfile.lock (pipfilelock)

  4. pоetry:

    1. pyproject.toml (poetry)

    2. poetry.lock (poetrylock)

  5. Other:

    1. setup.py (setuppy)

    2. pyproject.toml build-system requires (pyproject)

    3. Installed packages (installed).

Usage

First of all, install DepHell and activate autocomplete:

python3 -m pip install --user dephell[full]
dephell autocomplete

Let’s get sampleproject and make it better.

git clone https://github.com/pypa/sampleproject.git
cd sampleproject

This project uses setup.py for dependenciesand metainfo. However, this format over-complicated for most of projects. Let’s convert it into poetry:

dephell deps convert --from=setup.py --to=pyproject.toml

It will make next pyproject.toml:

[tool.poetry]
name = "sampleproject"
version = "1.2.0"
description = "A sample Python project"
authors = ["The Python Packaging Authority <pypa-dev@googlegroups.com>"]
readme = "README.md"

[tool.poetry.scripts]
sample = "sample:main"

[tool.poetry.dependencies]
python = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,<4,>=2.7"
coverage = {optional = true}
peppercorn = "*"

[tool.poetry.dev-dependencies]
check-manifest = "*"

[tool.poetry.extras]
test = ["coverage"]

Now, let’s generate some useful files:

dephell generate authors

dephell generate license MIT

# https://editorconfig.org/
dephell generate editorconfig

Our users, probably, has no installed poetry, but they, definitely, has pip that can install files from setup.py. Let’s make it easier to generate setup.py from our pyproject.toml. Also, it points for DepHell your default dependencies file. Add next lines in the pyproject.toml:

[tool.dephell.main]
from = {format = "poetry", path = "pyproject.toml"}
to = {format = "setuppy", path = "setup.py"}

You can see full real world example of config in DepHell’s own pyproject.toml.

Now we can call DepHell commands without explicitly specifying from and to:

dephell deps convert

It will make setup.py and README.rst from pyproject.toml and README.md.

Now let’s test our code into virtual environment:

$ dephell venv run pytest
WARNING venv does not exist, creating... (project=/home/gram/Documents/sampleproject, env=main, path=/home/gram/.local/share/dephell/venvs/sampleproject-Whg0/main)
INFO venv created (path=/home/gram/.local/share/dephell/venvs/sampleproject-Whg0/main)
WARNING executable does not found in venv, trying to install... (executable=pytest)
INFO build dependencies graph...
INFO installation...
# ... pip output
# ... pytest output

Also, we can just activate virtual environment for project and run any commands inside:

dephell venv shell

Ugh, we has tests, but has no pytest in our dependencies file. Let’s add it:

dephell deps add --envs dev test -- pytest

Afer that our dev-dependencies looks like this:

[tool.poetry.dev-dependencies]
check-manifest = "*"
pytest = "*"

[tool.poetry.extras]
test = ["coverage", "pytest"]

One day we will have really many dependencies. Let’s have a look how many of them we have now:

$ dephell deps tree
- check-manifest [required: *, locked: 0.37, latest: 0.37]
- coverage [required: *, locked: 4.5.3, latest: 4.5.3]
- peppercorn [required: *, locked: 0.6, latest: 0.6]
- pytest [required: *, locked: 4.4.0, latest: 4.4.0]
  - atomicwrites [required: >=1.0, locked: 1.3.0, latest: 1.3.0]
  - attrs [required: >=17.4.0, locked: 19.1.0, latest: 19.1.0]
  - colorama [required: *, locked: 0.4.1, latest: 0.4.1]
  - funcsigs [required: >=1.0, locked: 1.0.2, latest: 1.0.2]
  - more-itertools [required: <6.0.0,>=4.0.0, locked: 5.0.0, latest: 7.0.0]
    - six [required: <2.0.0,>=1.0.0, locked: 1.12.0, latest: 1.12.0]
  - more-itertools [required: >=4.0.0, locked: 7.0.0, latest: 7.0.0]
  - pathlib2 [required: >=2.2.0, locked: 2.3.3, latest: 2.3.3]
    - scandir [required: *, locked: 1.10.0, latest: 1.10.0]
    - six [required: *, locked: 1.12.0, latest: 1.12.0]
  - pluggy [required: >=0.9, locked: 0.9.0, latest: 0.9.0]
  - py [required: >=1.5.0, locked: 1.8.0, latest: 1.8.0]
  - setuptools [required: *, locked: 41.0.0, latest: 41.0.0]
  - six [required: >=1.10.0, locked: 1.12.0, latest: 1.12.0]

Hm… Is it many or not? Let’s look on their size.

$ dephell inspect venv --filter=lib_size
11.96Mb

Ugh… Ok, it’s Python. Are they actual?

$ dephell deps outdated
[
  {
    "description": "More routines for operating on iterables, beyond itertools",
    "installed": [
      "5.0.0"
    ],
    "latest": "7.0.0",
    "name": "more-itertools",
    "updated": "2019-03-28"
  },
]

Pytest requires old version of more-itertools. That happens.

If our tests and dependencies are OK, it’s time to deploy. First of all, increment project version:

$ dephell project bump minor
INFO generated new version (old=1.2.0, new=1.3.0)

And then build packages:

$ dephell project build
INFO dumping... (format=setuppy)
INFO dumping... (format=egginfo)
INFO dumping... (format=sdist)
INFO dumping... (format=wheel)
INFO builded

Now, we can upload these packages on PyPI with twine.

This is some of the most useful commands. See documentation for more details.

Compatibility

DepHell tested on Linux and Mac OS X with Python 3.5, 3.6, 3.7. And one of the coolest things that DepHell ran by DepHell on Travis CI.

How can I help

  1. Star project on Github. Developers believe in the stars.

  2. Tell your fellows that Gram has made cool thing for you.

  3. Open an issue if you have thoughts how to make DepHell better.

  4. Things that you can contribute in any project in DepHell ecosystem:

    1. Fix grammar and typos.

    2. Document new things.

    3. Tests, we always need more tests.

    4. Make READMEs more nice and friendly.

    5. See issues by help wanted label to find things that you can fix.

    6. Anything what you want. If it is a new feature, please, open an issue before writing code.

Thank you :heart:

Release files for dephell 0.5.6

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for dephell 0.5.6
File Size Uploaded
dephell-0.5.6.tar.gz 81.3 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for dephell 0.5.6
File Interpreter ABI Platform
dephell-0.5.6-py3-none-any.whl Python 3 none any Details

Total release size: 215.6 kB

Release files / dephell-0.5.6.tar.gz

Download URL dephell-0.5.6.tar.gz
Size 81.3 kB
Tags Source
SHA-256 checksum
How to use checksums
8f6165fcf728e63c99e5af25cc140b61adfcfe50726290088eb323c9cfda37cc
BLAKE2b-256 checksum
How to use checksums
5e0cccdfb43c31a745b2c7443fc2df338ae9b29f1048fa6b26f28c27f0ef3a95
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/1.12.1 pkginfo/1.5.0.1 requests/2.21.0 setuptools/40.8.0 requests-toolbelt/0.8.0 tqdm/4.29.1 CPython/3.7.0

Release files / dephell-0.5.6-py3-none-any.whl

Download URL dephell-0.5.6-py3-none-any.whl
Size 134.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
1bd633751ee52442fb799ae7ecd0210b6df8eca15094bc199a5d1729c160d2d6
BLAKE2b-256 checksum
How to use checksums
70fce027a0b11eccd347650c152f0c8ae3e8896b860947dc0fb260d1768dfdb7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/1.12.1 pkginfo/1.5.0.1 requests/2.21.0 setuptools/40.8.0 requests-toolbelt/0.8.0 tqdm/4.29.1 CPython/3.7.0

Release history Release notifications | RSS feed

0.8.3

2 release files

0.8.2

2 release files

0.8.1

2 release files

0.8.0

2 release files

0.7.9

2 release files

0.7.8

2 release files

0.7.7

2 release files

0.7.6

2 release files

0.7.5

2 release files

0.7.4

2 release files

0.7.3

2 release files

0.7.2

2 release files

0.7.1

2 release files

0.7.0

2 release files

0.6.0

2 release files

0.5.8

2 release files

0.5.7

2 release files

This release

0.5.6 This release

2 release files

0.5.5

2 release files

0.5.4

2 release files

0.5.3

2 release files

0.5.2

2 release files

0.5.1

2 release files

0.5.0

2 release files

0.4.1

2 release files

0.4.0

2 release files

0.3.1

2 release files

0.3.0

1 release file

0.2.0

1 release file

0.1.0

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page