Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
19 changes: 11 additions & 8 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,19 +12,22 @@ concurrency:
permissions: {}

jobs:
pre-commit:
name: pre-commit
prek:
name: prek
# External pull requests should be checked, but not our own internal pull
# requests again, as these are already checked by the push on the branch.
# Without this if condition, the checks would be performed twice, as
# internal pull requests correspond to both the push and pull_request
# events.
if:
github.event_name == 'push' ||
github.event.pull_request.head.repo.full_name != github.repository
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
with:
persist-credentials: false
- uses: actions/setup-python@ece7cb06caefa5fff74198d8649806c4678c61a1 # v6.3.0
- uses: actions/cache@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0
with:
path: ~/.cache/pre-commit
key: pre-commit|${{ env.pythonLocation }}|${{ hashFiles('.pre-commit-config.yaml') }}
- uses: pre-commit/action@2c7b3805fd2a0fd8c1884dcaebf91fc102a13ecd # v3.0.1
- uses: j178/prek-action@e98a699c41eb69ab013a45817a0406469a748f8d # v2.0.5

docs:
name: Build docs and check links
Expand Down
16 changes: 8 additions & 8 deletions .pre-commit-config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ ci:

repos:
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: 3e8a8703264a2f4a69428a0aa4dcb512790b2c8c # v6.0.0
rev: v6.0.0 # v6.0.0
hooks:
- id: trailing-whitespace
- id: end-of-file-fixer
Expand All @@ -15,38 +15,38 @@ repos:
- id: check-added-large-files
args: ['--maxkb=1024']
- repo: https://github.com/tox-dev/pyproject-fmt
rev: cf78bb920f358be6dea099e6b1fd6f67bccb0955 # v2.25.2
rev: v2.26.0 # v2.25.2
hooks:
- id: pyproject-fmt
- repo: https://github.com/abravalheri/validate-pyproject
rev: 4b2e70d08cb2ccd26d1fba73588de41c7a5d50b7 # v0.25
rev: v0.25 # v0.25
hooks:
- id: validate-pyproject
- repo: https://github.com/sphinx-contrib/sphinx-lint
rev: c883505f64b59c3c5c9375191e4ad9f98e727ccd # v1.0.2
rev: v1.0.2 # v1.0.2
hooks:
- id: sphinx-lint
types: [rst]
- repo: https://github.com/pycqa/isort
rev: 7f321d375f31a2f03833bc9a548e8783f2b5c420 # 9.0.0b1
rev: 9.0.0b1 # 9.0.0b1
hooks:
- id: isort
additional_dependencies: ["toml"]
entry: isort --profile=black
name: isort (python)
- repo: https://github.com/psf/black-pre-commit-mirror
rev: 4160603246a6b365d4a2af661c6d71b0a0f50478 # 26.5.1
rev: 26.5.1 # 26.5.1
hooks:
- id: black
- repo: https://github.com/adamchainz/blacken-docs
rev: fda77690955e9b63c6687d8806bafd56a526e45f # 1.20.0
rev: 1.20.0 # 1.20.0
hooks:
- id: blacken-docs
args: [--line-length=79]
additional_dependencies:
- black
- repo: https://github.com/codespell-project/codespell
rev: 2ccb47ff45ad361a21071a7eedda4c37e6ae8c5a # v2.4.2
rev: v2.4.3 # v2.4.2
hooks:
- id: codespell
- repo: local
Expand Down
12 changes: 12 additions & 0 deletions CHANGELOG.rst
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,18 @@ wir Zweige für ältere Versionen starten müssen.
`Unreleased <https://github.com/veit/python-basics-tutorial-de/compare/25.1.0...HEAD>`_
---------------------------------------------------------------------------------------

Added
~~~~~

* 📝 Add pytest-leak-finder

Changed
~~~~~~~

* 👷🔧📝 Switch to prek

* Remove pre-commit

`25.1.0 <https://github.com/veit/python-basics-tutorial-de/compare/24.3.0...25.1.0>`_
-------------------------------------------------------------------------------------

Expand Down
57 changes: 45 additions & 12 deletions docs/document/shot-scraper.rst
Original file line number Diff line number Diff line change
@@ -1,9 +1,8 @@
shot-scraper
============

`shot-scraper <https://simonwillison.net/2022/Mar/10/shot-scraper/>`_ ist ein
Werkzeug, mit dem sich der Prozess der Aktualisierung von Screenshots
automatisieren lässt.
`shot-scraper <https://shot-scraper.datasette.io/en/stable/>`_ ist ein Werkzeug,
mit dem sich die Aktualisierung von Screenshots automatisieren lässt.

Installation
------------
Expand All @@ -16,22 +15,27 @@ Installation
.. note::
Die zweite Zeile installiert den benötigten Browser.

.. seealso::
`shot-scraper Installation
<https://shot-scraper.datasette.io/en/stable/installation.html>`_

Verwendung
----------

shot-scraper kann auf zweierlei Art verwendet werden
shot-scraper kann auf mehrere Arten verwendet werden

#. …für einzelne Screenshots auf der Kommandozeile:

.. code-block:: console

$ shot-scraper https://jupyter-tutorial.readthedocs.io/de/latest/clean-prep/index.html -o ~/Downloads/clean-prep.png
$ uv run shot-scraper https://jupyter-tutorial.readthedocs.io/de/latest/clean-prep/index.html -o ~/Downloads/clean-prep.png

…oder mit zusätzlichen Optionen, z.B. für JavaScript- und CSS-Selektoren:
…oder mit zusätzlichen Optionen, :abbr:`z. B. (zum Beispiel)` für
JavaScript- und CSS-Selektoren:

.. code-block::
.. code-block:: console

$ shot-scraper https://jupyter-tutorial.readthedocs.io/de/latest/clean-prep/index.html -s '#overview' -o ~/Downloads/clean-prep.png
$ uv run shot-scraper https://jupyter-tutorial.readthedocs.io/de/latest/clean-prep/index.html -s '#overview' -o ~/Downloads/clean-prep.png

#. …für eine Reihe von Screenshots, die in einer YAML-Datei konfiguriert sind:

Expand All @@ -44,7 +48,8 @@ shot-scraper kann auf zweierlei Art verwendet werden
quality: 40
output: example.jpg

Anschließend kann ``shot-scraper multi`` verwendet werden, z.B.:
Anschließend kann ``shot-scraper multi`` verwendet werden, :abbr:`z. B. (zum
Beispiel)`:

.. code-block:: console

Expand All @@ -53,13 +58,41 @@ shot-scraper kann auf zweierlei Art verwendet werden
Screenshot of 'https://www.example.org/' written to 'example.jpg'

.. seealso::
* In der `README.md
<https://github.com/simonw/shot-scraper/blob/main/README.md>`_-Datei
findet ihr eine vollständige Übersicht über die möglichen Optionen.
* `Taking multiple screenshots
<https://shot-scraper.datasette.io/en/stable/multi.html>`_
* Im shot-scraper-demo-Repository findet ihr eine deutlich umfangreichere
`shots.yaml
<https://github.com/simonw/shot-scraper-demo/blob/main/.github/workflows/shots.yml>`_-Datei.

#. …für Videos:

Der ``shot-scraper video``-Befehl nimmt ein WebM-Video anhand eines
:doc:`Python4DataScience:data-processing/serialisation-formats/yaml/index`-Storyboards
auf. Storyboards beschreiben das Video als Abfolge von Szenen. Jede Szene
kann eine Seite öffnen, auf Inhalte warten, Aktionen ausführen und zwischen
den Schritten eine Pause einlegen, :abbr:`z. B. (zum Beispiel)`:

.. literalinclude:: storyboard.yml
:caption: storyboard.yml
:language: yaml

Führt anschließend folgenden Befehl aus:

.. code-block:: console

$ uv run shot-scraper video storyboard.yml

Dadurch wird ``url`` geöffnet, die Szenen werden aufgezeichnet und das Video
wird unter dem Namen :file:`demo.webm` gespeichert.

Sofern `FFmpeg <https://www.ffmpeg.org/>`_ installiert ist, könnt ihr mit der
Option ``--mp4`` das aufgezeichnete WebM-Video zusätzlich in MP4
konvertieren.

.. seealso::
* `Recording videos
<https://shot-scraper.datasette.io/en/stable/video.html>`_

GitHub-Actions
--------------

Expand Down
18 changes: 8 additions & 10 deletions docs/document/sphinx/test.rst
Original file line number Diff line number Diff line change
Expand Up @@ -149,9 +149,8 @@ reST-Formatierung
Ob die :doc:`Sphinx <start>`-Dokumentation in gültigem :doc:`rest`-Format
geschrieben ist, lässt sich mit `sphinx-lint
<https://pypi.org/project/sphinx-lint/>`_ überprüfen. Dies binden wir
üblicherweise in unsere :doc:`pre-commit
<Python4DataScience:productive/git/advanced/hooks/pre-commit>`-Konfiguration
ein:
üblicherweise in unsere :doc:`prek
<Python4DataScience:productive/git/advanced/hooks/prek>`-Konfiguration ein:

.. code-block:: yaml
:caption: .pre-commit-config.yaml
Expand Down Expand Up @@ -201,8 +200,8 @@ Code-Formatierung
Die Formatierung von Code-Blöcken lässt sich mit `blacken-docs
<https://github.com/adamchainz/blacken-docs>`_ überprüfen, das
:doc:`Python4DataScience:productive/qa/black` verwendet. Üblicherweise binden
wir die Bibliothek über das :doc:`pre-commit
<Python4DataScience:productive/git/advanced/hooks/pre-commit>`-Framework ein:
wir die Bibliothek über :doc:`prek
<Python4DataScience:productive/git/advanced/hooks/prek>` ein:

.. code-block:: yaml
:caption: .pre-commit-config.yaml
Expand Down Expand Up @@ -321,9 +320,8 @@ Anschließend solltet ihr :abbr:`ggf. (gegebenenfalls)` eure :ref:`.gitignore

styles/*

Ihr könnt Vale für das :doc:`pre-commit
<Python4DataScience:productive/git/advanced/hooks/pre-commit>`-Framework
konfigurieren mit:
Ihr könnt Vale für :doc:`prek
<Python4DataScience:productive/git/advanced/hooks/prek>` konfigurieren mit:

.. code-block:: yaml
:caption: .pre-commit-config.yaml
Expand Down Expand Up @@ -393,8 +391,8 @@ Nun könnt ihr ``interrogate`` in eure :doc:`../../test/tox`-Datei einfügen,
commands =
interrogate --quiet --fail-under 95 src tests

Ihr könnt ``interrogate`` auch mit :doc:`pre-commit
<Python4DataScience:productive/git/advanced/hooks/pre-commit>` nutzen:
Ihr könnt ``interrogate`` auch mit :doc:`prek
<Python4DataScience:productive/git/advanced/hooks/prek>` nutzen:

.. code-block:: yaml
:caption: .pre-commit-config.yaml
Expand Down
34 changes: 34 additions & 0 deletions docs/document/storyboard.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
output: demo.webm
url: https://python-basics-tutorial.readthedocs.io/en/latest/

viewport:
width: 1280
height: 720

cursor: true
wait_for: "text=Python für Data Science"

scenes:
- name: Home
do:
- pause: 1

- name: Introduction
do:
- click: ".sidebar-tree a[href='intro.html']"
- wait_for: 'h1:has-text("Introduction")'
- screenshot: intro.png
- pause: 1

- name: Search
do:
- click: "input.sidebar-search"
- type:
into: "input.sidebar-search"
text: "shot-scraper"
delay_ms: 25
- press:
selector: "input.sidebar-search"
key: Enter
- wait_for: "text=Search Results"
- pause: 2
27 changes: 25 additions & 2 deletions docs/libs/install.rst
Original file line number Diff line number Diff line change
Expand Up @@ -17,8 +17,8 @@ jedoch zwei Probleme mit sich:
Python bietet :ref:`pip` als aktuelle Lösung für beide Probleme an. ``pip``
versucht, das Modul im :term:`Python Package Index` (:term:`PyPI`) zu finden,
lädt es und alle Abhängigkeiten herunter und kümmert sich um die Installation.
Ihr könnt auch :term:`pypi.org` direkt aufrufen und nach Paketen zu suchen oder
die Pakete nach Kategorien filtern.
Ihr könnt auch :term:`pypi.org` direkt aufrufen um nach Paketen zu suchen oder
die Pakete nach Kategorien zu filtern.

.. warning::
Installiert niemals irgendetwas mit ``pip`` in das globale Python, auch nicht
Expand Down Expand Up @@ -146,6 +146,29 @@ oder

(.venv) $ python -m pip install "pandas>=2"

Üblicherweise führt ``pip`` jedoch keine Prüfungen zum Schutz vor Manipulationen
durch und ermöglicht die Ausführung von beliebigem Code aus den Distributionen.
Ihr könnt ``pip`` jedoch auch so nutzen, dass sicherere Installationsmechanismen
gewährleistet sind:

``--require-hashes``
aktiviert den Hash-Prüfmodus.

Dies stellt sicher, dass Hashes in der Requirements-Datei bereitgestellt
wurden. Zudem ist es eine bequeme Möglichkeit, selbst eine Liste von Hashes
anzulegen, da dabei die Hashes der heruntergeladenen Pakete angezeigt
werden. Es wird für jedes Paket jedoch nur das bevorzugte Archiv
heruntergeladen, sodass ihr möglicherweise weiterhin Hashes für alternative
Archive mit :samp:`pip hash {PACKAGE_NAME}` hinzufügen müsst –
beispielsweise, wenn verschiedene Betriebssystemvarianten vorhanden sind.

``--only-binary :all:``
verhindert die Bereitstellung von Quellcode.

.. seealso::
* `Secure installs <https://pip.pypa.io/en/stable/topics/secure-installs/>`_
* `pip hash <https://pip.pypa.io/en/stable/cli/pip_hash/>`_

Proxy-Server
~~~~~~~~~~~~

Expand Down
15 changes: 8 additions & 7 deletions docs/packs/apps.rst
Original file line number Diff line number Diff line change
Expand Up @@ -124,10 +124,10 @@ Wollt ihr ``uv run`` in einer produktiven Umgebung verwenden, so wird mit der
Aktualisieren der Python-Umgebung
---------------------------------

Standardmässig bevorzugt ``uv`` bei der Ausführung von ``uv sync`` und
``uv lock`` die gesperrten Versionen der Pakete. Paketversionen werden nur dann
geändert, wenn die Abhängigkeitsbedingungen des Projekts die vorherige,
gesperrte Version ausschließen.
``uv`` bevorzugt bei der Ausführung von ``uv sync`` und ``uv lock`` die
gesperrten Versionen der Pakete. Paketversionen werden nur dann geändert, wenn
die Abhängigkeitsbedingungen des Projekts die vorherige, gesperrte Version
ausschließen.

Mit ``uv lock --upgrade`` könnt ihr alle Pakete aktualisieren und mit :samp:`uv
lock --upgrade-package {PACKAGE}=={VERSION}` lassen sich einzelnes Pakete auf
Expand Down Expand Up @@ -158,9 +158,9 @@ eine bestimmte Version aktualisieren.
$ uv sync --exclude-newer-package "{PACKAGE}=P0D"

.. tip::
Ihr könnt auch mit dem
:doc:`Python4DataScience:productive/git/advanced/hooks/pre-commit` regelmäßig
eure eure :file:`uv.lock`-Datei aktualisieren:
Ihr könnt auch mit
:doc:`Python4DataScience:productive/git/advanced/hooks/prek` regelmäßig eure
:file:`uv.lock`-Datei aktualisieren:

.. code-block:: yaml
:caption: .pre-commit-config.yaml
Expand All @@ -169,6 +169,7 @@ eine bestimmte Version aktualisieren.
rev: 6a280ba12b7901e47757c868c8c13c6a624c9ecb # 0.11.7
hooks:
- id: uv-lock
args: ["--exclude-newer = 'P3D'", "--quiet"]

Plattform- und Python-Versionen einschränken
--------------------------------------------
Expand Down
6 changes: 3 additions & 3 deletions docs/packs/distribution.rst
Original file line number Diff line number Diff line change
Expand Up @@ -317,8 +317,8 @@ Abhängigkeitsgruppen
:lineno-start: 33

Auch rekursive Abhängigkeitsgruppen sind möglich. So könnt ihr beispielsweise
für ``dev`` neben ``pre-commit`` auch alle Abhängigkeiten aus ``docs`` und
``test`` übernehmen:
für ``dev`` neben ``prek`` auch alle Abhängigkeiten aus ``docs`` und ``test``
übernehmen:

.. literalinclude:: dataprep/pyproject.toml
:language: toml
Expand Down Expand Up @@ -773,7 +773,7 @@ Dateistruktur für Pakete erstellen:

.. literalinclude:: mypack/pyproject.toml
:caption: mypack/pyproject.toml
:emphasize-lines: 21
:emphasize-lines: 20

:file:`mypack/src/mypack/__init__.py`
Das Modul definiert eine CLI-Funktion :func:`main`:
Expand Down
Loading
Loading