Compare commits

..

31 Commits

Author SHA1 Message Date
Bastian Venthur
791996d362 Merge pull request #303 from venthur/footnotes
Added footnotes
2025-11-04 09:09:39 +01:00
Bastian Venthur
0d7c9b3153 Added footnotes 2025-11-04 09:06:47 +01:00
Bastian Venthur
f07341a6be Merge branch 'master' of github.com:venthur/blag 2025-10-10 08:36:13 +02:00
Bastian Venthur
7adbb97dc9 update default colorscheme 2025-10-10 08:35:50 +02:00
Bastian Venthur
dba8380d3d Merge pull request #301 from venthur/py314
Added Python 3.14 compatibility
2025-10-10 08:30:09 +02:00
Bastian Venthur
b7e0baa331 Added Python 3.14 compatibility 2025-10-10 08:24:29 +02:00
Bastian Venthur
d0c246a6c3 Merge pull request #300 from venthur/dependabot/github_actions/actions/setup-python-6
Bump actions/setup-python from 5 to 6
2025-09-11 10:06:27 +02:00
dependabot[bot]
d6e251db38 Bump actions/setup-python from 5 to 6
Bumps [actions/setup-python](https://github.com/actions/setup-python) from 5 to 6.
- [Release notes](https://github.com/actions/setup-python/releases)
- [Commits](https://github.com/actions/setup-python/compare/v5...v6)

---
updated-dependencies:
- dependency-name: actions/setup-python
  dependency-version: '6'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-09-11 08:02:43 +00:00
Bastian Venthur
5f65bace1a Merge pull request #299 from venthur/dependabot/github_actions/actions/checkout-5
Bump actions/checkout from 4 to 5
2025-09-11 10:01:50 +02:00
dependabot[bot]
1058292e3f Bump actions/checkout from 4 to 5
Bumps [actions/checkout](https://github.com/actions/checkout) from 4 to 5.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/v4...v5)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-version: '5'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-08-11 19:54:13 +00:00
Bastian Venthur
41b0962ec0 Merge pull request #288 from venthur/no-requirements-txt
remove requirements.txt and requirements-dev.txt
2025-07-18 09:30:55 +02:00
Bastian Venthur
720a92d72d updated changelog 2025-07-18 09:30:38 +02:00
Bastian Venthur
9b11c67253 tiny improvement on github action 2025-07-18 09:24:29 +02:00
Bastian Venthur
ce0f9f6fa7 fixed makefile and readthedocs 2025-07-18 09:24:29 +02:00
Bastian Venthur
ba4bf8481c remove requirements.txt and requirements-dev.txt 2025-07-18 09:24:26 +02:00
Bastian Venthur
ae544e3d02 Merge pull request #294 from venthur/dependabot/pip/pip-512858e340
Bump requests from 2.32.3 to 2.32.4 in the pip group
2025-07-15 09:19:42 +02:00
dependabot[bot]
904f231754 Bump requests from 2.32.3 to 2.32.4 in the pip group
Bumps the pip group with 1 update: [requests](https://github.com/psf/requests).


Updates `requests` from 2.32.3 to 2.32.4
- [Release notes](https://github.com/psf/requests/releases)
- [Changelog](https://github.com/psf/requests/blob/main/HISTORY.md)
- [Commits](https://github.com/psf/requests/compare/v2.32.3...v2.32.4)

---
updated-dependencies:
- dependency-name: requests
  dependency-version: 2.32.4
  dependency-type: direct:development
  dependency-group: pip
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-06-10 11:52:25 +00:00
Bastian Venthur
87a6ff09d5 bumped changelogs 2025-04-27 11:49:08 +02:00
Bastian Venthur
419b0aea3a Merge pull request #285 from venthur/atom-utf8
Fixed atom feed encoding to utf-8
2025-04-24 14:06:18 +02:00
Bastian Venthur
b0139dad8d Fixed atom feed encoding to utf-8 2025-04-24 14:03:47 +02:00
Bastian Venthur
05af204254 add --skip-extras 2025-04-08 09:32:13 +02:00
Bastian Venthur
031e3f92cd update changelog 2025-04-08 09:17:24 +02:00
Bastian Venthur
729b1acf65 Merge pull request #277 from venthur/update_requirements
Added update-requirements target
2025-04-08 09:15:09 +02:00
Bastian Venthur
d8c41cc9fb Merge pull request #278 from venthur/update_license_file
Update license -> license-files to satisfy newer setuptools
2025-04-01 10:25:25 +02:00
Bastian Venthur
00e02f13dc Added update-requirements target
Manage requirements*.txt files by pip-tools
2025-04-01 10:07:07 +02:00
Bastian Venthur
5c7213eac0 Update license -> license-files to satisfy newer setuptools 2025-04-01 09:59:51 +02:00
Bastian Venthur
8a275c0923 Merge pull request #274 from venthur/dependabot/pip/all-fb8e73af51
Bump the all group across 1 directory with 8 updates
2025-03-11 14:19:21 +01:00
dependabot[bot]
abf7dc0485 Bump the all group across 1 directory with 8 updates
Bumps the all group with 8 updates in the / directory:

| Package | From | To |
| --- | --- | --- |
| [mkdocs-material](https://github.com/squidfunk/mkdocs-material) | `9.5.49` | `9.6.7` |
| [mkdocstrings[python]](https://github.com/mkdocstrings/mkdocstrings) | `0.27.0` | `0.29.0` |
| [twine](https://github.com/pypa/twine) | `6.0.1` | `6.1.0` |
| [pytest](https://github.com/pytest-dev/pytest) | `8.3.4` | `8.3.5` |
| [ruff](https://github.com/astral-sh/ruff) | `0.8.4` | `0.9.10` |
| [mypy](https://github.com/python/mypy) | `1.14.0` | `1.15.0` |
| [jinja2](https://github.com/pallets/jinja) | `3.1.5` | `3.1.6` |
| [pygments](https://github.com/pygments/pygments) | `2.18.0` | `2.19.1` |



Updates `mkdocs-material` from 9.5.49 to 9.6.7
- [Release notes](https://github.com/squidfunk/mkdocs-material/releases)
- [Changelog](https://github.com/squidfunk/mkdocs-material/blob/master/CHANGELOG)
- [Commits](https://github.com/squidfunk/mkdocs-material/compare/9.5.49...9.6.7)

Updates `mkdocstrings[python]` from 0.27.0 to 0.29.0
- [Release notes](https://github.com/mkdocstrings/mkdocstrings/releases)
- [Changelog](https://github.com/mkdocstrings/mkdocstrings/blob/main/CHANGELOG.md)
- [Commits](https://github.com/mkdocstrings/mkdocstrings/compare/0.27.0...0.29.0)

Updates `twine` from 6.0.1 to 6.1.0
- [Release notes](https://github.com/pypa/twine/releases)
- [Changelog](https://github.com/pypa/twine/blob/main/docs/changelog.rst)
- [Commits](https://github.com/pypa/twine/compare/6.0.1...6.1.0)

Updates `pytest` from 8.3.4 to 8.3.5
- [Release notes](https://github.com/pytest-dev/pytest/releases)
- [Changelog](https://github.com/pytest-dev/pytest/blob/main/CHANGELOG.rst)
- [Commits](https://github.com/pytest-dev/pytest/compare/8.3.4...8.3.5)

Updates `ruff` from 0.8.4 to 0.9.10
- [Release notes](https://github.com/astral-sh/ruff/releases)
- [Changelog](https://github.com/astral-sh/ruff/blob/main/CHANGELOG.md)
- [Commits](https://github.com/astral-sh/ruff/compare/0.8.4...0.9.10)

Updates `mypy` from 1.14.0 to 1.15.0
- [Changelog](https://github.com/python/mypy/blob/master/CHANGELOG.md)
- [Commits](https://github.com/python/mypy/compare/v1.14.0...v1.15.0)

Updates `jinja2` from 3.1.5 to 3.1.6
- [Release notes](https://github.com/pallets/jinja/releases)
- [Changelog](https://github.com/pallets/jinja/blob/main/CHANGES.rst)
- [Commits](https://github.com/pallets/jinja/compare/3.1.5...3.1.6)

Updates `pygments` from 2.18.0 to 2.19.1
- [Release notes](https://github.com/pygments/pygments/releases)
- [Changelog](https://github.com/pygments/pygments/blob/master/CHANGES)
- [Commits](https://github.com/pygments/pygments/compare/2.18.0...2.19.1)

---
updated-dependencies:
- dependency-name: mkdocs-material
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: all
- dependency-name: mkdocstrings[python]
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: all
- dependency-name: twine
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: all
- dependency-name: pytest
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: all
- dependency-name: ruff
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: all
- dependency-name: mypy
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: all
- dependency-name: jinja2
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: all
- dependency-name: pygments
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: all
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-03-10 15:34:18 +00:00
Bastian Venthur
85e57a7ef2 added py313 to github actions test suite 2025-01-03 10:46:22 +01:00
dependabot[bot]
ef18685cef Bump the all group across 1 directory with 10 updates
Bumps the all group with 10 updates in the / directory:

| Package | From | To |
| --- | --- | --- |
| [mkdocs-material](https://github.com/squidfunk/mkdocs-material) | `9.5.39` | `9.5.49` |
| [mkdocstrings[python]](https://github.com/mkdocstrings/mkdocstrings) | `0.26.1` | `0.27.0` |
| [twine](https://github.com/pypa/twine) | `5.1.1` | `6.0.1` |
| [wheel](https://github.com/pypa/wheel) | `0.44.0` | `0.45.1` |
| [pytest](https://github.com/pytest-dev/pytest) | `8.3.3` | `8.3.4` |
| [pytest-cov](https://github.com/pytest-dev/pytest-cov) | `5.0.0` | `6.0.0` |
| [ruff](https://github.com/astral-sh/ruff) | `0.6.9` | `0.8.4` |
| [mypy](https://github.com/python/mypy) | `1.11.2` | `1.14.0` |
| [types-markdown](https://github.com/python/typeshed) | `3.7.0.20240822` | `3.7.0.20241204` |
| [jinja2](https://github.com/pallets/jinja) | `3.1.4` | `3.1.5` |



Updates `mkdocs-material` from 9.5.39 to 9.5.49
- [Release notes](https://github.com/squidfunk/mkdocs-material/releases)
- [Changelog](https://github.com/squidfunk/mkdocs-material/blob/master/CHANGELOG)
- [Commits](https://github.com/squidfunk/mkdocs-material/compare/9.5.39...9.5.49)

Updates `mkdocstrings[python]` from 0.26.1 to 0.27.0
- [Release notes](https://github.com/mkdocstrings/mkdocstrings/releases)
- [Changelog](https://github.com/mkdocstrings/mkdocstrings/blob/main/CHANGELOG.md)
- [Commits](https://github.com/mkdocstrings/mkdocstrings/compare/0.26.1...0.27.0)

Updates `twine` from 5.1.1 to 6.0.1
- [Release notes](https://github.com/pypa/twine/releases)
- [Changelog](https://github.com/pypa/twine/blob/main/docs/changelog.rst)
- [Commits](https://github.com/pypa/twine/compare/v5.1.1...6.0.1)

Updates `wheel` from 0.44.0 to 0.45.1
- [Release notes](https://github.com/pypa/wheel/releases)
- [Changelog](https://github.com/pypa/wheel/blob/main/docs/news.rst)
- [Commits](https://github.com/pypa/wheel/compare/0.44.0...0.45.1)

Updates `pytest` from 8.3.3 to 8.3.4
- [Release notes](https://github.com/pytest-dev/pytest/releases)
- [Changelog](https://github.com/pytest-dev/pytest/blob/main/CHANGELOG.rst)
- [Commits](https://github.com/pytest-dev/pytest/compare/8.3.3...8.3.4)

Updates `pytest-cov` from 5.0.0 to 6.0.0
- [Changelog](https://github.com/pytest-dev/pytest-cov/blob/master/CHANGELOG.rst)
- [Commits](https://github.com/pytest-dev/pytest-cov/compare/v5.0.0...v6.0.0)

Updates `ruff` from 0.6.9 to 0.8.4
- [Release notes](https://github.com/astral-sh/ruff/releases)
- [Changelog](https://github.com/astral-sh/ruff/blob/main/CHANGELOG.md)
- [Commits](https://github.com/astral-sh/ruff/compare/0.6.9...0.8.4)

Updates `mypy` from 1.11.2 to 1.14.0
- [Changelog](https://github.com/python/mypy/blob/master/CHANGELOG.md)
- [Commits](https://github.com/python/mypy/compare/v1.11.2...v1.14.0)

Updates `types-markdown` from 3.7.0.20240822 to 3.7.0.20241204
- [Commits](https://github.com/python/typeshed/commits)

Updates `jinja2` from 3.1.4 to 3.1.5
- [Release notes](https://github.com/pallets/jinja/releases)
- [Changelog](https://github.com/pallets/jinja/blob/main/CHANGES.rst)
- [Commits](https://github.com/pallets/jinja/compare/3.1.4...3.1.5)

---
updated-dependencies:
- dependency-name: mkdocs-material
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: all
- dependency-name: mkdocstrings[python]
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: all
- dependency-name: twine
  dependency-type: direct:development
  update-type: version-update:semver-major
  dependency-group: all
- dependency-name: wheel
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: all
- dependency-name: pytest
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: all
- dependency-name: pytest-cov
  dependency-type: direct:development
  update-type: version-update:semver-major
  dependency-group: all
- dependency-name: ruff
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: all
- dependency-name: mypy
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: all
- dependency-name: types-markdown
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: all
- dependency-name: jinja2
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: all
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-12-23 14:19:20 +00:00
Bastian Venthur
6b699f58ad simplified color scheme selection 2024-11-18 09:22:21 +01:00
17 changed files with 175 additions and 154 deletions

View File

@@ -1,12 +1,9 @@
name: CI/CD Pipeline
on: on:
- push - push
- pull_request - pull_request
jobs: jobs:
test: test:
name: Test Python ${{ matrix.python-version }} on ${{ matrix.os }}
runs-on: ${{ matrix.os }} runs-on: ${{ matrix.os }}
strategy: strategy:
@@ -20,10 +17,12 @@ jobs:
- "3.10" - "3.10"
- "3.11" - "3.11"
- "3.12" - "3.12"
- "3.13"
- "3.14"
steps: steps:
- uses: actions/checkout@v4 - uses: actions/checkout@v5
- uses: actions/setup-python@v5 - uses: actions/setup-python@v6
with: with:
python-version: ${{ matrix.python-version }} python-version: ${{ matrix.python-version }}
@@ -36,8 +35,8 @@ jobs:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@v4 - uses: actions/checkout@v5
- uses: actions/setup-python@v5 - uses: actions/setup-python@v6
with: with:
python-version: "3.x" python-version: "3.x"
@@ -50,8 +49,8 @@ jobs:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@v4 - uses: actions/checkout@v5
- uses: actions/setup-python@v5 - uses: actions/setup-python@v6
with: with:
python-version: "3.x" python-version: "3.x"
@@ -65,8 +64,8 @@ jobs:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@v4 - uses: actions/checkout@v5
- uses: actions/setup-python@v5 - uses: actions/setup-python@v6
with: with:
python-version: "3.x" python-version: "3.x"

View File

@@ -3,13 +3,13 @@ version: 2
build: build:
os: ubuntu-22.04 os: ubuntu-22.04
tools: tools:
python: "3.11" python: "3.12"
mkdocs: mkdocs:
configuration: mkdocs.yml configuration: mkdocs.yml
python: python:
install: install:
- requirements: requirements.txt
- requirements: requirements-dev.txt
- path: . - path: .
extra_requirements:
- dev

View File

@@ -1,5 +1,19 @@
# Changelog # Changelog
## [unreleased] --
* Added Python 3.14 compatibility
* Removed requirements.txt and requirements-dev.txt
* Added footnotes extension for markdown
## [2.3.3] -- 2025-04-27
* Fixed Atom feed encoding to 'utf-8'
* Added Python 3.13 to github actions
* `requirements*.txt` files are handled by pip-tools. Updates are handled by
make update-requirements based on the dependencies described in the
pyproject.toml
## [2.3.2] -- 2024-10-13 ## [2.3.2] -- 2024-10-13
* Ignore FileNotFoundError when trying to get the last modified time of files * Ignore FileNotFoundError when trying to get the last modified time of files

View File

@@ -16,11 +16,9 @@ endif
.PHONY: all .PHONY: all
all: lint mypy test test-release all: lint mypy test test-release
$(VENV): requirements.txt requirements-dev.txt pyproject.toml $(VENV): pyproject.toml
$(PY) -m venv $(VENV) $(PY) -m venv $(VENV)
$(BIN)/pip install --upgrade -r requirements.txt $(BIN)/pip install --upgrade -e .['dev']
$(BIN)/pip install --upgrade -r requirements-dev.txt
$(BIN)/pip install -e .['dev']
touch $(VENV) touch $(VENV)
.PHONY: test .PHONY: test

View File

@@ -21,6 +21,7 @@ blag is named after [the blag of the webcomic xkcd][blagxkcd].
* Theming support using [Jinja2][] templates * Theming support using [Jinja2][] templates
* Generation of Atom feeds for blog content * Generation of Atom feeds for blog content
* Fenced code blocks and syntax highlighting using [Pygments][] * Fenced code blocks and syntax highlighting using [Pygments][]
* Markdown footnotes
* Integrated devserver * Integrated devserver
* Available on [PyPI][] * Available on [PyPI][]

View File

@@ -396,7 +396,7 @@ def generate_feed(
) )
with open(f"{output_dir}/atom.xml", "w") as fh: with open(f"{output_dir}/atom.xml", "w") as fh:
feed.write(fh, encoding="utf8") feed.write(fh, encoding='utf-8')
def generate_index( def generate_index(

View File

@@ -34,6 +34,7 @@ def markdown_factory() -> Markdown:
"fenced_code", "fenced_code",
"codehilite", "codehilite",
"smarty", "smarty",
"footnotes",
MarkdownLinkExtension(), MarkdownLinkExtension(),
], ],
output_format="html", output_format="html",

View File

@@ -5,80 +5,80 @@ td.linenos .special { color: #000000; background-color: #ffffc0; padding-left: 5
span.linenos.special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; } span.linenos.special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; }
.hll { background-color: #49483e } .hll { background-color: #49483e }
.c { color: #959077 } /* Comment */ .c { color: #959077 } /* Comment */
.err { color: #ed007e; background-color: #1e0010 } /* Error */ .err { color: #ED007E; background-color: #1E0010 } /* Error */
.esc { color: #f8f8f2 } /* Escape */ .esc { color: #F8F8F2 } /* Escape */
.g { color: #f8f8f2 } /* Generic */ .g { color: #F8F8F2 } /* Generic */
.k { color: #66d9ef } /* Keyword */ .k { color: #66D9EF } /* Keyword */
.l { color: #ae81ff } /* Literal */ .l { color: #AE81FF } /* Literal */
.n { color: #f8f8f2 } /* Name */ .n { color: #F8F8F2 } /* Name */
.o { color: #ff4689 } /* Operator */ .o { color: #FF4689 } /* Operator */
.x { color: #f8f8f2 } /* Other */ .x { color: #F8F8F2 } /* Other */
.p { color: #f8f8f2 } /* Punctuation */ .p { color: #F8F8F2 } /* Punctuation */
.ch { color: #959077 } /* Comment.Hashbang */ .ch { color: #959077 } /* Comment.Hashbang */
.cm { color: #959077 } /* Comment.Multiline */ .cm { color: #959077 } /* Comment.Multiline */
.cp { color: #959077 } /* Comment.Preproc */ .cp { color: #959077 } /* Comment.Preproc */
.cpf { color: #959077 } /* Comment.PreprocFile */ .cpf { color: #959077 } /* Comment.PreprocFile */
.c1 { color: #959077 } /* Comment.Single */ .c1 { color: #959077 } /* Comment.Single */
.cs { color: #959077 } /* Comment.Special */ .cs { color: #959077 } /* Comment.Special */
.gd { color: #ff4689 } /* Generic.Deleted */ .gd { color: #FF4689 } /* Generic.Deleted */
.ge { color: #f8f8f2; font-style: italic } /* Generic.Emph */ .ge { color: #F8F8F2; font-style: italic } /* Generic.Emph */
.ges { color: #f8f8f2; font-weight: bold; font-style: italic } /* Generic.EmphStrong */ .ges { color: #F8F8F2; font-weight: bold; font-style: italic } /* Generic.EmphStrong */
.gr { color: #f8f8f2 } /* Generic.Error */ .gr { color: #F8F8F2 } /* Generic.Error */
.gh { color: #f8f8f2 } /* Generic.Heading */ .gh { color: #F8F8F2 } /* Generic.Heading */
.gi { color: #a6e22e } /* Generic.Inserted */ .gi { color: #A6E22E } /* Generic.Inserted */
.go { color: #66d9ef } /* Generic.Output */ .go { color: #66D9EF } /* Generic.Output */
.gp { color: #ff4689; font-weight: bold } /* Generic.Prompt */ .gp { color: #FF4689; font-weight: bold } /* Generic.Prompt */
.gs { color: #f8f8f2; font-weight: bold } /* Generic.Strong */ .gs { color: #F8F8F2; font-weight: bold } /* Generic.Strong */
.gu { color: #959077 } /* Generic.Subheading */ .gu { color: #959077 } /* Generic.Subheading */
.gt { color: #f8f8f2 } /* Generic.Traceback */ .gt { color: #F8F8F2 } /* Generic.Traceback */
.kc { color: #66d9ef } /* Keyword.Constant */ .kc { color: #66D9EF } /* Keyword.Constant */
.kd { color: #66d9ef } /* Keyword.Declaration */ .kd { color: #66D9EF } /* Keyword.Declaration */
.kn { color: #ff4689 } /* Keyword.Namespace */ .kn { color: #FF4689 } /* Keyword.Namespace */
.kp { color: #66d9ef } /* Keyword.Pseudo */ .kp { color: #66D9EF } /* Keyword.Pseudo */
.kr { color: #66d9ef } /* Keyword.Reserved */ .kr { color: #66D9EF } /* Keyword.Reserved */
.kt { color: #66d9ef } /* Keyword.Type */ .kt { color: #66D9EF } /* Keyword.Type */
.ld { color: #e6db74 } /* Literal.Date */ .ld { color: #E6DB74 } /* Literal.Date */
.m { color: #ae81ff } /* Literal.Number */ .m { color: #AE81FF } /* Literal.Number */
.s { color: #e6db74 } /* Literal.String */ .s { color: #E6DB74 } /* Literal.String */
.na { color: #a6e22e } /* Name.Attribute */ .na { color: #A6E22E } /* Name.Attribute */
.nb { color: #f8f8f2 } /* Name.Builtin */ .nb { color: #F8F8F2 } /* Name.Builtin */
.nc { color: #a6e22e } /* Name.Class */ .nc { color: #A6E22E } /* Name.Class */
.no { color: #66d9ef } /* Name.Constant */ .no { color: #66D9EF } /* Name.Constant */
.nd { color: #a6e22e } /* Name.Decorator */ .nd { color: #A6E22E } /* Name.Decorator */
.ni { color: #f8f8f2 } /* Name.Entity */ .ni { color: #F8F8F2 } /* Name.Entity */
.ne { color: #a6e22e } /* Name.Exception */ .ne { color: #A6E22E } /* Name.Exception */
.nf { color: #a6e22e } /* Name.Function */ .nf { color: #A6E22E } /* Name.Function */
.nl { color: #f8f8f2 } /* Name.Label */ .nl { color: #F8F8F2 } /* Name.Label */
.nn { color: #f8f8f2 } /* Name.Namespace */ .nn { color: #F8F8F2 } /* Name.Namespace */
.nx { color: #a6e22e } /* Name.Other */ .nx { color: #A6E22E } /* Name.Other */
.py { color: #f8f8f2 } /* Name.Property */ .py { color: #F8F8F2 } /* Name.Property */
.nt { color: #ff4689 } /* Name.Tag */ .nt { color: #FF4689 } /* Name.Tag */
.nv { color: #f8f8f2 } /* Name.Variable */ .nv { color: #F8F8F2 } /* Name.Variable */
.ow { color: #ff4689 } /* Operator.Word */ .ow { color: #FF4689 } /* Operator.Word */
.pm { color: #f8f8f2 } /* Punctuation.Marker */ .pm { color: #F8F8F2 } /* Punctuation.Marker */
.w { color: #f8f8f2 } /* Text.Whitespace */ .w { color: #F8F8F2 } /* Text.Whitespace */
.mb { color: #ae81ff } /* Literal.Number.Bin */ .mb { color: #AE81FF } /* Literal.Number.Bin */
.mf { color: #ae81ff } /* Literal.Number.Float */ .mf { color: #AE81FF } /* Literal.Number.Float */
.mh { color: #ae81ff } /* Literal.Number.Hex */ .mh { color: #AE81FF } /* Literal.Number.Hex */
.mi { color: #ae81ff } /* Literal.Number.Integer */ .mi { color: #AE81FF } /* Literal.Number.Integer */
.mo { color: #ae81ff } /* Literal.Number.Oct */ .mo { color: #AE81FF } /* Literal.Number.Oct */
.sa { color: #e6db74 } /* Literal.String.Affix */ .sa { color: #E6DB74 } /* Literal.String.Affix */
.sb { color: #e6db74 } /* Literal.String.Backtick */ .sb { color: #E6DB74 } /* Literal.String.Backtick */
.sc { color: #e6db74 } /* Literal.String.Char */ .sc { color: #E6DB74 } /* Literal.String.Char */
.dl { color: #e6db74 } /* Literal.String.Delimiter */ .dl { color: #E6DB74 } /* Literal.String.Delimiter */
.sd { color: #e6db74 } /* Literal.String.Doc */ .sd { color: #E6DB74 } /* Literal.String.Doc */
.s2 { color: #e6db74 } /* Literal.String.Double */ .s2 { color: #E6DB74 } /* Literal.String.Double */
.se { color: #ae81ff } /* Literal.String.Escape */ .se { color: #AE81FF } /* Literal.String.Escape */
.sh { color: #e6db74 } /* Literal.String.Heredoc */ .sh { color: #E6DB74 } /* Literal.String.Heredoc */
.si { color: #e6db74 } /* Literal.String.Interpol */ .si { color: #E6DB74 } /* Literal.String.Interpol */
.sx { color: #e6db74 } /* Literal.String.Other */ .sx { color: #E6DB74 } /* Literal.String.Other */
.sr { color: #e6db74 } /* Literal.String.Regex */ .sr { color: #E6DB74 } /* Literal.String.Regex */
.s1 { color: #e6db74 } /* Literal.String.Single */ .s1 { color: #E6DB74 } /* Literal.String.Single */
.ss { color: #e6db74 } /* Literal.String.Symbol */ .ss { color: #E6DB74 } /* Literal.String.Symbol */
.bp { color: #f8f8f2 } /* Name.Builtin.Pseudo */ .bp { color: #F8F8F2 } /* Name.Builtin.Pseudo */
.fm { color: #a6e22e } /* Name.Function.Magic */ .fm { color: #A6E22E } /* Name.Function.Magic */
.vc { color: #f8f8f2 } /* Name.Variable.Class */ .vc { color: #F8F8F2 } /* Name.Variable.Class */
.vg { color: #f8f8f2 } /* Name.Variable.Global */ .vg { color: #F8F8F2 } /* Name.Variable.Global */
.vi { color: #f8f8f2 } /* Name.Variable.Instance */ .vi { color: #F8F8F2 } /* Name.Variable.Instance */
.vm { color: #f8f8f2 } /* Name.Variable.Magic */ .vm { color: #F8F8F2 } /* Name.Variable.Magic */
.il { color: #ae81ff } /* Literal.Number.Integer.Long */ .il { color: #AE81FF } /* Literal.Number.Integer.Long */

View File

@@ -5,9 +5,9 @@ td.linenos .special { color: #000000; background-color: #ffffc0; padding-left: 5
span.linenos.special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; } span.linenos.special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; }
.hll { background-color: #ffffcc } .hll { background-color: #ffffcc }
.c { color: #3D7B7B; font-style: italic } /* Comment */ .c { color: #3D7B7B; font-style: italic } /* Comment */
.err { border: 1px solid #FF0000 } /* Error */ .err { border: 1px solid #F00 } /* Error */
.k { color: #008000; font-weight: bold } /* Keyword */ .k { color: #008000; font-weight: bold } /* Keyword */
.o { color: #666666 } /* Operator */ .o { color: #666 } /* Operator */
.ch { color: #3D7B7B; font-style: italic } /* Comment.Hashbang */ .ch { color: #3D7B7B; font-style: italic } /* Comment.Hashbang */
.cm { color: #3D7B7B; font-style: italic } /* Comment.Multiline */ .cm { color: #3D7B7B; font-style: italic } /* Comment.Multiline */
.cp { color: #9C6500 } /* Comment.Preproc */ .cp { color: #9C6500 } /* Comment.Preproc */
@@ -24,34 +24,34 @@ span.linenos.special { color: #000000; background-color: #ffffc0; padding-left:
.gp { color: #000080; font-weight: bold } /* Generic.Prompt */ .gp { color: #000080; font-weight: bold } /* Generic.Prompt */
.gs { font-weight: bold } /* Generic.Strong */ .gs { font-weight: bold } /* Generic.Strong */
.gu { color: #800080; font-weight: bold } /* Generic.Subheading */ .gu { color: #800080; font-weight: bold } /* Generic.Subheading */
.gt { color: #0044DD } /* Generic.Traceback */ .gt { color: #04D } /* Generic.Traceback */
.kc { color: #008000; font-weight: bold } /* Keyword.Constant */ .kc { color: #008000; font-weight: bold } /* Keyword.Constant */
.kd { color: #008000; font-weight: bold } /* Keyword.Declaration */ .kd { color: #008000; font-weight: bold } /* Keyword.Declaration */
.kn { color: #008000; font-weight: bold } /* Keyword.Namespace */ .kn { color: #008000; font-weight: bold } /* Keyword.Namespace */
.kp { color: #008000 } /* Keyword.Pseudo */ .kp { color: #008000 } /* Keyword.Pseudo */
.kr { color: #008000; font-weight: bold } /* Keyword.Reserved */ .kr { color: #008000; font-weight: bold } /* Keyword.Reserved */
.kt { color: #B00040 } /* Keyword.Type */ .kt { color: #B00040 } /* Keyword.Type */
.m { color: #666666 } /* Literal.Number */ .m { color: #666 } /* Literal.Number */
.s { color: #BA2121 } /* Literal.String */ .s { color: #BA2121 } /* Literal.String */
.na { color: #687822 } /* Name.Attribute */ .na { color: #687822 } /* Name.Attribute */
.nb { color: #008000 } /* Name.Builtin */ .nb { color: #008000 } /* Name.Builtin */
.nc { color: #0000FF; font-weight: bold } /* Name.Class */ .nc { color: #00F; font-weight: bold } /* Name.Class */
.no { color: #880000 } /* Name.Constant */ .no { color: #800 } /* Name.Constant */
.nd { color: #AA22FF } /* Name.Decorator */ .nd { color: #A2F } /* Name.Decorator */
.ni { color: #717171; font-weight: bold } /* Name.Entity */ .ni { color: #717171; font-weight: bold } /* Name.Entity */
.ne { color: #CB3F38; font-weight: bold } /* Name.Exception */ .ne { color: #CB3F38; font-weight: bold } /* Name.Exception */
.nf { color: #0000FF } /* Name.Function */ .nf { color: #00F } /* Name.Function */
.nl { color: #767600 } /* Name.Label */ .nl { color: #767600 } /* Name.Label */
.nn { color: #0000FF; font-weight: bold } /* Name.Namespace */ .nn { color: #00F; font-weight: bold } /* Name.Namespace */
.nt { color: #008000; font-weight: bold } /* Name.Tag */ .nt { color: #008000; font-weight: bold } /* Name.Tag */
.nv { color: #19177C } /* Name.Variable */ .nv { color: #19177C } /* Name.Variable */
.ow { color: #AA22FF; font-weight: bold } /* Operator.Word */ .ow { color: #A2F; font-weight: bold } /* Operator.Word */
.w { color: #bbbbbb } /* Text.Whitespace */ .w { color: #BBB } /* Text.Whitespace */
.mb { color: #666666 } /* Literal.Number.Bin */ .mb { color: #666 } /* Literal.Number.Bin */
.mf { color: #666666 } /* Literal.Number.Float */ .mf { color: #666 } /* Literal.Number.Float */
.mh { color: #666666 } /* Literal.Number.Hex */ .mh { color: #666 } /* Literal.Number.Hex */
.mi { color: #666666 } /* Literal.Number.Integer */ .mi { color: #666 } /* Literal.Number.Integer */
.mo { color: #666666 } /* Literal.Number.Oct */ .mo { color: #666 } /* Literal.Number.Oct */
.sa { color: #BA2121 } /* Literal.String.Affix */ .sa { color: #BA2121 } /* Literal.String.Affix */
.sb { color: #BA2121 } /* Literal.String.Backtick */ .sb { color: #BA2121 } /* Literal.String.Backtick */
.sc { color: #BA2121 } /* Literal.String.Char */ .sc { color: #BA2121 } /* Literal.String.Char */
@@ -66,9 +66,9 @@ span.linenos.special { color: #000000; background-color: #ffffc0; padding-left:
.s1 { color: #BA2121 } /* Literal.String.Single */ .s1 { color: #BA2121 } /* Literal.String.Single */
.ss { color: #19177C } /* Literal.String.Symbol */ .ss { color: #19177C } /* Literal.String.Symbol */
.bp { color: #008000 } /* Name.Builtin.Pseudo */ .bp { color: #008000 } /* Name.Builtin.Pseudo */
.fm { color: #0000FF } /* Name.Function.Magic */ .fm { color: #00F } /* Name.Function.Magic */
.vc { color: #19177C } /* Name.Variable.Class */ .vc { color: #19177C } /* Name.Variable.Class */
.vg { color: #19177C } /* Name.Variable.Global */ .vg { color: #19177C } /* Name.Variable.Global */
.vi { color: #19177C } /* Name.Variable.Instance */ .vi { color: #19177C } /* Name.Variable.Instance */
.vm { color: #19177C } /* Name.Variable.Magic */ .vm { color: #19177C } /* Name.Variable.Magic */
.il { color: #666666 } /* Literal.Number.Integer.Long */ .il { color: #666 } /* Literal.Number.Integer.Long */

View File

@@ -1,32 +1,15 @@
@import "code-light.css" (prefers-color-scheme: light); @import "code-light.css" (prefers-color-scheme: light);
@import "code-dark.css" (prefers-color-scheme: dark); @import "code-dark.css" (prefers-color-scheme: dark);
@media (prefers-color-scheme: light) {
:root { :root {
--background: #FFFFFF; color-scheme: light dark;
--background-dim: #f5f7f9; --background: light-dark(#FFFFFF, #2B363B);
--background-dim: light-dark(#f5f7f9, #2F3C42);
--foreground: #2B303A; --foreground: light-dark(#2B303A, #f0f2f3);
--foreground-dim: #576379; --foreground-dim: light-dark(#576379, #d5d5d5);
--foreground-heavy: #191C22; --foreground-heavy: light-dark(#191C22, #f2f4f5);
--primary-color: light-dark(#375287, #A1C5FF);
--primary-color: #375287;
} }
}
@media (prefers-color-scheme: dark) {
:root {
--background: #2B363B;
--background-dim: #2F3C42;
--foreground: #f0f2f3;
--foreground-dim: #d5d5d5;
--foreground-heavy: #f2f4f5;
--primary-color: #A1C5FF;
}
}
html { html {
font-size: 18px; font-size: 18px;
@@ -168,3 +151,10 @@ header h2 {
display: inline; display: inline;
font-size: 1.2rem; font-size: 1.2rem;
} }
hr {
border: none;
border-top: 1px solid var(--foreground-dim);
opacity: 0.3;
margin: 2rem 0;
}

View File

@@ -1,3 +1,3 @@
"""Version information for the blag package.""" """Version information for the blag package."""
__VERSION__ = "2.3.2" __VERSION__ = "2.3.3"

10
debian/changelog vendored
View File

@@ -1,3 +1,13 @@
blag (2.3.3) unstable; urgency=medium
* Fixed Atom feed encoding to 'utf-8'
* Added Python 3.13 to github actions
* `requirements*.txt` files are handled by pip-tools. Updates are handled by
make update-requirements based on the dependencies described in the
pyproject.toml
-- Bastian Venthur <venthur@debian.org> Sun, 27 Apr 2025 11:42:13 +0200
blag (2.3.2) unstable; urgency=medium blag (2.3.2) unstable; urgency=medium
* Ignore FileNotFoundError when trying to get the last modified time of * Ignore FileNotFoundError when trying to get the last modified time of

View File

@@ -10,13 +10,13 @@ authors = [
description = "blog-aware, static site generator" description = "blog-aware, static site generator"
keywords = ["markdown", "blag", "blog", "static site generator", "cli"] keywords = ["markdown", "blag", "blog", "static site generator", "cli"]
readme = "README.md" readme = "README.md"
license = { file="LICENSE" } license-files = ["LICENSE"]
requires-python = ">=3.10" requires-python = ">=3.10"
dynamic = ["version"] dynamic = ["version"]
dependencies = [ dependencies = [
"markdown",
"feedgenerator", "feedgenerator",
"jinja2", "jinja2",
"markdown",
"pygments", "pygments",
] ]
@@ -34,13 +34,13 @@ dev = [
"mkdocs", "mkdocs",
"mkdocs-material", "mkdocs-material",
"mkdocstrings[python]", "mkdocstrings[python]",
"twine", "mypy",
"wheel",
"pytest", "pytest",
"pytest-cov", "pytest-cov",
"ruff", "ruff",
"mypy", "twine",
"types-markdown", "types-markdown",
"wheel",
] ]
[tool.setuptools.dynamic] [tool.setuptools.dynamic]

View File

@@ -1,11 +0,0 @@
build==1.2.2.post1
mkdocs==1.6.1
mkdocs-material==9.5.39
mkdocstrings[python]==0.26.1
twine==5.1.1
wheel==0.44.0
pytest==8.3.3
pytest-cov==5.0.0
ruff==0.6.9
mypy==1.11.2
types-markdown==3.7.0.20240822

View File

@@ -1,4 +0,0 @@
markdown==3.7
feedgenerator==2.1.0
jinja2==3.1.4
pygments==2.18.0

View File

@@ -99,6 +99,15 @@ def test_generate_feed_with_description(cleandir: str) -> None:
assert '<content type="html">content' in feed assert '<content type="html">content' in feed
def test_feed_is_unicode(cleandir: str) -> None:
"""Test generate_feed."""
articles: list[tuple[str, dict[str, Any]]] = []
blag.generate_feed(articles, "build", " ", " ", " ", " ")
with open("build/atom.xml") as fh:
feed = fh.read()
assert 'encoding="utf-8"' in feed
def test_parse_args_build() -> None: def test_parse_args_build() -> None:
"""Test parse_args with build.""" """Test parse_args with build."""
# test default args # test default args

View File

@@ -111,3 +111,17 @@ this --- is -- a test ...
assert "mdash" not in html assert "mdash" not in html
assert "ndash" not in html assert "ndash" not in html
assert "hellip" not in html assert "hellip" not in html
def test_footnotes() -> None:
"""Test footnote extension."""
md = markdown_factory()
md1 = """
this is a footnote[^1]
[^1]: this is the footnotetext
"""
html, meta = convert_markdown(md, md1)
assert "<hr>" in html
assert "<ol>" in html
assert "footnotetext" in html