If you’d like to contribute to QuantEcon.py, a good place to start is the project issue tracker. Those who are new to Python programming should look out for the tag, indicating tasks that are a good entry point to contributing.
One of the advantages of the Anaconda Python environment is that it is cheap to set up (and discard) Python environments for development versions of packages and populate them with your favorite scientific tools. For example, if you’re working on QuantEcon.py you might find it useful to set up an environment (containing NumPy, SciPy, etc.) that uses your development version rather than the default ones. This facilitates contributing to QuantEcon.py without worrying about corrupting the Python environment on which your other work depends.
All functions and methods contributed to QuantEcon.py should be paired with tests to verify that they are functioning correctly.
We try to maintain a simple and consistent format for inline documentation, known in the Python world as docstrings. The format we use is known as numpydoc. It was developed by the numpy and scipy teams and is used in many popular packages. Adhering to this standard helps us
Provide a sense of consistency throughout the library
Give users instant access to necessary information at the interpreter prompt (either via the built-in Python function help(object_name) or the Jupyter object_name?)
Easily generate a reference manual using sphinx’s autodoc and apidoc
Instructions to compile a local version of the documentation can be found here. This can be useful if you would like to check how your docstrings render in html prior to submitting a pull request.
The current structure of QuantEcon.py is relatively flat. The majority of methods are available at the top level namespace for easy access. The Python API is defined by the __init__.py files within the quantecon package.
As QuantEcon.py evolves, the structure will naturally move towards having more sub-packages. Every effort should be made to maintain the current API, however if you are submitting a pull request (PR) that results in a necessary change to the current API, this should be highlighted and discussed in the PR on GitHub.