Compare commits
18 Commits
c2ac8e4c13
..
master
| Author | SHA1 | Date | |
|---|---|---|---|
| 955a442c60 | |||
| 995f86831f | |||
| f742235573 | |||
| 050dde99f6 | |||
| b94b763cf1 | |||
| 672968bdfb | |||
| 7115e3ce7a | |||
| 76a6564a3e | |||
| 847e7744ff | |||
| 0384334ce0 | |||
| 1830ccb5c7 | |||
| 452d363235 | |||
| c0cfd59beb | |||
| 60f8f11c83 | |||
| cf5c8b213e | |||
| 04fe01eb35 | |||
| 078e28903c | |||
| 32663124a5 |
@@ -28,6 +28,10 @@
|
|||||||
!/templates
|
!/templates
|
||||||
!/templates/template*
|
!/templates/template*
|
||||||
|
|
||||||
|
!/notes/
|
||||||
|
!/notes/week*.pdf
|
||||||
|
!/notes/README.md
|
||||||
|
|
||||||
!/src
|
!/src
|
||||||
!/src/**/
|
!/src/**/
|
||||||
!/src/**/*.py
|
!/src/**/*.py
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
# Mathematik für Physiker I, WiSe 2022-23 #
|
# Mathematik für Physiker I, WiSe 2022-23 #
|
||||||
|
|
||||||
Der Inhalt dieses Repository ist keineswegs verpflichtend, sondern dient dem Zweck, „Handnotizen“ anzubieten.
|
Der Inhalt dieses Repository ist keineswegs verpflichtend,
|
||||||
|
sondern dient dem Zweck, „Handnotizen“ anzubieten (siehe insbesondere den [./notes/](notes/) Ordner).
|
||||||
Es besteht hier kein Anspruch auf Vollständigkeit.
|
Es besteht hier kein Anspruch auf Vollständigkeit.
|
||||||
Es werden hier keine offiziellen Lösungen für die Übungsblätter gespeichert.
|
Es werden hier keine offiziellen Lösungen für die Übungsblätter gespeichert.
|
||||||
|
|
||||||
@@ -11,6 +12,7 @@ findet man ausschließlich auf der **Moodle**-Seite.
|
|||||||
|
|
||||||
```text
|
```text
|
||||||
.
|
.
|
||||||
|
├── ./notes # Handschrift aus ÜG
|
||||||
├── ./notebooks # Python/Jupyter Notebooks
|
├── ./notebooks # Python/Jupyter Notebooks
|
||||||
│ ├── ...
|
│ ├── ...
|
||||||
│ └── ... *.ipynb Dateien
|
│ └── ... *.ipynb Dateien
|
||||||
|
|||||||
@@ -121,6 +121,17 @@ dist:
|
|||||||
@just build
|
@just build
|
||||||
@just build-documentation
|
@just build-documentation
|
||||||
|
|
||||||
|
# exports notebook to format: html, markdown, pdf, latex.
|
||||||
|
export name format="pdf" theme="light":
|
||||||
|
@{{PYTHON}} -m jupyter nbconvert \
|
||||||
|
--allow-chromium-download \
|
||||||
|
--HTMLExporter.theme={{theme}} \
|
||||||
|
--TemplateExporter.exclude_input=false \
|
||||||
|
--to {{format}} \
|
||||||
|
--output-dir notes \
|
||||||
|
--ouput "notebook-{{name}}.{{format}}" \
|
||||||
|
notebooks/{{name}}.ipynb
|
||||||
|
|
||||||
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
# TARGETS: run
|
# TARGETS: run
|
||||||
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|||||||
@@ -1,9 +1,9 @@
|
|||||||
#!/usr/bin/env python3
|
#!/usr/bin/env python3
|
||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
# IMPORTS
|
# IMPORTS
|
||||||
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
import os;
|
import os;
|
||||||
import sys;
|
import sys;
|
||||||
@@ -11,17 +11,17 @@ import sys;
|
|||||||
os.chdir(os.path.dirname(__file__));
|
os.chdir(os.path.dirname(__file__));
|
||||||
sys.path.insert(0, os.getcwd());
|
sys.path.insert(0, os.getcwd());
|
||||||
|
|
||||||
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
# MAIN
|
# MAIN
|
||||||
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
def enter():
|
def enter():
|
||||||
print('Not yet implemented.');
|
print('Not yet implemented.');
|
||||||
return;
|
return;
|
||||||
|
|
||||||
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
# EXECUTION
|
# EXECUTION
|
||||||
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
# sys.tracebacklimit = 0;
|
# sys.tracebacklimit = 0;
|
||||||
|
|||||||
@@ -0,0 +1,265 @@
|
|||||||
|
{
|
||||||
|
"cells": [
|
||||||
|
{
|
||||||
|
"attachments": {},
|
||||||
|
"cell_type": "markdown",
|
||||||
|
"metadata": {},
|
||||||
|
"source": [
|
||||||
|
"# Woche 10 #\n",
|
||||||
|
"\n",
|
||||||
|
"Diese Wochen beschäftigen wir uns mit Matrizen und Vektoren.\n",
|
||||||
|
"In diesem Notebook rechnen wir ein paar (Teil)aufgaben aus dem ÜB."
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": null,
|
||||||
|
"metadata": {},
|
||||||
|
"outputs": [],
|
||||||
|
"source": [
|
||||||
|
"'''IMPORTS'''\n",
|
||||||
|
"import os;\n",
|
||||||
|
"import sys; \n",
|
||||||
|
"\n",
|
||||||
|
"# NOTE: need this to force jupyter to reload imports:\n",
|
||||||
|
"for key in list(sys.modules.keys()):\n",
|
||||||
|
" if key.startswith('src.'):\n",
|
||||||
|
" del sys.modules[key];\n",
|
||||||
|
"\n",
|
||||||
|
"os.chdir(os.path.dirname(_dh[0]));\n",
|
||||||
|
"sys.path.insert(0, os.getcwd());\n",
|
||||||
|
"\n",
|
||||||
|
"from src.thirdparty.maths import *;\n",
|
||||||
|
"from src.thirdparty.misc import *;\n",
|
||||||
|
"from src.thirdparty.render import *;\n",
|
||||||
|
"from src.maths.diagrams import *;\n",
|
||||||
|
"\n",
|
||||||
|
"np.random.seed(8007253); # zur Wiederholbarkeit"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": null,
|
||||||
|
"metadata": {},
|
||||||
|
"outputs": [],
|
||||||
|
"source": [
|
||||||
|
"'''BEISPIEL-SIGNAL'''\n",
|
||||||
|
"n = 100;\n",
|
||||||
|
"u = np.zeros((n,), dtype=complex);\n",
|
||||||
|
"u[8] = -0.7\n",
|
||||||
|
"u[58] = 1j * sqrt(2);\n",
|
||||||
|
"\n",
|
||||||
|
"display_signal(u, 'Beispiel eines Vektors in $\\mathbb{C}^{100}$ als Signal über $\\{0,1,2,\\ldots,99\\}$ dargestellt');"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": null,
|
||||||
|
"metadata": {},
|
||||||
|
"outputs": [],
|
||||||
|
"source": [
|
||||||
|
"'''SEMINARAUFGABE 10.4 a)'''\n",
|
||||||
|
"n = 3;\n",
|
||||||
|
"t = linspace(0, n-1, n);\n",
|
||||||
|
"i, j = np.meshgrid(t, t);\n",
|
||||||
|
"theta = 2*pi * i * j / n;\n",
|
||||||
|
"\n",
|
||||||
|
"# definiere die Matrix F_n + die Vektoren u_nk\n",
|
||||||
|
"F_n = (1/sqrt(n)) * exp(-1j * theta);\n",
|
||||||
|
"u_n = [ (1/sqrt(n)) * exp(1j * theta[:, k]) for k in range(n) ];\n",
|
||||||
|
"\n",
|
||||||
|
"print(dedent(\n",
|
||||||
|
" f'''\n",
|
||||||
|
" Matrix:\n",
|
||||||
|
"\n",
|
||||||
|
" F_{n} = \\n{np.round(F_n, 3)}\n",
|
||||||
|
" '''\n",
|
||||||
|
"));\n",
|
||||||
|
"print('');\n",
|
||||||
|
"\n",
|
||||||
|
"# NOTE: Programmiersprachen können nicht exakt berechnen.\n",
|
||||||
|
"# Darum entstehen winzige Fehler, die sich durch Runden entfernen lassen.\n",
|
||||||
|
"print('Matrix-Vektor-Produkte:');\n",
|
||||||
|
"for k in range(n):\n",
|
||||||
|
" result = F_n @ u_n[k];\n",
|
||||||
|
" print(dedent(\n",
|
||||||
|
" f'''\n",
|
||||||
|
"\n",
|
||||||
|
" u_{{n {k}}} = {np.round(u_n[k], 3)}\n",
|
||||||
|
" F_n · u_{{n {k}}} = {np.round(result, 3)}\n",
|
||||||
|
" '''\n",
|
||||||
|
" ));"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"attachments": {},
|
||||||
|
"cell_type": "markdown",
|
||||||
|
"metadata": {},
|
||||||
|
"source": [
|
||||||
|
"## Seminaraufgabe 10.4 b) ##\n",
|
||||||
|
"\n",
|
||||||
|
"Für $i\\in\\{0,1,\\ldots,n-1\\}$ ist die $i$-te von $\\mathcal{F}_{n}\\,u_{n,k}$\n",
|
||||||
|
"\n",
|
||||||
|
"$$\n",
|
||||||
|
" \\begin{array}{rcl}\n",
|
||||||
|
" (\\mathcal{F}_{n}\\,u_{n,k})_{i}\n",
|
||||||
|
" &= &\\displaystyle\\sum_{j=0}^{n-1}\n",
|
||||||
|
" (\\mathcal{F}_{n})_{ij}\\,(u_{n,k})_{j}\\\\\n",
|
||||||
|
" &= &\\displaystyle\\sum_{j=0}^{n-1}\n",
|
||||||
|
" \\tfrac{1}{\\sqrt{n}}\n",
|
||||||
|
" \\exp(-\\imath\\tfrac{2\\pi\\,ij}{n})\n",
|
||||||
|
" \\cdot\n",
|
||||||
|
" \\tfrac{1}{\\sqrt{n}}\n",
|
||||||
|
" \\exp(\\imath\\tfrac{2\\pi\\,kj}{n})\\\\\n",
|
||||||
|
" &= &\\frac{1}{n}\\displaystyle\\sum_{j=0}^{n-1}\n",
|
||||||
|
" \\underbrace{\n",
|
||||||
|
" \\exp(\\imath\\tfrac{2\\pi\\,(k-i)j}{n})\n",
|
||||||
|
" }_{= r^{j}}\\\\\n",
|
||||||
|
" \\end{array}\n",
|
||||||
|
"$$\n",
|
||||||
|
"\n",
|
||||||
|
"wobei $r := \\exp(\\imath\\tfrac{2\\pi\\,(k-i)}{n})$.\n",
|
||||||
|
"Wir haben, dass\n",
|
||||||
|
" $r = 1$\n",
|
||||||
|
" $\\Leftrightarrow$\n",
|
||||||
|
" $\\tfrac{k-i}{n} \\in \\mathbb{Z}$\n",
|
||||||
|
" $\\Leftrightarrow$\n",
|
||||||
|
" $i = k$,\n",
|
||||||
|
"da $0\\leq i,k \\leq n-1$.\n",
|
||||||
|
"<br>\n",
|
||||||
|
"Es gilt außerdem $r^{n} = \\exp(\\imath 2\\pi\\,(k-i)) = 1$.\n",
|
||||||
|
"<br>\n",
|
||||||
|
"Aus der o.s. Berechnung erhält man also\n",
|
||||||
|
"\n",
|
||||||
|
"$$\n",
|
||||||
|
" \\begin{array}{rcl}\n",
|
||||||
|
" (\\mathcal{F}_{n}\\,u_{n,k})_{i}\n",
|
||||||
|
" &= &\\tfrac{1}{n}\\displaystyle\\sum_{j=0}^{n-1}r^{j}\\\\\n",
|
||||||
|
" &= &\\tfrac{1}{n}\n",
|
||||||
|
" \\left\\{\n",
|
||||||
|
" \\begin{array}{lcl}\n",
|
||||||
|
" \\displaystyle\\sum_{j=0}^{n-1}1 &: &i = k\\\\\n",
|
||||||
|
" \\dfrac{1 - r^{n}}{1 - r} &: &\\text{sonst}\\\\\n",
|
||||||
|
" \\end{array}\n",
|
||||||
|
" \\right.\\\\\n",
|
||||||
|
" &= &\\tfrac{1}{n}\n",
|
||||||
|
" \\left\\{\n",
|
||||||
|
" \\begin{array}{lcl}\n",
|
||||||
|
" n &: &i = k\\\\\n",
|
||||||
|
" \\dfrac{1 - 1}{1 - r} &: &\\text{sonst}\\\\\n",
|
||||||
|
" \\end{array}\n",
|
||||||
|
" \\right.\\\\\n",
|
||||||
|
" &= &\\left\\{\n",
|
||||||
|
" \\begin{array}{lcl}\n",
|
||||||
|
" 1 &: &i = k\\\\\n",
|
||||||
|
" 0 &: &\\text{sonst}\\\\\n",
|
||||||
|
" \\end{array}\n",
|
||||||
|
" \\right.\\\\\n",
|
||||||
|
" &= &\\delta_{ik}.\\\\\n",
|
||||||
|
" \\end{array}\n",
|
||||||
|
"$$\n",
|
||||||
|
"\n",
|
||||||
|
"Darum $\\mathcal{F}_{n}\\,u_{n,k}\n",
|
||||||
|
" = \\left(\\begin{matrix}\n",
|
||||||
|
" 0\\\\\n",
|
||||||
|
" 0\\\\\n",
|
||||||
|
" \\vdots\\\\\n",
|
||||||
|
" 1\\\\\n",
|
||||||
|
" \\vdots\\\\\n",
|
||||||
|
" 0\\\\\n",
|
||||||
|
" \\end{matrix}\\right)\n",
|
||||||
|
" \\begin{matrix}\n",
|
||||||
|
" \\\\\n",
|
||||||
|
" \\\\\n",
|
||||||
|
" \\\\\n",
|
||||||
|
" \\leftarrow k\\\\\n",
|
||||||
|
" \\\\\n",
|
||||||
|
" \\\\\n",
|
||||||
|
" \\end{matrix}\n",
|
||||||
|
" = \\mathbf{e}_{k}$.\n"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": null,
|
||||||
|
"metadata": {},
|
||||||
|
"outputs": [],
|
||||||
|
"source": [
|
||||||
|
"'''SEMINARAUFGABE 10.4 d)'''\n",
|
||||||
|
"n = 4;\n",
|
||||||
|
"t = linspace(0, n-1, n);\n",
|
||||||
|
"i, j = np.meshgrid(t, t);\n",
|
||||||
|
"theta = 2*pi * i * j / n;\n",
|
||||||
|
"\n",
|
||||||
|
"# definiere die Matrix F_n + die Vektoren u_nk\n",
|
||||||
|
"F_n = (1/sqrt(n)) * exp(-1j * theta);\n",
|
||||||
|
"u_n = [ (1/sqrt(n)) * exp(1j * theta[:, k]) for k in range(n) ];\n",
|
||||||
|
"\n",
|
||||||
|
"# Eingabe des Vektors:\n",
|
||||||
|
"F_mal_u = np.asarray([100, -3, 0, -3]); # = F_n @ u\n",
|
||||||
|
"\n",
|
||||||
|
"'''\n",
|
||||||
|
"NOTE: Folgende Koeffizienten wurden falsch erraten.\n",
|
||||||
|
"TODO: Wie lauten die richtigen Werte? -> Aufgabe!\n",
|
||||||
|
"'''\n",
|
||||||
|
"c = [10,10,40,50];\n",
|
||||||
|
"\n",
|
||||||
|
"# Aufschreibung des Signals »bzgl. der harmonischen Basis«:\n",
|
||||||
|
"# u = c[0]u_n[0] + c[1]u_n[1] + c[2]u_n[2] + c[3]u_n[3]\n",
|
||||||
|
"u_guess = sum([ c[k] * u_n[k] for k in range(n) ]);\n",
|
||||||
|
"\n",
|
||||||
|
"# Anzeige der Lösung:\n",
|
||||||
|
"display_signal(u_guess, 'Geschätztes Signal');\n",
|
||||||
|
"\n",
|
||||||
|
"# Verifizierung der Lösung:\n",
|
||||||
|
"display_latex(\n",
|
||||||
|
" f'''\n",
|
||||||
|
" $$\n",
|
||||||
|
" \\\\begin{{array}}{{rcl}}\n",
|
||||||
|
" \\\\%\\\\text{{error}}\n",
|
||||||
|
" &\\colonequals\n",
|
||||||
|
" &\\\\dfrac{{\\\\|u_{{\\\\text{{guess}}}} - u\\\\|}}{{\\\\|u\\\\|}}\\\\\\\\\n",
|
||||||
|
" &=\n",
|
||||||
|
" &\\\\dfrac{{\n",
|
||||||
|
" \\\\|\\\\mathcal{{F}}_{{n}}\\\\,(u_{{\\\\text{{guess}}}} - u)\\\\|\n",
|
||||||
|
" }}{{\n",
|
||||||
|
" \\\\|\\\\mathcal{{F}}_{{n}}\\\\,u\\\\|\n",
|
||||||
|
" }}\n",
|
||||||
|
" \\\\quad\\\\text{{\\\\ldots wieso?? [Stichwort: unitär!]}}\\\\\\\\\n",
|
||||||
|
" &= &\\\\dfrac{{\n",
|
||||||
|
" \\\\|\\\\mathcal{{F}}_{{n}}\\\\,u_{{\\\\text{{guess}}}} - \\\\mathcal{{F}}_{{n}}\\\\,u\\\\|\n",
|
||||||
|
" }}{{\n",
|
||||||
|
" \\\\|\\\\mathcal{{F}}_{{n}}\\\\,u\\\\|\n",
|
||||||
|
" }}\\\\\\\\\n",
|
||||||
|
" &= &{linalg.norm(F_n @ u_guess - F_mal_u)/linalg.norm(F_mal_u):.2%}\n",
|
||||||
|
" \\\\%\n",
|
||||||
|
" \\\\\\\\\n",
|
||||||
|
" \\\\end{{array}}\n",
|
||||||
|
" $$\n",
|
||||||
|
" '''\n",
|
||||||
|
");\n"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"metadata": {
|
||||||
|
"kernelspec": {
|
||||||
|
"display_name": "Python 3",
|
||||||
|
"language": "python",
|
||||||
|
"name": "python3"
|
||||||
|
},
|
||||||
|
"language_info": {
|
||||||
|
"codemirror_mode": {
|
||||||
|
"name": "ipython",
|
||||||
|
"version": 3
|
||||||
|
},
|
||||||
|
"file_extension": ".py",
|
||||||
|
"mimetype": "text/x-python",
|
||||||
|
"name": "python",
|
||||||
|
"nbconvert_exporter": "python",
|
||||||
|
"pygments_lexer": "ipython3",
|
||||||
|
"version": "3.10.8"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nbformat": 4,
|
||||||
|
"nbformat_minor": 2
|
||||||
|
}
|
||||||
@@ -13,7 +13,7 @@
|
|||||||
"- [x] Struktur\n",
|
"- [x] Struktur\n",
|
||||||
"- [x] Aufwärme\n",
|
"- [x] Aufwärme\n",
|
||||||
"- [x] Seminaraufgaben 2.x\n",
|
"- [x] Seminaraufgaben 2.x\n",
|
||||||
"- [ ] Besprechung von HA 1.x\n"
|
"- ~~[ ] Besprechung von HA 1.x~~\n"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -104,6 +104,11 @@
|
|||||||
"nbconvert_exporter": "python",
|
"nbconvert_exporter": "python",
|
||||||
"pygments_lexer": "ipython3",
|
"pygments_lexer": "ipython3",
|
||||||
"version": "3.10.8"
|
"version": "3.10.8"
|
||||||
|
},
|
||||||
|
"vscode": {
|
||||||
|
"interpreter": {
|
||||||
|
"hash": "98590ff4fe04c8543246b2a01debd3de3c5ca9b666f43f1fa87d5110c692004c"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"nbformat": 4,
|
"nbformat": 4,
|
||||||
|
|||||||
@@ -0,0 +1,36 @@
|
|||||||
|
{
|
||||||
|
"cells": [
|
||||||
|
{
|
||||||
|
"cell_type": "markdown",
|
||||||
|
"metadata": {},
|
||||||
|
"source": [
|
||||||
|
"# Woche 3 - 24.-30. Oktober 2022 #\n",
|
||||||
|
"\n",
|
||||||
|
"Herzlich willkommen zur 3. Woche!\n",
|
||||||
|
"\n",
|
||||||
|
"## Agenda ##\n",
|
||||||
|
"\n",
|
||||||
|
"- [x] Besprechung von HA 2.x\n",
|
||||||
|
"- [x] Seminaraufgaben 3.x"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"metadata": {
|
||||||
|
"kernelspec": {
|
||||||
|
"display_name": "Python 3.10.8 64-bit",
|
||||||
|
"language": "python",
|
||||||
|
"name": "python3"
|
||||||
|
},
|
||||||
|
"language_info": {
|
||||||
|
"name": "python",
|
||||||
|
"version": "3.10.8"
|
||||||
|
},
|
||||||
|
"vscode": {
|
||||||
|
"interpreter": {
|
||||||
|
"hash": "98590ff4fe04c8543246b2a01debd3de3c5ca9b666f43f1fa87d5110c692004c"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nbformat": 4,
|
||||||
|
"nbformat_minor": 2
|
||||||
|
}
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
# Handnotizen #
|
||||||
|
|
||||||
|
Diese Notizen sollen _nicht_ als Musterlösungen verstanden werden.
|
||||||
|
|
||||||
|
Während der ÜG interagieren wir mit dem Stoff + den Aufgaben.
|
||||||
|
Wir besprechen **Konzepte** und **Ansätze**.
|
||||||
|
Diese Schrift ist also eine Abbildung dieser Diskussionen und Präsentationen.
|
||||||
|
Teilweise werden sie nur für die Leute Sinn ergeben, die daran teilgenommen haben und eigene Notizen machen.
|
||||||
|
Die Dokumente sind nicht vollständig, da einiges während der Stunden im Raum und an der Tafel erörtert wird.
|
||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
+3
-4
@@ -1,4 +1,4 @@
|
|||||||
pip>=22.2.2
|
pip>=22.3.1
|
||||||
wheel>=0.37.1
|
wheel>=0.37.1
|
||||||
|
|
||||||
# jupyter
|
# jupyter
|
||||||
@@ -16,7 +16,7 @@ codetiming>=1.3.0
|
|||||||
|
|
||||||
# testing + dev
|
# testing + dev
|
||||||
coverage[toml]>=6.4
|
coverage[toml]>=6.4
|
||||||
pytest>=7.1.1
|
pytest>=7.2.0
|
||||||
pytest-asyncio>=0.18.3
|
pytest-asyncio>=0.18.3
|
||||||
pytest-cov>=3.0.0
|
pytest-cov>=3.0.0
|
||||||
pytest-lazy-fixture>=0.6.3
|
pytest-lazy-fixture>=0.6.3
|
||||||
@@ -33,13 +33,12 @@ lorem>=0.1.1
|
|||||||
safetywrap>=1.5.0
|
safetywrap>=1.5.0
|
||||||
typing>=3.7.4.3
|
typing>=3.7.4.3
|
||||||
nptyping>=2.1.1
|
nptyping>=2.1.1
|
||||||
typing-extensions>=3.10.0.2
|
|
||||||
|
|
||||||
# config
|
# config
|
||||||
python-dotenv>=0.20.0
|
python-dotenv>=0.20.0
|
||||||
jsonschema>=4.4.0
|
jsonschema>=4.4.0
|
||||||
lazy-load>=0.8.2
|
lazy-load>=0.8.2
|
||||||
pyyaml>=5.4.1
|
pyyaml>=6.0
|
||||||
pydantic>=1.9.1
|
pydantic>=1.9.1
|
||||||
datamodel-code-generator>=0.12.0
|
datamodel-code-generator>=0.12.0
|
||||||
|
|
||||||
|
|||||||
+10
-10
@@ -1,9 +1,9 @@
|
|||||||
#!/usr/bin/env python3
|
#!/usr/bin/env python3
|
||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
# IMPORTS
|
# IMPORTS
|
||||||
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
from __future__ import annotations;
|
from __future__ import annotations;
|
||||||
|
|
||||||
@@ -13,9 +13,9 @@ from src.thirdparty.types import *;
|
|||||||
|
|
||||||
from src.core.utils import *;
|
from src.core.utils import *;
|
||||||
|
|
||||||
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
# EXPORTS
|
# EXPORTS
|
||||||
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
__all__ = [
|
__all__ = [
|
||||||
'CallState',
|
'CallState',
|
||||||
@@ -25,18 +25,18 @@ __all__ = [
|
|||||||
'run_safely',
|
'run_safely',
|
||||||
];
|
];
|
||||||
|
|
||||||
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
# CONSTANTS
|
# CONSTANTS
|
||||||
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
# local usage only
|
# local usage only
|
||||||
T = TypeVar('T');
|
T = TypeVar('T');
|
||||||
V = TypeVar('V');
|
V = TypeVar('V');
|
||||||
ARGS = ParamSpec('ARGS');
|
ARGS = ParamSpec('ARGS');
|
||||||
|
|
||||||
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
# Class State for keeping track of results in the course of a computation
|
# Class State for keeping track of results in the course of a computation
|
||||||
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
@dataclass
|
@dataclass
|
||||||
class CallState(Generic[V]):
|
class CallState(Generic[V]):
|
||||||
@@ -151,9 +151,9 @@ def CallError(
|
|||||||
x = list(map(str, x));
|
x = list(map(str, x));
|
||||||
return CallState(tag=tag, errors=x, has_action=has_action, has_error=True);
|
return CallState(tag=tag, errors=x, has_action=has_action, has_error=True);
|
||||||
|
|
||||||
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
# DECORATOR - forces methods to run safely
|
# DECORATOR - forces methods to run safely
|
||||||
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
def run_safely(tag: str | None = None, error_message: str | None = None):
|
def run_safely(tag: str | None = None, error_message: str | None = None):
|
||||||
'''
|
'''
|
||||||
|
|||||||
+6
-6
@@ -1,18 +1,18 @@
|
|||||||
#!/usr/bin/env python3
|
#!/usr/bin/env python3
|
||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
# IMPORTS
|
# IMPORTS
|
||||||
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
from src.thirdparty.code import *;
|
from src.thirdparty.code import *;
|
||||||
from src.thirdparty.config import *;
|
from src.thirdparty.config import *;
|
||||||
from src.thirdparty.system import *;
|
from src.thirdparty.system import *;
|
||||||
from src.thirdparty.types import *;
|
from src.thirdparty.types import *;
|
||||||
|
|
||||||
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
# EXPORTS
|
# EXPORTS
|
||||||
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
__all__ = [
|
__all__ = [
|
||||||
'get_env_string',
|
'get_env_string',
|
||||||
@@ -23,9 +23,9 @@ __all__ = [
|
|||||||
'get_env_optional_float',
|
'get_env_optional_float',
|
||||||
];
|
];
|
||||||
|
|
||||||
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
# AUXILIARY METHODS
|
# AUXILIARY METHODS
|
||||||
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
def get_env_value(env: dict, key: str, default: Any = None) -> Any: # pragma: no cover
|
def get_env_value(env: dict, key: str, default: Any = None) -> Any: # pragma: no cover
|
||||||
return env[key] if key in env else default;
|
return env[key] if key in env else default;
|
||||||
|
|||||||
+12
-12
@@ -1,9 +1,9 @@
|
|||||||
#!/usr/bin/env python3
|
#!/usr/bin/env python3
|
||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
# IMPORTS
|
# IMPORTS
|
||||||
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
from src.thirdparty.code import *;
|
from src.thirdparty.code import *;
|
||||||
from src.thirdparty.io import *;
|
from src.thirdparty.io import *;
|
||||||
@@ -13,9 +13,9 @@ from src.thirdparty.types import *;
|
|||||||
|
|
||||||
from src.core.calls import *;
|
from src.core.calls import *;
|
||||||
|
|
||||||
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
# EXPORTS
|
# EXPORTS
|
||||||
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
__all__ = [
|
__all__ = [
|
||||||
'LOG_LEVELS',
|
'LOG_LEVELS',
|
||||||
@@ -33,9 +33,9 @@ __all__ = [
|
|||||||
'prompt_confirmation',
|
'prompt_confirmation',
|
||||||
];
|
];
|
||||||
|
|
||||||
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
# CONSTANTS
|
# CONSTANTS
|
||||||
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
class LOG_LEVELS(Enum): # pragma: no cover
|
class LOG_LEVELS(Enum): # pragma: no cover
|
||||||
INFO = logging.INFO;
|
INFO = logging.INFO;
|
||||||
@@ -45,9 +45,9 @@ class LOG_LEVELS(Enum): # pragma: no cover
|
|||||||
_LOGGING_DEBUG_FILE: str = 'logs/debug.log';
|
_LOGGING_DEBUG_FILE: str = 'logs/debug.log';
|
||||||
T = TypeVar('T');
|
T = TypeVar('T');
|
||||||
|
|
||||||
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
# METHODS
|
# METHODS
|
||||||
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
def configure_logging(level: LOG_LEVELS): # pragma: no cover
|
def configure_logging(level: LOG_LEVELS): # pragma: no cover
|
||||||
logging.basicConfig(
|
logging.basicConfig(
|
||||||
@@ -73,9 +73,9 @@ def log_fatal(*messages: Any):
|
|||||||
logging.fatal(*messages);
|
logging.fatal(*messages);
|
||||||
exit(1);
|
exit(1);
|
||||||
|
|
||||||
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
# Special Methods
|
# Special Methods
|
||||||
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
# Intercept fatal errors
|
# Intercept fatal errors
|
||||||
def catch_fatal(method: Callable[[], T]) -> T:
|
def catch_fatal(method: Callable[[], T]) -> T:
|
||||||
@@ -105,9 +105,9 @@ def log_result(result: Result[CallState, CallState], debug: bool = False):
|
|||||||
log_error(e);
|
log_error(e);
|
||||||
return;
|
return;
|
||||||
|
|
||||||
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
# DEBUG LOGGING FOR DEVELOPMENT
|
# DEBUG LOGGING FOR DEVELOPMENT
|
||||||
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
def log_dev(*messages: Any): # pragma: no cover
|
def log_dev(*messages: Any): # pragma: no cover
|
||||||
with open(_LOGGING_DEBUG_FILE, 'a') as fp:
|
with open(_LOGGING_DEBUG_FILE, 'a') as fp:
|
||||||
|
|||||||
+8
-8
@@ -1,26 +1,26 @@
|
|||||||
#!/usr/bin/env python3
|
#!/usr/bin/env python3
|
||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
# IMPORTS
|
# IMPORTS
|
||||||
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
from src.thirdparty.code import *;
|
from src.thirdparty.code import *;
|
||||||
from src.thirdparty.misc import *;
|
from src.thirdparty.misc import *;
|
||||||
from src.thirdparty.types import *;
|
from src.thirdparty.types import *;
|
||||||
|
|
||||||
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
# EXPORTS
|
# EXPORTS
|
||||||
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
__all__ = [
|
__all__ = [
|
||||||
'flatten',
|
'flatten',
|
||||||
'get_timestamp_string',
|
'get_timestamp_string',
|
||||||
];
|
];
|
||||||
|
|
||||||
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
# METHODS - date, time
|
# METHODS - date, time
|
||||||
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
def get_timestamp() -> datetime: # pragma: no cover
|
def get_timestamp() -> datetime: # pragma: no cover
|
||||||
return datetime.now();
|
return datetime.now();
|
||||||
@@ -28,9 +28,9 @@ def get_timestamp() -> datetime: # pragma: no cover
|
|||||||
def get_timestamp_string() -> str: # pragma: no cover
|
def get_timestamp_string() -> str: # pragma: no cover
|
||||||
return str(get_timestamp());
|
return str(get_timestamp());
|
||||||
|
|
||||||
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
# METHODS arrays
|
# METHODS arrays
|
||||||
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
def flatten(X: list[list[Any]]) -> list[Any]:
|
def flatten(X: list[list[Any]]) -> list[Any]:
|
||||||
return list(itertools_chain.from_iterable(X));
|
return list(itertools_chain.from_iterable(X));
|
||||||
|
|||||||
@@ -6,6 +6,7 @@
|
|||||||
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
from src.maths.diagrams.sets import *;
|
from src.maths.diagrams.sets import *;
|
||||||
|
from src.maths.diagrams.signal import *;
|
||||||
|
|
||||||
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
# EXPORTS
|
# EXPORTS
|
||||||
@@ -14,4 +15,5 @@ from src.maths.diagrams.sets import *;
|
|||||||
__all__ = [
|
__all__ = [
|
||||||
'Function',
|
'Function',
|
||||||
'Functions',
|
'Functions',
|
||||||
|
'display_signal',
|
||||||
];
|
];
|
||||||
|
|||||||
@@ -0,0 +1,48 @@
|
|||||||
|
#!/usr/bin/env python3
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
|
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
# IMPORTS
|
||||||
|
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
from __future__ import annotations;
|
||||||
|
|
||||||
|
from src.thirdparty.code import *;
|
||||||
|
from src.thirdparty.types import *;
|
||||||
|
from src.thirdparty.maths import *;
|
||||||
|
from src.thirdparty.plots import *;
|
||||||
|
|
||||||
|
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
# EXPORTS
|
||||||
|
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
__all__ = [
|
||||||
|
'display_signal',
|
||||||
|
];
|
||||||
|
|
||||||
|
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
# CONSTANTS / VARIABLES
|
||||||
|
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
def display_signal(
|
||||||
|
u: np.ndarray,
|
||||||
|
title: str,
|
||||||
|
max_labels = 10,
|
||||||
|
):
|
||||||
|
n = len(u);
|
||||||
|
if n <= max_labels:
|
||||||
|
x_axis = list(range(n));
|
||||||
|
else:
|
||||||
|
skip = int(n/max_labels);
|
||||||
|
x_axis = [ k*skip for k in range(max_labels) ];
|
||||||
|
|
||||||
|
fig, axs = mplot.subplots(1, 1, constrained_layout=True);
|
||||||
|
mplot.title(title);
|
||||||
|
mplot.xlabel('»Zeit« [=Indizes]');
|
||||||
|
mplot.ylabel('Werte [=Einträge]');
|
||||||
|
axs.stem(linspace(0,n-1,n), np.real(u), label='reeller Teil', linefmt='red');
|
||||||
|
axs.stem(linspace(0,n-1,n) + 0.05, np.imag(u), label='imaginärer Teil', linefmt='lime');
|
||||||
|
mplot.legend();
|
||||||
|
axs.set_xticks(x_axis, labels=[ str(index) for index in x_axis]);
|
||||||
|
mplot.show();
|
||||||
|
return;
|
||||||
Vendored
+2
-2
@@ -25,9 +25,9 @@ from safetywrap import Result;
|
|||||||
from safetywrap import Option;
|
from safetywrap import Option;
|
||||||
from safetywrap import Some;
|
from safetywrap import Some;
|
||||||
|
|
||||||
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
# EXPORTS
|
# EXPORTS
|
||||||
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
__all__ = [
|
__all__ = [
|
||||||
'partial',
|
'partial',
|
||||||
|
|||||||
Vendored
+2
-2
@@ -15,9 +15,9 @@ from yaml import load as yaml_load;
|
|||||||
from yaml import FullLoader as yaml_FullLoader;
|
from yaml import FullLoader as yaml_FullLoader;
|
||||||
from yaml import add_path_resolver as yaml_add_path_resolver;
|
from yaml import add_path_resolver as yaml_add_path_resolver;
|
||||||
|
|
||||||
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
# EXPORTS
|
# EXPORTS
|
||||||
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
__all__ = [
|
__all__ = [
|
||||||
'load_dotenv',
|
'load_dotenv',
|
||||||
|
|||||||
Vendored
+2
-2
@@ -7,9 +7,9 @@
|
|||||||
|
|
||||||
from getpass import getpass;
|
from getpass import getpass;
|
||||||
|
|
||||||
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
# EXPORTS
|
# EXPORTS
|
||||||
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
__all__ = [
|
__all__ = [
|
||||||
'getpass',
|
'getpass',
|
||||||
|
|||||||
Vendored
+2
-2
@@ -8,9 +8,9 @@
|
|||||||
import logging;
|
import logging;
|
||||||
from logging import LogRecord;
|
from logging import LogRecord;
|
||||||
|
|
||||||
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
# EXPORTS
|
# EXPORTS
|
||||||
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
__all__ = [
|
__all__ = [
|
||||||
'logging',
|
'logging',
|
||||||
|
|||||||
Vendored
+17
-3
@@ -6,10 +6,17 @@
|
|||||||
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
from fractions import Fraction;
|
from fractions import Fraction;
|
||||||
|
from numpy import cos;
|
||||||
|
from numpy import exp;
|
||||||
|
from numpy import linalg;
|
||||||
|
from numpy import linspace;
|
||||||
|
from numpy import pi;
|
||||||
|
from numpy import sin;
|
||||||
|
from numpy import sqrt;
|
||||||
|
from typing import TypeVar;
|
||||||
import math;
|
import math;
|
||||||
import numpy as np;
|
import numpy as np;
|
||||||
import random;
|
import random;
|
||||||
from typing import TypeVar;
|
|
||||||
|
|
||||||
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
# MODIFICATIONS
|
# MODIFICATIONS
|
||||||
@@ -33,14 +40,21 @@ def sample(
|
|||||||
'''
|
'''
|
||||||
return np.random.choice(X, size=size, replace=replace).tolist();
|
return np.random.choice(X, size=size, replace=replace).tolist();
|
||||||
|
|
||||||
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
# EXPORTS
|
# EXPORTS
|
||||||
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
__all__ = [
|
__all__ = [
|
||||||
'Fraction',
|
'Fraction',
|
||||||
|
'cos',
|
||||||
|
'exp',
|
||||||
|
'linalg',
|
||||||
|
'linspace',
|
||||||
'math',
|
'math',
|
||||||
'np',
|
'np',
|
||||||
|
'pi',
|
||||||
'random',
|
'random',
|
||||||
'sample',
|
'sample',
|
||||||
|
'sin',
|
||||||
|
'sqrt',
|
||||||
];
|
];
|
||||||
|
|||||||
Vendored
+2
-2
@@ -64,9 +64,9 @@ def dedent(text: str) -> str:
|
|||||||
'''
|
'''
|
||||||
return textwrap_dedent(text);
|
return textwrap_dedent(text);
|
||||||
|
|
||||||
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
# EXPORTS
|
# EXPORTS
|
||||||
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
__all__ = [
|
__all__ = [
|
||||||
'lorem',
|
'lorem',
|
||||||
|
|||||||
Vendored
+2
-2
@@ -11,9 +11,9 @@ from matplotlib.figure import Figure;
|
|||||||
from matplotlib.axes import Axes;
|
from matplotlib.axes import Axes;
|
||||||
from matplotlib.patches import FancyArrowPatch;
|
from matplotlib.patches import FancyArrowPatch;
|
||||||
|
|
||||||
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
# EXPORTS
|
# EXPORTS
|
||||||
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
__all__ = [
|
__all__ = [
|
||||||
'mplot',
|
'mplot',
|
||||||
|
|||||||
Vendored
+40
-7
@@ -6,24 +6,57 @@
|
|||||||
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
from IPython.display import Latex;
|
from IPython.display import Latex;
|
||||||
from IPython.display import display_latex;
|
|
||||||
from IPython.display import display_png;
|
|
||||||
from IPython.display import display_markdown;
|
|
||||||
from IPython.display import display;
|
from IPython.display import display;
|
||||||
|
from IPython.display import display_png;
|
||||||
|
from IPython.display import display as display_text_ipython;
|
||||||
|
from IPython.display import display_latex as display_latex_ipython;
|
||||||
|
from IPython.display import display_markdown as display_md_ipython;
|
||||||
import ipywidgets as widgets;
|
import ipywidgets as widgets;
|
||||||
# from array_to_latex import to_ltx as array_to_latex; # <- has issues
|
# from array_to_latex import to_ltx as array_to_latex; # <- has issues
|
||||||
from qiskit.visualization import array_to_latex;
|
from qiskit.visualization import array_to_latex;
|
||||||
|
|
||||||
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
from functools import wraps;
|
||||||
|
from typing import Callable;
|
||||||
|
from typing import TypeVar;
|
||||||
|
|
||||||
|
from src.thirdparty.misc import dedent;
|
||||||
|
|
||||||
|
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
# MODIFICATIONS
|
||||||
|
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
T1 = TypeVar('T1');
|
||||||
|
T2 = TypeVar('T2');
|
||||||
|
|
||||||
|
def display_with_dedent(pre_process: Callable[[str], T1] = lambda x: x):
|
||||||
|
'''
|
||||||
|
Returns a decorator that modifies string -> string methods
|
||||||
|
'''
|
||||||
|
def dec(method: Callable[[T1], T2]) -> Callable[[str], T2]:
|
||||||
|
'''
|
||||||
|
Performs method but dedents first.
|
||||||
|
'''
|
||||||
|
@wraps(method)
|
||||||
|
def wrapped_method(text: str) -> T2:
|
||||||
|
return method(pre_process(dedent(text)));
|
||||||
|
return wrapped_method;
|
||||||
|
|
||||||
|
return dec;
|
||||||
|
|
||||||
|
display_latex = display_with_dedent(Latex)(display_latex_ipython);
|
||||||
|
display_text = display_with_dedent()(display_text_ipython);
|
||||||
|
display_markdown = display_with_dedent()(display_md_ipython);
|
||||||
|
|
||||||
|
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
# EXPORTS
|
# EXPORTS
|
||||||
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
__all__ = [
|
__all__ = [
|
||||||
|
'Latex',
|
||||||
'array_to_latex',
|
'array_to_latex',
|
||||||
|
'display',
|
||||||
'display_latex',
|
'display_latex',
|
||||||
'display_markdown',
|
'display_markdown',
|
||||||
'display_png',
|
'display_png',
|
||||||
'display',
|
|
||||||
'Latex',
|
|
||||||
'widgets',
|
'widgets',
|
||||||
];
|
];
|
||||||
|
|||||||
Vendored
+2
-2
@@ -7,9 +7,9 @@
|
|||||||
|
|
||||||
from codetiming import Timer;
|
from codetiming import Timer;
|
||||||
|
|
||||||
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
# EXPORTS
|
# EXPORTS
|
||||||
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
__all__ = [
|
__all__ = [
|
||||||
'Timer',
|
'Timer',
|
||||||
|
|||||||
Vendored
+2
-2
@@ -9,9 +9,9 @@ import os;
|
|||||||
from pathlib import Path;
|
from pathlib import Path;
|
||||||
import sys;
|
import sys;
|
||||||
|
|
||||||
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
# EXPORTS
|
# EXPORTS
|
||||||
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
__all__ = [
|
__all__ = [
|
||||||
'os',
|
'os',
|
||||||
|
|||||||
Vendored
+4
-4
@@ -38,12 +38,12 @@ from typing import Generic;
|
|||||||
from typing import Optional;
|
from typing import Optional;
|
||||||
from typing import Type;
|
from typing import Type;
|
||||||
from typing import TypeVar;
|
from typing import TypeVar;
|
||||||
from typing_extensions import Concatenate;
|
from typing import Concatenate;
|
||||||
from typing_extensions import ParamSpec;
|
from typing import ParamSpec;
|
||||||
|
|
||||||
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
# EXPORTS
|
# EXPORTS
|
||||||
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
__all__ = [
|
__all__ = [
|
||||||
'Enum',
|
'Enum',
|
||||||
|
|||||||
Reference in New Issue
Block a user