Contributing to StackStorm
==========================

We welcome and appreciate contributions of any kind (code, tests,
documentation, examples, ...).

For more information on how to contribute and the guidelines you should follow,
please visit the Development section of our documentation -
http://docs.stackstorm.com/development/index.html

Contributing to StackStorm
==========================

We welcome and appreciate contributions of any kind (code, tests,
documentation, examples, ...).

For more information on how to contribute and the guidelines you should follow,
please visit the Development section of our documentation -
http://docs.stackstorm.com/development/index.html

Managing Python dependencies
----------------------------

.. note::

    ``requirements.txt`` files are generated automatically using
    ``scripts/fixate-requirements.py`` script and should't be edited manually.

To manage Python dependencies for each StackStorm component, we use the
following files:

1. ``fixed-requirements.txt`` - A file which pins all the requirements to a
   specific version. Keep in mind that this file is used by all the components.
   This way we make sure different components always use the same version of a
   particular dependency.
2. ``st2*/in-requirements.txt`` - Component specific requirements file. This
   file contains a full list of the dependencies which are needed by this
   particular component.
3. ``st2*/requirements.txt`` - Final component requirements file which is
   generated by processing fixed-requirements.txt and in-requirements.txt file.
   Note: This file is automatically generated and should not be edited
   manually.
4. ``requirements.txt`` - Final requirements file for all the components which
   is generated by processing fixed-requirements.txt and all the component
   in-requirements.txt files. Note: This file is automatically generated and
   should not be edited manually.

Adding a new component dependency
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

To add a new dependency for a particular component, you should perform the following steps:

1. Add a name / link to the dependency to component ``in-requirements.txt``
   fire. For example ``st2actions/in-requirements.txt``
2. Pin this requirement to a specific version in ``fixed-requirements.txt``
   file.
3. Generate final ``requirements.txt`` file for that component by running
   ``make requirements`` target in the component directory. For example:
   ``cd st2actions ; make requirements``.
4. Add a commit generated requirements.txt file.

Add some docs on managing Python requirements.
Add some docs on managing Python requirements.
