edsger 0.0.15__tar.gz → 0.1.1__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (66) hide show
  1. edsger-0.1.1/.github/workflows/docs.yml +43 -0
  2. {edsger-0.0.15 → edsger-0.1.1}/.github/workflows/publish.yml +1 -1
  3. edsger-0.1.1/.github/workflows/tests.yml +34 -0
  4. {edsger-0.0.15 → edsger-0.1.1}/.gitignore +13 -0
  5. edsger-0.1.1/.pre-commit-config.yaml +14 -0
  6. edsger-0.1.1/.readthedocs.yaml +27 -0
  7. edsger-0.1.1/PKG-INFO +69 -0
  8. edsger-0.1.1/README.md +28 -0
  9. {edsger-0.0.15 → edsger-0.1.1}/docs/Makefile +1 -1
  10. edsger-0.1.1/docs/requirements.txt +19 -0
  11. edsger-0.1.1/docs/source/api.md +116 -0
  12. {edsger-0.0.15 → edsger-0.1.1}/docs/source/conf.py +30 -3
  13. edsger-0.1.1/docs/source/contributing.md +69 -0
  14. edsger-0.1.1/docs/source/index.md +54 -0
  15. edsger-0.1.1/docs/source/installation.md +148 -0
  16. edsger-0.0.15/README.md → edsger-0.1.1/docs/source/quickstart.md +28 -44
  17. {edsger-0.0.15 → edsger-0.1.1}/pyproject.toml +12 -2
  18. {edsger-0.0.15 → edsger-0.1.1}/requirements-dev.txt +2 -0
  19. {edsger-0.0.15 → edsger-0.1.1}/setup.py +1 -2
  20. edsger-0.1.1/src/edsger/.gitignore +1 -0
  21. edsger-0.1.1/src/edsger/_version.py +1 -0
  22. {edsger-0.0.15 → edsger-0.1.1}/src/edsger/commons.c +2646 -2124
  23. {edsger-0.0.15 → edsger-0.1.1}/src/edsger/commons.pxd +6 -6
  24. {edsger-0.0.15 → edsger-0.1.1}/src/edsger/commons.pyx +4 -4
  25. {edsger-0.0.15 → edsger-0.1.1}/src/edsger/dijkstra.c +9810 -9604
  26. {edsger-0.0.15 → edsger-0.1.1}/src/edsger/dijkstra.pyx +71 -71
  27. {edsger-0.0.15 → edsger-0.1.1}/src/edsger/networks.py +1 -2
  28. {edsger-0.0.15 → edsger-0.1.1}/src/edsger/path.py +1 -1
  29. {edsger-0.0.15 → edsger-0.1.1}/src/edsger/path_tracking.c +7669 -7465
  30. {edsger-0.0.15 → edsger-0.1.1}/src/edsger/path_tracking.pyx +7 -7
  31. {edsger-0.0.15 → edsger-0.1.1}/src/edsger/pq_4ary_dec_0b.c +8692 -8605
  32. {edsger-0.0.15 → edsger-0.1.1}/src/edsger/pq_4ary_dec_0b.pyx +69 -69
  33. {edsger-0.0.15 → edsger-0.1.1}/src/edsger/spiess_florian.c +9214 -8866
  34. {edsger-0.0.15 → edsger-0.1.1}/src/edsger/spiess_florian.pyx +24 -24
  35. {edsger-0.0.15 → edsger-0.1.1}/src/edsger/star.c +8780 -9047
  36. {edsger-0.0.15 → edsger-0.1.1}/src/edsger/star.pyx +41 -41
  37. {edsger-0.0.15 → edsger-0.1.1}/src/edsger/utils.py +2 -2
  38. edsger-0.1.1/src/edsger.egg-info/PKG-INFO +69 -0
  39. {edsger-0.0.15 → edsger-0.1.1}/src/edsger.egg-info/SOURCES.txt +10 -4
  40. {edsger-0.0.15 → edsger-0.1.1}/tests/test_dijkstra.py +7 -3
  41. {edsger-0.0.15 → edsger-0.1.1}/tests/test_path.py +1 -1
  42. {edsger-0.0.15 → edsger-0.1.1}/tests/test_path_tracking.py +1 -1
  43. {edsger-0.0.15 → edsger-0.1.1}/tests/test_pq_4ary_dec_0b.py +1 -1
  44. {edsger-0.0.15 → edsger-0.1.1}/tests/test_spiess_florian.py +1 -2
  45. edsger-0.0.15/.github/workflows/tests.yml +0 -29
  46. edsger-0.0.15/PKG-INFO +0 -277
  47. edsger-0.0.15/docs/source/edsger.rst +0 -12
  48. edsger-0.0.15/docs/source/index.rst +0 -22
  49. edsger-0.0.15/docs/source/installation.rst +0 -90
  50. edsger-0.0.15/docs/source/introduction.rst +0 -7
  51. edsger-0.0.15/src/edsger/_version.py +0 -1
  52. edsger-0.0.15/src/edsger.egg-info/PKG-INFO +0 -277
  53. {edsger-0.0.15 → edsger-0.1.1}/AUTHORS.rst +0 -0
  54. {edsger-0.0.15 → edsger-0.1.1}/CHANGELOG.rst +0 -0
  55. {edsger-0.0.15 → edsger-0.1.1}/CONTRIBUTING.rst +0 -0
  56. {edsger-0.0.15 → edsger-0.1.1}/LICENSE +0 -0
  57. {edsger-0.0.15 → edsger-0.1.1}/MANIFEST.in +0 -0
  58. {edsger-0.0.15 → edsger-0.1.1}/requirements.txt +0 -0
  59. {edsger-0.0.15 → edsger-0.1.1}/scripts/dijkstra_dimacs.py +0 -0
  60. {edsger-0.0.15 → edsger-0.1.1}/setup.cfg +0 -0
  61. {edsger-0.0.15 → edsger-0.1.1}/src/edsger/__init__.py +0 -0
  62. {edsger-0.0.15 → edsger-0.1.1}/src/edsger/pq_4ary_dec_0b.pxd +0 -0
  63. {edsger-0.0.15 → edsger-0.1.1}/src/edsger.egg-info/dependency_links.txt +0 -0
  64. {edsger-0.0.15 → edsger-0.1.1}/src/edsger.egg-info/not-zip-safe +0 -0
  65. {edsger-0.0.15 → edsger-0.1.1}/src/edsger.egg-info/requires.txt +0 -0
  66. {edsger-0.0.15 → edsger-0.1.1}/src/edsger.egg-info/top_level.txt +0 -0
@@ -0,0 +1,43 @@
1
+ name: Documentation
2
+
3
+ on:
4
+ push:
5
+ branches: [ release ]
6
+ pull_request:
7
+ branches: [ release ]
8
+
9
+ jobs:
10
+ build-docs:
11
+ runs-on: ubuntu-latest
12
+
13
+ steps:
14
+ - uses: actions/checkout@v4
15
+
16
+ - name: Set up Python
17
+ uses: actions/setup-python@v5
18
+ with:
19
+ python-version: '3.11'
20
+
21
+ - name: Install documentation dependencies
22
+ run: |
23
+ python -m pip install --upgrade pip
24
+ pip install -r docs/requirements.txt
25
+
26
+ - name: Build documentation
27
+ run: |
28
+ cd docs
29
+ make html
30
+
31
+ - name: Upload documentation artifacts
32
+ uses: actions/upload-artifact@v4
33
+ with:
34
+ name: documentation-html
35
+ path: docs/build/html/
36
+
37
+ - name: Deploy to GitHub Pages (on release branch)
38
+ if: github.ref == 'refs/heads/release' && github.event_name == 'push'
39
+ uses: peaceiris/actions-gh-pages@v4
40
+ with:
41
+ github_token: ${{ secrets.GITHUB_TOKEN }}
42
+ publish_dir: docs/build/html
43
+ publish_branch: gh-pages
@@ -10,7 +10,7 @@ jobs:
10
10
  strategy:
11
11
  matrix:
12
12
  os: [ubuntu-latest, windows-latest, macos-latest]
13
- python-version: ["3.11"]
13
+ python-version: ["3.9", "3.10", "3.11", "3.12", "3.13"]
14
14
  runs-on: ${{ matrix.os }}
15
15
  steps:
16
16
  - uses: actions/checkout@v4
@@ -0,0 +1,34 @@
1
+ name: ci-test
2
+
3
+ on:
4
+ push:
5
+ branches:
6
+ - release
7
+
8
+ jobs:
9
+ test:
10
+ strategy:
11
+ matrix:
12
+ os: [ubuntu-22.04, windows-2022, macos-14]
13
+ python-version: ["3.9", "3.10", "3.11", "3.12", "3.13"]
14
+ runs-on: ${{ matrix.os }}
15
+ steps:
16
+ - uses: actions/checkout@v4
17
+ - name: Set up Python ${{ matrix.python-version }}
18
+ uses: actions/setup-python@v5
19
+ with:
20
+ python-version: ${{ matrix.python-version }}
21
+ - name: Install dependencies
22
+ run: |
23
+ python -m pip install --upgrade pip
24
+ pip install -r requirements-dev.txt
25
+ pip install .
26
+ - name: Format Python code with black
27
+ run: |
28
+ black --check --diff .
29
+ - name: Lint Cython code
30
+ run: |
31
+ cython-lint src/edsger/commons.pyx src/edsger/dijkstra.pyx src/edsger/path_tracking.pyx src/edsger/pq_4ary_dec_0b.pyx src/edsger/spiess_florian.pyx src/edsger/star.pyx src/edsger/commons.pxd src/edsger/pq_4ary_dec_0b.pxd
32
+ - name: Testing
33
+ run: |
34
+ python -m pytest tests
@@ -45,9 +45,22 @@ sdist/*
45
45
  docs/api/*
46
46
  docs/_rst/*
47
47
  docs/_build/*
48
+ docs/build/*
48
49
  cover/*
49
50
  MANIFEST
50
51
 
52
+ # Documentation backup and temporary folders
53
+ docs_BCKP/
54
+ docs_old/
55
+ site/
56
+ tmp/
57
+
58
+ # Credentials and config
59
+ .pypirc
60
+
61
+ # MkDocs (unused)
62
+ mkdocs.yml
63
+
51
64
  # Per-project virtualenvs
52
65
  .venv*/
53
66
  .conda*/
@@ -0,0 +1,14 @@
1
+ repos:
2
+ - repo: https://github.com/psf/black
3
+ rev: 24.10.0
4
+ hooks:
5
+ - id: black
6
+ files: '\.(py)$'
7
+ exclude: 'src/edsger/.*\.pyx$'
8
+
9
+ - repo: https://github.com/MarcoGorelli/cython-lint
10
+ rev: v0.16.2
11
+ hooks:
12
+ - id: cython-lint
13
+ files: '\.(pyx|pxd)$'
14
+ args: [--max-line-length=88]
@@ -0,0 +1,27 @@
1
+ # Read the Docs configuration file for Sphinx projects
2
+ # See https://docs.readthedocs.io/en/stable/config-file/v2.html for details
3
+
4
+ version: 2
5
+
6
+ # Set the OS, Python version and other tools you might need
7
+ build:
8
+ os: ubuntu-22.04
9
+ tools:
10
+ python: "3.12"
11
+
12
+ # Build documentation in the "docs/" directory with Sphinx
13
+ sphinx:
14
+ configuration: docs/source/conf.py
15
+
16
+ # Explicitly set the version of Python and its requirements
17
+ python:
18
+ install:
19
+ - requirements: docs/requirements.txt
20
+ - requirements: requirements.txt
21
+ - method: pip
22
+ path: .
23
+
24
+ # Optional but recommended, pin the Python requirements used to build docs
25
+ formats:
26
+ - pdf
27
+ - htmlzip
edsger-0.1.1/PKG-INFO ADDED
@@ -0,0 +1,69 @@
1
+ Metadata-Version: 2.4
2
+ Name: edsger
3
+ Version: 0.1.1
4
+ Summary: Graph algorithms in Cython.
5
+ Author-email: François Pacull <francois.pacull@architecture-performance.fr>
6
+ Maintainer-email: François Pacull <francois.pacull@architecture-performance.fr>
7
+ License: MIT License
8
+ Project-URL: Repository, https://github.com/aetperf/Edsger
9
+ Project-URL: Documentation, https://edsger.readthedocs.io
10
+ Keywords: python,graph,shortest path,Dijkstra
11
+ Platform: any
12
+ Classifier: Development Status :: 4 - Beta
13
+ Classifier: Programming Language :: Python :: 3
14
+ Classifier: Programming Language :: Python :: 3.9
15
+ Classifier: Programming Language :: Python :: 3.10
16
+ Classifier: Programming Language :: Python :: 3.11
17
+ Classifier: Programming Language :: Python :: 3.12
18
+ Classifier: Programming Language :: Python :: 3.13
19
+ Classifier: License :: OSI Approved :: MIT License
20
+ Classifier: Operating System :: OS Independent
21
+ Classifier: Topic :: Scientific/Engineering
22
+ Requires-Python: >=3.9
23
+ Description-Content-Type: text/markdown
24
+ License-File: LICENSE
25
+ License-File: AUTHORS.rst
26
+ Requires-Dist: setuptools
27
+ Requires-Dist: setuptools_scm
28
+ Requires-Dist: numpy>=1.26
29
+ Requires-Dist: Cython>=3
30
+ Requires-Dist: pandas
31
+ Provides-Extra: dev
32
+ Requires-Dist: black; extra == "dev"
33
+ Provides-Extra: test
34
+ Requires-Dist: pytest; extra == "test"
35
+ Requires-Dist: scipy<1.11; extra == "test"
36
+ Provides-Extra: doc
37
+ Requires-Dist: sphinx; extra == "doc"
38
+ Requires-Dist: sphinx_design; extra == "doc"
39
+ Requires-Dist: sphinx_rtd_theme; extra == "doc"
40
+ Dynamic: license-file
41
+
42
+
43
+ ![Tests Status](https://github.com/aetperf/edsger/actions/workflows/tests.yml/badge.svg?branch=release)
44
+ [![PyPI version](https://img.shields.io/pypi/v/edsger.svg)](https://pypi.org/project/edsger/)
45
+ [![Downloads](https://static.pepy.tech/badge/edsger)](https://pepy.tech/project/edsger)
46
+ [![Python 3.9 | 3.10 | 3.11 | 3.12 | 3.13](https://img.shields.io/badge/python-3.9%20%7C%203.10%20%7C%203.11%20%7C%203.12%20%7C%203.13-blue)](https://pypi.org/project/edsger/)
47
+ [![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black)
48
+ [![Cython lint: cython-lint](https://img.shields.io/badge/cython--lint-enabled-brightgreen.svg)](https://github.com/MarcoGorelli/cython-lint)
49
+ [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
50
+
51
+ # Edsger
52
+
53
+ *Graph algorithms in Cython*
54
+
55
+ Welcome to our Python library for graph algorithms. So far, the library only includes Dijkstra's algorithm but we should add a range of common path algorithms later. It is also open-source and easy to integrate with other Python libraries. To get started, simply install the library using pip, and import it into your Python project.
56
+
57
+ Documentation : [https://edsger.readthedocs.io/en/latest/](https://edsger.readthedocs.io/en/latest/)
58
+
59
+ ## Contributing
60
+
61
+ We welcome contributions to the Edsger library. If you have any suggestions, bug reports, or feature requests, please open an issue on our [GitHub repository](https://github.com/aetperf/Edsger).
62
+
63
+ ## License
64
+
65
+ Edsger is licensed under the MIT License. See the LICENSE file for more details.
66
+
67
+ ## Contact
68
+
69
+ For any questions or inquiries, please contact François Pacull at [francois.pacull@architecture-performance.fr](mailto:francois.pacull@architecture-performance.fr).
edsger-0.1.1/README.md ADDED
@@ -0,0 +1,28 @@
1
+
2
+ ![Tests Status](https://github.com/aetperf/edsger/actions/workflows/tests.yml/badge.svg?branch=release)
3
+ [![PyPI version](https://img.shields.io/pypi/v/edsger.svg)](https://pypi.org/project/edsger/)
4
+ [![Downloads](https://static.pepy.tech/badge/edsger)](https://pepy.tech/project/edsger)
5
+ [![Python 3.9 | 3.10 | 3.11 | 3.12 | 3.13](https://img.shields.io/badge/python-3.9%20%7C%203.10%20%7C%203.11%20%7C%203.12%20%7C%203.13-blue)](https://pypi.org/project/edsger/)
6
+ [![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black)
7
+ [![Cython lint: cython-lint](https://img.shields.io/badge/cython--lint-enabled-brightgreen.svg)](https://github.com/MarcoGorelli/cython-lint)
8
+ [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
9
+
10
+ # Edsger
11
+
12
+ *Graph algorithms in Cython*
13
+
14
+ Welcome to our Python library for graph algorithms. So far, the library only includes Dijkstra's algorithm but we should add a range of common path algorithms later. It is also open-source and easy to integrate with other Python libraries. To get started, simply install the library using pip, and import it into your Python project.
15
+
16
+ Documentation : [https://edsger.readthedocs.io/en/latest/](https://edsger.readthedocs.io/en/latest/)
17
+
18
+ ## Contributing
19
+
20
+ We welcome contributions to the Edsger library. If you have any suggestions, bug reports, or feature requests, please open an issue on our [GitHub repository](https://github.com/aetperf/Edsger).
21
+
22
+ ## License
23
+
24
+ Edsger is licensed under the MIT License. See the LICENSE file for more details.
25
+
26
+ ## Contact
27
+
28
+ For any questions or inquiries, please contact François Pacull at [francois.pacull@architecture-performance.fr](mailto:francois.pacull@architecture-performance.fr).
@@ -17,4 +17,4 @@ help:
17
17
  # Catch-all target: route all unknown targets to Sphinx using the new
18
18
  # "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS).
19
19
  %: Makefile
20
- @$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
20
+ @$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
@@ -0,0 +1,19 @@
1
+ # Documentation build requirements
2
+ sphinx>=7.0.0
3
+ myst-parser>=2.0.0
4
+ sphinx-autodoc-typehints>=1.22.0
5
+ sphinx-copybutton>=0.5.0
6
+ furo>=2023.5.20
7
+
8
+ # Required for building Cython extensions during doc build
9
+ numpy>=1.26
10
+ pandas>=2.0
11
+ Cython>=3.0
12
+ setuptools>=61.0
13
+
14
+ # Optional but recommended
15
+ sphinx-design>=0.5.0
16
+ sphinx-tabs>=3.4.0
17
+
18
+ # ReadTheDocs specific
19
+ readthedocs-sphinx-search>=0.3.0
@@ -0,0 +1,116 @@
1
+ # API Reference
2
+
3
+ This section provides detailed documentation for all public classes and functions in Edsger.
4
+
5
+ ## edsger.path Module
6
+
7
+ ### Dijkstra Class
8
+
9
+ The main class for performing Dijkstra's shortest path algorithm.
10
+
11
+ #### Constructor Parameters
12
+
13
+ - `edges`: pandas.DataFrame containing the graph edges
14
+ - `tail`: Column name for edge source nodes (default: 'tail')
15
+ - `head`: Column name for edge destination nodes (default: 'head')
16
+ - `weight`: Column name for edge weights (default: 'weight')
17
+ - `orientation`: Either 'out' (single-source) or 'in' (single-target) (default: 'out')
18
+ - `check_edges`: Whether to validate edge data (default: False)
19
+ - `permute`: Whether to optimize node indexing (default: False)
20
+
21
+ #### Methods
22
+
23
+ ##### run
24
+
25
+ ```python
26
+ def run(self, vertex_idx, path_tracking=False, return_inf=True,
27
+ return_series=False, heap_length_ratio=1.0)
28
+ ```
29
+
30
+ Runs the shortest path algorithm from/to the specified vertex.
31
+
32
+ **Parameters:**
33
+ - `vertex_idx`: Source/target vertex index
34
+ - `path_tracking`: Whether to track paths for reconstruction (default: False)
35
+ - `return_inf`: Return infinity for unreachable vertices (default: True)
36
+ - `return_series`: Return results as pandas Series (default: False)
37
+ - `heap_length_ratio`: Heap size as fraction of vertices (default: 1.0)
38
+
39
+ **Returns:**
40
+ - Array or Series of shortest path lengths
41
+
42
+ ##### get_path
43
+
44
+ ```python
45
+ def get_path(self, vertex_idx)
46
+ ```
47
+
48
+ Reconstructs the shortest path to/from a vertex (requires `path_tracking=True`).
49
+
50
+ **Parameters:**
51
+ - `vertex_idx`: Destination/source vertex index
52
+
53
+ **Returns:**
54
+ - Array of vertex indices forming the path
55
+
56
+ ##### get_vertices
57
+
58
+ ```python
59
+ def get_vertices(self)
60
+ ```
61
+
62
+ Returns all vertices in the graph.
63
+
64
+ **Returns:**
65
+ - Array of vertex indices
66
+
67
+ ### Examples
68
+
69
+ #### Basic Usage
70
+
71
+ ```python
72
+ from edsger.path import Dijkstra
73
+ import pandas as pd
74
+
75
+ # Create a graph
76
+ edges = pd.DataFrame({
77
+ 'tail': [0, 0, 1],
78
+ 'head': [1, 2, 2],
79
+ 'weight': [1, 4, 2]
80
+ })
81
+
82
+ # Initialize Dijkstra
83
+ dijkstra = Dijkstra(edges)
84
+
85
+ # Find shortest paths from vertex 0
86
+ paths = dijkstra.run(vertex_idx=0)
87
+ ```
88
+
89
+ #### With Path Tracking
90
+
91
+ ```python
92
+ # Enable path tracking
93
+ paths = dijkstra.run(vertex_idx=0, path_tracking=True)
94
+
95
+ # Get the actual path to vertex 2
96
+ path = dijkstra.get_path(vertex_idx=2)
97
+ ```
98
+
99
+ #### Custom Parameters
100
+
101
+ ```python
102
+ # Create with custom settings
103
+ dijkstra = Dijkstra(
104
+ edges,
105
+ orientation='in',
106
+ check_edges=True,
107
+ permute=True
108
+ )
109
+
110
+ # Run with custom parameters
111
+ paths = dijkstra.run(
112
+ vertex_idx=2,
113
+ return_series=True,
114
+ heap_length_ratio=0.5
115
+ )
116
+ ```
@@ -3,7 +3,6 @@
3
3
  # For the full list of built-in configuration values, see the documentation:
4
4
  # https://www.sphinx-doc.org/en/master/usage/configuration.html
5
5
 
6
-
7
6
  # -- Path setup --------------------------------------------------------------
8
7
 
9
8
  # If extensions (or modules to document with autodoc) are in another directory,
@@ -13,15 +12,26 @@
13
12
  import os
14
13
  import sys
15
14
 
16
- sys.path.insert(0, os.path.abspath("../../src/edsger/"))
15
+ sys.path.insert(0, os.path.abspath("../../src/"))
17
16
 
18
17
  # -- Project information -----------------------------------------------------
19
18
  # https://www.sphinx-doc.org/en/master/usage/configuration.html#project-information
20
19
 
21
20
  project = "Edsger"
22
- copyright = "2024, Architecture & Performance"
21
+ copyright = "2025, Architecture & Performance"
23
22
  author = "Francois Pacull"
24
23
 
24
+ # Get version from the package
25
+ try:
26
+ from edsger._version import __version__
27
+
28
+ release = __version__
29
+ version = __version__
30
+ except ImportError:
31
+ # Fallback if import fails
32
+ release = "0.0.15"
33
+ version = "0.0.15"
34
+
25
35
  # -- General configuration ---------------------------------------------------
26
36
  # https://www.sphinx-doc.org/en/master/usage/configuration.html#general-configuration
27
37
 
@@ -44,5 +54,22 @@ extensions = [
44
54
  "sphinx.ext.autosummary",
45
55
  "sphinx.ext.napoleon",
46
56
  "sphinx.ext.intersphinx",
57
+ "sphinx.ext.viewcode",
47
58
  "sphinx_design",
59
+ "myst_parser", # Enable MyST parser for Markdown
60
+ "sphinx_copybutton",
48
61
  ]
62
+
63
+ # MyST parser configuration
64
+ myst_enable_extensions = [
65
+ "deflist",
66
+ "tasklist",
67
+ "html_admonition",
68
+ "html_image",
69
+ ]
70
+
71
+ # Source suffix
72
+ source_suffix = {
73
+ ".rst": "restructuredtext",
74
+ ".md": "markdown",
75
+ }
@@ -0,0 +1,69 @@
1
+ # Contributing to Edsger
2
+
3
+ We welcome contributions to the Edsger library! This document provides guidelines for contributing to the project.
4
+
5
+ ## Getting Started
6
+
7
+ ### Development Environment
8
+
9
+ 1. Clone the repository:
10
+ ```bash
11
+ git clone https://github.com/aetperf/Edsger.git
12
+ cd Edsger
13
+ ```
14
+
15
+ 2. Create a virtual environment:
16
+ ```bash
17
+ python -m venv venv
18
+ source venv/bin/activate # On Windows: venv\Scripts\activate
19
+ ```
20
+
21
+ 3. Install development dependencies:
22
+ ```bash
23
+ pip install -r requirements-dev.txt
24
+ pip install -e .
25
+ ```
26
+
27
+ ## Development Guidelines
28
+
29
+ ### Code Style
30
+
31
+ - Follow PEP 8 for Python code
32
+ - Use meaningful variable and function names
33
+ - Add docstrings to all public functions and classes
34
+ - Keep functions focused and concise
35
+
36
+ ### Testing
37
+
38
+ - Write tests for all new features
39
+ - Ensure all tests pass before submitting a pull request
40
+ - Aim for high test coverage
41
+
42
+ ### Documentation
43
+
44
+ - Update documentation for any new features or changes
45
+ - Use clear and concise language
46
+ - Include examples where appropriate
47
+
48
+ ## Submitting Changes
49
+
50
+ 1. Fork the repository on GitHub
51
+ 2. Create a new branch for your feature or bugfix
52
+ 3. Make your changes and commit them with clear commit messages
53
+ 4. Push your branch to your fork
54
+ 5. Submit a pull request with a clear description of your changes
55
+
56
+ ## Reporting Issues
57
+
58
+ When reporting issues, please include:
59
+
60
+ - A clear description of the problem
61
+ - Steps to reproduce the issue
62
+ - Expected vs actual behavior
63
+ - System information (OS, Python version, etc.)
64
+
65
+ ## Questions?
66
+
67
+ If you have questions about contributing, please open an issue on GitHub or contact the maintainers.
68
+
69
+ Thank you for contributing to Edsger!
@@ -0,0 +1,54 @@
1
+ ---
2
+ github_url: https://github.com/aetperf/Edsger
3
+ ---
4
+
5
+ # Edsger
6
+
7
+ *Graph algorithms in Cython*
8
+
9
+ Welcome to the Edsger documentation! Edsger is a Python library for efficient graph algorithms implemented in Cython. The library currently focuses on shortest path algorithms, with Dijkstra's algorithm fully implemented and additional algorithms planned for future releases.
10
+
11
+ ## Key Features
12
+
13
+ - Fast implementation of Dijkstra's algorithm
14
+ - Support for both single-source and single-target shortest paths
15
+ - Easy integration with pandas DataFrames
16
+ - Memory-efficient 4-ary heap implementation
17
+ - Path tracking and reconstruction capabilities
18
+
19
+ ## Quick Links
20
+
21
+ - [Installation](installation.md) - How to install Edsger
22
+ - [Quick Start](quickstart.md) - Get started quickly with basic examples
23
+ - [API Reference](api.md) - Complete API reference
24
+
25
+ ## Table of Contents
26
+
27
+ ```{toctree}
28
+ :maxdepth: 2
29
+ :caption: User Guide
30
+
31
+ installation
32
+ quickstart
33
+ ```
34
+
35
+ ```{toctree}
36
+ :maxdepth: 2
37
+ :caption: API Reference
38
+
39
+ api
40
+ ```
41
+
42
+ ```{toctree}
43
+ :maxdepth: 1
44
+ :caption: Development
45
+
46
+ contributing
47
+ ```
48
+
49
+ ## Indices
50
+
51
+ - {ref}`genindex`
52
+ - {ref}`modindex`
53
+ - {ref}`search`
54
+