1
0
mirror of https://github.com/venthur/blag.git synced 2025-11-26 05:02:58 +00:00

Compare commits

..

1 Commits

Author SHA1 Message Date
4cc23cea5f add strikethru and footnotes functionality 2024-09-05 21:05:02 -07:00
19 changed files with 175 additions and 195 deletions

View File

@@ -1,9 +1,12 @@
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:
@@ -17,12 +20,10 @@ jobs:
- "3.10" - "3.10"
- "3.11" - "3.11"
- "3.12" - "3.12"
- "3.13"
- "3.14"
steps: steps:
- uses: actions/checkout@v5 - uses: actions/checkout@v4
- uses: actions/setup-python@v6 - uses: actions/setup-python@v5
with: with:
python-version: ${{ matrix.python-version }} python-version: ${{ matrix.python-version }}
@@ -35,8 +36,8 @@ jobs:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@v5 - uses: actions/checkout@v4
- uses: actions/setup-python@v6 - uses: actions/setup-python@v5
with: with:
python-version: "3.x" python-version: "3.x"
@@ -49,8 +50,8 @@ jobs:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@v5 - uses: actions/checkout@v4
- uses: actions/setup-python@v6 - uses: actions/setup-python@v5
with: with:
python-version: "3.x" python-version: "3.x"
@@ -64,8 +65,8 @@ jobs:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@v5 - uses: actions/checkout@v4
- uses: actions/setup-python@v6 - uses: actions/setup-python@v5
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.12" python: "3.11"
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,26 +1,13 @@
# Changelog # Changelog
## [2.4.0] -- 2024-09-05
* added strikethru and footnotes to blag renders.
## [unreleased] -- ## [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
* Ignore FileNotFoundError when trying to get the last modified time of files
in directories. This happens for example with temporary emacs files.
* Added changelog to docs * Added changelog to docs
* removed ruff's target-version from pyproject.toml, this value defaults to the
projects requires-python
## [2.3.1] -- 2024-07-06 ## [2.3.1] -- 2024-07-06

View File

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

View File

@@ -21,7 +21,6 @@ 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='utf-8') feed.write(fh, encoding="utf8")
def generate_index( def generate_index(

View File

@@ -42,12 +42,7 @@ def get_last_modified(dirs: list[str]) -> float:
for dir in dirs: for dir in dirs:
for root, dirs, files in os.walk(dir): for root, dirs, files in os.walk(dir):
for f in files: for f in files:
try:
mtime = os.stat(os.path.join(root, f)).st_mtime mtime = os.stat(os.path.join(root, f)).st_mtime
except FileNotFoundError:
# ignore files that have been deleted since the os.walk
# call (for example temporary emacs files)
continue
if mtime > last_mtime: if mtime > last_mtime:
last_mtime = mtime last_mtime = mtime

View File

@@ -30,11 +30,12 @@ def markdown_factory() -> Markdown:
""" """
md = Markdown( md = Markdown(
extensions=[ extensions=[
"footnotes", # Add footnotes support
"pymdownx.tilde", # Add strukethrough support
"meta", "meta",
"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 #F00 } /* Error */ .err { border: 1px solid #FF0000 } /* Error */
.k { color: #008000; font-weight: bold } /* Keyword */ .k { color: #008000; font-weight: bold } /* Keyword */
.o { color: #666 } /* Operator */ .o { color: #666666 } /* 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: #04D } /* Generic.Traceback */ .gt { color: #0044DD } /* 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: #666 } /* Literal.Number */ .m { color: #666666 } /* 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: #00F; font-weight: bold } /* Name.Class */ .nc { color: #0000FF; font-weight: bold } /* Name.Class */
.no { color: #800 } /* Name.Constant */ .no { color: #880000 } /* Name.Constant */
.nd { color: #A2F } /* Name.Decorator */ .nd { color: #AA22FF } /* 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: #00F } /* Name.Function */ .nf { color: #0000FF } /* Name.Function */
.nl { color: #767600 } /* Name.Label */ .nl { color: #767600 } /* Name.Label */
.nn { color: #00F; font-weight: bold } /* Name.Namespace */ .nn { color: #0000FF; 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: #A2F; font-weight: bold } /* Operator.Word */ .ow { color: #AA22FF; font-weight: bold } /* Operator.Word */
.w { color: #BBB } /* Text.Whitespace */ .w { color: #bbbbbb } /* Text.Whitespace */
.mb { color: #666 } /* Literal.Number.Bin */ .mb { color: #666666 } /* Literal.Number.Bin */
.mf { color: #666 } /* Literal.Number.Float */ .mf { color: #666666 } /* Literal.Number.Float */
.mh { color: #666 } /* Literal.Number.Hex */ .mh { color: #666666 } /* Literal.Number.Hex */
.mi { color: #666 } /* Literal.Number.Integer */ .mi { color: #666666 } /* Literal.Number.Integer */
.mo { color: #666 } /* Literal.Number.Oct */ .mo { color: #666666 } /* 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: #00F } /* Name.Function.Magic */ .fm { color: #0000FF } /* 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: #666 } /* Literal.Number.Integer.Long */ .il { color: #666666 } /* Literal.Number.Integer.Long */

View File

@@ -1,15 +1,32 @@
@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 {
color-scheme: light dark; --background: #FFFFFF;
--background: light-dark(#FFFFFF, #2B363B); --background-dim: #f5f7f9;
--background-dim: light-dark(#f5f7f9, #2F3C42);
--foreground: light-dark(#2B303A, #f0f2f3); --foreground: #2B303A;
--foreground-dim: light-dark(#576379, #d5d5d5); --foreground-dim: #576379;
--foreground-heavy: light-dark(#191C22, #f2f4f5); --foreground-heavy: #191C22;
--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;
@@ -151,10 +168,3 @@ 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.3" __VERSION__ = "2.4.0"

20
debian/changelog vendored
View File

@@ -1,23 +1,3 @@
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
* Ignore FileNotFoundError when trying to get the last modified time of
files in directories. This happens for example with temporary emacs files.
* Added changelog to docs
* removed ruff's target-version from pyproject.toml, this value defaults to
the projects requires-python
-- Bastian Venthur <venthur@debian.org> Sun, 13 Oct 2024 20:12:29 +0200
blag (2.3.1) unstable; urgency=medium blag (2.3.1) unstable; urgency=medium
* added manpage * added manpage

11
push Executable file
View File

@@ -0,0 +1,11 @@
#!/bin/bash
REPO="gitea"
python3 -m pip install --upgrade twine
python3 -m twine upload --repository $REPO dist/*

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-files = ["LICENSE"] license = { file="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]",
"mypy", "twine",
"wheel",
"pytest", "pytest",
"pytest-cov", "pytest-cov",
"ruff", "ruff",
"twine", "mypy",
"types-markdown", "types-markdown",
"wheel",
] ]
[tool.setuptools.dynamic] [tool.setuptools.dynamic]
@@ -65,6 +65,7 @@ addopts = """
[tool.ruff] [tool.ruff]
line-length = 79 line-length = 79
target-version = "py310"
[tool.ruff.lint] [tool.ruff.lint]
select = [ select = [

11
requirements-dev.txt Normal file
View File

@@ -0,0 +1,11 @@
build==1.2.1
mkdocs==1.6.0
mkdocs-material==9.5.31
mkdocstrings[python]==0.25.2
twine==5.1.1
wheel==0.44.0
pytest==8.3.2
pytest-cov==5.0.0
ruff==0.6.0
mypy==1.11.1
types-markdown==3.6.0.20240316

5
requirements.txt Normal file
View File

@@ -0,0 +1,5 @@
markdown==3.6
feedgenerator==2.1.0
jinja2==3.1.4
pygments==2.18.0
pymdown-extensions==10.9

View File

@@ -99,15 +99,6 @@ 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,17 +111,3 @@ 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