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.
- edsger-0.1.1/.github/workflows/docs.yml +43 -0
- {edsger-0.0.15 → edsger-0.1.1}/.github/workflows/publish.yml +1 -1
- edsger-0.1.1/.github/workflows/tests.yml +34 -0
- {edsger-0.0.15 → edsger-0.1.1}/.gitignore +13 -0
- edsger-0.1.1/.pre-commit-config.yaml +14 -0
- edsger-0.1.1/.readthedocs.yaml +27 -0
- edsger-0.1.1/PKG-INFO +69 -0
- edsger-0.1.1/README.md +28 -0
- {edsger-0.0.15 → edsger-0.1.1}/docs/Makefile +1 -1
- edsger-0.1.1/docs/requirements.txt +19 -0
- edsger-0.1.1/docs/source/api.md +116 -0
- {edsger-0.0.15 → edsger-0.1.1}/docs/source/conf.py +30 -3
- edsger-0.1.1/docs/source/contributing.md +69 -0
- edsger-0.1.1/docs/source/index.md +54 -0
- edsger-0.1.1/docs/source/installation.md +148 -0
- edsger-0.0.15/README.md → edsger-0.1.1/docs/source/quickstart.md +28 -44
- {edsger-0.0.15 → edsger-0.1.1}/pyproject.toml +12 -2
- {edsger-0.0.15 → edsger-0.1.1}/requirements-dev.txt +2 -0
- {edsger-0.0.15 → edsger-0.1.1}/setup.py +1 -2
- edsger-0.1.1/src/edsger/.gitignore +1 -0
- edsger-0.1.1/src/edsger/_version.py +1 -0
- {edsger-0.0.15 → edsger-0.1.1}/src/edsger/commons.c +2646 -2124
- {edsger-0.0.15 → edsger-0.1.1}/src/edsger/commons.pxd +6 -6
- {edsger-0.0.15 → edsger-0.1.1}/src/edsger/commons.pyx +4 -4
- {edsger-0.0.15 → edsger-0.1.1}/src/edsger/dijkstra.c +9810 -9604
- {edsger-0.0.15 → edsger-0.1.1}/src/edsger/dijkstra.pyx +71 -71
- {edsger-0.0.15 → edsger-0.1.1}/src/edsger/networks.py +1 -2
- {edsger-0.0.15 → edsger-0.1.1}/src/edsger/path.py +1 -1
- {edsger-0.0.15 → edsger-0.1.1}/src/edsger/path_tracking.c +7669 -7465
- {edsger-0.0.15 → edsger-0.1.1}/src/edsger/path_tracking.pyx +7 -7
- {edsger-0.0.15 → edsger-0.1.1}/src/edsger/pq_4ary_dec_0b.c +8692 -8605
- {edsger-0.0.15 → edsger-0.1.1}/src/edsger/pq_4ary_dec_0b.pyx +69 -69
- {edsger-0.0.15 → edsger-0.1.1}/src/edsger/spiess_florian.c +9214 -8866
- {edsger-0.0.15 → edsger-0.1.1}/src/edsger/spiess_florian.pyx +24 -24
- {edsger-0.0.15 → edsger-0.1.1}/src/edsger/star.c +8780 -9047
- {edsger-0.0.15 → edsger-0.1.1}/src/edsger/star.pyx +41 -41
- {edsger-0.0.15 → edsger-0.1.1}/src/edsger/utils.py +2 -2
- edsger-0.1.1/src/edsger.egg-info/PKG-INFO +69 -0
- {edsger-0.0.15 → edsger-0.1.1}/src/edsger.egg-info/SOURCES.txt +10 -4
- {edsger-0.0.15 → edsger-0.1.1}/tests/test_dijkstra.py +7 -3
- {edsger-0.0.15 → edsger-0.1.1}/tests/test_path.py +1 -1
- {edsger-0.0.15 → edsger-0.1.1}/tests/test_path_tracking.py +1 -1
- {edsger-0.0.15 → edsger-0.1.1}/tests/test_pq_4ary_dec_0b.py +1 -1
- {edsger-0.0.15 → edsger-0.1.1}/tests/test_spiess_florian.py +1 -2
- edsger-0.0.15/.github/workflows/tests.yml +0 -29
- edsger-0.0.15/PKG-INFO +0 -277
- edsger-0.0.15/docs/source/edsger.rst +0 -12
- edsger-0.0.15/docs/source/index.rst +0 -22
- edsger-0.0.15/docs/source/installation.rst +0 -90
- edsger-0.0.15/docs/source/introduction.rst +0 -7
- edsger-0.0.15/src/edsger/_version.py +0 -1
- edsger-0.0.15/src/edsger.egg-info/PKG-INFO +0 -277
- {edsger-0.0.15 → edsger-0.1.1}/AUTHORS.rst +0 -0
- {edsger-0.0.15 → edsger-0.1.1}/CHANGELOG.rst +0 -0
- {edsger-0.0.15 → edsger-0.1.1}/CONTRIBUTING.rst +0 -0
- {edsger-0.0.15 → edsger-0.1.1}/LICENSE +0 -0
- {edsger-0.0.15 → edsger-0.1.1}/MANIFEST.in +0 -0
- {edsger-0.0.15 → edsger-0.1.1}/requirements.txt +0 -0
- {edsger-0.0.15 → edsger-0.1.1}/scripts/dijkstra_dimacs.py +0 -0
- {edsger-0.0.15 → edsger-0.1.1}/setup.cfg +0 -0
- {edsger-0.0.15 → edsger-0.1.1}/src/edsger/__init__.py +0 -0
- {edsger-0.0.15 → edsger-0.1.1}/src/edsger/pq_4ary_dec_0b.pxd +0 -0
- {edsger-0.0.15 → edsger-0.1.1}/src/edsger.egg-info/dependency_links.txt +0 -0
- {edsger-0.0.15 → edsger-0.1.1}/src/edsger.egg-info/not-zip-safe +0 -0
- {edsger-0.0.15 → edsger-0.1.1}/src/edsger.egg-info/requires.txt +0 -0
- {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
|
@@ -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
|
+

|
44
|
+
[](https://pypi.org/project/edsger/)
|
45
|
+
[](https://pepy.tech/project/edsger)
|
46
|
+
[](https://pypi.org/project/edsger/)
|
47
|
+
[](https://github.com/psf/black)
|
48
|
+
[](https://github.com/MarcoGorelli/cython-lint)
|
49
|
+
[](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
|
+

|
3
|
+
[](https://pypi.org/project/edsger/)
|
4
|
+
[](https://pepy.tech/project/edsger)
|
5
|
+
[](https://pypi.org/project/edsger/)
|
6
|
+
[](https://github.com/psf/black)
|
7
|
+
[](https://github.com/MarcoGorelli/cython-lint)
|
8
|
+
[](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/
|
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 = "
|
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
|
+
|