From 37a513125b67675a37132da70865f19f70f281af Mon Sep 17 00:00:00 2001 From: Manuel-Knepper Date: Mon, 27 Jul 2026 10:41:13 +0200 Subject: [PATCH 1/5] added _version.py --- linkbikenet/_version.py | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 linkbikenet/_version.py diff --git a/linkbikenet/_version.py b/linkbikenet/_version.py new file mode 100644 index 0000000..d7d9a1a --- /dev/null +++ b/linkbikenet/_version.py @@ -0,0 +1,3 @@ +"""linkbikenet package version.""" + +__version__ = "0.5.0" # x-release-please-version \ No newline at end of file From 74b519f7e2d356ebd5c804ccf58c6147fc45679d Mon Sep 17 00:00:00 2001 From: Manuel-Knepper Date: Mon, 27 Jul 2026 10:42:15 +0200 Subject: [PATCH 2/5] added release-please-comfig.json --- release-please-comfig.json | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 release-please-comfig.json diff --git a/release-please-comfig.json b/release-please-comfig.json new file mode 100644 index 0000000..15e316a --- /dev/null +++ b/release-please-comfig.json @@ -0,0 +1,12 @@ +{ + "packages": { + ".": { + "release-type": "python", + "changelog-path": "docs/changelog.md", + "extra-files": [ + "linkbikenet/_version.py", + "docs/conf.py" + ] + } + } +} \ No newline at end of file From 01324d80769099576409fb227ec763c232218026 Mon Sep 17 00:00:00 2001 From: Manuel-Knepper Date: Mon, 27 Jul 2026 10:44:41 +0200 Subject: [PATCH 3/5] added changelog.md --- docs/changelog.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 docs/changelog.md diff --git a/docs/changelog.md b/docs/changelog.md new file mode 100644 index 0000000..b368496 --- /dev/null +++ b/docs/changelog.md @@ -0,0 +1,5 @@ +## Version 0.5.0 (2026-07-27) + +- ✨Initial release ✨ +- 🔧Full reimplementation of code from paper "Data-driven strategies for optimal bicycle network growth" https://github.com/nateraluis/bicycle-network-growth +- ⬆️Automated testing via pytest as well as pipeline for package deployment to pip \ No newline at end of file From 34a543ccd6a64415a1b3fe4ada741acbe2047b4d Mon Sep 17 00:00:00 2001 From: Manuel-Knepper Date: Mon, 27 Jul 2026 10:45:42 +0200 Subject: [PATCH 4/5] added .release-please-manifest.json --- .release-please-manifest.json | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 .release-please-manifest.json diff --git a/.release-please-manifest.json b/.release-please-manifest.json new file mode 100644 index 0000000..2aca35a --- /dev/null +++ b/.release-please-manifest.json @@ -0,0 +1,3 @@ +{ + ".": "0.5.0" +} \ No newline at end of file From 31fb3c9f29a40a7d85df5a1ab929f38c13f4f391 Mon Sep 17 00:00:00 2001 From: Manuel-Knepper Date: Mon, 27 Jul 2026 10:48:53 +0200 Subject: [PATCH 5/5] added conf.py --- docs/source/conf.py | 153 ++++++++++++++++++ ...-comfig.json => release-please-config.json | 0 2 files changed, 153 insertions(+) create mode 100644 docs/source/conf.py rename release-please-comfig.json => release-please-config.json (100%) diff --git a/docs/source/conf.py b/docs/source/conf.py new file mode 100644 index 0000000..4446902 --- /dev/null +++ b/docs/source/conf.py @@ -0,0 +1,153 @@ +# Configuration file for the Sphinx documentation builder. +# +# For the full list of built-in configuration values, see the documentation: +# https://www.sphinx-doc.org/en/master/usage/configuration.html + +# -- Project information ----------------------------------------------------- +# https://www.sphinx-doc.org/en/master/usage/configuration.html#project-information + +project = "LinkBikeNet" +copyright = "2026, LinkBikeNet developers" +author = "Szell, Knepper" + +# -- General configuration --------------------------------------------------- +# https://www.sphinx-doc.org/en/master/usage/configuration.html#general-configuration + +import os # noqa +import sys # noqa +from pathlib import Path # noqa +from tomllib import load as toml_load # noqa + +sys.path.insert(0, os.path.abspath("..")) +import linkbikenet # noqa + +# dynamically load version +with Path("../../pyproject.toml").open("rb") as f: + pyproject = toml_load(f) +version = release = pyproject["project"]["version"] + +# Add any Sphinx extension module names here, as strings. They can be +# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom +# ones. +extensions = [ + "sphinx.ext.autodoc", + "sphinx.ext.autosummary", + "sphinx.ext.linkcode", + "sphinxcontrib.bibtex", + "sphinx.ext.mathjax", + "sphinx.ext.doctest", + "sphinx.ext.intersphinx", + "numpydoc", + "nbsphinx", + "matplotlib.sphinxext.plot_directive", + "IPython.sphinxext.ipython_console_highlighting", + "myst_parser", + "sphinx_copybutton", + "sphinx_gallery.load_style", +] + +templates_path = ["_templates"] +exclude_patterns = ["_build", "Thumbs.db", ".DS_Store"] + +# path to bib file with references +bibtex_bibfiles = ["_static/references.bib"] +bibtex_reference_style = "author_year" +bibtex_default_style = 'plain' + +# -- Options for HTML output ------------------------------------------------- +# https://www.sphinx-doc.org/en/master/usage/configuration.html#options-for-html-output +html_static_path = ["_static"] + +### select html theme +html_theme = "furo" + +html_theme_options = { + "pygment_light_style": "tango", + "logo": { + "image_light": "logo.png", + "image_dark": "logo.png", + }, + "light_css_variables": { + "color-brand-primary": "#096a51", + "color-brand-content": "#096a51", + "color-brand-visited": "#5b8b75", + }, + "dark_css_variables": { + "color-brand-primary": "#3cd71d", + "color-brand-content": "#3cd71d", + "color-brand-visited": "#5b8b75", + }, + "footer_icons": [ + { + "name": "Bluesky", + "url": "https://bsky.app/profile/bikenetkit.bsky.social", + "html": """ + + + + """, + "class": "", + }, + { + "name": "GitHub", + "url": "https://github.com/BikeNetKit/LinkBikeNet", + "html": """ + + + + """, + "class": "", + }, + ], +} + +# Generate the API documentation when building +autosummary_generate = True +autosummary_imported_members = True +numpydoc_show_class_members = False +class_members_toctree = False +numpydoc_show_inherited_class_members = False +numpydoc_class_members_toctree = False +numpydoc_use_plots = True +autodoc_typehints = "none" + +# -- Extension configuration ------------------------------------------------- +nbsphinx_prolog = r""" +{% set docname = env.doc2path(env.docname, base=None) %} + +.. only:: html + + .. role:: raw-html(raw) + :format: html + + .. note:: + + | This page was generated from `{{ docname }}`__. + + __ https://github.com/BikeNetKit/LinkBikeNet/blob/main/docs/source/{{ docname }} +""" # noqa: E501 + + +def linkcode_resolve(domain, info): + def find_source(): + # try to find the file and line number, based on code from numpy: + # https://github.com/numpy/numpy/blob/master/doc/source/conf.py#L286 + obj = sys.modules[info["module"]] + for part in info["fullname"].split("."): + obj = getattr(obj, part) + import inspect + import os + + fn = inspect.getsourcefile(obj) + fn = os.path.relpath(fn, start=os.path.dirname(linkbikenet.__file__)) + source, lineno = inspect.getsourcelines(obj) + return fn, lineno, lineno + len(source) - 1 + + if domain != "py" or not info["module"]: + return None + try: + filename = "linkbikenet/%s#L%d-L%d" % find_source() # noqa: UP031 + except Exception: + filename = info["module"].replace(".", "/") + ".py" + tag = "main" if "+" in release else ("v" + release) + return f"https://github.com/BikeNetKit/LinkBikeNet/blob/{tag}/{filename}" diff --git a/release-please-comfig.json b/release-please-config.json similarity index 100% rename from release-please-comfig.json rename to release-please-config.json