Metadata-Version: 1.1
Name: prequ
Version: 0.180.8
Summary: Prequ -- Python requirement handling
Home-page: https://github.com/suutari-ai/prequ/
Author: Tuomas Suutari
Author-email: tuomas.suutari@anders.fi
License: BSD
Description: Prequ
        =====
        
        Tools for Python requirement handling.  Helps in keeping your
        requirements files complete and up-to-date.
        
        Background
        ----------
        
        Every non-library Python project should have a ``requirements.txt`` file
        which lists required Python packages for the project, i.e. its
        dependencies.  It would be easy to just list the dependencies with their
        minimum and maximum versions in there, but that's not a good practice.
        If versions of the dependencies are not pinned to exact versions, it's
        uncertain which version of the packages get installed.  Even pinning the
        direct dependencies is not enough, since project dependencies might have
        their own dependencies (project's indirect dependencies) and those
        should be pinned too.  That's where Prequ comes in: it makes it easy to
        generate the list of those pinned direct and indirect dependencies from
        the non-pinned requirements.
        
        There is also `a good article by Vincent Driessen
        <http://nvie.com/posts/pin-your-packages>`_ which explains it more
        thoroughly why you should pin your packages.
        
        Prequ is a fork of pip-tools_ by Vincent Driessen.  Pip-tools was a fine
        project, but I wanted to add couple new features and make some changes
        to existing workflows.  There were also couple bugs that I needed to be
        fixed sooner than later.  Most of those bugs were already fixed in
        GitHub pull requests, but weren't merged to pip-tools.  That's why I
        decided to create my own fork.
        
        .. _pip-tools: https://github.com/nvie/pip-tools
        
        Installation
        ------------
        
        .. code::
        
           $ pip install --upgrade pip  # Prequ needs pip==8.0 or higher
           $ pip install prequ
        
        
        Example usage for ``prequ compile``
        -----------------------------------
        
        Suppose you have a Flask project, and want to pin it for production.
        Write the following line to a file:
        
        .. code::
        
           # requirements.in
           Flask
        
        Now, run ``prequ compile requirements.in``:
        
        .. code::
        
           $ prequ compile requirements.in
           # This file is autogenerated by Prequ.  To update, run:
           #
           #   prequ compile requirements.in
           #
           flask==0.10.1
           itsdangerous==0.24        # via flask
           jinja2==2.7.3             # via flask
           markupsafe==0.23          # via jinja2
           werkzeug==0.10.4          # via flask
        
        And it will produce your ``requirements.txt``, with all the Flask
        dependencies (and all underlying dependencies) pinned.  Put this file
        under version control as well.
        
        To update all packages, periodically re-run ``prequ compile --upgrade``.
        
        To update a specific package to the latest or a specific version use the
        ``--upgrade-package`` or ``-P`` flag:
        
        .. code::
        
           prequ compile --upgrade-package flask
             # only update the flask package
           prequ compile --upgrade-package flask --upgrade-package requests
             # update both the flask and requests packages
           prequ compile -P flask -P requests==2.0.0
             # update the flask package to the latest, and requests to v2.0.0
        
        
        Example usage for ``prequ sync``
        --------------------------------
        
        Now that you have a ``requirements.txt``, you can use ``prequ sync``
        to update your virtual env to reflect exactly what's in there.  Note:
        this will install/upgrade/uninstall everything necessary to match the
        ``requirements.txt`` contents.
        
        .. code::
        
           $ prequ sync
           Uninstalling flake8-2.4.1:
             Successfully uninstalled flake8-2.4.1
           Collecting click==4.1
             Downloading click-4.1-py2.py3-none-any.whl (62kB)
               100% |████████████████████████████████| 65kB 1.8MB/s
             Found existing installation: click 4.0
               Uninstalling click-4.0:
                 Successfully uninstalled click-4.0
           Successfully installed click-4.1
        
        
        To sync multiple ``*.txt`` dependency lists, just pass them in via command
        line arguments e.g.::
        
           $ prequ sync dev-requirements.txt requirements.txt
        
        Passing in empty arguments would cause it to default to
        ``requirements.txt``.
        
Platform: any
Classifier: Development Status :: 5 - Production/Stable
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 2
Classifier: Programming Language :: Python :: 2.7
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.4
Classifier: Programming Language :: Python :: 3.5
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: System Administrators
Classifier: License :: OSI Approved :: BSD License
Classifier: Operating System :: OS Independent
Classifier: Topic :: System :: Systems Administration
