uEdition 0.9.0__tar.gz → 1.0.0__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.

Potentially problematic release.


This version of uEdition might be problematic. Click here for more details.

Files changed (112) hide show
  1. {uedition-0.9.0 → uedition-1.0.0}/PKG-INFO +13 -3
  2. {uedition-0.9.0 → uedition-1.0.0}/README.md +11 -1
  3. uedition-1.0.0/docs/.readthedocs.yml +16 -0
  4. {uedition-0.9.0 → uedition-1.0.0}/docs/.uEdition.answers +3 -3
  5. uedition-1.0.0/docs/de/changelog.md +72 -0
  6. {uedition-0.9.0/docs/en → uedition-1.0.0/docs/de}/user/content.md +8 -9
  7. uedition-1.0.0/docs/de/user/create.md +15 -0
  8. uedition-1.0.0/docs/de/user/index.md +8 -0
  9. uedition-1.0.0/docs/de/user/installation.md +37 -0
  10. uedition-1.0.0/docs/de/user/language-add.md +14 -0
  11. uedition-1.0.0/docs/en/changelog.md +72 -0
  12. {uedition-0.9.0 → uedition-1.0.0}/docs/en/user/create.md +1 -1
  13. {uedition-0.9.0/docs/de → uedition-1.0.0/docs/en}/user/installation.md +1 -1
  14. uedition-1.0.0/docs/pyproject.toml +27 -0
  15. {uedition-0.9.0 → uedition-1.0.0}/docs/toc.yml +1 -0
  16. {uedition-0.9.0 → uedition-1.0.0}/pyproject.toml +1 -1
  17. {uedition-0.9.0 → uedition-1.0.0}/uedition/CHANGELOG.md +7 -0
  18. {uedition-0.9.0 → uedition-1.0.0}/uedition/__about__.py +1 -1
  19. {uedition-0.9.0 → uedition-1.0.0}/uedition/cli/build.py +57 -53
  20. {uedition-0.9.0 → uedition-1.0.0}/uedition/cli/serve.py +1 -1
  21. {uedition-0.9.0 → uedition-1.0.0}/uedition/ext/language_switcher.js +3 -3
  22. {uedition-0.9.0 → uedition-1.0.0}/uedition/ext/language_switcher.py +3 -2
  23. {uedition-0.9.0 → uedition-1.0.0}/uedition/ext/tei/__init__.py +4 -2
  24. {uedition-0.9.0 → uedition-1.0.0}/uedition/ext/tei/builder.py +3 -1
  25. {uedition-0.9.0 → uedition-1.0.0}/uedition/settings.py +19 -2
  26. uedition-0.9.0/docs/de/user/create.md +0 -13
  27. uedition-0.9.0/docs/en/user/index.md +0 -7
  28. uedition-0.9.0/docs/en/user/installation.md +0 -37
  29. uedition-0.9.0/docs/en/user/language-add.md +0 -14
  30. uedition-0.9.0/docs/pyproject.toml +0 -34
  31. {uedition-0.9.0 → uedition-1.0.0}/.github/dependabot.yml +0 -0
  32. {uedition-0.9.0 → uedition-1.0.0}/.github/workflows/codestyle.yml +0 -0
  33. {uedition-0.9.0 → uedition-1.0.0}/.github/workflows/coverage.yml +0 -0
  34. {uedition-0.9.0 → uedition-1.0.0}/.github/workflows/release.yml +0 -0
  35. {uedition-0.9.0 → uedition-1.0.0}/.github/workflows/tests.yml +0 -0
  36. {uedition-0.9.0 → uedition-1.0.0}/.gitignore +0 -0
  37. {uedition-0.9.0 → uedition-1.0.0}/.pre-commit-config.yaml +0 -0
  38. {uedition-0.9.0 → uedition-1.0.0}/.readthedocs.yml +0 -0
  39. {uedition-0.9.0 → uedition-1.0.0}/LICENSE.txt +0 -0
  40. {uedition-0.9.0 → uedition-1.0.0}/docs/.gitignore +0 -0
  41. {uedition-0.9.0 → uedition-1.0.0}/docs/de/.uEdition.answers +0 -0
  42. {uedition-0.9.0 → uedition-1.0.0}/docs/de/index.md +0 -0
  43. {uedition-0.9.0 → uedition-1.0.0}/docs/de/user/configuration.md +0 -0
  44. {uedition-0.9.0 → uedition-1.0.0}/docs/de/user/language-update.md +0 -0
  45. {uedition-0.9.0 → uedition-1.0.0}/docs/de/user/publish.md +0 -0
  46. {uedition-0.9.0 → uedition-1.0.0}/docs/de/user/update.md +0 -0
  47. {uedition-0.9.0 → uedition-1.0.0}/docs/en/.uEdition.answers +0 -0
  48. {uedition-0.9.0 → uedition-1.0.0}/docs/en/index.md +0 -0
  49. {uedition-0.9.0 → uedition-1.0.0}/docs/en/user/configuration.md +0 -0
  50. {uedition-0.9.0/docs/de → uedition-1.0.0/docs/en}/user/content.md +0 -0
  51. {uedition-0.9.0/docs/de → uedition-1.0.0/docs/en}/user/index.md +0 -0
  52. {uedition-0.9.0/docs/de → uedition-1.0.0/docs/en}/user/language-add.md +0 -0
  53. {uedition-0.9.0 → uedition-1.0.0}/docs/en/user/language-update.md +0 -0
  54. {uedition-0.9.0 → uedition-1.0.0}/docs/en/user/publish.md +0 -0
  55. {uedition-0.9.0 → uedition-1.0.0}/docs/en/user/update.md +0 -0
  56. {uedition-0.9.0 → uedition-1.0.0}/docs/uEdition.yml +0 -0
  57. {uedition-0.9.0 → uedition-1.0.0}/tests/__init__.py +0 -0
  58. {uedition-0.9.0 → uedition-1.0.0}/tests/conftest.py +0 -0
  59. {uedition-0.9.0 → uedition-1.0.0}/tests/fixtures/basic/uEdition.yml +0 -0
  60. {uedition-0.9.0 → uedition-1.0.0}/tests/fixtures/empty/.gitkeep +0 -0
  61. {uedition-0.9.0 → uedition-1.0.0}/tests/fixtures/invalid_core_files/en/_config.yml +0 -0
  62. {uedition-0.9.0 → uedition-1.0.0}/tests/fixtures/invalid_core_files/en/_toc.yml +0 -0
  63. {uedition-0.9.0 → uedition-1.0.0}/tests/fixtures/invalid_core_files/uEdition.yaml +0 -0
  64. {uedition-0.9.0 → uedition-1.0.0}/tests/fixtures/missing_core_files/uEdition.yaml +0 -0
  65. {uedition-0.9.0 → uedition-1.0.0}/tests/fixtures/missing_files/.gitignore +0 -0
  66. {uedition-0.9.0 → uedition-1.0.0}/tests/fixtures/missing_files/en/_config.yml +0 -0
  67. {uedition-0.9.0 → uedition-1.0.0}/tests/fixtures/missing_files/en/_toc.yml +0 -0
  68. {uedition-0.9.0 → uedition-1.0.0}/tests/fixtures/missing_files/en/intro.md +0 -0
  69. {uedition-0.9.0 → uedition-1.0.0}/tests/fixtures/missing_files/references.bib +0 -0
  70. {uedition-0.9.0 → uedition-1.0.0}/tests/fixtures/missing_files/uEdition.yaml +0 -0
  71. {uedition-0.9.0 → uedition-1.0.0}/tests/fixtures/missing_toc_root/en/_config.yml +0 -0
  72. {uedition-0.9.0 → uedition-1.0.0}/tests/fixtures/missing_toc_root/en/_toc.yml +0 -0
  73. {uedition-0.9.0 → uedition-1.0.0}/tests/fixtures/missing_toc_root/uEdition.yaml +0 -0
  74. {uedition-0.9.0 → uedition-1.0.0}/tests/fixtures/missing_toc_root_file/en/_config.yml +0 -0
  75. {uedition-0.9.0 → uedition-1.0.0}/tests/fixtures/missing_toc_root_file/en/_toc.yml +0 -0
  76. {uedition-0.9.0 → uedition-1.0.0}/tests/fixtures/missing_toc_root_file/uEdition.yaml +0 -0
  77. {uedition-0.9.0 → uedition-1.0.0}/tests/fixtures/multilang/.gitignore +0 -0
  78. {uedition-0.9.0 → uedition-1.0.0}/tests/fixtures/multilang/de/_config.yml +0 -0
  79. {uedition-0.9.0 → uedition-1.0.0}/tests/fixtures/multilang/de/_toc.yml +0 -0
  80. {uedition-0.9.0 → uedition-1.0.0}/tests/fixtures/multilang/de/a-1-page.md +0 -0
  81. {uedition-0.9.0 → uedition-1.0.0}/tests/fixtures/multilang/de/a-2-page.md +0 -0
  82. {uedition-0.9.0 → uedition-1.0.0}/tests/fixtures/multilang/de/a-page.md +0 -0
  83. {uedition-0.9.0 → uedition-1.0.0}/tests/fixtures/multilang/de/b-page.md +0 -0
  84. {uedition-0.9.0 → uedition-1.0.0}/tests/fixtures/multilang/de/intro.md +0 -0
  85. {uedition-0.9.0 → uedition-1.0.0}/tests/fixtures/multilang/en/_config.yml +0 -0
  86. {uedition-0.9.0 → uedition-1.0.0}/tests/fixtures/multilang/en/_toc.yml +0 -0
  87. {uedition-0.9.0 → uedition-1.0.0}/tests/fixtures/multilang/en/a-1-page.md +0 -0
  88. {uedition-0.9.0 → uedition-1.0.0}/tests/fixtures/multilang/en/a-2-page.md +0 -0
  89. {uedition-0.9.0 → uedition-1.0.0}/tests/fixtures/multilang/en/a-page.md +0 -0
  90. {uedition-0.9.0 → uedition-1.0.0}/tests/fixtures/multilang/en/b-page.md +0 -0
  91. {uedition-0.9.0 → uedition-1.0.0}/tests/fixtures/multilang/en/intro.md +0 -0
  92. {uedition-0.9.0 → uedition-1.0.0}/tests/fixtures/multilang/references.bib +0 -0
  93. {uedition-0.9.0 → uedition-1.0.0}/tests/fixtures/multilang/toc.yml +0 -0
  94. {uedition-0.9.0 → uedition-1.0.0}/tests/fixtures/multilang/uEdition.yaml +0 -0
  95. {uedition-0.9.0 → uedition-1.0.0}/tests/fixtures/yaml/uEdition.yaml +0 -0
  96. {uedition-0.9.0 → uedition-1.0.0}/tests/test_about.py +0 -0
  97. {uedition-0.9.0 → uedition-1.0.0}/tests/test_build.py +0 -0
  98. {uedition-0.9.0 → uedition-1.0.0}/tests/test_check.py +0 -0
  99. {uedition-0.9.0 → uedition-1.0.0}/tests/test_ext/test_config.py +0 -0
  100. {uedition-0.9.0 → uedition-1.0.0}/tox.ini +0 -0
  101. {uedition-0.9.0 → uedition-1.0.0}/uedition/__init__.py +0 -0
  102. {uedition-0.9.0 → uedition-1.0.0}/uedition/__main__.py +0 -0
  103. {uedition-0.9.0 → uedition-1.0.0}/uedition/cli/__init__.py +0 -0
  104. {uedition-0.9.0 → uedition-1.0.0}/uedition/cli/check.py +0 -0
  105. {uedition-0.9.0 → uedition-1.0.0}/uedition/cli/create.py +0 -0
  106. {uedition-0.9.0 → uedition-1.0.0}/uedition/cli/language.py +0 -0
  107. {uedition-0.9.0 → uedition-1.0.0}/uedition/cli/update.py +0 -0
  108. {uedition-0.9.0 → uedition-1.0.0}/uedition/ext/__init__.py +0 -0
  109. {uedition-0.9.0 → uedition-1.0.0}/uedition/ext/config.py +0 -0
  110. {uedition-0.9.0 → uedition-1.0.0}/uedition/ext/language_switcher.css +0 -0
  111. {uedition-0.9.0 → uedition-1.0.0}/uedition/ext/tei/parser.py +0 -0
  112. {uedition-0.9.0 → uedition-1.0.0}/uedition/ext/tei/tei_download.js +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: uEdition
3
- Version: 0.9.0
3
+ Version: 1.0.0
4
4
  Project-URL: Documentation, https://github.com/uEdition/uEdition#readme
5
5
  Project-URL: Issues, https://github.com/uEdition/uEdition/issues
6
6
  Project-URL: Source, https://github.com/uEdition/uEdition
@@ -15,7 +15,7 @@ Classifier: Programming Language :: Python :: Implementation :: CPython
15
15
  Classifier: Programming Language :: Python :: Implementation :: PyPy
16
16
  Requires-Python: >=3.10
17
17
  Requires-Dist: copier<10.0.0,>=9.0.0
18
- Requires-Dist: jupyter-book<1.0.0,>=0.15.1
18
+ Requires-Dist: jupyter-book<2.0.0,>=1.0.0
19
19
  Requires-Dist: livereload
20
20
  Requires-Dist: lxml<6.0.0,>=4.9.2
21
21
  Requires-Dist: pydantic-settings<3.0.0,>=2.0.0
@@ -48,6 +48,16 @@ The recommended installation for use is via `pipx`:
48
48
  pipx install uedition
49
49
  ```
50
50
 
51
+ All commands can then be run via
52
+
53
+ ```console
54
+ uEdition {command}
55
+ ```
56
+
57
+ ## Documentation
58
+
59
+ Full documentation is available at [https://uedition.readthedocs.io](https://uedition.readthedocs.io).
60
+
51
61
  ## License
52
62
 
53
- `uedition` is distributed under the terms of the [MIT](https://spdx.org/licenses/MIT.html) license.
63
+ The μEdition is distributed under the terms of the [MIT](https://spdx.org/licenses/MIT.html) license.
@@ -22,6 +22,16 @@ The recommended installation for use is via `pipx`:
22
22
  pipx install uedition
23
23
  ```
24
24
 
25
+ All commands can then be run via
26
+
27
+ ```console
28
+ uEdition {command}
29
+ ```
30
+
31
+ ## Documentation
32
+
33
+ Full documentation is available at [https://uedition.readthedocs.io](https://uedition.readthedocs.io).
34
+
25
35
  ## License
26
36
 
27
- `uedition` is distributed under the terms of the [MIT](https://spdx.org/licenses/MIT.html) license.
37
+ The μEdition is distributed under the terms of the [MIT](https://spdx.org/licenses/MIT.html) license.
@@ -0,0 +1,16 @@
1
+ version: 2
2
+
3
+ build:
4
+ os: ubuntu-22.04
5
+ tools:
6
+ python: "3.11"
7
+ commands:
8
+ - "pip install hatch"
9
+ - "hatch run build"
10
+ - "mkdir $READTHEDOCS_OUTPUT"
11
+ - "mv site $READTHEDOCS_OUTPUT/html"
12
+
13
+ python:
14
+ install:
15
+ - method: pip
16
+ path: .
@@ -1,9 +1,9 @@
1
1
  # Changes here will be overwritten by Copier
2
- _commit: v0.0.11-2-gf9997e6
3
- _src_path: ../uEdition-project-template/
2
+ _commit: v0.1.8
3
+ _src_path: gh:uEdition/uEdition-project-template
4
4
  author_email: mark.hall@work.room3b.eu
5
5
  author_name: Mark Hall
6
6
  edition_name: μEdition
7
- publishing: ''
7
+ publishing: readthedocs
8
8
  repository_branch: main
9
9
  repository_url: https://github.com/uEdition/uEdition
@@ -0,0 +1,72 @@
1
+ # Änderungsgeschichte
2
+
3
+ ## 1.0.0 (31.01.2024)
4
+
5
+ * **Neu**: TEI Output ist optional
6
+ * **Aktualisiert**: JupyterBook auf Version 1 aktualisert
7
+ * **Aktualisert**: Sprachwechsler wird nicht angezeigt, wenn nur eine Sprache konfiguriert ist
8
+ * **Bugfix**: Einen Bug im Ausgabepfadname korrigiert
9
+ * **Bugfix**: Einen Bug im Sprachwechsler behoben
10
+
11
+ ## 0.9.0 (26.01.2024)
12
+
13
+ * **Neu**: TEI Output hinzugefügt
14
+ * **Aktualisiert**: Bereits beantwortet Fragen überspringen
15
+
16
+ ## 0.8.0 (12.01.2024)
17
+
18
+ * **Neu**: Unterstützung von Read the Docs als Publikationsplatform
19
+ * **Bugfix**: Softwareabhängigkeiten aktualisiert
20
+
21
+ ## 0.7.0 (04.07.2023)
22
+
23
+ * **Neu**: Unterstützung für zentrale, statische Dateien
24
+ * **Bugfix**: Fehlende Fortschrittsanzeige hinzugefügt
25
+
26
+ ## 0.6.1 (04.07.2023)
27
+
28
+ * **Aktualisiert**: Softwareabhängigkeiten aktualisiert
29
+
30
+ ## 0.6.0 (04.07.2023)
31
+
32
+ * **Neu**: Zentrale Konfiguration und Inhaltsverzeichnis
33
+
34
+ ## 0.5.0 (30.06.2023)
35
+
36
+ * **Neu**: Copier in die uEdition integriert
37
+
38
+ ## 0.4.0 (26.06.2023)
39
+
40
+ * **Neu**: Sprachwechsler hinzugefügt
41
+
42
+ ## 0.3.1 (22.06.2023)
43
+
44
+ * **Bugfix**: Sicherstellen dass der Ausgabepfad existiert
45
+
46
+ ## 0.3.0 (22.06.2023)
47
+
48
+ * **Neu**: Startseite mit automatischer Spracherkennung integriert
49
+
50
+ ## 0.2.1 (16.06.2023)
51
+
52
+ * **Bugfix**: Abschnittsformatierungsbug behoben
53
+
54
+ ## 0.2.0 (16.06.2023)
55
+
56
+ * **Neu**: Das TEI Layout auf vertikal umgestellt
57
+
58
+ ## 0.1.0 (13.06.2023)
59
+
60
+ * **Neu**: TEI Input hinzugefügt
61
+
62
+ ## 0.0.3 (17.05.2023)
63
+
64
+ * **Bugfix**: Korrektur im Softwarepublikationsprozess
65
+
66
+ ## 0.0.2 (17.05.2023)
67
+
68
+ * **Bugfix**: Ausgabepfad korrekt handhaben
69
+
70
+ ## 0.0.1 (17.05.2023)
71
+
72
+ * **Neu**: Erste Version
@@ -1,12 +1,11 @@
1
- # Writing Content
2
-
3
- The μEdition uses [Jupyter Book](https://jupyterbook.org) as its underlying technology for turning your text into a
4
- publishable website. Each language in the μEdition is a separate Jupyter Book and the μEdition provides the glue that
5
- merges the individual outputs together into a single site. This is achieved by moving the Jupyter Book configuration
6
- into shared configuration files. When the μEdition builds the final website, language-specific versions of the
7
- configurations are added to each language-specific Jupyter Book, before the Jupyter Book build process is then run
8
- for each language. Due to this structure, most of the guidance that the Jupyter Book project provides for writing
9
- and configuring Jupyter Book projects can be used in the μEdition.
1
+ # Inhalte hinzufügen
2
+
3
+ Die μEdition nutzt [Jupyter Book](https://jupyterbook.org) um aus den Inhalten eine Webseite zu generieren,
4
+ welche dann veröffentlicht werden kann. Wenn die Webseite generiert wird, generiert die μEdition zuerst die
5
+ Webseiten für die einzelnen Sprachen und fügt dann die notwendigen Element hinzu um die einzelnen Sprachen
6
+ zusammenzufügen. Da die μEdition auf dem Jupyter Book aufbaut, sind der Großteil der Dokumentation des
7
+ Jupyter Book Projekts auch für die μEdition nutzbar. Der einzige Unterschied ist, dass die μEdition eine
8
+ Konfigurationsdatei und ein Inhaltsverzeichnisse für alle Sprachen nutzt.
10
9
 
11
10
  ## Structuring the μEdition
12
11
 
@@ -0,0 +1,15 @@
1
+ # Eine μEdition erstellen
2
+
3
+ Jetzt wo alle Vorraussetzungen installiert sind, kann die erste μEdition erstellt werden. Auf der Kommandozeile
4
+ navigieren sie in den Ordner in dem die μEdition erstellt werden soll und führen sie folgenden Befehl aus:
5
+
6
+ :::{code-block} console
7
+ $ copier copy gh:uEdition/uEdition-project-template my-edition
8
+ :::
9
+
10
+ Ersetzen sie `my-edition` mit dem Ordernamen in dem die μEdition erstellt werden soll. Der Installationsvorgang
11
+ wird eine Reihe an Fragen stellen, um die neue μEdition zu konfigurieren und dann das μEditionsskeleton in dem
12
+ Ordern erzeugen.
13
+
14
+ Navigieren sie danach auf der Kommandozeile in den neuen Ordern und führen alle weiteren Befehle innerhalb des
15
+ Ordners aus.
@@ -0,0 +1,8 @@
1
+ # Anleitung für Nutzer und Nutzerinnen
2
+
3
+ Willkommen in der Nutzeranleitung für die μEdition, welche die Herausgeber durch die Abläufe zum
4
+ {doc}`Erstellen einer neuen μEdition <create>`, {doc}`hinzufügen einer Sprache <language-add>`,
5
+ {doc}`Erstellung von Inhalten <content>` und {doc}`Veröffentlichen mittels GitHub Pages <publish>` führt.
6
+
7
+ Die Anleitung erwartet keine großen, technischen Vorkenntnisse, ausser Grundkenntnisse über die Nutzung der
8
+ Kommandozeile. Zusätzlich werden für die Veröffentlichung über GitHub Pages grundlegende Git Kenntnisse benötigt.
@@ -0,0 +1,37 @@
1
+ # Installation
2
+
3
+ Die μEdition baut auf einer Reihe von Werkzeugen auf und um die erste μEdition zu erstellen, müssen diese Werkzeuge
4
+ installiert werden.
5
+
6
+ Die μEdition nutzt Python und unterstützt Versionen 3.10 und 3.11 [^python-version]. Bitte
7
+ [installieren sie die Python Version für ihr Betriebssystem](https://python.org/downloads).
8
+
9
+ Für die Erstellung einer μEdition wird ein Werkzeug namens [Copier](https://copier.readthedocs.io/en/stable/) genutzt.
10
+ Für die Installation aller weiteren Abhängigkeiten und um die verschiedenen μEdition Funktionen aufzurufen wird
11
+ [Hatch](https://hatch.pypa.io) genutzt.
12
+
13
+ Die einfachste Weise um beide zu installieren ist mittels [pipx](https://pypa.github.io/pipx/), welches
14
+ [von hier installiert werden kann](https://pypa.github.io/pipx/installation/). Nach der pipx installation nutzen sie
15
+ die folgenden zwei Befehle um Copier und Hatch zu installieren:
16
+
17
+ :::{code} console
18
+ $ pipx install copier
19
+ $ pipx install hatch
20
+ :::
21
+
22
+ Um zu überprüfen, dass die Installationen erfolgreich waren, nutzen sie die folgenden Befehle:
23
+
24
+ :::{code} console
25
+ $ copier
26
+ $ hatch
27
+ :::
28
+
29
+ Wenn beide Befehle eine Zusammenfassung der verfügbaren Optionen und Befehle für die zwei Werkzeuge anzeigen, dann
30
+ sind beide Werkzeuge korrekt installiert.
31
+
32
+ Um im Team zusammenzuarbeiten und für die GitHub Pages Veröffentlichungsfunktionalität, muss auch das Versionskontrollwerkzeug
33
+ [Git](https://git-scm.com/downloads) installiert sein. Eine vollständige Einführung in Git übersteigt den Platz hier,
34
+ aber es gibt viele gute Tutorials im Netz und die [offizielle Dokumentation](https://git-scm.com/doc) ist auch hilfreich.
35
+
36
+ [^python-version]: The μEdition wird mit Python 3.10 and 3.11 getested. Die μEdition funktioniert möglicherweise auch mit
37
+ neueren Python Versionen, ist aber auf diesen noch nicht getestet worden.
@@ -0,0 +1,14 @@
1
+ # Eine Sprache hinzufügen
2
+
3
+ In der μEdition ist Mehrsprachigkeit eine Kernfunktionalität. Das bedeutet, dass selbst wenn die Edition nur in einer
4
+ einzigen Sprache veröffentlicht werden soll, diese Sprache trotzdem explizit konfiguriert werden muss.
5
+
6
+ Um der μEdition eine Sprache hinzuzufügen, führen sie folgenden Befehl aus:
7
+
8
+ :::{code-block} console
9
+ $ hatch run uEdition language add ORDERNAME
10
+ :::
11
+
12
+ Ersetzen sie `ORDNERNAME` mit dem Namen des Orderners in dem die Inhalte in der Sprache gespeichert werden. Der Vorgang
13
+ wird ein paar Detailfragen zu der neuen Sprache abfragen und dann ein Inhaltsskelet in dem Ordern erzeugen, welches
14
+ dann bereit ist um ediert zu werden.
@@ -0,0 +1,72 @@
1
+ # Changelog
2
+
3
+ ## 1.0.0 (31.01.2024)
4
+
5
+ * **New**: TEI output optional
6
+ * **Update**: JupyterBook updated to version 1
7
+ * **Update**: Hide the language switcher when only one language is configured
8
+ * **Bugfix**: Fix a bug in the output path naming
9
+ * **Bugfix**: fixed a bug in the language switcher
10
+
11
+ ## 0.9.0 (26.01.2024)
12
+
13
+ * **New**: Add TEI Output
14
+ * **Update**: Skip previously answered questions
15
+
16
+ ## 0.8.0 (12.01.2024)
17
+
18
+ * **New**: Support publishing via Read the Docs
19
+ * **Bugfix**: Dependency updates
20
+
21
+ ## 0.7.0 (04.07.2023)
22
+
23
+ * **New**: Support shared static files
24
+ * **Bugfix**: Added missing progress update
25
+
26
+ ## 0.6.1 (04.07.2023)
27
+
28
+ * **Update**: Compatability updates
29
+
30
+ ## 0.6.0 (04.07.2023)
31
+
32
+ * **New**: Move to a shared central configuration and TOC
33
+
34
+ ## 0.5.0 (30.06.2023)
35
+
36
+ * **New**: Directly integrate copier
37
+
38
+ ## 0.4.0 (26.06.2023)
39
+
40
+ * **New**: Added the language switcher extension
41
+
42
+ ## 0.3.1 (22.06.2023)
43
+
44
+ * **Bugfix**: Ensure that the output folder exists
45
+
46
+ ## 0.3.0 (22.06.2023)
47
+
48
+ * **New**: Add a language-detecting landing page
49
+
50
+ ## 0.2.1 (16.06.2023)
51
+
52
+ * **Bugfix**: Fix a section-wrapping bug
53
+
54
+ ## 0.2.0 (16.06.2023)
55
+
56
+ * **New**: Switch the TEI layout to a vertical structure
57
+
58
+ ## 0.1.0 (13.06.2023)
59
+
60
+ * **New**: Added basic TEI parsing
61
+
62
+ ## 0.0.3 (17.05.2023)
63
+
64
+ * **Bugfix**: Fix the release process
65
+
66
+ ## 0.0.2 (17.05.2023)
67
+
68
+ * **Bugfix**: Fix output path handling
69
+
70
+ ## 0.0.1 (17.05.2023)
71
+
72
+ * **New**: Initial release
@@ -4,7 +4,7 @@ With all the pre-requisites installed correctly, you are now ready to create you
4
4
  navigate to the folder where you want to create your μEdition and run:
5
5
 
6
6
  :::{code-block} console
7
- $ copier copy https://github.com/uEdition/uEdition-project-template my-edition
7
+ $ copier copy gh:uEdition/uEdition-project-template my-edition
8
8
  :::
9
9
 
10
10
  Replace `my-edition` with the name of the folder you want your edition to be created in. The setup process will ask
@@ -12,7 +12,7 @@ is used.
12
12
 
13
13
  The easiest way to install both Copier and Hatch is via [pipx](https://pypa.github.io/pipx/), which you can
14
14
  [install from here](https://pypa.github.io/pipx/installation/). When you have pipx installed, then on the commandline
15
- run the following command to install Copier:
15
+ run the following command to install Copier and Hatch:
16
16
 
17
17
  :::{code} console
18
18
  $ pipx install copier
@@ -0,0 +1,27 @@
1
+ [build-system]
2
+ requires = ["hatchling"]
3
+ build-backend = "hatchling.build"
4
+
5
+ [project]
6
+ name = "uedition_docs"
7
+ description = 'The μEdition Documentation'
8
+ requires-python = ">=3.10"
9
+ keywords = []
10
+ authors = [{ name = "Mark Hall", email = "mark.hall@work.room3b.eu" }]
11
+ classifiers = []
12
+ dependencies = []
13
+ version = "1.0.0"
14
+
15
+ [project.urls]
16
+ Documentation = "https://github.com/uEdition/uEdition/-#readme"
17
+ Issues = "https://github.com/uEdition/uEdition/-/issues"
18
+ Source = "https://github.com/uEdition/uEdition/-"
19
+
20
+ [tool.hatch.envs.default]
21
+ dependencies = ["uedition>=0.9.0",]
22
+ skip-install = true
23
+
24
+ [tool.hatch.envs.default.scripts]
25
+ build = "uEdition build {args}"
26
+ serve = "uEdition serve {args}"
27
+ update = "uEdition update {args}"
@@ -11,3 +11,4 @@ chapters:
11
11
  - file: user/publish
12
12
  - file: user/update
13
13
  - file: user/language-update
14
+ - file: changelog
@@ -20,7 +20,7 @@ classifiers = [
20
20
  ]
21
21
  dependencies = [
22
22
  "copier>=9.0.0,<10.0.0",
23
- "jupyter-book>=0.15.1,<1.0.0",
23
+ "jupyter-book>=1.0.0,<2.0.0",
24
24
  "lxml>=4.9.2,<6.0.0",
25
25
  "livereload",
26
26
  "pydantic>=2.0.0,<3.0.0",
@@ -1,5 +1,12 @@
1
1
  # Changelog
2
2
 
3
+ ## Dev
4
+
5
+ * **New**: Add a switch to turn off the TEI generation
6
+ * **Update**: Don't enable the language switcher when only one language is configured
7
+ * **Bugfix**: Fixed a bug in the TEI generation
8
+ * **Bugfix**: Fixed the builder output paths
9
+
3
10
  ## 0.9.0
4
11
 
5
12
  * **New**: Added TEI output
@@ -2,4 +2,4 @@
2
2
  #
3
3
  # SPDX-License-Identifier: MIT
4
4
  """About this package."""
5
- __version__ = "0.9.0"
5
+ __version__ = "1.0.0"
@@ -15,11 +15,11 @@ from uedition.settings import reload_settings, settings
15
15
 
16
16
  def landing_build() -> None:
17
17
  """Build the landing page."""
18
- if not path.exists(settings["output"]):
19
- makedirs(settings["output"], exist_ok=True)
20
- with open(path.join(settings["output"], "config.json"), "w") as out_f:
18
+ if not path.exists(settings["output"]["path"]):
19
+ makedirs(settings["output"]["path"], exist_ok=True)
20
+ with open(path.join(settings["output"]["path"], "config.json"), "w") as out_f:
21
21
  json.dump(settings, out_f)
22
- with open(path.join(settings["output"], "index.html"), "w") as out_f:
22
+ with open(path.join(settings["output"]["path"], "index.html"), "w") as out_f:
23
23
  out_f.write(
24
24
  """\
25
25
  <!DOCTYPE html>
@@ -151,37 +151,39 @@ def full_build(lang: dict) -> None:
151
151
  "build",
152
152
  "--all",
153
153
  "--path-output",
154
- path.join("_build", lang["code"]),
154
+ path.join("_build", lang["path"]),
155
155
  lang["path"],
156
156
  ],
157
157
  check=False,
158
158
  )
159
- subprocess.run(
160
- [ # noqa: S603, S607
161
- "jupyter-book",
162
- "build",
163
- "--all",
164
- "--path-output",
165
- path.join("_build", lang["code"]),
166
- "--builder",
167
- "custom",
168
- "--custom-builder",
169
- "tei",
170
- lang["path"],
171
- ],
172
- check=False,
173
- )
174
- copytree(
175
- path.join("_build", lang["code"], "_build", "html"),
176
- path.join(settings["output"], lang["code"]),
177
- dirs_exist_ok=True,
178
- )
159
+ if settings["output"]["tei"]:
160
+ subprocess.run(
161
+ [ # noqa: S603, S607
162
+ "jupyter-book",
163
+ "build",
164
+ "--all",
165
+ "--path-output",
166
+ path.join("_build", lang["path"]),
167
+ "--builder",
168
+ "custom",
169
+ "--custom-builder",
170
+ "tei",
171
+ lang["path"],
172
+ ],
173
+ check=False,
174
+ )
179
175
  copytree(
180
- path.join("_build", lang["code"], "_build", "tei"),
181
- path.join(settings["output"], lang["code"]),
182
- ignore=ignore_patterns("_sphinx_design_static"),
176
+ path.join("_build", lang["path"], "_build", "html"),
177
+ path.join(settings["output"]["path"], lang["path"]),
183
178
  dirs_exist_ok=True,
184
179
  )
180
+ if settings["output"]["tei"]:
181
+ copytree(
182
+ path.join("_build", lang["path"], "_build", "tei"),
183
+ path.join(settings["output"]["path"], lang["path"]),
184
+ ignore=ignore_patterns("_sphinx_design_static"),
185
+ dirs_exist_ok=True,
186
+ )
185
187
 
186
188
 
187
189
  def partial_build(lang: dict) -> None:
@@ -192,41 +194,43 @@ def partial_build(lang: dict) -> None:
192
194
  "jupyter-book",
193
195
  "build",
194
196
  "--path-output",
195
- path.join("_build", lang["code"]),
197
+ path.join("_build", lang["path"]),
196
198
  lang["path"],
197
199
  ],
198
200
  check=False,
199
201
  )
200
- subprocess.run(
201
- [ # noqa: S603, S607
202
- "jupyter-book",
203
- "build",
204
- "--path-output",
205
- path.join("_build", lang["code"]),
206
- "--builder",
207
- "custom",
208
- "--custom-builder",
209
- "tei",
210
- lang["path"],
211
- ],
212
- check=False,
213
- )
214
- copytree(
215
- path.join("_build", lang["code"], "_build", "html"),
216
- path.join(settings["output"], lang["code"]),
217
- dirs_exist_ok=True,
218
- )
202
+ if settings["output"]["tei"]:
203
+ subprocess.run(
204
+ [ # noqa: S603, S607
205
+ "jupyter-book",
206
+ "build",
207
+ "--path-output",
208
+ path.join("_build", lang["path"]),
209
+ "--builder",
210
+ "custom",
211
+ "--custom-builder",
212
+ "tei",
213
+ lang["path"],
214
+ ],
215
+ check=False,
216
+ )
219
217
  copytree(
220
- path.join("_build", lang["code"], "_build", "tei"),
221
- path.join(settings["output"], lang["code"]),
222
- ignore=ignore_patterns("_sphinx_design_static"),
218
+ path.join("_build", lang["path"], "_build", "html"),
219
+ path.join(settings["output"]["path"], lang["path"]),
223
220
  dirs_exist_ok=True,
224
221
  )
222
+ if settings["output"]["tei"]:
223
+ copytree(
224
+ path.join("_build", lang["path"], "_build", "tei"),
225
+ path.join(settings["output"]["path"], lang["path"]),
226
+ ignore=ignore_patterns("_sphinx_design_static"),
227
+ dirs_exist_ok=True,
228
+ )
225
229
 
226
230
 
227
231
  def run() -> None:
228
232
  """Build the full uEdition."""
229
- if path.exists(settings["output"]):
230
- rmtree(settings["output"])
233
+ if path.exists(settings["output"]["path"]):
234
+ rmtree(settings["output"]["path"])
231
235
  for lang in settings["languages"]:
232
236
  full_build(lang)
@@ -39,4 +39,4 @@ def run() -> None:
39
39
  server.watch(path.join("static", "**", "*.*"), full_cmd)
40
40
  server.watch(path.join(lang["path"], "**", "*.*"), partial_cmd)
41
41
  server.watch("uEdition.*", lambda: [cmd() for cmd in full_rebuilds])
42
- server.serve(root="site", port=8000)
42
+ server.serve(root=settings["output"]["path"], port=8000)
@@ -1,4 +1,4 @@
1
- (function() {
1
+ (function () {
2
2
  async function setup() {
3
3
  try {
4
4
  let buttonContainer = document.querySelector('.article-header-buttons');
@@ -39,7 +39,7 @@
39
39
  link.classList.add('fw-bold');
40
40
  }
41
41
  link.innerHTML = langConfig.label;
42
- link.setAttribute('href', DOCUMENTATION_OPTIONS.URL_ROOT + '../' + langConfig.path + '/' + DOCUMENTATION_OPTIONS.pagename + DOCUMENTATION_OPTIONS.LINK_SUFFIX);
42
+ link.setAttribute('href', document.querySelector("html").getAttribute("data-content_root") + '../' + langConfig.path + '/' + DOCUMENTATION_OPTIONS.pagename + DOCUMENTATION_OPTIONS.LINK_SUFFIX);
43
43
 
44
44
  item.append(link);
45
45
  menu.append(item);
@@ -50,7 +50,7 @@
50
50
  container.append(button);
51
51
  container.append(menu);
52
52
  buttonContainer.prepend(container);
53
- } catch(e) {
53
+ } catch (e) {
54
54
  console.error(e);
55
55
  }
56
56
  }
@@ -32,5 +32,6 @@ def copy_custom_files(app: Sphinx, exc: bool) -> None: # noqa: FBT001
32
32
 
33
33
  def setup(app: Sphinx) -> None:
34
34
  """Set up the Language switcher extension."""
35
- app.connect("builder-inited", add_language_switcher)
36
- app.connect("build-finished", copy_custom_files)
35
+ if len(settings["languages"]) > 1:
36
+ app.connect("builder-inited", add_language_switcher)
37
+ app.connect("build-finished", copy_custom_files)
@@ -7,6 +7,7 @@ from sphinx.application import Sphinx
7
7
  from sphinx.util.fileutil import copy_asset_file
8
8
 
9
9
  from uedition.ext.tei import parser
10
+ from uedition.settings import settings
10
11
 
11
12
 
12
13
  def add_language_switcher(app: Sphinx) -> None:
@@ -26,5 +27,6 @@ def copy_custom_files(app: Sphinx, exc: bool) -> None: # noqa: FBT001
26
27
  def setup(app: Sphinx) -> None:
27
28
  """Set up the TEI Sphinx extension."""
28
29
  parser.setup(app)
29
- app.connect("builder-inited", add_language_switcher)
30
- app.connect("build-finished", copy_custom_files)
30
+ if settings["output"]["tei"]:
31
+ app.connect("builder-inited", add_language_switcher)
32
+ app.connect("build-finished", copy_custom_files)
@@ -56,6 +56,8 @@ MAPPINGS = [
56
56
  },
57
57
  {"cls": nodes.inline, "tagname": "hi", "type": "inline"},
58
58
  {"cls": nodes.literal, "tagname": "hi", "type": "inline"},
59
+ {"cls": nodes.strong, "tagname": "hi", "type": "inline", "attrs": [{"target": "rend", "value": "bold"}]},
60
+ {"cls": nodes.emphasis, "tagname": "hi", "type": "inline", "attrs": [{"target": "rend", "value": "italic"}]},
59
61
  {"cls": nodes.label, "tagname": "label", "type": "inline"},
60
62
  {
61
63
  "cls": nodes.reference,
@@ -139,7 +141,7 @@ class TEITranslator(nodes.GenericNodeVisitor):
139
141
  for attr in node.attlist():
140
142
  if "source" in attr_rule and attr[0] == attr_rule["source"]:
141
143
  output_attrs[attr_rule["target"]] = attr[1]
142
- if isinstance(output_attrs[attr_rule["target"]], list):
144
+ if attr_rule["target"] in output_attrs and isinstance(output_attrs[attr_rule["target"]], list):
143
145
  joiner = attr_rule["join"] if "join" in attr_rule else " "
144
146
  if "format" in attr_rule:
145
147
  output_attrs[attr_rule["target"]] = joiner.join(
@@ -6,10 +6,11 @@
6
6
  All application settings are accessed via the `settings` dictionary.
7
7
  """
8
8
  import os
9
- from typing import Any, Dict, Tuple, Type
9
+ from typing import Annotated, Any, Dict, Tuple, Type
10
10
 
11
11
  from pydantic import BaseModel
12
12
  from pydantic.fields import FieldInfo
13
+ from pydantic.functional_validators import BeforeValidator
13
14
  from pydantic_settings import BaseSettings, PydanticBaseSettingsSource
14
15
  from yaml import safe_load
15
16
 
@@ -87,6 +88,22 @@ class AuthorSettings(BaseModel):
87
88
  """The author's contact e-mail."""
88
89
 
89
90
 
91
+ class OuputSettings(BaseModel):
92
+ """Settings for the output configuration."""
93
+
94
+ path: str = "docs"
95
+ """The output path."""
96
+ tei: bool = True
97
+ """Whether to generate TEI output."""
98
+
99
+
100
+ def convert_output_str_to_dict(value: str | dict) -> dict:
101
+ """Convert the simple output directory string to a dictionary."""
102
+ if isinstance(value, str):
103
+ return {"path": value}
104
+ return value
105
+
106
+
90
107
  class Settings(BaseSettings):
91
108
  """Application settings."""
92
109
 
@@ -96,7 +113,7 @@ class Settings(BaseSettings):
96
113
  """The author settings."""
97
114
  languages: list[LanguageSetting] = []
98
115
  """The configured languages."""
99
- output: str = "docs"
116
+ output: Annotated[OuputSettings, BeforeValidator(convert_output_str_to_dict)] = OuputSettings()
100
117
  """The output directory."""
101
118
  repository: RepositorySettings = RepositorySettings()
102
119
  """The repository settings."""
@@ -1,13 +0,0 @@
1
- # Creating a μEdition
2
-
3
- With all the pre-requisites installed correctly, you are now ready to create your first μEdition. On the commandline
4
- navigate to the folder where you want to create your μEdition and run:
5
-
6
- :::{code-block} console
7
- $ copier copy https://github.com/uEdition/uEdition-project-template my-edition
8
- :::
9
-
10
- Replace `my-edition` with the name of the folder you want your edition to be created in. The setup process will ask
11
- you a few questions about your new μEdition and create a skeleton μEdition in the folder you specified.
12
-
13
- On the commandline, navigate into that new folder and all further commands are to be run inside that folder.
@@ -1,7 +0,0 @@
1
- # User Guide
2
-
3
- Welcome to the μEdition User Guide, which guides you, the editor, through the process of {doc}`creating a new μEdition <create>`,
4
- {doc}`adding languages <language-add>` and {doc}`content <content>` to it, and {doc}`publishing it to GitHub Pages <publish>`.
5
-
6
- The user guide tries to assume as little prior knowledge as possible, but you are expected to be able to navigate the
7
- command-line. Additionally, for publishing via GitHub Pages, basic Git knowledge is also required.
@@ -1,37 +0,0 @@
1
- # Installation
2
-
3
- The μEdition is built on top of a set of other tools and in order to create our first μEdition, it is necessary to first
4
- install these dependencies.
5
-
6
- The μEdition is built in Python and supports version 3.10 and 3.11 [^python-version]. In order to use it, please
7
- [install an appropriate version of Python for your operating system](https://python.org/downloads).
8
-
9
- For the initial creation of a new μEdition, the μEdition uses a tool called [Copier](https://copier.readthedocs.io/en/stable/).
10
- To install all required μEdition dependencies and to run the various μEdition tools, [Hatch](https://hatch.pypa.io)
11
- is used.
12
-
13
- The easiest way to install both Copier and Hatch is via [pipx](https://pypa.github.io/pipx/), which you can
14
- [install from here](https://pypa.github.io/pipx/installation/). When you have pipx installed, then on the commandline
15
- run the following command to install Copier:
16
-
17
- :::{code} console
18
- $ pipx install copier
19
- $ pipx install hatch
20
- :::
21
-
22
- You can test that your installation has been successful by running
23
-
24
- :::{code} console
25
- $ copier
26
- $ hatch
27
- :::
28
-
29
- If the two commands show you a summary of the available options and commands, then the core tools are installed correctly.
30
-
31
- In order to work collaboratively and for the GitHub Pages publishing functionality to work, you also need to install the
32
- version control system [Git](https://git-scm.com/downloads). Providing you with a full intro to using git exceeds the
33
- space we have here, but there are many good git tutorials out there and there is also the
34
- [official documentation](https://git-scm.com/doc).
35
-
36
- [^python-version]: The μEdition is tested using Python 3.10 and 3.11. It may also work on newer Python version,
37
- it just hasn't been tested on those.
@@ -1,14 +0,0 @@
1
- # Adding a Language
2
-
3
- The μEdition has multi-language support as a core principle. Thus, even if you are planning to release your edition in
4
- a single language only, you need to explicitly configure this one language.
5
-
6
- To add a language to your μEdition, run the following command:
7
-
8
- :::{code-block} console
9
- $ hatch run uEdition language add FOLDER_NAME
10
- :::
11
-
12
- Replace `FOLDER_NAME` with the name of the folder that the μEdition content for that language is to be placed in. The
13
- process will ask you for some detail about the language you are adding and will then create skeleton in the folder,
14
- which is then ready for editing.
@@ -1,34 +0,0 @@
1
- [build-system]
2
- requires = ["hatchling"]
3
- build-backend = "hatchling.build"
4
-
5
- [project]
6
- name = "uedition_docs"
7
- description = 'The μEdition Documentation'
8
- requires-python = ">=3.10"
9
- keywords = []
10
- authors = [
11
- { name = "Mark Hall", email = "mark.hall@work.room3b.eu" },
12
- ]
13
- classifiers = [
14
- "Development Status :: 4 - Beta",
15
- "Programming Language :: Python",
16
- "Programming Language :: Python :: 3.10",
17
- "Programming Language :: Python :: 3.11",
18
- "Programming Language :: Python :: Implementation :: CPython",
19
- "Programming Language :: Python :: Implementation :: PyPy",
20
- ]
21
- dependencies = [
22
- "uedition>=0.7.0",
23
- ]
24
- version = "1.0.0"
25
-
26
- [project.urls]
27
- Documentation = "https://github.com/scmmmh/under-the-surface/-#readme"
28
- Issues = "https://github.com/scmmmh/under-the-surface/-/issues"
29
- Source = "https://github.com/scmmmh/under-the-surface/-"
30
-
31
- [tool.hatch.envs.default.scripts]
32
- build = "uEdition build"
33
- serve = "uEdition serve"
34
- update = "uEdition update"
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes