Requirements management tool.
Project description
Pundle
======
|CircleCI| |PyPI| |PyPI|
Changelog
---------
- New setup.py support with mocking of setuptools.setup
- Added python shell ``try package`` feature. To use it use
``pundle.use("package_name==0.1")``. Version is optional.
- Added environments support. To use it just make files like
``requirement.txt``, ``requirements_dev.txt``,
``requirements_test.txt``. To activate env use like
``PUNDLEENV=dev pundle ...``
- Added VCS support for urls like
``git+https://github.com/mitsuhiko/jinja2.git@85820fceb83569df62fa5e6b9b0f2f76b7c6a3cf#egg=jinja2-2.8.0``.
Push exactly like this formatted str to requirements.txt
- Added initial support for setup.py requirements. Helpful for package
development.
What is it all about?
---------------------
Pundle get rid of virtualenv, because I think that virtualenv is pile of
garbage and we must get rid of it.
- Pundle install all packages and its versions to special folder. And
mount pinned, frozen versions on activate step.
- After that you program will use exactly this versions that were
pinned in ``frozen.txt``.
- If you change branch or edit requirements.txt or frozen.txt, pundle
will note you about you need make install new packages or freeze
newly added packages. It will not let you use packages that have not
bin pinned. You will never fall in situation where you test old
version of package.
How to
------
Install:
::
> pip install pundle
or just place ``pundle.py`` where python can find it
Create ``requirements.txt`` or ``setup.py`` (we will support .toml a bit
later). You can pin versions if you need it, or just place package name.
Pundle will pin it anyway as well as all of it dependencies.
Reveal all dependencies, pin versions, download and install everything:
::
> python -m pundle
Where actually it will install? Pundle use special folder
``.pundledir/python-version/package-name-version`` for every seperate
package and version.
To make it short create alias:
::
alias pundle='/usr/bin/env python -m pundle'
pundle install
After packages install, frozen/pinned, we want to use them, you know,
import, right?
.. code-block:: python
import pundle; pundle.activate()
Or we can try to use pundle features:
::
# to execute entry point
pundle exec some_package_entry_point
# to run python script
pundle run my_script.py
# run module like python -m
pundle module some.my.module
To add VCS to ``requirements.txt`` use ``git+url#egg=my_package-0.1.11``
form.
Python shell usage
------------------
You can use pundle to expirement in python shell:
.. code-block:: python
>>> import pundle
>>> pundle.use('django==1.11.1') # will download and install django
>>> import django
Environments
------------
Pundle support environments. You can create seperate requirements file
with suffix like ``requirements_dev.txt``. Pundle will create
``frozen_dev.txt`` that will track common requirements + dev
requirements.
To use ``dev`` environment use ``PUNDLEENV=dev`` environment variable:
.. code-block:: bash
bash> PUNDLEENV=dev pundle run myscript.py
or common usage:
.. code-block:: bash
bash> PUNDLEENV=test pundle exec pytest
More usage info
---------------
Upgrade package:
.. code-block:: bash
pundle upgrade django
Upgrade all packages:
.. code-block:: bash
pundle upgrade
List of all entry points:
.. code-block:: bash
pundle entry_points
Do not hesitate to ``pundle help`` ;)
Howto
-----
Q: How to use custom index url or extra index? A: use
PIP_EXTRA_INDEX_URL or any other ``pip`` environment variables.
.. |CircleCI| image:: https://circleci.com/gh/Deepwalker/pundler.svg?style=svg
:target: https://circleci.com/gh/Deepwalker/pundler
.. |PyPI| image:: https://img.shields.io/pypi/v/pundle.svg?style=flat-square
:target: https://pypi.python.org/pypi/pundle
.. |PyPI| image:: https://img.shields.io/pypi/l/pundle.svg?style=flat-square
:target: https://pypi.python.org/pypi/pundle
======
|CircleCI| |PyPI| |PyPI|
Changelog
---------
- New setup.py support with mocking of setuptools.setup
- Added python shell ``try package`` feature. To use it use
``pundle.use("package_name==0.1")``. Version is optional.
- Added environments support. To use it just make files like
``requirement.txt``, ``requirements_dev.txt``,
``requirements_test.txt``. To activate env use like
``PUNDLEENV=dev pundle ...``
- Added VCS support for urls like
``git+https://github.com/mitsuhiko/jinja2.git@85820fceb83569df62fa5e6b9b0f2f76b7c6a3cf#egg=jinja2-2.8.0``.
Push exactly like this formatted str to requirements.txt
- Added initial support for setup.py requirements. Helpful for package
development.
What is it all about?
---------------------
Pundle get rid of virtualenv, because I think that virtualenv is pile of
garbage and we must get rid of it.
- Pundle install all packages and its versions to special folder. And
mount pinned, frozen versions on activate step.
- After that you program will use exactly this versions that were
pinned in ``frozen.txt``.
- If you change branch or edit requirements.txt or frozen.txt, pundle
will note you about you need make install new packages or freeze
newly added packages. It will not let you use packages that have not
bin pinned. You will never fall in situation where you test old
version of package.
How to
------
Install:
::
> pip install pundle
or just place ``pundle.py`` where python can find it
Create ``requirements.txt`` or ``setup.py`` (we will support .toml a bit
later). You can pin versions if you need it, or just place package name.
Pundle will pin it anyway as well as all of it dependencies.
Reveal all dependencies, pin versions, download and install everything:
::
> python -m pundle
Where actually it will install? Pundle use special folder
``.pundledir/python-version/package-name-version`` for every seperate
package and version.
To make it short create alias:
::
alias pundle='/usr/bin/env python -m pundle'
pundle install
After packages install, frozen/pinned, we want to use them, you know,
import, right?
.. code-block:: python
import pundle; pundle.activate()
Or we can try to use pundle features:
::
# to execute entry point
pundle exec some_package_entry_point
# to run python script
pundle run my_script.py
# run module like python -m
pundle module some.my.module
To add VCS to ``requirements.txt`` use ``git+url#egg=my_package-0.1.11``
form.
Python shell usage
------------------
You can use pundle to expirement in python shell:
.. code-block:: python
>>> import pundle
>>> pundle.use('django==1.11.1') # will download and install django
>>> import django
Environments
------------
Pundle support environments. You can create seperate requirements file
with suffix like ``requirements_dev.txt``. Pundle will create
``frozen_dev.txt`` that will track common requirements + dev
requirements.
To use ``dev`` environment use ``PUNDLEENV=dev`` environment variable:
.. code-block:: bash
bash> PUNDLEENV=dev pundle run myscript.py
or common usage:
.. code-block:: bash
bash> PUNDLEENV=test pundle exec pytest
More usage info
---------------
Upgrade package:
.. code-block:: bash
pundle upgrade django
Upgrade all packages:
.. code-block:: bash
pundle upgrade
List of all entry points:
.. code-block:: bash
pundle entry_points
Do not hesitate to ``pundle help`` ;)
Howto
-----
Q: How to use custom index url or extra index? A: use
PIP_EXTRA_INDEX_URL or any other ``pip`` environment variables.
.. |CircleCI| image:: https://circleci.com/gh/Deepwalker/pundler.svg?style=svg
:target: https://circleci.com/gh/Deepwalker/pundler
.. |PyPI| image:: https://img.shields.io/pypi/v/pundle.svg?style=flat-square
:target: https://pypi.python.org/pypi/pundle
.. |PyPI| image:: https://img.shields.io/pypi/l/pundle.svg?style=flat-square
:target: https://pypi.python.org/pypi/pundle
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
pundle-0.8.4.tar.gz
(13.7 kB
view hashes)
Built Distribution
pundle-0.8.4-py2.py3-none-any.whl
(14.4 kB
view hashes)
Close
Hashes for pundle-0.8.4-py2.py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | a66af3693317b9b1083842e1e8557d225b3e9de8e2045b0cd517a86858d6e191 |
|
MD5 | 4ed0ae181fca88fc5d39797f9816234f |
|
BLAKE2b-256 | 77431712a5e39708555c8ae846d76d199426be5aa49dcb487d22aace979b4bee |