Package: pundle
======Pundle======|circleci_build| |pypi_version| |pypi_license|Changelog----------  PUNDLEENV can include comma separated envs-  Pipfile initial support. Only strings as versions now.Do not calculates hashes and do not use it yet.-  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 packagedevelopment.What is it all about?---------------------Pundle get rid of virtualenv, because I think that virtualenv is pile ofgarbage and we must get rid of it.-  Pundle install all packages and its versions to special folder. Andmount pinned, frozen versions on activate step.-  After that you program will use exactly this versions that werepinned in ``frozen.txt``.-  If you change branch or edit requirements.txt or frozen.txt, pundlewill note you about you need make install new packages or freezenewly added packages. It will not let you use packages that have notbin pinned. You will never fall in situation where you test oldversion of package.Why not Pipenv, I heard it is "for humans"?-----------------------------------------I don't think that anything that is based on virtualenv can be "for humans".How to------Install:.. code-block:: bash> pip install pundleor just place ``pundle.py`` where python can find itCreate ``requirements.txt`` or ``setup.py`` (we will support .toml a bitlater). 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:.. code-block:: bash> python -m pundleWhere actually it will install? Pundle use special folder``.pundledir/python-version/package-name-version`` for every seperatepackage and version.To make it short create alias:.. code-block:: bashalias pundle='/usr/bin/env python -m pundle'pundle installAfter packages install, frozen/pinned, we want to use them, you know,import, right?.. code-block:: pythonimport pundle; pundle.activate()Or we can try to use pundle features:.. code-block:: bash# to execute entry pointpundle exec some_package_entry_point# to run python scriptpundle run my_script.py# run module like python -mpundle module some.my.moduleTo add VCS to ``requirements.txt`` use ``git+url#egg=my_package-0.1.11``form.Pundle console--------------To start console with Pundle activated use.. code-block:: bash> pundle console [ipython|ptpython|bpython]You will have ``pundle_suite`` object inserted to environment. You can use itto call ``pundle_suite.use("trafaret_schema")`` for example.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 djangoOr you can use it in script:.. code-block:: python>>> import pundle>>> pundle.use('django')>>> pundle.use('arrow')>>> pundle.use('trafaret')>>>>>> import django>>> import arrow>>> import trafaretEnvironments------------Pundle support environments. You can create seperate requirements filewith suffix like ``requirements_dev.txt``. Pundle will create``frozen_dev.txt`` that will track common requirements + devrequirements.To use ``dev`` environment use ``PUNDLEENV=dev`` environment variable:.. code-block:: bashbash> PUNDLEENV=dev pundle run myscript.pyor common usage:.. code-block:: bashbash> PUNDLEENV=test pundle exec pytestFor ``setup.py`` file pundle uses ``extras_require`` as environments. For example ifyou have ``extras_require = {'test': ['pylint', 'pyflakes']}`` then you can use``pylint`` with ``PUNDLEENV=test pundle exec pylint``.More usage info---------------Upgrade package:.. code-block:: bashpundle upgrade djangoUpgrade all packages:.. code-block:: bashpundle upgradeList of all entry points:.. code-block:: bashpundle entry_pointsDo 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_build| image:: https://circleci.com/gh/Deepwalker/pundler.svg?style=svg:target: https://circleci.com/gh/Deepwalker/pundler.. |pypi_version| image:: https://img.shields.io/pypi/v/pundle.svg?style=flat-square:target: https://pypi.python.org/pypi/pundle.. |pypi_license| image:: https://img.shields.io/pypi/l/pundle.svg?style=flat-square:target: https://pypi.python.org/pypi/pundle