Metadata-Version: 2.1
Name: ridepy
Version: 2.1.post6
Summary: Simulates a dispatching algorithm serving exogenous transportation requests with a fleet of vehicles. Does not simulate the universe, unlike MATSim. Batteries are included.
Author-email: Felix Jung <felix.jung@tu-dresden.de>, Debsankha Manik <dmanik@debsankha.net>
Project-URL: Homepage, https://ridepy.org/
Project-URL: Documentation, https://ridepy.org/
Project-URL: Repository, https://github.com/PhysicsOfMobility/ridepy/
Keywords: simulation,ridepooling,mobility,transport,physics
Classifier: Intended Audience :: Science/Research
Classifier: Development Status :: 5 - Production/Stable
Classifier: License :: OSI Approved :: MIT License
Classifier: Natural Language :: English
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Cython
Classifier: Programming Language :: C++
Classifier: Operating System :: POSIX :: Linux
Classifier: Topic :: Scientific/Engineering :: Physics
Requires-Python: >=3.9
Description-Content-Type: text/x-rst
License-File: LICENSE
Requires-Dist: decorator
Requires-Dist: networkx
Requires-Dist: numpy
Requires-Dist: pandas<2
Requires-Dist: scipy
Requires-Dist: tabulate
Requires-Dist: notebook
Requires-Dist: jupytext
Requires-Dist: matplotlib
Requires-Dist: cython==3.0a6
Requires-Dist: loky
Requires-Dist: typer
Requires-Dist: pyarrow
Provides-Extra: dev
Requires-Dist: black==23.1.0; extra == "dev"
Requires-Dist: commitizen; extra == "dev"
Requires-Dist: pdbpp; extra == "dev"
Requires-Dist: pre-commit; extra == "dev"
Requires-Dist: hypothesis; extra == "dev"
Requires-Dist: pytest; extra == "dev"
Requires-Dist: wheel; extra == "dev"
Requires-Dist: tox; extra == "dev"
Requires-Dist: psutil; extra == "dev"
Requires-Dist: check-manifest; extra == "dev"
Requires-Dist: twine; extra == "dev"
Requires-Dist: build; extra == "dev"
Requires-Dist: auditwheel; extra == "dev"
Provides-Extra: doc
Requires-Dist: recommonmark; extra == "doc"
Requires-Dist: sphinx<7; extra == "doc"
Requires-Dist: sphinx-rtd-theme; extra == "doc"
Requires-Dist: sphinxcontrib-napoleon; extra == "doc"
Requires-Dist: sphinx-toggleprompt; extra == "doc"
Requires-Dist: sphinx-autodoc-typehints; extra == "doc"

|Code style: black| |Tests| |Docs| |wheel| |sdist|

RidePy
======

Simulates a dispatching algorithm serving exogenous transportation requests with a fleet of vehicles. Does not simulate the universe, unlike MATSim. Batteries are included.

The extensive documentation is available at `ridepy.org <https://ridepy.org/>`__. This includes a high-level `overview <https://ridepy.org/overview>`__, as well as a `glossary <https://ridepy.org/glossary>`__ and a detailed `reference <https://ridepy.org/reference>`__.

The source code is hosted on `GitHub <https://github.com/PhysicsOfMobility/ridepy>`__.


Instructions
------------

Prerequisites
~~~~~~~~~~~~~

-  Python 3.9
-  git

You should probably use an environment. For example, using
`conda <https://www.anaconda.com/>`__:

.. code:: sh

    conda create -n ridepy python=3.9
    conda activate ridepy


Finally, a C++ build environment and the `Boost C++ Libraries <https://www.boost.org/>`__
are necessary if you want or need to build the Cython/C++ part from source. This step
can be skipped when installing the Python Wheel via ``pip`` on supported platforms
(currently only x86-64 Linux).

On Debian-based Linux distributions, these dependencies may be installed as follows:

.. code:: sh

    sudo apt-get update && sudo apt-get -y install libboost-all-dev build-essential

User Installation
~~~~~~~~~~~~~~~~~

Just run

.. code:: sh

    pip install ridepy

If you prefer, you can also use clone the git repository instead:

.. code:: sh

    git clone --recurse-submodules https://github.com/PhysicsOfMobility/ridepy.git
    cd ridepy
    pip install -e .


Developer Installation
~~~~~~~~~~~~~~~~~~~~~~

.. code:: sh

    git clone --recurse-submodules https://github.com/PhysicsOfMobility/ridepy.git
    cd ridepy
    pip install -e ".[dev,doc]"
    make -C doc html
    pre-commit install
    pytest

The built documentation can be found in ``doc/_build/html/index.html``.

.. _first_steps:

First Steps
-----------

-  Start ``jupyter notebook`` or ``jupyter lab``
-  Open one of the introductory notebooks in the ``notebooks``
   subdirectory, either just by clicking on it (in ``jupyter notebook``) or
   right-clicking and choosing *Open With > Notebook* (for ``jupyter lab``).
-  Run the notebook step-by-step and play around :)

Reporting a Problem
-------------------

Should you encounter any problems when using RidePy or have a feature request, 
please don't hesitate to `submit an issue <https://github.com/PhysicsOfMobility/ridepy/issues/new>`__.

Contributing
------------

Generally, branch off from ``master``, implement stuff® and file a pull
request back to ``master``. Feel free to do the latter at an early
stage using the GitHub's "Submit Draft" feature.

Versioning Philosophy:

- ``master`` should always improve. Incomplete functionality is welcome.
- API-breaking changes imply transition to a new major version
- We use `Semantic Versioning <https://semver.org/>`__

Code style is *black* for Python and *LLVM* for C++. To format your code, use

- ``black .`` for Python. Make sure to use the correct version as specified in
  ``pyproject.toml``. It is automatically installed when installing the ``dev``
  extras via ``pip install -e .[dev]``. Also, consider using the pre-commit hook
  (``pre-commit install``).
- ``find . -regex '.*\.\(cxx\|h\)' -exec clang-format -style=file -i {} \;`` for C++

Testing
~~~~~~~

-  For each new feature introduced, tests should be written, using the
   `pytest <https://docs.pytest.org/en/stable/>`__ framework
-  Running tests is easy---just execute ``pytest`` in the project
   directory
-  Additional pointers for running pytest:

   -  Drop into a debugger on failing test using ``pytest --pdb``
   -  Show stdout with ``pytest -s``
   -  Run only specific tests by matching the test function name
      ``pytest -k <match expression>``
   -  Be more verbose with ``pytest -v``

-  Warning 1: Pytest may cause confusion as it automagically imports
   stuff and supplies functions with things they need based on their
   signature. For this, see e.g. the docs on
   `fixtures <https://docs.pytest.org/en/stable/fixture.html>`__.
-  Warning 2: Warning 1 applies in particular to stuff hiding in
   innocent-looking files named ``conftest.py``. See docs on
   `conftest <https://docs.pytest.org/en/2.7.3/plugins.html>`__.


.. |Code style: black| image:: https://img.shields.io/badge/code%20style-black-000000.svg
    :target: https://github.com/psf/black

.. |Docs| image:: https://github.com/PhysicsOfMobility/ridepy/actions/workflows/build-doc.yml/badge.svg
    :target: https://github.com/PhysicsOfMobility/ridepy/actions/workflows/build-doc.yml

.. |Tests| image:: https://github.com/PhysicsOfMobility/ridepy/actions/workflows/python-testing.yml/badge.svg
    :target: https://github.com/PhysicsOfMobility/ridepy/actions/workflows/python-testing.yml

.. |wheel| image:: https://github.com/PhysicsOfMobility/ridepy/actions/workflows/build-wheel.yml/badge.svg
    :target: https://github.com/PhysicsOfMobility/ridepy/actions/workflows/build-wheel.yml

.. |sdist| image:: https://github.com/PhysicsOfMobility/ridepy/actions/workflows/build-sdist.yml/badge.svg
    :target: https://github.com/PhysicsOfMobility/ridepy/actions/workflows/build-sdist.yml
