diff --git a/.github/workflows/documentation.yml b/.github/workflows/documentation.yml index 5907925c0..ceb2b9515 100644 --- a/.github/workflows/documentation.yml +++ b/.github/workflows/documentation.yml @@ -8,7 +8,6 @@ on: release: types: [published] - jobs: build: runs-on: ubuntu-latest @@ -30,7 +29,6 @@ jobs: pip install wheel openmatrix pytest pip install -r requirements.txt pip install -r docs/requirements-docs.txt - - name: Compile library run: | @@ -57,78 +55,105 @@ jobs: - name: Build documentation run: | jupyter nbconvert --to rst docs/source/useful_information/validation_benchmarking/IPF_benchmark.ipynb - sphinx-build -b html docs/source docs/build - python3 -m zipfile -c AequilibraE.zip docs/build + sphinx-build -M latexpdf docs/source docs/source/_static -D plot_gallery=False + sphinx-build -D plot_gallery=False -b html docs/source docs/build + python -m zipfile -c AequilibraE.zip docs/build cp AequilibraE.zip docs/source/_static + cp large_icon.png docs/source/_static/large_icon.png cd docs make html - - name: Upload to develop branch to S3 - if: ${{ (github.ref == 'refs/heads/develop') && (github.event_name == 'push') && (env.HAS_SECRETS == 'true') }} + - name: Upload python to DEV on S3 + if: ${{ (github.event_name == 'pull_request') && (env.HAS_SECRETS == 'true') }} uses: jakejarvis/s3-sync-action@master with: - args: --acl public-read --follow-symlinks --delete + args: --acl public-read --follow-symlinks --delete --exclude 'home.html' env: AWS_S3_BUCKET: ${{ secrets.AWS_S3_BUCKET }} AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} AWS_REGION: 'us-east-1' # optional: defaults to us-east-1 SOURCE_DIR: 'docs/build/html/' # optional: defaults to entire repository - DEST_DIR: 'python/develop/' # optional: defaults to entire repository + DEST_DIR: 'dev/${{ github.event.number }}/python/' # optional: defaults to entire repository - - name: Upload to RELEASE on S3 - if: ${{ (github.event_name == 'release') && (env.HAS_SECRETS == 'true') }} + - name: Upload home page to DEV on S3 + if: ${{ (github.event_name == 'pull_request') && (env.HAS_SECRETS == 'true') }} uses: jakejarvis/s3-sync-action@master with: - args: --acl public-read --follow-symlinks --delete + args: --acl public-read --follow-symlinks --exclude '*' --include 'home.html' --include '_images/sponsor*' --include '_images/banner*' --include '_static/*' --include 'search*' --include 'genindex.html' --include '_sphinx_design_static/*' + env: + AWS_S3_BUCKET: ${{ secrets.AWS_S3_BUCKET }} + AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} + AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} + AWS_REGION: 'us-east-1' # optional: defaults to us-east-1 + SOURCE_DIR: 'docs/build/html/' + DEST_DIR: 'dev/${{ github.event.number }}/' # optional: defaults to entire repository + + - name: Upload python to DEVELOP on S3 + if: ${{ (github.ref == 'refs/heads/develop') && (github.event_name == 'push') && (env.HAS_SECRETS == 'true') }} + uses: jakejarvis/s3-sync-action@master + with: + args: --acl public-read --follow-symlinks --delete --exclude 'home.html' env: AWS_S3_BUCKET: ${{ secrets.AWS_S3_BUCKET }} AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} AWS_REGION: 'us-east-1' # optional: defaults to us-east-1 SOURCE_DIR: 'docs/build/html/' # optional: defaults to entire repository - DEST_DIR: 'python/latest/' # optional: defaults to entire repository + DEST_DIR: 'develop/python/' # optional: defaults to entire repository - - name: Create Documentation history folder - if: ${{ github.event_name == 'release'}} - run: python docs/website/redir.py + - name: Upload home page to DEVELOP on S3 + if: ${{ (github.ref == 'refs/heads/develop') && (github.event_name == 'push') && (env.HAS_SECRETS == 'true') }} + uses: jakejarvis/s3-sync-action@master + with: + args: --acl public-read --follow-symlinks --exclude '*' --include 'home.html' --include '_images/sponsor*' --include '_images/banner*' --include '_static/*' --include 'search*' --include 'genindex.html' --include '_sphinx_design_static/*' + env: + AWS_S3_BUCKET: ${{ secrets.AWS_S3_BUCKET }} + AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} + AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} + AWS_REGION: 'us-east-1' # optional: defaults to us-east-1 + SOURCE_DIR: 'docs/build/html/' + DEST_DIR: 'develop/' # optional: defaults to entire repository - - name: Upload documentation to history folder + - name: Upload python to LATEST on S3 if: ${{ (github.event_name == 'release') && (env.HAS_SECRETS == 'true') }} uses: jakejarvis/s3-sync-action@master with: - args: --acl public-read --follow-symlinks --exclude '*.py' + args: --acl public-read --follow-symlinks --delete --exclude 'home.html' env: AWS_S3_BUCKET: ${{ secrets.AWS_S3_BUCKET }} AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} AWS_REGION: 'us-east-1' # optional: defaults to us-east-1 - SOURCE_DIR: 'docs/website/' # optional: defaults to entire repository - DEST_DIR: 'python/' # optional: defaults to entire repository + SOURCE_DIR: 'docs/build/html/' # optional: defaults to entire repository + DEST_DIR: 'latest/python/' # optional: defaults to entire repository - - name: Upload documentation to LATEST on AWS + - name: Upload home page to LATEST on S3 if: ${{ (github.event_name == 'release') && (env.HAS_SECRETS == 'true') }} uses: jakejarvis/s3-sync-action@master with: - args: --acl public-read --follow-symlinks + args: --acl public-read --follow-symlinks --exclude '*' --include 'home.html' --include '_images/sponsor*' --include '_images/banner*' --include '_static/*' --include 'search*' --include 'genindex.html' --include '_sphinx_design_static/*' env: AWS_S3_BUCKET: ${{ secrets.AWS_S3_BUCKET }} AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} AWS_REGION: 'us-east-1' # optional: defaults to us-east-1 - SOURCE_DIR: 'docs/build/htmlv/' # optional: defaults to entire repository - DEST_DIR: 'python/' # optional: defaults to entire repository + SOURCE_DIR: 'docs/build/html/' + DEST_DIR: 'latest/' # optional: defaults to entire repository + - name: Create Documentation history folder + if: ${{ github.event_name == 'release'}} + run: python docs/website/redir.py - - name: Upload to DEV on S3 - if: ${{ (github.event_name == 'pull_request') && (env.HAS_SECRETS == 'true') }} + - name: Upload documentation to history folder + if: ${{ (github.event_name == 'release') && (env.HAS_SECRETS == 'true') }} uses: jakejarvis/s3-sync-action@master with: - args: --acl public-read --follow-symlinks --delete + args: --acl public-read --follow-symlinks --exclude '*.py' env: AWS_S3_BUCKET: ${{ secrets.AWS_S3_BUCKET }} AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} AWS_REGION: 'us-east-1' # optional: defaults to us-east-1 - SOURCE_DIR: 'docs/build/html/' # optional: defaults to entire repository - DEST_DIR: 'python/dev/${{ github.event.number }}/' # optional: defaults to entire repository \ No newline at end of file + SOURCE_DIR: 'docs/website/' # optional: defaults to entire repository + DEST_DIR: 'docs/python/' # optional: defaults to entire repository diff --git a/.gitignore b/.gitignore index 868fdbd44..c75e8cc60 100644 --- a/.gitignore +++ b/.gitignore @@ -4,7 +4,7 @@ _static _templates docs/source/sg_execution_times.rst docs/source/_auto_examples -docs/source/api/generated +docs/source/_generated docs/source/modeling_with_aequilibrae/project_database/data_model docs/source/modeling_with_aequilibrae/transit_database/data_model @@ -66,12 +66,11 @@ aequilibrae/**/*.pyd aequilibrae/**/*.c aequilibrae/**/*.html aequilibrae/**/build/* -docs/build/* -docs/source/_generated/* -docs/source/project_database/* -docs/source/_auto_examples/* *.cpp +# Build documentation +docs/build/* +docs/source/project_database/* #Virtual environment .venv/ diff --git a/docs/requirements-docs.txt b/docs/requirements-docs.txt index b819fe967..f415754b4 100644 --- a/docs/requirements-docs.txt +++ b/docs/requirements-docs.txt @@ -1,6 +1,6 @@ enum34 Sphinx -pydata-sphinx-theme==0.13.3 +pydata-sphinx-theme sphinx_autodoc_annotation matplotlib folium diff --git a/docs/source/_latex/examples.rst b/docs/source/_latex/examples.rst new file mode 100644 index 000000000..dc4688bbe --- /dev/null +++ b/docs/source/_latex/examples.rst @@ -0,0 +1,16 @@ +:orphan: + +Examples +======== + +.. toctree:: + :hidden: + :maxdepth: 1 + + ../_auto_examples/creating_models/index + ../_auto_examples/editing_networks/index + ../_auto_examples/skimming/index + ../_auto_examples/assignment_workflows/index + ../_auto_examples/aequilibrae_without_a_model/index + ../_auto_examples/visualization/index + ../_auto_examples/other_applications/index diff --git a/docs/source/_latex/index.rst b/docs/source/_latex/index.rst new file mode 100644 index 000000000..9d718f918 --- /dev/null +++ b/docs/source/_latex/index.rst @@ -0,0 +1,12 @@ +:orphan: + +AequilibraE +=========== + +.. toctree:: + :hidden: + :maxdepth: 1 + + examples + ../modeling_with_aequilibrae/index + ../api \ No newline at end of file diff --git a/docs/source/_static/custom.css b/docs/source/_static/custom.css index 3f5878ddf..39048ce97 100644 --- a/docs/source/_static/custom.css +++ b/docs/source/_static/custom.css @@ -1,7 +1,11 @@ +.bd-page-width { + max-width: 80%; +} + .bd-main .bd-content .bd-article-container { - max-width: 90%; + max-width: 80%; } -.bd-page-width { - max-width: 90%; -} \ No newline at end of file +.bd-links__title[role="heading"][aria-level="1"] { + display: none; +} diff --git a/docs/source/_static/switcher.json b/docs/source/_static/switcher.json deleted file mode 100644 index 295ac11fe..000000000 --- a/docs/source/_static/switcher.json +++ /dev/null @@ -1,162 +0,0 @@ -[ - { - "name": "develop", - "version": "develop", - "url": "https://aequilibrae.com/python/develop/" - }, - { - "name": "1.1.3", - "version": "1.1.3", - "url": "https://aequilibrae.com/python/V.1.1.3/" - }, - { - "name": "1.1.2", - "version": "1.1.2", - "url": "https://aequilibrae.com/python/V.1.1.2/" - }, - { - "name": "1.1.1", - "version": "1.1.1", - "url": "https://aequilibrae.com/python/V.1.1.1/" - }, - { - "name": "1.1.0", - "version": "1.1.0", - "url": "https://aequilibrae.com/python/V.1.1.0/" - }, - { - "name": "1.0.1", - "version": "1.0.1", - "url": "https://aequilibrae.com/python/V.1.0.1/" - }, - { - "name": "1.0.0", - "version": "1.0.0", - "url": "https://aequilibrae.com/python/V.1.0.0/" - }, - { - "name": "0.9.5", - "version": "0.9.5", - "url": "https://aequilibrae.com/python/V.0.9.5/" - }, - { - "name": "0.9.4", - "version": "0.9.4", - "url": "https://aequilibrae.com/python/V.0.9.4/" - }, - { - "name": "0.9.3", - "version": "0.9.3", - "url": "https://aequilibrae.com/python/V.0.9.3/" - }, - { - "name": "0.9.2", - "version": "0.9.2", - "url": "https://aequilibrae.com/python/V.0.9.2/" - }, - { - "name": "0.9.1", - "version": "0.9.1", - "url": "https://aequilibrae.com/python/V.0.9.1/" - }, - { - "name": "0.9.0", - "version": "0.9.0", - "url": "https://aequilibrae.com/python/V.0.9.0/" - }, - { - "name": "0.8.3", - "version": "0.8.3", - "url": "https://aequilibrae.com/python/V.0.8.3/" - }, - { - "name": "0.8.2", - "version": "0.8.2", - "url": "https://aequilibrae.com/python/V.0.8.2/" - }, - { - "name": "0.8.1", - "version": "0.8.1", - "url": "https://aequilibrae.com/python/V.0.8.1/" - }, - { - "name": "0.8.0", - "version": "0.8.0", - "url": "https://aequilibrae.com/python/V.0.8.0/" - }, - { - "name": "0.7.7", - "version": "0.7.7", - "url": "https://aequilibrae.com/python/V.0.7.7/" - }, - { - "name": "0.7.6", - "version": "0.7.6", - "url": "https://aequilibrae.com/python/V.0.7.6/" - }, - { - "name": "0.7.5", - "version": "0.7.5", - "url": "https://aequilibrae.com/python/V.0.7.5/" - }, - { - "name": "0.7.4", - "version": "0.7.4", - "url": "https://aequilibrae.com/python/V.0.7.4/" - }, - { - "name": "0.7.3", - "version": "0.7.3", - "url": "https://aequilibrae.com/python/V.0.7.3/" - }, - { - "name": "0.7.2", - "version": "0.7.2", - "url": "https://aequilibrae.com/python/V.0.7.2/" - }, - { - "name": "0.7.1", - "version": "0.7.1", - "url": "https://aequilibrae.com/python/V.0.7.1/" - }, - { - "name": "0.7.0", - "version": "0.7.0", - "url": "https://aequilibrae.com/python/V.0.7.0/" - }, - { - "name": "0.6.5", - "version": "0.6.5", - "url": "https://aequilibrae.com/python/V.0.6.5/" - }, - { - "name": "0.6.4", - "version": "0.6.4", - "url": "https://aequilibrae.com/python/V.0.6.4/" - }, - { - "name": "0.6.3", - "version": "0.6.3", - "url": "https://aequilibrae.com/python/V.0.6.3/" - }, - { - "name": "0.6.2", - "version": "0.6.2", - "url": "https://aequilibrae.com/python/V.0.6.2/" - }, - { - "name": "0.6.1", - "version": "0.6.1", - "url": "https://aequilibrae.com/python/V.0.6.1/" - }, - { - "name": "0.6.0", - "version": "0.6.0", - "url": "https://aequilibrae.com/python/V.0.6.0/" - }, - { - "name": "0.5.3", - "version": "0.5.3", - "url": "https://aequilibrae.com/python/V.0.5.3/" - } -] diff --git a/docs/source/_templates/navigation_header.html b/docs/source/_templates/navigation_header.html new file mode 100644 index 000000000..3bbb6efb0 --- /dev/null +++ b/docs/source/_templates/navigation_header.html @@ -0,0 +1,61 @@ + + + + + \ No newline at end of file diff --git a/docs/source/api/api.rst b/docs/source/api.rst similarity index 84% rename from docs/source/api/api.rst rename to docs/source/api.rst index e894ecb81..ead609a05 100644 --- a/docs/source/api/api.rst +++ b/docs/source/api.rst @@ -7,7 +7,7 @@ Project ------- .. currentmodule:: aequilibrae.project .. autosummary:: - :toctree: generated/ + :toctree: _generated/ Project @@ -15,7 +15,7 @@ Project Components ~~~~~~~~~~~~~~~~~~ .. currentmodule:: aequilibrae.project .. autosummary:: - :toctree: generated/ + :toctree: _generated/ About FieldEditor @@ -28,7 +28,7 @@ Project Objects ~~~~~~~~~~~~~~~ .. currentmodule:: aequilibrae.project .. autosummary:: - :toctree: generated/ + :toctree: _generated/ Zone @@ -36,7 +36,7 @@ Network Data ------------ .. currentmodule:: aequilibrae.project.network .. autosummary:: - :toctree: generated/ + :toctree: _generated/ Modes LinkTypes @@ -48,7 +48,7 @@ Network Items ------------- .. currentmodule:: aequilibrae.project.network .. autosummary:: - :toctree: generated/ + :toctree: _generated/ Mode LinkType @@ -60,7 +60,7 @@ Distribution ------------ .. currentmodule:: aequilibrae.distribution .. autosummary:: - :toctree: generated/ + :toctree: _generated/ Ipf GravityCalibration @@ -71,7 +71,7 @@ Matrix ------ .. currentmodule:: aequilibrae.matrix .. autosummary:: - :toctree: generated/ + :toctree: _generated/ AequilibraeMatrix @@ -82,7 +82,7 @@ Skimming ~~~~~~~~ .. currentmodule:: aequilibrae.paths .. autosummary:: - :toctree: generated/ + :toctree: _generated/ NetworkSkimming @@ -90,7 +90,7 @@ Graph ~~~~~ .. currentmodule:: aequilibrae.paths .. autosummary:: - :toctree: generated/ + :toctree: _generated/ Graph TransitGraph @@ -99,7 +99,7 @@ Traffic assignment ~~~~~~~~~~~~~~~~~~ .. currentmodule:: aequilibrae.paths .. autosummary:: - :toctree: generated/ + :toctree: _generated/ TrafficClass TransitClass @@ -115,7 +115,7 @@ Route choice ~~~~~~~~~~~~ .. currentmodule:: aequilibrae.paths .. autosummary:: - :toctree: generated/ + :toctree: _generated/ HyperpathGenerating OptimalStrategies @@ -126,7 +126,7 @@ Transit ------- .. currentmodule:: aequilibrae.transit .. autosummary:: - :toctree: generated/ + :toctree: _generated/ Transit TransitGraphBuilder @@ -136,7 +136,7 @@ Utils ----- .. currentmodule:: aequilibrae.utils .. autosummary:: - :toctree: generated/ + :toctree: _generated/ create_delaunay_network.DelaunayAnalysis create_example @@ -145,6 +145,6 @@ Parameters ---------- .. currentmodule:: aequilibrae .. autosummary:: - :toctree: generated/ + :toctree: _generated/ Parameters diff --git a/docs/source/conf.py b/docs/source/conf.py index 5650d40ea..aafab849e 100644 --- a/docs/source/conf.py +++ b/docs/source/conf.py @@ -68,7 +68,6 @@ "sphinx_tabs.tabs", ] -# sphinx_tabs_valid_builders = ['linkcheck'] sphinx_tabs_disable_tab_closing = True # Change plot_gallery to True to start building examples again @@ -88,11 +87,11 @@ "examples/other_applications", ] ), - # "plot_gallery": "False", + "plot_gallery": True, } # Add any paths that contain templates here, relative to this directory. -templates_path = ["_static"] +templates_path = ["_templates"] # The suffix(es) of source filenames. source_suffix = ".rst" @@ -120,33 +119,35 @@ # The theme to use for HTML and HTML Help pages. See the documentation for # a list of builtin themes. -# html_theme = "pydata_sphinx_theme" # Add any paths that contain custom static files (such as style sheets) here, # relative to this directory. They are copied after the builtin static files, # so a file named "default.css" will overwrite the builtin "default.css". html_static_path = ["_static"] + html_css_files = ["custom.css"] html_theme_options = { "show_nav_level": 0, - "navbar_center": ["navbar-nav"], - "navbar_end": ["theme-switcher", "navbar-icon-links", "version-switcher"], + "navbar_center": ["navigation_header"], "navbar_start": ["navbar-logo"], + "navbar_end": ["theme-switcher", "navbar-icon-links"], + "navbar_persistent": ["search-button"], "navbar_align": "left", - "switcher": { - "json_url": "https://www.aequilibrae.com/python/latest/_static/switcher.json", - "version_match": version, - }, - # "check_switcher": False, "github_url": "https://github.com/AequilibraE/aequilibrae", "analytics": { "google_analytics_id": "G-0HRKZDXRZ7", }, + "logo": { + "text": "AequilibraE", + "image_light": "_static/large_icon.png", + "image_dark": "_static/large_icon.png", + "link": "https://www.aequilibrae.com/latest/home.html", + }, } -# The name for this set of Sphinx documents. If None, it defaults to +# The name for this set of Sphinx documents. If None, it defaults to html_title = f"AequilibraE {version}" # -- Options for HTMLHelp output --------------------------------------------- @@ -158,9 +159,8 @@ # latex_elements = {} # Grouping the document tree into LaTeX files. List of tuples -# (source start file, target name, title, -# author, documentclass [howto, manual, or own class]). -latex_documents = [(master_doc, "AequilibraE.tex", "AequilibraE Documentation", author, "manual")] +# (source start file, target name, title, author, documentclass [howto, manual, or own class]). +latex_documents = [("_latex/index", "aequilibrae.tex", html_title, author, "manual")] latex_appendices = [ "useful_information/installation", @@ -172,7 +172,7 @@ # One entry per manual page. List of tuples # (source start file, name, description, authors, manual section). -man_pages = [(master_doc, "aequilibrae", "AequilibraE Documentation", [author], 1)] +man_pages = [(master_doc, "aequilibrae", html_title, [author], 1)] # -- Options for Texinfo output ---------------------------------------------- diff --git a/docs/source/examples/aequilibrae_without_a_model/plot_assignment_without_model.py b/docs/source/examples/aequilibrae_without_a_model/plot_assignment_without_model.py index 2e106ca07..f33252d7c 100644 --- a/docs/source/examples/aequilibrae_without_a_model/plot_assignment_without_model.py +++ b/docs/source/examples/aequilibrae_without_a_model/plot_assignment_without_model.py @@ -35,7 +35,7 @@ from aequilibrae.paths import Graph from aequilibrae.paths import TrafficAssignment from aequilibrae.paths.traffic_class import TrafficClass -# sphinx_gallery_thumbnail_path = 'images/assignment_plot.png' +# sphinx_gallery_thumbnail_path = '../source/images/assignment_plot.png' # %% # We load the example file from the GMNS GitHub repository diff --git a/docs/source/examples/aequilibrae_without_a_model/plot_ipf_without_model.py b/docs/source/examples/aequilibrae_without_a_model/plot_ipf_without_model.py index d47b88803..19a71075c 100644 --- a/docs/source/examples/aequilibrae_without_a_model/plot_ipf_without_model.py +++ b/docs/source/examples/aequilibrae_without_a_model/plot_ipf_without_model.py @@ -39,7 +39,7 @@ from aequilibrae.distribution import Ipf from aequilibrae.matrix import AequilibraeMatrix -# sphinx_gallery_thumbnail_path = 'images/ipf.png' +# sphinx_gallery_thumbnail_path = '../source/images/ipf.png' # %% folder = gettempdir() diff --git a/docs/source/examples/assignment_workflows/plot_public_transit_assignment.py b/docs/source/examples/assignment_workflows/plot_public_transit_assignment.py index 8a4d213d9..4478ca59c 100644 --- a/docs/source/examples/assignment_workflows/plot_public_transit_assignment.py +++ b/docs/source/examples/assignment_workflows/plot_public_transit_assignment.py @@ -33,7 +33,7 @@ from aequilibrae.transit import Transit from aequilibrae.utils.create_example import create_example -# sphinx_gallery_thumbnail_path = 'images/transit/hyperpath_bell_n_10_alpha_100d0.png' +# sphinx_gallery_thumbnail_path = '../source/images/transit/hyperpath_bell_n_10_alpha_100d0.png' # %% diff --git a/docs/source/examples/assignment_workflows/plot_route_choice_basics.py b/docs/source/examples/assignment_workflows/plot_route_choice_basics.py index 8be03f0c4..dcb9206bc 100644 --- a/docs/source/examples/assignment_workflows/plot_route_choice_basics.py +++ b/docs/source/examples/assignment_workflows/plot_route_choice_basics.py @@ -28,7 +28,7 @@ from os.path import join from aequilibrae.utils.create_example import create_example -# sphinx_gallery_thumbnail_path = 'images/plot_route_choice_assignment.png' +# sphinx_gallery_thumbnail_path = '../source/images/plot_route_choice_assignment.png' # %% diff --git a/docs/source/examples/assignment_workflows/plot_route_choice_set.py b/docs/source/examples/assignment_workflows/plot_route_choice_set.py index 9c2c3e572..6da6647ff 100644 --- a/docs/source/examples/assignment_workflows/plot_route_choice_set.py +++ b/docs/source/examples/assignment_workflows/plot_route_choice_set.py @@ -27,7 +27,7 @@ import numpy as np from aequilibrae.utils.create_example import create_example -# sphinx_gallery_thumbnail_path = 'images/plot_route_choice_set.png' +# sphinx_gallery_thumbnail_path = '../source/images/plot_route_choice_set.png' # %% diff --git a/docs/source/examples/assignment_workflows/plot_subarea_analysis.py b/docs/source/examples/assignment_workflows/plot_subarea_analysis.py index 79b16b6a1..e080a3776 100644 --- a/docs/source/examples/assignment_workflows/plot_subarea_analysis.py +++ b/docs/source/examples/assignment_workflows/plot_subarea_analysis.py @@ -33,7 +33,7 @@ from aequilibrae.utils.create_example import create_example -# sphinx_gallery_thumbnail_path = 'images/plot_subarea_analysis.png' +# sphinx_gallery_thumbnail_path = '../source/images/plot_subarea_analysis.png' # %% diff --git a/docs/source/examples/assignment_workflows/select_link_analysis.omx b/docs/source/examples/assignment_workflows/select_link_analysis.omx new file mode 100644 index 000000000..ee5d83935 Binary files /dev/null and b/docs/source/examples/assignment_workflows/select_link_analysis.omx differ diff --git a/docs/source/examples/creating_models/plot_create_from_gmns.py b/docs/source/examples/creating_models/plot_create_from_gmns.py index 8ebc3134a..cc2d96231 100644 --- a/docs/source/examples/creating_models/plot_create_from_gmns.py +++ b/docs/source/examples/creating_models/plot_create_from_gmns.py @@ -45,7 +45,7 @@ from aequilibrae.project import Project from aequilibrae.parameters import Parameters import folium -# sphinx_gallery_thumbnail_path = 'images/plot_import_from_gmns.png' +# sphinx_gallery_thumbnail_path = '../source/images/plot_import_from_gmns.png' # %% diff --git a/docs/source/examples/creating_models/plot_create_from_layer.py b/docs/source/examples/creating_models/plot_create_from_layer.py index 06fb05946..d4be47f94 100644 --- a/docs/source/examples/creating_models/plot_create_from_layer.py +++ b/docs/source/examples/creating_models/plot_create_from_layer.py @@ -38,7 +38,7 @@ import folium from aequilibrae import Project -# sphinx_gallery_thumbnail_path = 'images/plot_from_layer.png' +# sphinx_gallery_thumbnail_path = '../source/images/plot_from_layer.png' # %% diff --git a/docs/source/examples/creating_models/plot_create_from_osm.py b/docs/source/examples/creating_models/plot_create_from_osm.py index b41739fb5..9cb19ee8a 100644 --- a/docs/source/examples/creating_models/plot_create_from_osm.py +++ b/docs/source/examples/creating_models/plot_create_from_osm.py @@ -27,7 +27,7 @@ from os.path import join from aequilibrae import Project import folium -# sphinx_gallery_thumbnail_path = 'images/nauru.png' +# sphinx_gallery_thumbnail_path = '../source/images/nauru.png' # %% diff --git a/docs/source/examples/creating_models/plot_create_zoning.py b/docs/source/examples/creating_models/plot_create_zoning.py index bf414086d..e6e3789ae 100644 --- a/docs/source/examples/creating_models/plot_create_zoning.py +++ b/docs/source/examples/creating_models/plot_create_zoning.py @@ -59,7 +59,7 @@ from aequilibrae.utils.aeq_signal import simple_progress, SIGNAL s = SIGNAL(object) -# sphinx_gallery_thumbnail_path = "images/plot_create_zoning.png" +# sphinx_gallery_thumbnail_path = "../source/images/plot_create_zoning.png" # %% # Let's print the list of examples that ship with AequilibraE diff --git a/docs/source/examples/creating_models/plot_import_gtfs.py b/docs/source/examples/creating_models/plot_import_gtfs.py index afb4ee776..19d979a8e 100644 --- a/docs/source/examples/creating_models/plot_import_gtfs.py +++ b/docs/source/examples/creating_models/plot_import_gtfs.py @@ -30,7 +30,7 @@ from aequilibrae.transit import Transit from aequilibrae.utils.create_example import create_example -# sphinx_gallery_thumbnail_path = 'images/plot_import_gtfs.png' +# sphinx_gallery_thumbnail_path = '../source/images/plot_import_gtfs.png' # %% diff --git a/docs/source/examples/other_applications/plot_check_logging.py b/docs/source/examples/other_applications/plot_check_logging.py index 5cecb25ca..edf2e5e51 100644 --- a/docs/source/examples/other_applications/plot_check_logging.py +++ b/docs/source/examples/other_applications/plot_check_logging.py @@ -22,7 +22,7 @@ from os.path import join from aequilibrae.utils.create_example import create_example from aequilibrae.paths import TrafficAssignment, TrafficClass -# sphinx_gallery_thumbnail_path = 'images/logs_image.png' +# sphinx_gallery_thumbnail_path = '../source/images/logs_image.png' # %% diff --git a/docs/source/examples/other_applications/plot_export_to_gmns.py b/docs/source/examples/other_applications/plot_export_to_gmns.py index cf2c3c278..5d58be55c 100644 --- a/docs/source/examples/other_applications/plot_export_to_gmns.py +++ b/docs/source/examples/other_applications/plot_export_to_gmns.py @@ -29,7 +29,7 @@ from aequilibrae.utils.create_example import create_example import pandas as pd import folium -# sphinx_gallery_thumbnail_path = 'images/plot_export_to_gmns.png' +# sphinx_gallery_thumbnail_path = '../source/images/plot_export_to_gmns.png' # %% diff --git a/docs/source/examples/other_applications/plot_find_disconnected.py b/docs/source/examples/other_applications/plot_find_disconnected.py index 4221fb0c6..f5980175b 100644 --- a/docs/source/examples/other_applications/plot_find_disconnected.py +++ b/docs/source/examples/other_applications/plot_find_disconnected.py @@ -42,7 +42,7 @@ import numpy as np from aequilibrae.utils.create_example import create_example from aequilibrae.paths.results import PathResults -# sphinx_gallery_thumbnail_path = 'images/disconnected_network.png' +# sphinx_gallery_thumbnail_path = '../source/images/disconnected_network.png' # %% diff --git a/docs/source/examples/other_applications/plot_logging_to_terminal.py b/docs/source/examples/other_applications/plot_logging_to_terminal.py index 451f67d94..7103745e7 100644 --- a/docs/source/examples/other_applications/plot_logging_to_terminal.py +++ b/docs/source/examples/other_applications/plot_logging_to_terminal.py @@ -16,7 +16,7 @@ from aequilibrae.utils.create_example import create_example import logging import sys -# sphinx_gallery_thumbnail_path = 'images/plot_logging_to_terminal_image.png' +# sphinx_gallery_thumbnail_path = '../source/images/plot_logging_to_terminal_image.png' # %% diff --git a/docs/source/examples/skimming/plot_skimming.py b/docs/source/examples/skimming/plot_skimming.py index 78388541f..4b7414f22 100644 --- a/docs/source/examples/skimming/plot_skimming.py +++ b/docs/source/examples/skimming/plot_skimming.py @@ -36,7 +36,7 @@ from tempfile import gettempdir from os.path import join from aequilibrae.utils.create_example import create_example -# sphinx_gallery_thumbnail_path = 'images/skims.png' +# sphinx_gallery_thumbnail_path = '../source/images/skims.png' # %% diff --git a/docs/source/examples/visualization/plot_display.py b/docs/source/examples/visualization/plot_display.py index 24198659e..34b4e0f56 100644 --- a/docs/source/examples/visualization/plot_display.py +++ b/docs/source/examples/visualization/plot_display.py @@ -17,7 +17,7 @@ from os.path import join from aequilibrae.utils.create_example import create_example import folium -# sphinx_gallery_thumbnail_path = 'images/plot_network_image.png' +# sphinx_gallery_thumbnail_path = '../source/images/plot_network_image.png' # %% diff --git a/docs/source/home.rst b/docs/source/home.rst new file mode 100644 index 000000000..24f94f09d --- /dev/null +++ b/docs/source/home.rst @@ -0,0 +1,63 @@ +:html_theme.sidebar_secondary.remove: + +.. raw:: html + + + +AequilibraE +=========== + +.. image:: images/logos/banner-transparent.png + :align: center + +| + +.. rst-class:: big-font + + AequilibraE is the first comprehensive Python package for transportation modeling, and it aims to provide all the + resources not easily available from other open-source packages in the Python (NumPy, really) ecosystem. + +Sponsors +-------- + +Sponsoring AequilibraE's maintenance and new features is the best way to guarantee that the bugs you need +fixed and the features your projects require are incorporated quickly into the software. + +Please contact aequilibrae@outerloop.io for sponsoring opportunities. + +.. raw:: html + +
+ +.. image:: images/logos/sponsor1.png + :target: https://www.outerloop.io + +.. image:: images/logos/sponsor2.png + :target: https://www.ademe.fr + +.. image:: images/logos/sponsor3.png + :target: https://lafabriquedesmobilites.fr/ + +.. image:: images/logos/sponsor4.png + :target: https://www.egis.fr/ + +.. image:: images/logos/sponsor5.png + :target: https://www.ipea.gov.br + +.. raw:: html + +
+ +| +| +| +| +| + +Credits for the photo in the banner to `Juan Cruz Mountford `_ on `Unsplash `_. +The fonts used are `Arvo `_ and +`Quicksand `_. diff --git a/docs/source/images/logos/banner-transparent.png b/docs/source/images/logos/banner-transparent.png new file mode 100644 index 000000000..36afbd094 Binary files /dev/null and b/docs/source/images/logos/banner-transparent.png differ diff --git a/docs/source/images/logos/banner.png b/docs/source/images/logos/banner.png new file mode 100644 index 000000000..4ac396b6b Binary files /dev/null and b/docs/source/images/logos/banner.png differ diff --git a/docs/source/images/logos/sponsor1.png b/docs/source/images/logos/sponsor1.png new file mode 100644 index 000000000..d679bf082 Binary files /dev/null and b/docs/source/images/logos/sponsor1.png differ diff --git a/docs/source/images/logos/sponsor2.png b/docs/source/images/logos/sponsor2.png new file mode 100644 index 000000000..e140bfcd4 Binary files /dev/null and b/docs/source/images/logos/sponsor2.png differ diff --git a/docs/source/images/logos/sponsor3.png b/docs/source/images/logos/sponsor3.png new file mode 100644 index 000000000..d6bbf7760 Binary files /dev/null and b/docs/source/images/logos/sponsor3.png differ diff --git a/docs/source/images/logos/sponsor4.png b/docs/source/images/logos/sponsor4.png new file mode 100644 index 000000000..c98e54305 Binary files /dev/null and b/docs/source/images/logos/sponsor4.png differ diff --git a/docs/source/images/logos/sponsor5.png b/docs/source/images/logos/sponsor5.png new file mode 100644 index 000000000..fde43ab54 Binary files /dev/null and b/docs/source/images/logos/sponsor5.png differ diff --git a/docs/source/index.rst b/docs/source/index.rst index 9c95d1cd1..8b5d9249b 100644 --- a/docs/source/index.rst +++ b/docs/source/index.rst @@ -1,22 +1,23 @@ -.. AequilibraE documentation master file, created by - sphinx-quickstart on Fri Jul 6 17:02:38 2018. - You can adapt this file completely to your liking, but it should at least - contain the root `toctree` directive. +:html_theme.sidebar_secondary.remove: -=========== -AequilibraE -=========== +.. raw:: html -AequilibraE is the first comprehensive Python package for transportation modeling, and it aims to provide all the -resources not easily available from other open-source packages in the Python (NumPy, really) ecosystem. + -**Download documentation**: :download:`HTML <_static/AequilibraE.zip>` | :download:`PDF <_static/latex/AequilibraE.pdf>` +Python +====== -**Previous versions**: documentation for AequilibraE's versions before 0.9.0 are available :ref:`here `. +**Download documentation**: :download:`HTML <_static/AequilibraE.zip>` | :download:`PDF <_static/latex/aequilibrae.pdf>` + +**Previous versions**: documentation for all AequilibraE's versions are available :ref:`here `. **Useful links**: :ref:`installation` | :ref:`validation` | :ref:`developing_aequilibrae` | :ref:`support` | :ref:`history_of_aequilibrae` +| + .. grid:: .. grid-item-card:: :material-outlined:`folder;1.5em` Examples @@ -38,18 +39,18 @@ resources not easily available from other open-source packages in the Python (Nu .. grid:: - .. grid-item-card:: :material-outlined:`build;1.5em` API References - :link: api_reference - :link-type: ref - :text-align: center - - Reference guide to AequilibraE's API. - - .. grid-item-card:: :material-outlined:`person;1.5em` Not a programmer? - :link: https://www.aequilibrae.com/qgis/latest/ - :text-align: center - - Take me to the GUI! + .. grid-item-card:: :material-outlined:`build;1.5em` API References + :link: api_reference + :link-type: ref + :text-align: center + + Reference guide to AequilibraE's API. + + .. grid-item-card:: :material-outlined:`person;1.5em` Not a programmer? + :link: https://www.aequilibrae.com/latest/qgis/index.html + :text-align: center + + Take me to the GUI! .. toctree:: :hidden: @@ -57,4 +58,4 @@ resources not easily available from other open-source packages in the Python (Nu _auto_examples/index modeling_with_aequilibrae/index - api/api + api diff --git a/docs/source/modeling_with_aequilibrae/index.rst b/docs/source/modeling_with_aequilibrae/index.rst index be4daf525..fa0e29071 100644 --- a/docs/source/modeling_with_aequilibrae/index.rst +++ b/docs/source/modeling_with_aequilibrae/index.rst @@ -7,7 +7,7 @@ other open-source packages in the Python (NumPy, really) ecosystem. AequilibraE has also a fully features interface available as a plugin for the open source software QGIS, which is separately maintained and discussed in -detail its `documentation `_. +detail its `documentation `_. Contributions are welcome to the existing modules and/or in the form of new modules. diff --git a/docs/source/modeling_with_aequilibrae/parameter_file.rst b/docs/source/modeling_with_aequilibrae/parameter_file.rst index d7071af8d..6d985ce24 100644 --- a/docs/source/modeling_with_aequilibrae/parameter_file.rst +++ b/docs/source/modeling_with_aequilibrae/parameter_file.rst @@ -114,7 +114,7 @@ OpenStreetMap The **OSM** group of parameters has two specifications: **modes** and **all_link_types**. **modes** contains the list of key tags we will import for each mode. Description of tags can be found on -`OpenStreetMap Wiki `_, and we recommend +`OpenStreetMap Wiki `_, and we recommend not changing the standard parameters unless you are exactly sure of what you are doing. For each mode to be imported there is also a mode filter to control for non-default diff --git a/docs/source/modeling_with_aequilibrae/transit_assignment/transit_graph.rst b/docs/source/modeling_with_aequilibrae/transit_assignment/transit_graph.rst index dd02ec745..3dda902a7 100644 --- a/docs/source/modeling_with_aequilibrae/transit_assignment/transit_graph.rst +++ b/docs/source/modeling_with_aequilibrae/transit_assignment/transit_graph.rst @@ -13,10 +13,10 @@ Let’s start by giving a few definitions: - *transit* definition from `Wikipedia `_: - system of transport for passengers by group travel systems available - for use by the general public unlike private transport, typically - managed on a schedule, operated on established routes, and that - charge a posted fee for each trip. + system of transport for passengers by group travel systems available + for use by the general public unlike private transport, typically + managed on a schedule, operated on established routes, and that + charge a posted fee for each trip. - *transit network*: a set of transit lines and stops, where passengers can board, alight or change vehicles. diff --git a/docs/source/modeling_with_aequilibrae/transit_database/index.rst b/docs/source/modeling_with_aequilibrae/transit_database/index.rst index 6bf4f6d1c..08b4314e5 100644 --- a/docs/source/modeling_with_aequilibrae/transit_database/index.rst +++ b/docs/source/modeling_with_aequilibrae/transit_database/index.rst @@ -8,7 +8,7 @@ into its database. The Transit module has been updated in version 0.9.0. More de the **public_transport.sqlite** are discussed on a nearly *per-table* basis below, and we recommend understanding the role of each table before setting an AequilibraE model you intend to use. If you don't know much about GTFS, we strongly encourage you to take -a look at the documentation provided by `Google `_. +a look at the documentation provided by `Mobility Data `_. The public transport database is created on the run when the ``Transit`` module is executed for the first time. diff --git a/docs/source/useful_information/development/roadmap.rst b/docs/source/useful_information/development/roadmap.rst index f1c9e6155..6096d5fbe 100644 --- a/docs/source/useful_information/development/roadmap.rst +++ b/docs/source/useful_information/development/roadmap.rst @@ -10,33 +10,33 @@ identified and that we intend to dedicate some time to in the future. * Network data model - * Introduce centroid connector data type to replace the inference that all links - connected to centroids are connectors + * Introduce centroid connector data type to replace the inference that all links + connected to centroids are connectors * Traffic assignment - * Re-development of the path-finding algorithm to allow for turn - penalties/bans - * New origin-based traffic assignment to achieve ultra-converged - assignment - * New path-finding algorithm based on contraction-hierarchies + * Re-development of the path-finding algorithm to allow for turn + penalties/bans + * New origin-based traffic assignment to achieve ultra-converged + assignment + * New path-finding algorithm based on contraction-hierarchies * Public Transport - * Export of GTFS (enables editing of GTFS in QGIS) + * Export of GTFS (enables editing of GTFS in QGIS) * Project - * Inclusion of new table for scalar values - * Inclusion of new table for vectors based on centroid IDs (plus metadata - table) - * Inclusion of new table for vectors based on node IDs (plus metadata table) - * Inclusion of new table for vectors based on link IDs (plus metadata table) + * Inclusion of new table for scalar values + * Inclusion of new table for vectors based on centroid IDs (plus metadata + table) + * Inclusion of new table for vectors based on node IDs (plus metadata table) + * Inclusion of new table for vectors based on link IDs (plus metadata table) * QGIS - * Inclusion of TSP and more general vehicle routing problems (resource - constraints, pick-up, and delivery, etc.) + * Inclusion of TSP and more general vehicle routing problems (resource + constraints, pick-up, and delivery, etc.) If there is any other feature you would like to suggest, please record a new issue on `GitHub `_, or drop diff --git a/docs/source/useful_information/development/softwaredevelopment.rst b/docs/source/useful_information/development/softwaredevelopment.rst index 60b036649..7dce42170 100644 --- a/docs/source/useful_information/development/softwaredevelopment.rst +++ b/docs/source/useful_information/development/softwaredevelopment.rst @@ -16,7 +16,7 @@ Whenever vectorization is not possible through the use of NumPy functions, compi accelerate computation. All compiled code is written in `Cython `_. We have not yet found an ideal source of recommendations for developing AequilibraE, but a good initial take can be -found in `this article `_. +found in `this article `_. Development Install ------------------- @@ -35,7 +35,7 @@ Non-Windows ~~~~~~~~~~~ :: - ./ci.sh setup_dev + ./ci.sh setup_dev Windows ~~~~~~~ @@ -47,20 +47,20 @@ using `Chocolatey `_ as a package manager. :: - cinst python3 --version 3.9 - cinst python + cinst python3 --version 3.12 + cinst python - set PATH=C:\Python39;%PATH% - python -m pip install pipenv - virtualenv .venv #Only if you want to save the virtual environment in the same folder - python -m pipenv install --dev - python -m pipenv run pre-commit-install + set PATH=C:\Python312;%PATH% + python -m pip install pipenv + virtualenv .venv #Only if you want to save the virtual environment in the same folder + python -m pipenv install --dev + python -m pipenv run pre-commit-install Setup Pycharm with the virtual environment you just created. :: - Settings -> Project -> Project Interpreter -> Gear Icon -> Add -> Existing VEnv + Settings -> Project -> Project Interpreter -> Gear Icon -> Add -> Existing VEnv Development Guidelines ----------------------- @@ -71,10 +71,10 @@ portions of the code are still not up to such standards. Style ~~~~~ -* Python code should follow (mostly) the `pycodestyle style guide `_ -* Python docstrings should follow the `reStructuredText Docstring Format `_ -* We are big fans of auto-code formatting. For that, we use `ruff `_ and - `Black `_. +* Python code should follow (mostly) the `pycodestyle style guide `_ +* Python docstrings should follow the `reStructuredText Docstring Format `_ +* We are big fans of auto-code formatting. For that, we use `ruff `_ and + `Black `_. * Negating some of what we have said so far, we use maximum line length of 120 characters Imports @@ -82,7 +82,7 @@ Imports * Imports should be one per line. * Imports should be grouped into standard library, third-party, and intra-library imports - (``ctrl+shit+o`` does it automatically on PyCharm). + (``CTRL + SHIFT + o`` does it automatically on PyCharm). * Imports of NumPy and Pandas should follow the following convention: .. code-block:: python @@ -93,7 +93,7 @@ Imports Contributing to AequilibraE ~~~~~~~~~~~~~~~~~~~~~~~~~~~ -GitHub has a nice visual explanation on how collaboration is done `GitHub Flow +GitHub has a nice visual explanation on how collaboration is done using `GitHub flow `_. In a nutshell: @@ -106,7 +106,7 @@ In a nutshell: In a more verbose way... -* The ``master`` branch contains the latest release version of AequilibraE. +* The ``main`` branch contains the latest release version of AequilibraE. * The ``develop`` branch contains all new features and bug fixes that will be included in the next release. It can be seen as a *release candidate*, so work is not often performed on that branch. @@ -116,19 +116,22 @@ In a more verbose way... * The project maintainers have absolute discretion to accept or reject PR's, but reasons for refusing contributions will always be made clear on the PR's comments/review. * Work is done in an issue/feature branch (or a fork) and then pushed to a new branch. -* Automated testing is run using Github Actions. All tests must pass - * Unit testing - * Build/packaging tests - * Documentation building test +* Automated testing is run using Github Actions. All tests must pass: + + * Unit testing + * Build/packaging tests + * Documentation building test + * If the tests pass, then a manual pull request can be approved to merge into develop. -* The master and develop branches are protected and therefore can only be written to after the code has been reviewed and approved. -* No individual has the privileges to push to the master or developer branches. +* The ``main`` and ``develop`` branches are protected and therefore can only be written to + after the code has been reviewed and approved. +* No individual has the privileges to push to the ``main`` or ``develop`` branches. Release versions ~~~~~~~~~~~~~~~~~ AequilibraE uses the de-facto Python standard for `versioning -`_ +`_. :: @@ -151,10 +154,10 @@ Testing AequilibraE style checking is done with two tools: -* `ruff `_, a tool to check Python code style -* `Black `_, The uncompromising code formatter +* `ruff `_, a tool to check Python code style +* `Black `_, The uncompromising code formatter -And testing is done using `pytest `_. +And testing is done using `pytest `_. Testing is done for Windows, MacOs and Ubuntu Linux on all supported Python versions, and we use GitHub Actions to run these tests. These tests need to pass and additionally somebody has to diff --git a/docs/source/useful_information/installation.rst b/docs/source/useful_information/installation.rst index 5869ae54a..643487c5f 100644 --- a/docs/source/useful_information/installation.rst +++ b/docs/source/useful_information/installation.rst @@ -18,7 +18,7 @@ as of September 2024. Installation ------------ -1. Install `Python 3.9, 3.10, 3.11 or 3.12 `_. We recommend Python 3.10 or 3.11 +1. Install `Python 3.9, 3.10, 3.11 or 3.12 `_. We recommend Python 3.10 or 3.11 2. Install AequilibraE :: diff --git a/docs/source/useful_information/support.rst b/docs/source/useful_information/support.rst index a0bcbd935..38e1bef2e 100644 --- a/docs/source/useful_information/support.rst +++ b/docs/source/useful_information/support.rst @@ -42,36 +42,36 @@ Sponsoring AequilibraE's maintenance and new features is the best way to guarant fixed and the features your projects require are incorporated quickly into the software. Please contact aequilibrae@outerloop.io for sponsoring opportunities. -Maintenance sponsors -~~~~~~~~~~~~~~~~~~~~ - -2024: - -* `ADEME `_ - -2023: - -* `Outer Loop Consulting `_ -* `La Fabrique des Mobilités `_ -* `EGIS France `_ - -2022: - -* `Outer Loop Consulting `_ - -2021: - -* `Outer Loop Consulting `_ - -2016: - -* `Instituto de Pesquisa Econômica Aplicada `_ - -Feature sponsors -~~~~~~~~~~~~~~~~ - -2023: - -* GTFS import - `La Fabrique des Mobilités `_ -* Transit assignment - `EGIS France `_ -* Select Link Analysis - `Outer Loop Consulting `_ +.. table:: + :align: center + :width: 50% + + +------+---------------------------------------------------------------------------------+ + | Maintenance Sponsors | + +======+=================================================================================+ + | 2024 | `ADEME `_ | + +------+---------------------------------------------------------------------------------+ + | 2023 | `Outer Loop Consulting `_ - | + | | `La Fabrique des Mobilités `_ - | + | | `EGIS France `_ | + +------+---------------------------------------------------------------------------------+ + | 2022 | `Outer Loop Consulting `_ | + +------+---------------------------------------------------------------------------------+ + | 2021 | `Outer Loop Consulting `_ | + +------+---------------------------------------------------------------------------------+ + | 2016 | `Instituto de Pesquisa Econômica Aplicada `_ | + +------+---------------------------------------------------------------------------------+ + +.. table:: + :align: center + :width: 50% + + +------+---------------------------------------------------------------------------------+ + | Feature Sponsors | + +======+=================================================================================+ + | 2023 | GTFS import - `La Fabrique des Mobilités `_ | + | +---------------------------------------------------------------------------------+ + | | Transit assignment - `EGIS France `_ | + | +---------------------------------------------------------------------------------+ + | | Select Link Analysis - `Outer Loop Consulting `_ | + +------+---------------------------------------------------------------------------------+ diff --git a/docs/source/useful_information/version_history.rst b/docs/source/useful_information/version_history.rst index adb966787..bd2e53405 100644 --- a/docs/source/useful_information/version_history.rst +++ b/docs/source/useful_information/version_history.rst @@ -11,120 +11,186 @@ In the meantime, you can find the documentation for all versions since 0.5.3. .. grid:: .. grid-item-card:: 0.5.3 - :link: https://aequilibrae.com/python/V.0.5.3/ + :link: https://aequilibrae.com/docs/python/V.0.5.3/ :link-type: url :text-align: center .. grid-item-card:: 0.6.0 - :link: https://aequilibrae.com/python/V.0.6.0/ + :link: https://aequilibrae.com/docs/python/V.0.6.0/ :link-type: url :text-align: center .. grid-item-card:: 0.6.1 - :link: https://aequilibrae.com/python/V.0.6.1/ + :link: https://aequilibrae.com/docs/python/V.0.6.1/ :link-type: url :text-align: center .. grid:: .. grid-item-card:: 0.6.2 - :link: https://aequilibrae.com/python/V.0.6.2/ + :link: https://aequilibrae.com/docs/python/V.0.6.2/ :link-type: url :text-align: center .. grid-item-card:: 0.6.3 - :link: https://aequilibrae.com/python/V.0.6.3/ + :link: https://aequilibrae.com/docs/python/V.0.6.3/ :link-type: url :text-align: center .. grid-item-card:: 0.6.4 - :link: https://aequilibrae.com/python/V.0.6.4/ + :link: https://aequilibrae.com/docs/python/V.0.6.4/ :link-type: url :text-align: center .. grid:: .. grid-item-card:: 0.6.5 - :link: https://aequilibrae.com/python/V.0.6.5/ + :link: https://aequilibrae.com/docs/python/V.0.6.5/ :link-type: url :text-align: center .. grid-item-card:: 0.7.0 - :link: https://aequilibrae.com/python/V.0.7.0/ + :link: https://aequilibrae.com/docs/python/V.0.7.0/ :link-type: url :text-align: center .. grid-item-card:: 0.7.1 - :link: https://aequilibrae.com/python/V.0.7.1/ + :link: https://aequilibrae.com/docs/python/V.0.7.1/ :link-type: url :text-align: center .. grid:: .. grid-item-card:: 0.7.2 - :link: https://aequilibrae.com/python/V.0.7.2/ + :link: https://aequilibrae.com/docs/python/V.0.7.2/ :link-type: url :text-align: center .. grid-item-card:: 0.7.3 - :link: https://aequilibrae.com/python/V.0.7.3/ + :link: https://aequilibrae.com/docs/python/V.0.7.3/ :link-type: url :text-align: center .. grid-item-card:: 0.7.4 - :link: https://aequilibrae.com/python/V.0.7.4/ + :link: https://aequilibrae.com/docs/python/V.0.7.4/ :link-type: url :text-align: center .. grid:: .. grid-item-card:: 0.7.5 - :link: https://aequilibrae.com/python/V.0.7.5/ + :link: https://aequilibrae.com/docs/python/V.0.7.5/ :link-type: url :text-align: center .. grid-item-card:: 0.7.6 - :link: https://aequilibrae.com/python/V.0.7.6/ + :link: https://aequilibrae.com/docs/python/V.0.7.6/ :link-type: url :text-align: center .. grid-item-card:: 0.7.7 - :link: https://aequilibrae.com/python/V.0.7.7/ + :link: https://aequilibrae.com/docs/python/V.0.7.7/ :link-type: url :text-align: center - + .. grid:: .. grid-item-card:: 0.8.0 - :link: https://aequilibrae.com/python/V.0.8.0/ + :link: https://aequilibrae.com/docs/python/V.0.8.0/ :link-type: url :text-align: center .. grid-item-card:: 0.8.1 - :link: https://aequilibrae.com/python/V.0.8.1/ + :link: https://aequilibrae.com/docs/python/V.0.8.1/ :link-type: url :text-align: center .. grid-item-card:: 0.8.2 - :link: https://aequilibrae.com/python/V.0.8.2/ + :link: https://aequilibrae.com/docs/python/V.0.8.2/ :link-type: url :text-align: center .. grid:: .. grid-item-card:: 0.8.3 - :link: https://aequilibrae.com/python/V.0.8.3/ + :link: https://aequilibrae.com/docs/python/V.0.8.3/ :link-type: url :text-align: center - .. grid-item:: + .. grid-item-card:: 0.9.0 + :link: https://aequilibrae.com/docs/python/V.0.9.0/ + :link-type: url + :text-align: center + + .. grid-item-card:: 0.9.1 + :link: https://aequilibrae.com/docs/python/V.0.9.1/ + :link-type: url + :text-align: center - .. grid-item-card:: Develop branch - :link: https://aequilibrae.com/python/develop/ +.. grid:: + + .. grid-item-card:: 0.9.2 + :link: https://aequilibrae.com/docs/python/V.0.9.2/ :link-type: url :text-align: center - Upcoming version + .. grid-item-card:: 0.9.3 + :link: https://aequilibrae.com/docs/python/V.0.9.3/ + :link-type: url + :text-align: center + + .. grid-item-card:: 0.9.4 + :link: https://aequilibrae.com/docs/python/V.0.9.4/ + :link-type: url + :text-align: center + +.. grid:: + + .. grid-item-card:: 0.9.5 + :link: https://aequilibrae.com/docs/python/V.0.9.5/ + :link-type: url + :text-align: center + + .. grid-item-card:: 1.0.0 + :link: https://aequilibrae.com/docs/python/V.1.0.0/ + :link-type: url + :text-align: center + + .. grid-item-card:: 1.0.1 + :link: https://aequilibrae.com/docs/python/V.1.0.1/ + :link-type: url + :text-align: center + +.. grid:: + + .. grid-item-card:: 1.1.0 + :link: https://aequilibrae.com/docs/python/V.1.1.0/ + :link-type: url + :text-align: center + + .. grid-item-card:: 1.1.1 + :link: https://aequilibrae.com/docs/python/V.1.1.1/ + :link-type: url + :text-align: center + + .. grid-item-card:: 1.1.2 + :link: https://aequilibrae.com/docs/python/V.1.1.2/ + :link-type: url + :text-align: center + +.. grid:: + + .. grid-item-card:: 1.1.3 + :link: https://aequilibrae.com/docs/python/V.1.1.3/ + :link-type: url + :text-align: center + + .. grid-item:: + + .. grid-item-card:: Upcoming version + :link: https://aequilibrae.com/latest/python/index.html + :link-type: url + :text-align: center This documentation correspond to software version: @@ -133,4 +199,8 @@ This documentation correspond to software version: :commit: :sha_length: 10 :uncommitted: - :untracked: \ No newline at end of file + :untracked: + +.. + When updating this page, be careful with the alignment when adding new cards. if you have less than + three cards in the same line, add a "transparent" card using "..grid-item::" without directives. diff --git a/docs/table_documentation.py b/docs/table_documentation.py index 5a27807b5..471be63ff 100644 --- a/docs/table_documentation.py +++ b/docs/table_documentation.py @@ -31,7 +31,9 @@ def __init__(self, component: str, tgt_fldr: str): *Path(realpath(__file__)).parts[:-1], f"../aequilibrae/project/database_specification/{self.__folder}/tables", ) - self.doc_path = str(Path(realpath(__file__)).parent / "source" / "modeling_with_aequilibrae" / tgt_fldr) + self.doc_path = str( + Path(realpath(__file__)).parent / "source" / "modeling_with_aequilibrae" / tgt_fldr + ) Path(join(self.doc_path, self.stub)).mkdir(exist_ok=True, parents=True) diff --git a/docs/website/check_documentation_versions.py b/docs/website/check_documentation_versions.py index e7cbf6354..440e56e50 100644 --- a/docs/website/check_documentation_versions.py +++ b/docs/website/check_documentation_versions.py @@ -12,7 +12,7 @@ # We check if the reference to all existing versions were added by checking # that the current version is referenced -with open(os.path.join(npth, "docs/source/_static/switcher.json"), mode="r") as f: +with open(os.path.join(npth, "docs/source/useful_information/version_history.rst"), mode="r") as f: txt = f.read() print(f"python/V.{release_version}")