diff --git a/.github/dependabot.yml b/.github/dependabot.yml index 5a27633e68..4cb3e5ecee 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -6,5 +6,4 @@ updates: interval: monthly open-pull-requests-limit: 10 allow: - - dependency-name: flake8 - - dependency-name: black + - dependency-name: ruff diff --git a/.github/workflows/linters.yml b/.github/workflows/linters.yml index 19f8f01041..79c9cdca29 100644 --- a/.github/workflows/linters.yml +++ b/.github/workflows/linters.yml @@ -4,7 +4,7 @@ # https://raw.githubusercontent.com/actions/python-versions/main/versions-manifest.json name: linters -on: +on: push: branches: - master @@ -18,12 +18,12 @@ jobs: fail-fast: false matrix: include: - - {name: Linux312, python: '3.12.3', os: ubuntu-latest} + - {name: Linux313, python: '3.13.7', os: ubuntu-latest} steps: - name: Check out repository uses: actions/checkout@v2 - - name: Set up Python + - name: Set up Python uses: actions/setup-python@v2 with: python-version: ${{ matrix.python }} @@ -48,8 +48,8 @@ jobs: - name: Check code style run: | . venv/bin/activate - python -m ruff check . - python -m black --check . + python -m ruff format --check + python -m ruff check - name: Check directory layout run: | diff --git a/README.md b/README.md index 3acfe71543..8d8d305965 100644 --- a/README.md +++ b/README.md @@ -15,23 +15,26 @@ Due to time constraints, we cannot provide 1:1 support via GitHub. See you on Sl ### Running Code Style Checks -We use [ruff](https://docs.astral.sh/ruff/) and [black](https://black.readthedocs.io/) to ensure a consistent code style for all of our sample code in this repository. +We use [Ruff](https://realpython.com/ruff-python/) to ensure a consistent code style and formatting for all of our sample code in this repository. Run the following commands to validate your code against the linters: ```sh -$ ruff check . -$ black --check . +$ ruff format --check +$ ruff check ``` +Make sure you're using the exact Ruff version specified in [`requirements.txt`](https://github.com/realpython/materials/blob/master/requirements.txt). + ### Running Python Code Formatter -We're using a tool called [black](https://black.readthedocs.io/) on this repo to ensure consistent formatting. On CI it runs in "check" mode to ensure any new files added to the repo follow PEP 8. If you see linter warnings that say something like "would reformat some_file.py" it means that black disagrees with your formatting. +Ruff can automatically ensure a consistent code formatting in this repository. On CI, it runs in "check" mode to ensure any new files added to the repo follow [PEP 8](https://realpython.com/python-pep8/). If you see linter warnings that say something like "would reformat some_file.py", then it means that Ruff disagrees with your formatting. -**The easiest way to resolve these errors is to run Black locally on the code and then commit those changes, as explained below.** +The easiest way to resolve these errors is to run Ruff locally on the code and then commit those changes, as explained below. -To automatically re-format your code to be consistent with our code style guidelines, run [black](https://black.readthedocs.io/) in the repository root folder: +To automatically reformat your code to be consistent with our code style guidelines, run [Ruff](https://pypi.org/project/ruff/) in the repository root folder: ```sh -$ black . +$ ruff format +$ ruff check --fix ``` diff --git a/advent-of-code/solutions/2021/05_hydrothermal_venture/aoc202105.py b/advent-of-code/solutions/2021/05_hydrothermal_venture/aoc202105.py index 48ea1b3c8b..70566d81f0 100644 --- a/advent-of-code/solutions/2021/05_hydrothermal_venture/aoc202105.py +++ b/advent-of-code/solutions/2021/05_hydrothermal_venture/aoc202105.py @@ -63,7 +63,10 @@ def points(line): case (x1, y1, x2, y2) if y1 == y2: return [(x, y1) for x in coords(x1, x2)] case (x1, y1, x2, y2): - return [(x, y) for x, y in zip(coords(x1, x2), coords(y1, y2))] + return [ + (x, y) + for x, y in zip(coords(x1, x2), coords(y1, y2), strict=False) + ] def coords(start, stop): diff --git a/arcade-platformer/arcade_platformer/11_title_view.py b/arcade-platformer/arcade_platformer/11_title_view.py index b9e429d714..0e7fb1527b 100644 --- a/arcade-platformer/arcade_platformer/11_title_view.py +++ b/arcade-platformer/arcade_platformer/11_title_view.py @@ -74,7 +74,6 @@ def on_update(self, delta_time: float) -> None: # If the timer has run out, we toggle the instructions if self.display_timer < 0: - # Toggle whether to show the instructions self.show_instructions = not self.show_instructions diff --git a/arcade-platformer/arcade_platformer/12_instructions_view.py b/arcade-platformer/arcade_platformer/12_instructions_view.py index bec90cb9ae..5de4c65b93 100644 --- a/arcade-platformer/arcade_platformer/12_instructions_view.py +++ b/arcade-platformer/arcade_platformer/12_instructions_view.py @@ -74,7 +74,6 @@ def on_update(self, delta_time: float) -> None: # If the timer has run out, we toggle the instructions if self.display_timer < 0: - # Toggle whether to show the instructions self.show_instructions = not self.show_instructions diff --git a/arcade-platformer/arcade_platformer/13_pause_view.py b/arcade-platformer/arcade_platformer/13_pause_view.py index f469b8ce48..a93b3e1260 100644 --- a/arcade-platformer/arcade_platformer/13_pause_view.py +++ b/arcade-platformer/arcade_platformer/13_pause_view.py @@ -74,7 +74,6 @@ def on_update(self, delta_time: float) -> None: # If the timer has run out, we toggle the instructions if self.display_timer < 0: - # Toggle whether to show the instructions self.show_instructions = not self.show_instructions diff --git a/arcade-platformer/arcade_platformer/14_enemies.py b/arcade-platformer/arcade_platformer/14_enemies.py index 3b81adb91b..ff0060446f 100644 --- a/arcade-platformer/arcade_platformer/14_enemies.py +++ b/arcade-platformer/arcade_platformer/14_enemies.py @@ -116,7 +116,6 @@ def on_update(self, delta_time: float) -> None: # If the timer has run out, we toggle the instructions if self.display_timer < 0: - # Toggle whether to show the instructions self.show_instructions = not self.show_instructions diff --git a/arcade-platformer/arcade_platformer/15_moving_platforms.py b/arcade-platformer/arcade_platformer/15_moving_platforms.py index 7020d5fb56..ab56604658 100644 --- a/arcade-platformer/arcade_platformer/15_moving_platforms.py +++ b/arcade-platformer/arcade_platformer/15_moving_platforms.py @@ -116,7 +116,6 @@ def on_update(self, delta_time: float) -> None: # If the timer has run out, we toggle the instructions if self.display_timer < 0: - # Toggle whether to show the instructions self.show_instructions = not self.show_instructions diff --git a/arcade-platformer/arcade_platformer/arcade_platformer.py b/arcade-platformer/arcade_platformer/arcade_platformer.py index ec7e1e0a20..7fdd6f9954 100644 --- a/arcade-platformer/arcade_platformer/arcade_platformer.py +++ b/arcade-platformer/arcade_platformer/arcade_platformer.py @@ -91,7 +91,6 @@ def on_update(self, delta_time: float) -> None: # If the timer has run out, we toggle the instructions if self.display_timer < 0: - # Toggle whether to show the instructions self.show_instructions = not self.show_instructions diff --git a/asyncio-walkthrough/asyncq.py b/asyncio-walkthrough/asyncq.py index debf5a3a80..ef2c9c15e1 100644 --- a/asyncio-walkthrough/asyncq.py +++ b/asyncio-walkthrough/asyncq.py @@ -42,9 +42,7 @@ async def consume(name: int, q: asyncio.Queue) -> None: await randsleep(caller=f"Consumer {name}") i, t = await q.get() now = await seconds() - print( - f"Consumer {name} got element <{i}>" f" in {now-t:0.5f} seconds." - ) + print(f"Consumer {name} got element <{i}> in {now - t:0.5f} seconds.") q.task_done() diff --git a/brython/sha256/main.py b/brython/sha256/main.py index a602187357..3c471e3a46 100644 --- a/brython/sha256/main.py +++ b/brython/sha256/main.py @@ -24,8 +24,7 @@ def compute(evt): return if value in hash_map: alert( - f"The SHA-256 value of '{value}' " - f"already exists: '{hash_map[value]}'" + f"The SHA-256 value of '{value}' already exists: '{hash_map[value]}'" ) return hash = hashlib.sha256() diff --git a/build-a-blog-from-scratch-django/django-blog/blog/migrations/0001_initial.py b/build-a-blog-from-scratch-django/django-blog/blog/migrations/0001_initial.py index 1f1bba108f..cb0e728d05 100644 --- a/build-a-blog-from-scratch-django/django-blog/blog/migrations/0001_initial.py +++ b/build-a-blog-from-scratch-django/django-blog/blog/migrations/0001_initial.py @@ -1,7 +1,7 @@ # Generated by Django 4.2.4 on 2023-08-29 12:43 -from django.db import migrations, models import django.db.models.deletion +from django.db import migrations, models class Migration(migrations.Migration): diff --git a/build-a-blog-from-scratch-django/django-blog/manage.py b/build-a-blog-from-scratch-django/django-blog/manage.py index 3e900181cc..f213084740 100755 --- a/build-a-blog-from-scratch-django/django-blog/manage.py +++ b/build-a-blog-from-scratch-django/django-blog/manage.py @@ -1,5 +1,6 @@ #!/usr/bin/env python """Django's command-line utility for administrative tasks.""" + import os import sys diff --git a/build-a-django-content-aggregator/source_code_final/manage.py b/build-a-django-content-aggregator/source_code_final/manage.py index ad326c60f8..8396fbb0e6 100755 --- a/build-a-django-content-aggregator/source_code_final/manage.py +++ b/build-a-django-content-aggregator/source_code_final/manage.py @@ -1,5 +1,6 @@ #!/usr/bin/env python """Django's command-line utility for administrative tasks.""" + import os import sys diff --git a/build-a-django-content-aggregator/source_code_step_1/manage.py b/build-a-django-content-aggregator/source_code_step_1/manage.py index ad326c60f8..8396fbb0e6 100755 --- a/build-a-django-content-aggregator/source_code_step_1/manage.py +++ b/build-a-django-content-aggregator/source_code_step_1/manage.py @@ -1,5 +1,6 @@ #!/usr/bin/env python """Django's command-line utility for administrative tasks.""" + import os import sys diff --git a/build-a-django-content-aggregator/source_code_step_2/manage.py b/build-a-django-content-aggregator/source_code_step_2/manage.py index ad326c60f8..8396fbb0e6 100755 --- a/build-a-django-content-aggregator/source_code_step_2/manage.py +++ b/build-a-django-content-aggregator/source_code_step_2/manage.py @@ -1,5 +1,6 @@ #!/usr/bin/env python """Django's command-line utility for administrative tasks.""" + import os import sys diff --git a/build-a-django-content-aggregator/source_code_step_3/manage.py b/build-a-django-content-aggregator/source_code_step_3/manage.py index ad326c60f8..8396fbb0e6 100755 --- a/build-a-django-content-aggregator/source_code_step_3/manage.py +++ b/build-a-django-content-aggregator/source_code_step_3/manage.py @@ -1,5 +1,6 @@ #!/usr/bin/env python """Django's command-line utility for administrative tasks.""" + import os import sys diff --git a/build-a-django-content-aggregator/source_code_step_4/manage.py b/build-a-django-content-aggregator/source_code_step_4/manage.py index ad326c60f8..8396fbb0e6 100755 --- a/build-a-django-content-aggregator/source_code_step_4/manage.py +++ b/build-a-django-content-aggregator/source_code_step_4/manage.py @@ -1,5 +1,6 @@ #!/usr/bin/env python """Django's command-line utility for administrative tasks.""" + import os import sys diff --git a/build-a-django-content-aggregator/source_code_step_5/manage.py b/build-a-django-content-aggregator/source_code_step_5/manage.py index ad326c60f8..8396fbb0e6 100755 --- a/build-a-django-content-aggregator/source_code_step_5/manage.py +++ b/build-a-django-content-aggregator/source_code_step_5/manage.py @@ -1,5 +1,6 @@ #!/usr/bin/env python """Django's command-line utility for administrative tasks.""" + import os import sys diff --git a/build-a-django-content-aggregator/source_code_step_6/manage.py b/build-a-django-content-aggregator/source_code_step_6/manage.py index ad326c60f8..8396fbb0e6 100755 --- a/build-a-django-content-aggregator/source_code_step_6/manage.py +++ b/build-a-django-content-aggregator/source_code_step_6/manage.py @@ -1,5 +1,6 @@ #!/usr/bin/env python """Django's command-line utility for administrative tasks.""" + import os import sys diff --git a/build-a-django-content-aggregator/source_code_step_7/manage.py b/build-a-django-content-aggregator/source_code_step_7/manage.py index ad326c60f8..8396fbb0e6 100755 --- a/build-a-django-content-aggregator/source_code_step_7/manage.py +++ b/build-a-django-content-aggregator/source_code_step_7/manage.py @@ -1,5 +1,6 @@ #!/usr/bin/env python """Django's command-line utility for administrative tasks.""" + import os import sys diff --git a/build-a-web-scraper/04_pipeline.ipynb b/build-a-web-scraper/04_pipeline.ipynb index 256748db9c..cad54c5d78 100644 --- a/build-a-web-scraper/04_pipeline.ipynb +++ b/build-a-web-scraper/04_pipeline.ipynb @@ -29,10 +29,7 @@ "execution_count": 1, "metadata": {}, "outputs": [], - "source": [ - "import requests\n", - "from bs4 import BeautifulSoup" - ] + "source": [] }, { "cell_type": "markdown", diff --git a/celery-async-tasks/source_code_final/manage.py b/celery-async-tasks/source_code_final/manage.py index 302ce4b1ef..892ac6ca5b 100755 --- a/celery-async-tasks/source_code_final/manage.py +++ b/celery-async-tasks/source_code_final/manage.py @@ -1,5 +1,6 @@ #!/usr/bin/env python """Django's command-line utility for administrative tasks.""" + import os import sys diff --git a/celery-async-tasks/source_code_initial/manage.py b/celery-async-tasks/source_code_initial/manage.py index 302ce4b1ef..892ac6ca5b 100755 --- a/celery-async-tasks/source_code_initial/manage.py +++ b/celery-async-tasks/source_code_initial/manage.py @@ -1,5 +1,6 @@ #!/usr/bin/env python """Django's command-line utility for administrative tasks.""" + import os import sys diff --git a/chatgpt-mentor/fizzbuzz_chatgpt_option_2.py b/chatgpt-mentor/fizzbuzz_chatgpt_option_2.py index 6d3574ad04..8e3573feaa 100644 --- a/chatgpt-mentor/fizzbuzz_chatgpt_option_2.py +++ b/chatgpt-mentor/fizzbuzz_chatgpt_option_2.py @@ -3,7 +3,11 @@ def fizzbuzz(n): ( "fizz buzz" if i % 15 == 0 - else "fizz" if i % 3 == 0 else "buzz" if i % 5 == 0 else i + else "fizz" + if i % 3 == 0 + else "buzz" + if i % 5 == 0 + else i ) for i in range(1, n + 1) ] diff --git a/chatgpt-mentor/fizzbuzz_chatgpt_option_3.py b/chatgpt-mentor/fizzbuzz_chatgpt_option_3.py index 898428ef72..5e08faad2d 100644 --- a/chatgpt-mentor/fizzbuzz_chatgpt_option_3.py +++ b/chatgpt-mentor/fizzbuzz_chatgpt_option_3.py @@ -3,7 +3,11 @@ def fizzbuzz(n): ( "fizz buzz" if i % 15 == 0 - else "fizz" if i % 3 == 0 else "buzz" if i % 5 == 0 else i + else "fizz" + if i % 3 == 0 + else "buzz" + if i % 5 == 0 + else i ) for i in range(1, n + 1) ) diff --git a/chatgpt-unit-tests-python/test_fizzbuzz_pytest.py b/chatgpt-unit-tests-python/test_fizzbuzz_pytest.py index 756415803a..625977257b 100644 --- a/chatgpt-unit-tests-python/test_fizzbuzz_pytest.py +++ b/chatgpt-unit-tests-python/test_fizzbuzz_pytest.py @@ -35,6 +35,6 @@ ], ) def test_fizzbuzz(input, expected): - assert ( - fizzbuzz(input) == expected - ), f"Expected {expected} for input {input}" + assert fizzbuzz(input) == expected, ( + f"Expected {expected} for input {input}" + ) diff --git a/chatterbot/source_code_final/bot.py b/chatterbot/source_code_final/bot.py index f6adfbfbc1..7fbe51d93a 100644 --- a/chatterbot/source_code_final/bot.py +++ b/chatterbot/source_code_final/bot.py @@ -1,7 +1,7 @@ +from chatterbot.trainers import ListTrainer from cleaner import clean_corpus from chatterbot import ChatBot -from chatterbot.trainers import ListTrainer CORPUS_FILE = "chat.txt" diff --git a/chatterbot/source_code_step_2/bot.py b/chatterbot/source_code_step_2/bot.py index bfa76ff8f5..941882289a 100644 --- a/chatterbot/source_code_step_2/bot.py +++ b/chatterbot/source_code_step_2/bot.py @@ -1,6 +1,7 @@ -from chatterbot import ChatBot from chatterbot.trainers import ListTrainer +from chatterbot import ChatBot + chatbot = ChatBot("Chatpot") trainer = ListTrainer(chatbot) diff --git a/chatterbot/source_code_step_3/bot.py b/chatterbot/source_code_step_3/bot.py index bfa76ff8f5..941882289a 100644 --- a/chatterbot/source_code_step_3/bot.py +++ b/chatterbot/source_code_step_3/bot.py @@ -1,6 +1,7 @@ -from chatterbot import ChatBot from chatterbot.trainers import ListTrainer +from chatterbot import ChatBot + chatbot = ChatBot("Chatpot") trainer = ListTrainer(chatbot) diff --git a/chatterbot/source_code_step_4/bot.py b/chatterbot/source_code_step_4/bot.py index bfa76ff8f5..941882289a 100644 --- a/chatterbot/source_code_step_4/bot.py +++ b/chatterbot/source_code_step_4/bot.py @@ -1,6 +1,7 @@ -from chatterbot import ChatBot from chatterbot.trainers import ListTrainer +from chatterbot import ChatBot + chatbot = ChatBot("Chatpot") trainer = ListTrainer(chatbot) diff --git a/chatterbot/source_code_step_5/bot.py b/chatterbot/source_code_step_5/bot.py index f6adfbfbc1..7fbe51d93a 100644 --- a/chatterbot/source_code_step_5/bot.py +++ b/chatterbot/source_code_step_5/bot.py @@ -1,7 +1,7 @@ +from chatterbot.trainers import ListTrainer from cleaner import clean_corpus from chatterbot import ChatBot -from chatterbot.trainers import ListTrainer CORPUS_FILE = "chat.txt" diff --git a/complex-numbers/bermuda.ipynb b/complex-numbers/bermuda.ipynb index 4aa17606e6..3555bdb172 100644 --- a/complex-numbers/bermuda.ipynb +++ b/complex-numbers/bermuda.ipynb @@ -25,7 +25,7 @@ "metadata": {}, "outputs": [], "source": [ - "from ipywidgets import interact, IntSlider, FloatSlider" + "from ipywidgets import FloatSlider, IntSlider, interact" ] }, { @@ -66,7 +66,7 @@ " plt.plot(x, y, \"o\", color=stroke)\n", " plt.gca().add_patch(\n", " plt.Polygon(\n", - " list(zip(x, y)),\n", + " list(zip(x, y, strict=False)),\n", " facecolor=fill,\n", " edgecolor=stroke,\n", " alpha=0.5,\n", diff --git a/complex-numbers/fourier.ipynb b/complex-numbers/fourier.ipynb index dd17855a06..aa067daa2a 100644 --- a/complex-numbers/fourier.ipynb +++ b/complex-numbers/fourier.ipynb @@ -89,8 +89,8 @@ } ], "source": [ - "from ipywidgets import interact, FloatSlider\n", "from IPython.display import Audio, display\n", + "from ipywidgets import FloatSlider, interact\n", "\n", "tone = None\n", "\n", @@ -168,7 +168,7 @@ "metadata": {}, "outputs": [], "source": [ - "from cmath import pi, exp\n", + "from cmath import exp, pi\n", "\n", "\n", "def discrete_fourier_transform(x, k):\n", diff --git a/consuming-apis-python/github.py b/consuming-apis-python/github.py index 2a4344c398..e7b83d2cd0 100644 --- a/consuming-apis-python/github.py +++ b/consuming-apis-python/github.py @@ -77,8 +77,7 @@ def print_user_info(access_token=None): username = response["login"] private_repos_count = response["total_private_repos"] print( - f"{name} ({username}) | " - f"number of private repositories: {private_repos_count}" + f"{name} ({username}) | number of private repositories: {private_repos_count}" ) diff --git a/data-analysis/data_analysis_findings.ipynb b/data-analysis/data_analysis_findings.ipynb index e040d79449..88d3d3a8aa 100644 --- a/data-analysis/data_analysis_findings.ipynb +++ b/data-analysis/data_analysis_findings.ipynb @@ -958,9 +958,7 @@ "metadata": {}, "outputs": [], "source": [ - "from sklearn.linear_model import LinearRegression\n", "import matplotlib.pyplot as plt\n", - "\n", "from sklearn.linear_model import LinearRegression\n", "\n", "x = data.loc[:, [\"imdb\"]]\n", diff --git a/data-analysis/data_analysis_results.ipynb b/data-analysis/data_analysis_results.ipynb index 9787f530de..396d715a0b 100644 --- a/data-analysis/data_analysis_results.ipynb +++ b/data-analysis/data_analysis_results.ipynb @@ -129,9 +129,7 @@ "metadata": {}, "outputs": [], "source": [ - "from sklearn.linear_model import LinearRegression\n", "import matplotlib.pyplot as plt\n", - "\n", "from sklearn.linear_model import LinearRegression\n", "\n", "x = data.loc[:, [\"imdb\"]]\n", diff --git a/django-diary/source_code_final/manage.py b/django-diary/source_code_final/manage.py index b33a811b21..7a099cd2a4 100755 --- a/django-diary/source_code_final/manage.py +++ b/django-diary/source_code_final/manage.py @@ -1,5 +1,6 @@ #!/usr/bin/env python """Django's command-line utility for administrative tasks.""" + import os import sys diff --git a/django-diary/source_code_step_1/manage.py b/django-diary/source_code_step_1/manage.py index b33a811b21..7a099cd2a4 100755 --- a/django-diary/source_code_step_1/manage.py +++ b/django-diary/source_code_step_1/manage.py @@ -1,5 +1,6 @@ #!/usr/bin/env python """Django's command-line utility for administrative tasks.""" + import os import sys diff --git a/django-diary/source_code_step_2/manage.py b/django-diary/source_code_step_2/manage.py index b33a811b21..7a099cd2a4 100755 --- a/django-diary/source_code_step_2/manage.py +++ b/django-diary/source_code_step_2/manage.py @@ -1,5 +1,6 @@ #!/usr/bin/env python """Django's command-line utility for administrative tasks.""" + import os import sys diff --git a/django-diary/source_code_step_3/manage.py b/django-diary/source_code_step_3/manage.py index b33a811b21..7a099cd2a4 100755 --- a/django-diary/source_code_step_3/manage.py +++ b/django-diary/source_code_step_3/manage.py @@ -1,5 +1,6 @@ #!/usr/bin/env python """Django's command-line utility for administrative tasks.""" + import os import sys diff --git a/django-diary/source_code_step_4/manage.py b/django-diary/source_code_step_4/manage.py index b33a811b21..7a099cd2a4 100755 --- a/django-diary/source_code_step_4/manage.py +++ b/django-diary/source_code_step_4/manage.py @@ -1,5 +1,6 @@ #!/usr/bin/env python """Django's command-line utility for administrative tasks.""" + import os import sys diff --git a/django-diary/source_code_step_5/manage.py b/django-diary/source_code_step_5/manage.py index b33a811b21..7a099cd2a4 100755 --- a/django-diary/source_code_step_5/manage.py +++ b/django-diary/source_code_step_5/manage.py @@ -1,5 +1,6 @@ #!/usr/bin/env python """Django's command-line utility for administrative tasks.""" + import os import sys diff --git a/django-diary/source_code_step_6/manage.py b/django-diary/source_code_step_6/manage.py index b33a811b21..7a099cd2a4 100755 --- a/django-diary/source_code_step_6/manage.py +++ b/django-diary/source_code_step_6/manage.py @@ -1,5 +1,6 @@ #!/usr/bin/env python """Django's command-line utility for administrative tasks.""" + import os import sys diff --git a/django-flashcards-app/source_code_final/cards/models.py b/django-flashcards-app/source_code_final/cards/models.py index 649faf7699..7dffecce1e 100644 --- a/django-flashcards-app/source_code_final/cards/models.py +++ b/django-flashcards-app/source_code_final/cards/models.py @@ -8,7 +8,7 @@ class Card(models.Model): question = models.CharField(max_length=100) answer = models.CharField(max_length=100) box = models.IntegerField( - choices=zip(BOXES, BOXES), + choices=zip(BOXES, BOXES, strict=False), default=BOXES[0], ) date_created = models.DateTimeField(auto_now_add=True) diff --git a/django-flashcards-app/source_code_final/manage.py b/django-flashcards-app/source_code_final/manage.py index 1b79bc97e5..8fff79c82b 100755 --- a/django-flashcards-app/source_code_final/manage.py +++ b/django-flashcards-app/source_code_final/manage.py @@ -1,5 +1,6 @@ #!/usr/bin/env python """Django's command-line utility for administrative tasks.""" + import os import sys diff --git a/django-flashcards-app/source_code_step_1/manage.py b/django-flashcards-app/source_code_step_1/manage.py index 1b79bc97e5..8fff79c82b 100755 --- a/django-flashcards-app/source_code_step_1/manage.py +++ b/django-flashcards-app/source_code_step_1/manage.py @@ -1,5 +1,6 @@ #!/usr/bin/env python """Django's command-line utility for administrative tasks.""" + import os import sys diff --git a/django-flashcards-app/source_code_step_2/manage.py b/django-flashcards-app/source_code_step_2/manage.py index 1b79bc97e5..8fff79c82b 100755 --- a/django-flashcards-app/source_code_step_2/manage.py +++ b/django-flashcards-app/source_code_step_2/manage.py @@ -1,5 +1,6 @@ #!/usr/bin/env python """Django's command-line utility for administrative tasks.""" + import os import sys diff --git a/django-flashcards-app/source_code_step_3/cards/models.py b/django-flashcards-app/source_code_step_3/cards/models.py index 1cf6ca2732..d162317aa9 100644 --- a/django-flashcards-app/source_code_step_3/cards/models.py +++ b/django-flashcards-app/source_code_step_3/cards/models.py @@ -8,7 +8,7 @@ class Card(models.Model): question = models.CharField(max_length=100) answer = models.CharField(max_length=100) box = models.IntegerField( - choices=zip(BOXES, BOXES), + choices=zip(BOXES, BOXES, strict=False), default=BOXES[0], ) date_created = models.DateTimeField(auto_now_add=True) diff --git a/django-flashcards-app/source_code_step_3/manage.py b/django-flashcards-app/source_code_step_3/manage.py index 1b79bc97e5..8fff79c82b 100755 --- a/django-flashcards-app/source_code_step_3/manage.py +++ b/django-flashcards-app/source_code_step_3/manage.py @@ -1,5 +1,6 @@ #!/usr/bin/env python """Django's command-line utility for administrative tasks.""" + import os import sys diff --git a/django-flashcards-app/source_code_step_4/cards/models.py b/django-flashcards-app/source_code_step_4/cards/models.py index 1cf6ca2732..d162317aa9 100644 --- a/django-flashcards-app/source_code_step_4/cards/models.py +++ b/django-flashcards-app/source_code_step_4/cards/models.py @@ -8,7 +8,7 @@ class Card(models.Model): question = models.CharField(max_length=100) answer = models.CharField(max_length=100) box = models.IntegerField( - choices=zip(BOXES, BOXES), + choices=zip(BOXES, BOXES, strict=False), default=BOXES[0], ) date_created = models.DateTimeField(auto_now_add=True) diff --git a/django-flashcards-app/source_code_step_4/manage.py b/django-flashcards-app/source_code_step_4/manage.py index 1b79bc97e5..8fff79c82b 100755 --- a/django-flashcards-app/source_code_step_4/manage.py +++ b/django-flashcards-app/source_code_step_4/manage.py @@ -1,5 +1,6 @@ #!/usr/bin/env python """Django's command-line utility for administrative tasks.""" + import os import sys diff --git a/django-flashcards-app/source_code_step_5/cards/models.py b/django-flashcards-app/source_code_step_5/cards/models.py index 649faf7699..7dffecce1e 100644 --- a/django-flashcards-app/source_code_step_5/cards/models.py +++ b/django-flashcards-app/source_code_step_5/cards/models.py @@ -8,7 +8,7 @@ class Card(models.Model): question = models.CharField(max_length=100) answer = models.CharField(max_length=100) box = models.IntegerField( - choices=zip(BOXES, BOXES), + choices=zip(BOXES, BOXES, strict=False), default=BOXES[0], ) date_created = models.DateTimeField(auto_now_add=True) diff --git a/django-flashcards-app/source_code_step_5/manage.py b/django-flashcards-app/source_code_step_5/manage.py index 1b79bc97e5..8fff79c82b 100755 --- a/django-flashcards-app/source_code_step_5/manage.py +++ b/django-flashcards-app/source_code_step_5/manage.py @@ -1,5 +1,6 @@ #!/usr/bin/env python """Django's command-line utility for administrative tasks.""" + import os import sys diff --git a/django-flashcards-app/source_code_step_6/cards/models.py b/django-flashcards-app/source_code_step_6/cards/models.py index 649faf7699..7dffecce1e 100644 --- a/django-flashcards-app/source_code_step_6/cards/models.py +++ b/django-flashcards-app/source_code_step_6/cards/models.py @@ -8,7 +8,7 @@ class Card(models.Model): question = models.CharField(max_length=100) answer = models.CharField(max_length=100) box = models.IntegerField( - choices=zip(BOXES, BOXES), + choices=zip(BOXES, BOXES, strict=False), default=BOXES[0], ) date_created = models.DateTimeField(auto_now_add=True) diff --git a/django-flashcards-app/source_code_step_6/manage.py b/django-flashcards-app/source_code_step_6/manage.py index 1b79bc97e5..8fff79c82b 100755 --- a/django-flashcards-app/source_code_step_6/manage.py +++ b/django-flashcards-app/source_code_step_6/manage.py @@ -1,5 +1,6 @@ #!/usr/bin/env python """Django's command-line utility for administrative tasks.""" + import os import sys diff --git a/django-gunicorn-nginx/manage.py b/django-gunicorn-nginx/manage.py index e170f6bafc..317280df26 100755 --- a/django-gunicorn-nginx/manage.py +++ b/django-gunicorn-nginx/manage.py @@ -1,5 +1,6 @@ #!/usr/bin/env python """Django's command-line utility for administrative tasks.""" + import os import sys diff --git a/django-hosting-heroku/source_code_final/portfolio-project/manage.py b/django-hosting-heroku/source_code_final/portfolio-project/manage.py index 563e65188e..f710c8a34f 100755 --- a/django-hosting-heroku/source_code_final/portfolio-project/manage.py +++ b/django-hosting-heroku/source_code_final/portfolio-project/manage.py @@ -1,5 +1,6 @@ #!/usr/bin/env python """Django's command-line utility for administrative tasks.""" + import os import sys diff --git a/django-hosting-heroku/source_code_step_1/portfolio-project/manage.py b/django-hosting-heroku/source_code_step_1/portfolio-project/manage.py index 563e65188e..f710c8a34f 100755 --- a/django-hosting-heroku/source_code_step_1/portfolio-project/manage.py +++ b/django-hosting-heroku/source_code_step_1/portfolio-project/manage.py @@ -1,5 +1,6 @@ #!/usr/bin/env python """Django's command-line utility for administrative tasks.""" + import os import sys diff --git a/django-hosting-heroku/source_code_step_2/portfolio-project/manage.py b/django-hosting-heroku/source_code_step_2/portfolio-project/manage.py index 563e65188e..f710c8a34f 100755 --- a/django-hosting-heroku/source_code_step_2/portfolio-project/manage.py +++ b/django-hosting-heroku/source_code_step_2/portfolio-project/manage.py @@ -1,5 +1,6 @@ #!/usr/bin/env python """Django's command-line utility for administrative tasks.""" + import os import sys diff --git a/django-hosting-heroku/source_code_step_7/portfolio-project/manage.py b/django-hosting-heroku/source_code_step_7/portfolio-project/manage.py index 563e65188e..f710c8a34f 100755 --- a/django-hosting-heroku/source_code_step_7/portfolio-project/manage.py +++ b/django-hosting-heroku/source_code_step_7/portfolio-project/manage.py @@ -1,5 +1,6 @@ #!/usr/bin/env python """Django's command-line utility for administrative tasks.""" + import os import sys diff --git a/django-hosting-heroku/source_code_step_8/portfolio-project/manage.py b/django-hosting-heroku/source_code_step_8/portfolio-project/manage.py index 563e65188e..f710c8a34f 100755 --- a/django-hosting-heroku/source_code_step_8/portfolio-project/manage.py +++ b/django-hosting-heroku/source_code_step_8/portfolio-project/manage.py @@ -1,5 +1,6 @@ #!/usr/bin/env python """Django's command-line utility for administrative tasks.""" + import os import sys diff --git a/django-markdown/manage.py b/django-markdown/manage.py index b83b48c164..ff585fb9dd 100755 --- a/django-markdown/manage.py +++ b/django-markdown/manage.py @@ -1,5 +1,6 @@ #!/usr/bin/env python """Django's command-line utility for administrative tasks.""" + import os import sys diff --git a/django-pagination/manage.py b/django-pagination/manage.py index aec8032cef..6b8c9eb7cd 100755 --- a/django-pagination/manage.py +++ b/django-pagination/manage.py @@ -1,5 +1,6 @@ #!/usr/bin/env python """Django's command-line utility for administrative tasks.""" + import os import sys diff --git a/django-todo-list/source_code_final/manage.py b/django-todo-list/source_code_final/manage.py index 5014897f57..ea4beea9a7 100755 --- a/django-todo-list/source_code_final/manage.py +++ b/django-todo-list/source_code_final/manage.py @@ -1,5 +1,6 @@ #!/usr/bin/env python """Django's command-line utility for administrative tasks.""" + import os import sys diff --git a/django-todo-list/source_code_final/todo_app/migrations/0001_initial.py b/django-todo-list/source_code_final/todo_app/migrations/0001_initial.py index 65bd503711..a7b94d7586 100644 --- a/django-todo-list/source_code_final/todo_app/migrations/0001_initial.py +++ b/django-todo-list/source_code_final/todo_app/migrations/0001_initial.py @@ -1,7 +1,8 @@ # Generated by Django 3.2.9 on 2021-12-19 19:49 -from django.db import migrations, models import django.db.models.deletion +from django.db import migrations, models + import todo_app.models diff --git a/django-todo-list/source_code_step_2/manage.py b/django-todo-list/source_code_step_2/manage.py index 5014897f57..ea4beea9a7 100755 --- a/django-todo-list/source_code_step_2/manage.py +++ b/django-todo-list/source_code_step_2/manage.py @@ -1,5 +1,6 @@ #!/usr/bin/env python """Django's command-line utility for administrative tasks.""" + import os import sys diff --git a/django-todo-list/source_code_step_3/manage.py b/django-todo-list/source_code_step_3/manage.py index 5014897f57..ea4beea9a7 100755 --- a/django-todo-list/source_code_step_3/manage.py +++ b/django-todo-list/source_code_step_3/manage.py @@ -1,5 +1,6 @@ #!/usr/bin/env python """Django's command-line utility for administrative tasks.""" + import os import sys diff --git a/django-todo-list/source_code_step_3/todo_app/migrations/0001_initial.py b/django-todo-list/source_code_step_3/todo_app/migrations/0001_initial.py index 327ff08909..6306d20f7e 100644 --- a/django-todo-list/source_code_step_3/todo_app/migrations/0001_initial.py +++ b/django-todo-list/source_code_step_3/todo_app/migrations/0001_initial.py @@ -1,7 +1,8 @@ # Generated by Django 3.2.9 on 2021-12-31 15:31 -from django.db import migrations, models import django.db.models.deletion +from django.db import migrations, models + import todo_app.models diff --git a/django-todo-list/source_code_step_4/manage.py b/django-todo-list/source_code_step_4/manage.py index 5014897f57..ea4beea9a7 100755 --- a/django-todo-list/source_code_step_4/manage.py +++ b/django-todo-list/source_code_step_4/manage.py @@ -1,5 +1,6 @@ #!/usr/bin/env python """Django's command-line utility for administrative tasks.""" + import os import sys diff --git a/django-todo-list/source_code_step_4/todo_app/migrations/0001_initial.py b/django-todo-list/source_code_step_4/todo_app/migrations/0001_initial.py index 65bd503711..a7b94d7586 100644 --- a/django-todo-list/source_code_step_4/todo_app/migrations/0001_initial.py +++ b/django-todo-list/source_code_step_4/todo_app/migrations/0001_initial.py @@ -1,7 +1,8 @@ # Generated by Django 3.2.9 on 2021-12-19 19:49 -from django.db import migrations, models import django.db.models.deletion +from django.db import migrations, models + import todo_app.models diff --git a/django-todo-list/source_code_step_5/manage.py b/django-todo-list/source_code_step_5/manage.py index 5014897f57..ea4beea9a7 100755 --- a/django-todo-list/source_code_step_5/manage.py +++ b/django-todo-list/source_code_step_5/manage.py @@ -1,5 +1,6 @@ #!/usr/bin/env python """Django's command-line utility for administrative tasks.""" + import os import sys diff --git a/django-todo-list/source_code_step_5/todo_app/migrations/0001_initial.py b/django-todo-list/source_code_step_5/todo_app/migrations/0001_initial.py index 65bd503711..a7b94d7586 100644 --- a/django-todo-list/source_code_step_5/todo_app/migrations/0001_initial.py +++ b/django-todo-list/source_code_step_5/todo_app/migrations/0001_initial.py @@ -1,7 +1,8 @@ # Generated by Django 3.2.9 on 2021-12-19 19:49 -from django.db import migrations, models import django.db.models.deletion +from django.db import migrations, models + import todo_app.models diff --git a/django-todo-list/source_code_step_6/manage.py b/django-todo-list/source_code_step_6/manage.py index 5014897f57..ea4beea9a7 100755 --- a/django-todo-list/source_code_step_6/manage.py +++ b/django-todo-list/source_code_step_6/manage.py @@ -1,5 +1,6 @@ #!/usr/bin/env python """Django's command-line utility for administrative tasks.""" + import os import sys diff --git a/django-todo-list/source_code_step_6/todo_app/migrations/0001_initial.py b/django-todo-list/source_code_step_6/todo_app/migrations/0001_initial.py index 65bd503711..a7b94d7586 100644 --- a/django-todo-list/source_code_step_6/todo_app/migrations/0001_initial.py +++ b/django-todo-list/source_code_step_6/todo_app/migrations/0001_initial.py @@ -1,7 +1,8 @@ # Generated by Django 3.2.9 on 2021-12-19 19:49 -from django.db import migrations, models import django.db.models.deletion +from django.db import migrations, models + import todo_app.models diff --git a/django-todo-list/source_code_step_7/manage.py b/django-todo-list/source_code_step_7/manage.py index 5014897f57..ea4beea9a7 100755 --- a/django-todo-list/source_code_step_7/manage.py +++ b/django-todo-list/source_code_step_7/manage.py @@ -1,5 +1,6 @@ #!/usr/bin/env python """Django's command-line utility for administrative tasks.""" + import os import sys diff --git a/django-todo-list/source_code_step_7/todo_app/migrations/0001_initial.py b/django-todo-list/source_code_step_7/todo_app/migrations/0001_initial.py index 65bd503711..a7b94d7586 100644 --- a/django-todo-list/source_code_step_7/todo_app/migrations/0001_initial.py +++ b/django-todo-list/source_code_step_7/todo_app/migrations/0001_initial.py @@ -1,7 +1,8 @@ # Generated by Django 3.2.9 on 2021-12-19 19:49 -from django.db import migrations, models import django.db.models.deletion +from django.db import migrations, models + import todo_app.models diff --git a/django-user-management/user_auth_intro/manage.py b/django-user-management/user_auth_intro/manage.py index c67a51c556..18c3bb4b03 100755 --- a/django-user-management/user_auth_intro/manage.py +++ b/django-user-management/user_auth_intro/manage.py @@ -1,5 +1,6 @@ #!/usr/bin/env python """Django's command-line utility for administrative tasks.""" + import os import sys diff --git a/django-view-auth/Blog/manage.py b/django-view-auth/Blog/manage.py index 95ccf6bd45..462319cf40 100755 --- a/django-view-auth/Blog/manage.py +++ b/django-view-auth/Blog/manage.py @@ -1,5 +1,6 @@ #!/usr/bin/env python """Django's command-line utility for administrative tasks.""" + import os import sys diff --git a/django-vue-graphql/source_code_final/back_end/manage.py b/django-vue-graphql/source_code_final/back_end/manage.py index 1917e46e5a..ae97db8bae 100755 --- a/django-vue-graphql/source_code_final/back_end/manage.py +++ b/django-vue-graphql/source_code_final/back_end/manage.py @@ -1,5 +1,6 @@ #!/usr/bin/env python """Django's command-line utility for administrative tasks.""" + import os import sys diff --git a/django-vue-graphql/source_code_step_1/back_end/manage.py b/django-vue-graphql/source_code_step_1/back_end/manage.py index 1917e46e5a..ae97db8bae 100755 --- a/django-vue-graphql/source_code_step_1/back_end/manage.py +++ b/django-vue-graphql/source_code_step_1/back_end/manage.py @@ -1,5 +1,6 @@ #!/usr/bin/env python """Django's command-line utility for administrative tasks.""" + import os import sys diff --git a/django-vue-graphql/source_code_step_2/back_end/manage.py b/django-vue-graphql/source_code_step_2/back_end/manage.py index 1917e46e5a..ae97db8bae 100755 --- a/django-vue-graphql/source_code_step_2/back_end/manage.py +++ b/django-vue-graphql/source_code_step_2/back_end/manage.py @@ -1,5 +1,6 @@ #!/usr/bin/env python """Django's command-line utility for administrative tasks.""" + import os import sys diff --git a/django-vue-graphql/source_code_step_3/back_end/manage.py b/django-vue-graphql/source_code_step_3/back_end/manage.py index 1917e46e5a..ae97db8bae 100755 --- a/django-vue-graphql/source_code_step_3/back_end/manage.py +++ b/django-vue-graphql/source_code_step_3/back_end/manage.py @@ -1,5 +1,6 @@ #!/usr/bin/env python """Django's command-line utility for administrative tasks.""" + import os import sys diff --git a/django-vue-graphql/source_code_step_4/back_end/manage.py b/django-vue-graphql/source_code_step_4/back_end/manage.py index 1917e46e5a..ae97db8bae 100755 --- a/django-vue-graphql/source_code_step_4/back_end/manage.py +++ b/django-vue-graphql/source_code_step_4/back_end/manage.py @@ -1,5 +1,6 @@ #!/usr/bin/env python """Django's command-line utility for administrative tasks.""" + import os import sys diff --git a/django-vue-graphql/source_code_step_5/back_end/manage.py b/django-vue-graphql/source_code_step_5/back_end/manage.py index 1917e46e5a..ae97db8bae 100755 --- a/django-vue-graphql/source_code_step_5/back_end/manage.py +++ b/django-vue-graphql/source_code_step_5/back_end/manage.py @@ -1,5 +1,6 @@ #!/usr/bin/env python """Django's command-line utility for administrative tasks.""" + import os import sys diff --git a/django-vue-graphql/source_code_step_6/back_end/manage.py b/django-vue-graphql/source_code_step_6/back_end/manage.py index 1917e46e5a..ae97db8bae 100755 --- a/django-vue-graphql/source_code_step_6/back_end/manage.py +++ b/django-vue-graphql/source_code_step_6/back_end/manage.py @@ -1,5 +1,6 @@ #!/usr/bin/env python """Django's command-line utility for administrative tasks.""" + import os import sys diff --git a/django-vue-graphql/source_code_step_7/back_end/manage.py b/django-vue-graphql/source_code_step_7/back_end/manage.py index 1917e46e5a..ae97db8bae 100755 --- a/django-vue-graphql/source_code_step_7/back_end/manage.py +++ b/django-vue-graphql/source_code_step_7/back_end/manage.py @@ -1,5 +1,6 @@ #!/usr/bin/env python """Django's command-line utility for administrative tasks.""" + import os import sys diff --git a/django-vue-graphql/source_code_step_8/back_end/manage.py b/django-vue-graphql/source_code_step_8/back_end/manage.py index 1917e46e5a..ae97db8bae 100755 --- a/django-vue-graphql/source_code_step_8/back_end/manage.py +++ b/django-vue-graphql/source_code_step_8/back_end/manage.py @@ -1,5 +1,6 @@ #!/usr/bin/env python """Django's command-line utility for administrative tasks.""" + import os import sys diff --git a/docker-continuous-integration/web/src/page_tracker/app.py b/docker-continuous-integration/web/src/page_tracker/app.py index 50503f2a52..fe4200bd8c 100644 --- a/docker-continuous-integration/web/src/page_tracker/app.py +++ b/docker-continuous-integration/web/src/page_tracker/app.py @@ -13,7 +13,7 @@ def index(): page_views = redis().incr("page_views") except RedisError: app.logger.exception("Redis error") # pylint: disable=E1101 - return "Sorry, something went wrong \N{pensive face}", 500 + return "Sorry, something went wrong \N{PENSIVE FACE}", 500 else: return f"This page has been seen {page_views} times." diff --git a/docker-continuous-integration/web/test/unit/test_app.py b/docker-continuous-integration/web/test/unit/test_app.py index 6efc5f3397..fa55e6e0a9 100644 --- a/docker-continuous-integration/web/test/unit/test_app.py +++ b/docker-continuous-integration/web/test/unit/test_app.py @@ -27,4 +27,4 @@ def test_should_handle_redis_connection_error(mock_redis, http_client): # Then assert response.status_code == 500 - assert response.text == "Sorry, something went wrong \N{pensive face}" + assert response.text == "Sorry, something went wrong \N{PENSIVE FACE}" diff --git a/document-python-code-with-chatgpt/docstring_1.py b/document-python-code-with-chatgpt/docstring_1.py index 110858255a..04c568392a 100644 --- a/document-python-code-with-chatgpt/docstring_1.py +++ b/document-python-code-with-chatgpt/docstring_1.py @@ -1,4 +1,4 @@ -""""Prompt +""" "Prompt Write a single-line docstring for the following function: def add(a, b): diff --git a/duckdb/duckdb_code.ipynb b/duckdb/duckdb_code.ipynb index df7d41f469..0614aaa3f4 100644 --- a/duckdb/duckdb_code.ipynb +++ b/duckdb/duckdb_code.ipynb @@ -269,6 +269,7 @@ "outputs": [], "source": [ "from concurrent.futures import ThreadPoolExecutor\n", + "\n", "import duckdb\n", "\n", "\n", @@ -308,7 +309,6 @@ "metadata": {}, "outputs": [], "source": [ - "from concurrent.futures import ThreadPoolExecutor\n", "import duckdb\n", "\n", "\n", diff --git a/dwitter-part-1/source_code_final/dwitter/migrations/0001_initial.py b/dwitter-part-1/source_code_final/dwitter/migrations/0001_initial.py index cc3314f34e..c42ed3dd0c 100644 --- a/dwitter-part-1/source_code_final/dwitter/migrations/0001_initial.py +++ b/dwitter-part-1/source_code_final/dwitter/migrations/0001_initial.py @@ -1,8 +1,8 @@ # Generated by Django 3.2.8 on 2021-10-08 09:55 +import django.db.models.deletion from django.conf import settings from django.db import migrations, models -import django.db.models.deletion class Migration(migrations.Migration): diff --git a/dwitter-part-1/source_code_final/manage.py b/dwitter-part-1/source_code_final/manage.py index 0c555bc9d2..2ed572e2e7 100755 --- a/dwitter-part-1/source_code_final/manage.py +++ b/dwitter-part-1/source_code_final/manage.py @@ -1,5 +1,6 @@ #!/usr/bin/env python """Django's command-line utility for administrative tasks.""" + import os import sys diff --git a/dwitter-part-1/source_code_step_01/manage.py b/dwitter-part-1/source_code_step_01/manage.py index 0c555bc9d2..2ed572e2e7 100755 --- a/dwitter-part-1/source_code_step_01/manage.py +++ b/dwitter-part-1/source_code_step_01/manage.py @@ -1,5 +1,6 @@ #!/usr/bin/env python """Django's command-line utility for administrative tasks.""" + import os import sys diff --git a/dwitter-part-1/source_code_step_02/dwitter/migrations/0001_initial.py b/dwitter-part-1/source_code_step_02/dwitter/migrations/0001_initial.py index cc3314f34e..c42ed3dd0c 100644 --- a/dwitter-part-1/source_code_step_02/dwitter/migrations/0001_initial.py +++ b/dwitter-part-1/source_code_step_02/dwitter/migrations/0001_initial.py @@ -1,8 +1,8 @@ # Generated by Django 3.2.8 on 2021-10-08 09:55 +import django.db.models.deletion from django.conf import settings from django.db import migrations, models -import django.db.models.deletion class Migration(migrations.Migration): diff --git a/dwitter-part-1/source_code_step_02/manage.py b/dwitter-part-1/source_code_step_02/manage.py index 0c555bc9d2..2ed572e2e7 100755 --- a/dwitter-part-1/source_code_step_02/manage.py +++ b/dwitter-part-1/source_code_step_02/manage.py @@ -1,5 +1,6 @@ #!/usr/bin/env python """Django's command-line utility for administrative tasks.""" + import os import sys diff --git a/dwitter-part-1/source_code_step_03/dwitter/migrations/0001_initial.py b/dwitter-part-1/source_code_step_03/dwitter/migrations/0001_initial.py index cc3314f34e..c42ed3dd0c 100644 --- a/dwitter-part-1/source_code_step_03/dwitter/migrations/0001_initial.py +++ b/dwitter-part-1/source_code_step_03/dwitter/migrations/0001_initial.py @@ -1,8 +1,8 @@ # Generated by Django 3.2.8 on 2021-10-08 09:55 +import django.db.models.deletion from django.conf import settings from django.db import migrations, models -import django.db.models.deletion class Migration(migrations.Migration): diff --git a/dwitter-part-1/source_code_step_03/manage.py b/dwitter-part-1/source_code_step_03/manage.py index 0c555bc9d2..2ed572e2e7 100755 --- a/dwitter-part-1/source_code_step_03/manage.py +++ b/dwitter-part-1/source_code_step_03/manage.py @@ -1,5 +1,6 @@ #!/usr/bin/env python """Django's command-line utility for administrative tasks.""" + import os import sys diff --git a/dwitter-part-2/source_code_final/dwitter/migrations/0001_initial.py b/dwitter-part-2/source_code_final/dwitter/migrations/0001_initial.py index 4ed219edbe..edf21c8bff 100644 --- a/dwitter-part-2/source_code_final/dwitter/migrations/0001_initial.py +++ b/dwitter-part-2/source_code_final/dwitter/migrations/0001_initial.py @@ -1,8 +1,8 @@ # Generated by Django 3.2.5 on 2021-08-06 12:57 +import django.db.models.deletion from django.conf import settings from django.db import migrations, models -import django.db.models.deletion class Migration(migrations.Migration): diff --git a/dwitter-part-2/source_code_final/manage.py b/dwitter-part-2/source_code_final/manage.py index 0c555bc9d2..2ed572e2e7 100755 --- a/dwitter-part-2/source_code_final/manage.py +++ b/dwitter-part-2/source_code_final/manage.py @@ -1,5 +1,6 @@ #!/usr/bin/env python """Django's command-line utility for administrative tasks.""" + import os import sys diff --git a/dwitter-part-2/source_code_start/dwitter/migrations/0001_initial.py b/dwitter-part-2/source_code_start/dwitter/migrations/0001_initial.py index 4ed219edbe..edf21c8bff 100644 --- a/dwitter-part-2/source_code_start/dwitter/migrations/0001_initial.py +++ b/dwitter-part-2/source_code_start/dwitter/migrations/0001_initial.py @@ -1,8 +1,8 @@ # Generated by Django 3.2.5 on 2021-08-06 12:57 +import django.db.models.deletion from django.conf import settings from django.db import migrations, models -import django.db.models.deletion class Migration(migrations.Migration): diff --git a/dwitter-part-2/source_code_start/manage.py b/dwitter-part-2/source_code_start/manage.py index 0c555bc9d2..2ed572e2e7 100755 --- a/dwitter-part-2/source_code_start/manage.py +++ b/dwitter-part-2/source_code_start/manage.py @@ -1,5 +1,6 @@ #!/usr/bin/env python """Django's command-line utility for administrative tasks.""" + import os import sys diff --git a/dwitter-part-2/source_code_step_04/dwitter/migrations/0001_initial.py b/dwitter-part-2/source_code_step_04/dwitter/migrations/0001_initial.py index 4ed219edbe..edf21c8bff 100644 --- a/dwitter-part-2/source_code_step_04/dwitter/migrations/0001_initial.py +++ b/dwitter-part-2/source_code_step_04/dwitter/migrations/0001_initial.py @@ -1,8 +1,8 @@ # Generated by Django 3.2.5 on 2021-08-06 12:57 +import django.db.models.deletion from django.conf import settings from django.db import migrations, models -import django.db.models.deletion class Migration(migrations.Migration): diff --git a/dwitter-part-2/source_code_step_04/manage.py b/dwitter-part-2/source_code_step_04/manage.py index 0c555bc9d2..2ed572e2e7 100755 --- a/dwitter-part-2/source_code_step_04/manage.py +++ b/dwitter-part-2/source_code_step_04/manage.py @@ -1,5 +1,6 @@ #!/usr/bin/env python """Django's command-line utility for administrative tasks.""" + import os import sys diff --git a/dwitter-part-2/source_code_step_05/dwitter/migrations/0001_initial.py b/dwitter-part-2/source_code_step_05/dwitter/migrations/0001_initial.py index 4ed219edbe..edf21c8bff 100644 --- a/dwitter-part-2/source_code_step_05/dwitter/migrations/0001_initial.py +++ b/dwitter-part-2/source_code_step_05/dwitter/migrations/0001_initial.py @@ -1,8 +1,8 @@ # Generated by Django 3.2.5 on 2021-08-06 12:57 +import django.db.models.deletion from django.conf import settings from django.db import migrations, models -import django.db.models.deletion class Migration(migrations.Migration): diff --git a/dwitter-part-2/source_code_step_05/manage.py b/dwitter-part-2/source_code_step_05/manage.py index 0c555bc9d2..2ed572e2e7 100755 --- a/dwitter-part-2/source_code_step_05/manage.py +++ b/dwitter-part-2/source_code_step_05/manage.py @@ -1,5 +1,6 @@ #!/usr/bin/env python """Django's command-line utility for administrative tasks.""" + import os import sys diff --git a/dwitter-part-2/source_code_step_06/dwitter/migrations/0001_initial.py b/dwitter-part-2/source_code_step_06/dwitter/migrations/0001_initial.py index 4ed219edbe..edf21c8bff 100644 --- a/dwitter-part-2/source_code_step_06/dwitter/migrations/0001_initial.py +++ b/dwitter-part-2/source_code_step_06/dwitter/migrations/0001_initial.py @@ -1,8 +1,8 @@ # Generated by Django 3.2.5 on 2021-08-06 12:57 +import django.db.models.deletion from django.conf import settings from django.db import migrations, models -import django.db.models.deletion class Migration(migrations.Migration): diff --git a/dwitter-part-2/source_code_step_06/manage.py b/dwitter-part-2/source_code_step_06/manage.py index 0c555bc9d2..2ed572e2e7 100755 --- a/dwitter-part-2/source_code_step_06/manage.py +++ b/dwitter-part-2/source_code_step_06/manage.py @@ -1,5 +1,6 @@ #!/usr/bin/env python """Django's command-line utility for administrative tasks.""" + import os import sys diff --git a/dwitter-part-3/source_code_final/dwitter/migrations/0001_initial.py b/dwitter-part-3/source_code_final/dwitter/migrations/0001_initial.py index 4ed219edbe..edf21c8bff 100644 --- a/dwitter-part-3/source_code_final/dwitter/migrations/0001_initial.py +++ b/dwitter-part-3/source_code_final/dwitter/migrations/0001_initial.py @@ -1,8 +1,8 @@ # Generated by Django 3.2.5 on 2021-08-06 12:57 +import django.db.models.deletion from django.conf import settings from django.db import migrations, models -import django.db.models.deletion class Migration(migrations.Migration): diff --git a/dwitter-part-3/source_code_final/dwitter/migrations/0002_dweet.py b/dwitter-part-3/source_code_final/dwitter/migrations/0002_dweet.py index af20fa8575..e6b04e9708 100644 --- a/dwitter-part-3/source_code_final/dwitter/migrations/0002_dweet.py +++ b/dwitter-part-3/source_code_final/dwitter/migrations/0002_dweet.py @@ -1,8 +1,8 @@ # Generated by Django 3.2.5 on 2021-08-17 09:01 +import django.db.models.deletion from django.conf import settings from django.db import migrations, models -import django.db.models.deletion class Migration(migrations.Migration): diff --git a/dwitter-part-3/source_code_final/dwitter/models.py b/dwitter-part-3/source_code_final/dwitter/models.py index ab1fdddc8d..074c086765 100644 --- a/dwitter-part-3/source_code_final/dwitter/models.py +++ b/dwitter-part-3/source_code_final/dwitter/models.py @@ -12,11 +12,7 @@ class Dweet(models.Model): created_at = models.DateTimeField(auto_now_add=True) def __str__(self): - return ( - f"{self.user} " - f"({self.created_at:%Y-%m-%d %H:%M}): " - f"{self.body[:30]}..." - ) + return f"{self.user} ({self.created_at:%Y-%m-%d %H:%M}): {self.body[:30]}..." class Profile(models.Model): diff --git a/dwitter-part-3/source_code_final/manage.py b/dwitter-part-3/source_code_final/manage.py index 0c555bc9d2..2ed572e2e7 100755 --- a/dwitter-part-3/source_code_final/manage.py +++ b/dwitter-part-3/source_code_final/manage.py @@ -1,5 +1,6 @@ #!/usr/bin/env python """Django's command-line utility for administrative tasks.""" + import os import sys diff --git a/dwitter-part-3/source_code_start/dwitter/migrations/0001_initial.py b/dwitter-part-3/source_code_start/dwitter/migrations/0001_initial.py index 4ed219edbe..edf21c8bff 100644 --- a/dwitter-part-3/source_code_start/dwitter/migrations/0001_initial.py +++ b/dwitter-part-3/source_code_start/dwitter/migrations/0001_initial.py @@ -1,8 +1,8 @@ # Generated by Django 3.2.5 on 2021-08-06 12:57 +import django.db.models.deletion from django.conf import settings from django.db import migrations, models -import django.db.models.deletion class Migration(migrations.Migration): diff --git a/dwitter-part-3/source_code_start/manage.py b/dwitter-part-3/source_code_start/manage.py index 0c555bc9d2..2ed572e2e7 100755 --- a/dwitter-part-3/source_code_start/manage.py +++ b/dwitter-part-3/source_code_start/manage.py @@ -1,5 +1,6 @@ #!/usr/bin/env python """Django's command-line utility for administrative tasks.""" + import os import sys diff --git a/dwitter-part-3/source_code_step_07/dwitter/migrations/0001_initial.py b/dwitter-part-3/source_code_step_07/dwitter/migrations/0001_initial.py index 4ed219edbe..edf21c8bff 100644 --- a/dwitter-part-3/source_code_step_07/dwitter/migrations/0001_initial.py +++ b/dwitter-part-3/source_code_step_07/dwitter/migrations/0001_initial.py @@ -1,8 +1,8 @@ # Generated by Django 3.2.5 on 2021-08-06 12:57 +import django.db.models.deletion from django.conf import settings from django.db import migrations, models -import django.db.models.deletion class Migration(migrations.Migration): diff --git a/dwitter-part-3/source_code_step_07/manage.py b/dwitter-part-3/source_code_step_07/manage.py index 0c555bc9d2..2ed572e2e7 100755 --- a/dwitter-part-3/source_code_step_07/manage.py +++ b/dwitter-part-3/source_code_step_07/manage.py @@ -1,5 +1,6 @@ #!/usr/bin/env python """Django's command-line utility for administrative tasks.""" + import os import sys diff --git a/dwitter-part-3/source_code_step_08/dwitter/migrations/0001_initial.py b/dwitter-part-3/source_code_step_08/dwitter/migrations/0001_initial.py index 4ed219edbe..edf21c8bff 100644 --- a/dwitter-part-3/source_code_step_08/dwitter/migrations/0001_initial.py +++ b/dwitter-part-3/source_code_step_08/dwitter/migrations/0001_initial.py @@ -1,8 +1,8 @@ # Generated by Django 3.2.5 on 2021-08-06 12:57 +import django.db.models.deletion from django.conf import settings from django.db import migrations, models -import django.db.models.deletion class Migration(migrations.Migration): diff --git a/dwitter-part-3/source_code_step_08/dwitter/migrations/0002_dweet.py b/dwitter-part-3/source_code_step_08/dwitter/migrations/0002_dweet.py index af20fa8575..e6b04e9708 100644 --- a/dwitter-part-3/source_code_step_08/dwitter/migrations/0002_dweet.py +++ b/dwitter-part-3/source_code_step_08/dwitter/migrations/0002_dweet.py @@ -1,8 +1,8 @@ # Generated by Django 3.2.5 on 2021-08-17 09:01 +import django.db.models.deletion from django.conf import settings from django.db import migrations, models -import django.db.models.deletion class Migration(migrations.Migration): diff --git a/dwitter-part-3/source_code_step_08/dwitter/models.py b/dwitter-part-3/source_code_step_08/dwitter/models.py index ab1fdddc8d..074c086765 100644 --- a/dwitter-part-3/source_code_step_08/dwitter/models.py +++ b/dwitter-part-3/source_code_step_08/dwitter/models.py @@ -12,11 +12,7 @@ class Dweet(models.Model): created_at = models.DateTimeField(auto_now_add=True) def __str__(self): - return ( - f"{self.user} " - f"({self.created_at:%Y-%m-%d %H:%M}): " - f"{self.body[:30]}..." - ) + return f"{self.user} ({self.created_at:%Y-%m-%d %H:%M}): {self.body[:30]}..." class Profile(models.Model): diff --git a/dwitter-part-3/source_code_step_08/manage.py b/dwitter-part-3/source_code_step_08/manage.py index 0c555bc9d2..2ed572e2e7 100755 --- a/dwitter-part-3/source_code_step_08/manage.py +++ b/dwitter-part-3/source_code_step_08/manage.py @@ -1,5 +1,6 @@ #!/usr/bin/env python """Django's command-line utility for administrative tasks.""" + import os import sys diff --git a/dwitter-part-3/source_code_step_09/dwitter/migrations/0001_initial.py b/dwitter-part-3/source_code_step_09/dwitter/migrations/0001_initial.py index 4ed219edbe..edf21c8bff 100644 --- a/dwitter-part-3/source_code_step_09/dwitter/migrations/0001_initial.py +++ b/dwitter-part-3/source_code_step_09/dwitter/migrations/0001_initial.py @@ -1,8 +1,8 @@ # Generated by Django 3.2.5 on 2021-08-06 12:57 +import django.db.models.deletion from django.conf import settings from django.db import migrations, models -import django.db.models.deletion class Migration(migrations.Migration): diff --git a/dwitter-part-3/source_code_step_09/dwitter/migrations/0002_dweet.py b/dwitter-part-3/source_code_step_09/dwitter/migrations/0002_dweet.py index af20fa8575..e6b04e9708 100644 --- a/dwitter-part-3/source_code_step_09/dwitter/migrations/0002_dweet.py +++ b/dwitter-part-3/source_code_step_09/dwitter/migrations/0002_dweet.py @@ -1,8 +1,8 @@ # Generated by Django 3.2.5 on 2021-08-17 09:01 +import django.db.models.deletion from django.conf import settings from django.db import migrations, models -import django.db.models.deletion class Migration(migrations.Migration): diff --git a/dwitter-part-3/source_code_step_09/dwitter/models.py b/dwitter-part-3/source_code_step_09/dwitter/models.py index ab1fdddc8d..074c086765 100644 --- a/dwitter-part-3/source_code_step_09/dwitter/models.py +++ b/dwitter-part-3/source_code_step_09/dwitter/models.py @@ -12,11 +12,7 @@ class Dweet(models.Model): created_at = models.DateTimeField(auto_now_add=True) def __str__(self): - return ( - f"{self.user} " - f"({self.created_at:%Y-%m-%d %H:%M}): " - f"{self.body[:30]}..." - ) + return f"{self.user} ({self.created_at:%Y-%m-%d %H:%M}): {self.body[:30]}..." class Profile(models.Model): diff --git a/dwitter-part-3/source_code_step_09/manage.py b/dwitter-part-3/source_code_step_09/manage.py index 0c555bc9d2..2ed572e2e7 100755 --- a/dwitter-part-3/source_code_step_09/manage.py +++ b/dwitter-part-3/source_code_step_09/manage.py @@ -1,5 +1,6 @@ #!/usr/bin/env python """Django's command-line utility for administrative tasks.""" + import os import sys diff --git a/dwitter-part-4/source_code_final/dwitter/migrations/0001_initial.py b/dwitter-part-4/source_code_final/dwitter/migrations/0001_initial.py index 4ed219edbe..edf21c8bff 100644 --- a/dwitter-part-4/source_code_final/dwitter/migrations/0001_initial.py +++ b/dwitter-part-4/source_code_final/dwitter/migrations/0001_initial.py @@ -1,8 +1,8 @@ # Generated by Django 3.2.5 on 2021-08-06 12:57 +import django.db.models.deletion from django.conf import settings from django.db import migrations, models -import django.db.models.deletion class Migration(migrations.Migration): diff --git a/dwitter-part-4/source_code_final/dwitter/migrations/0002_dweet.py b/dwitter-part-4/source_code_final/dwitter/migrations/0002_dweet.py index af20fa8575..e6b04e9708 100644 --- a/dwitter-part-4/source_code_final/dwitter/migrations/0002_dweet.py +++ b/dwitter-part-4/source_code_final/dwitter/migrations/0002_dweet.py @@ -1,8 +1,8 @@ # Generated by Django 3.2.5 on 2021-08-17 09:01 +import django.db.models.deletion from django.conf import settings from django.db import migrations, models -import django.db.models.deletion class Migration(migrations.Migration): diff --git a/dwitter-part-4/source_code_final/dwitter/models.py b/dwitter-part-4/source_code_final/dwitter/models.py index ab1fdddc8d..074c086765 100644 --- a/dwitter-part-4/source_code_final/dwitter/models.py +++ b/dwitter-part-4/source_code_final/dwitter/models.py @@ -12,11 +12,7 @@ class Dweet(models.Model): created_at = models.DateTimeField(auto_now_add=True) def __str__(self): - return ( - f"{self.user} " - f"({self.created_at:%Y-%m-%d %H:%M}): " - f"{self.body[:30]}..." - ) + return f"{self.user} ({self.created_at:%Y-%m-%d %H:%M}): {self.body[:30]}..." class Profile(models.Model): diff --git a/dwitter-part-4/source_code_final/manage.py b/dwitter-part-4/source_code_final/manage.py index 0c555bc9d2..2ed572e2e7 100755 --- a/dwitter-part-4/source_code_final/manage.py +++ b/dwitter-part-4/source_code_final/manage.py @@ -1,5 +1,6 @@ #!/usr/bin/env python """Django's command-line utility for administrative tasks.""" + import os import sys diff --git a/dwitter-part-4/source_code_start/dwitter/migrations/0001_initial.py b/dwitter-part-4/source_code_start/dwitter/migrations/0001_initial.py index 4ed219edbe..edf21c8bff 100644 --- a/dwitter-part-4/source_code_start/dwitter/migrations/0001_initial.py +++ b/dwitter-part-4/source_code_start/dwitter/migrations/0001_initial.py @@ -1,8 +1,8 @@ # Generated by Django 3.2.5 on 2021-08-06 12:57 +import django.db.models.deletion from django.conf import settings from django.db import migrations, models -import django.db.models.deletion class Migration(migrations.Migration): diff --git a/dwitter-part-4/source_code_start/dwitter/migrations/0002_dweet.py b/dwitter-part-4/source_code_start/dwitter/migrations/0002_dweet.py index af20fa8575..e6b04e9708 100644 --- a/dwitter-part-4/source_code_start/dwitter/migrations/0002_dweet.py +++ b/dwitter-part-4/source_code_start/dwitter/migrations/0002_dweet.py @@ -1,8 +1,8 @@ # Generated by Django 3.2.5 on 2021-08-17 09:01 +import django.db.models.deletion from django.conf import settings from django.db import migrations, models -import django.db.models.deletion class Migration(migrations.Migration): diff --git a/dwitter-part-4/source_code_start/dwitter/models.py b/dwitter-part-4/source_code_start/dwitter/models.py index ab1fdddc8d..074c086765 100644 --- a/dwitter-part-4/source_code_start/dwitter/models.py +++ b/dwitter-part-4/source_code_start/dwitter/models.py @@ -12,11 +12,7 @@ class Dweet(models.Model): created_at = models.DateTimeField(auto_now_add=True) def __str__(self): - return ( - f"{self.user} " - f"({self.created_at:%Y-%m-%d %H:%M}): " - f"{self.body[:30]}..." - ) + return f"{self.user} ({self.created_at:%Y-%m-%d %H:%M}): {self.body[:30]}..." class Profile(models.Model): diff --git a/dwitter-part-4/source_code_start/manage.py b/dwitter-part-4/source_code_start/manage.py index 0c555bc9d2..2ed572e2e7 100755 --- a/dwitter-part-4/source_code_start/manage.py +++ b/dwitter-part-4/source_code_start/manage.py @@ -1,5 +1,6 @@ #!/usr/bin/env python """Django's command-line utility for administrative tasks.""" + import os import sys diff --git a/dwitter-part-4/source_code_step_10/dwitter/migrations/0001_initial.py b/dwitter-part-4/source_code_step_10/dwitter/migrations/0001_initial.py index 4ed219edbe..edf21c8bff 100644 --- a/dwitter-part-4/source_code_step_10/dwitter/migrations/0001_initial.py +++ b/dwitter-part-4/source_code_step_10/dwitter/migrations/0001_initial.py @@ -1,8 +1,8 @@ # Generated by Django 3.2.5 on 2021-08-06 12:57 +import django.db.models.deletion from django.conf import settings from django.db import migrations, models -import django.db.models.deletion class Migration(migrations.Migration): diff --git a/dwitter-part-4/source_code_step_10/dwitter/migrations/0002_dweet.py b/dwitter-part-4/source_code_step_10/dwitter/migrations/0002_dweet.py index af20fa8575..e6b04e9708 100644 --- a/dwitter-part-4/source_code_step_10/dwitter/migrations/0002_dweet.py +++ b/dwitter-part-4/source_code_step_10/dwitter/migrations/0002_dweet.py @@ -1,8 +1,8 @@ # Generated by Django 3.2.5 on 2021-08-17 09:01 +import django.db.models.deletion from django.conf import settings from django.db import migrations, models -import django.db.models.deletion class Migration(migrations.Migration): diff --git a/dwitter-part-4/source_code_step_10/dwitter/models.py b/dwitter-part-4/source_code_step_10/dwitter/models.py index ab1fdddc8d..074c086765 100644 --- a/dwitter-part-4/source_code_step_10/dwitter/models.py +++ b/dwitter-part-4/source_code_step_10/dwitter/models.py @@ -12,11 +12,7 @@ class Dweet(models.Model): created_at = models.DateTimeField(auto_now_add=True) def __str__(self): - return ( - f"{self.user} " - f"({self.created_at:%Y-%m-%d %H:%M}): " - f"{self.body[:30]}..." - ) + return f"{self.user} ({self.created_at:%Y-%m-%d %H:%M}): {self.body[:30]}..." class Profile(models.Model): diff --git a/dwitter-part-4/source_code_step_10/manage.py b/dwitter-part-4/source_code_step_10/manage.py index 0c555bc9d2..2ed572e2e7 100755 --- a/dwitter-part-4/source_code_step_10/manage.py +++ b/dwitter-part-4/source_code_step_10/manage.py @@ -1,5 +1,6 @@ #!/usr/bin/env python """Django's command-line utility for administrative tasks.""" + import os import sys diff --git a/dwitter-part-4/source_code_step_11/dwitter/migrations/0001_initial.py b/dwitter-part-4/source_code_step_11/dwitter/migrations/0001_initial.py index 4ed219edbe..edf21c8bff 100644 --- a/dwitter-part-4/source_code_step_11/dwitter/migrations/0001_initial.py +++ b/dwitter-part-4/source_code_step_11/dwitter/migrations/0001_initial.py @@ -1,8 +1,8 @@ # Generated by Django 3.2.5 on 2021-08-06 12:57 +import django.db.models.deletion from django.conf import settings from django.db import migrations, models -import django.db.models.deletion class Migration(migrations.Migration): diff --git a/dwitter-part-4/source_code_step_11/dwitter/migrations/0002_dweet.py b/dwitter-part-4/source_code_step_11/dwitter/migrations/0002_dweet.py index af20fa8575..e6b04e9708 100644 --- a/dwitter-part-4/source_code_step_11/dwitter/migrations/0002_dweet.py +++ b/dwitter-part-4/source_code_step_11/dwitter/migrations/0002_dweet.py @@ -1,8 +1,8 @@ # Generated by Django 3.2.5 on 2021-08-17 09:01 +import django.db.models.deletion from django.conf import settings from django.db import migrations, models -import django.db.models.deletion class Migration(migrations.Migration): diff --git a/dwitter-part-4/source_code_step_11/dwitter/models.py b/dwitter-part-4/source_code_step_11/dwitter/models.py index ab1fdddc8d..074c086765 100644 --- a/dwitter-part-4/source_code_step_11/dwitter/models.py +++ b/dwitter-part-4/source_code_step_11/dwitter/models.py @@ -12,11 +12,7 @@ class Dweet(models.Model): created_at = models.DateTimeField(auto_now_add=True) def __str__(self): - return ( - f"{self.user} " - f"({self.created_at:%Y-%m-%d %H:%M}): " - f"{self.body[:30]}..." - ) + return f"{self.user} ({self.created_at:%Y-%m-%d %H:%M}): {self.body[:30]}..." class Profile(models.Model): diff --git a/dwitter-part-4/source_code_step_11/manage.py b/dwitter-part-4/source_code_step_11/manage.py index 0c555bc9d2..2ed572e2e7 100755 --- a/dwitter-part-4/source_code_step_11/manage.py +++ b/dwitter-part-4/source_code_step_11/manage.py @@ -1,5 +1,6 @@ #!/usr/bin/env python """Django's command-line utility for administrative tasks.""" + import os import sys diff --git a/dwitter-part-4/source_code_step_12/dwitter/migrations/0001_initial.py b/dwitter-part-4/source_code_step_12/dwitter/migrations/0001_initial.py index 4ed219edbe..edf21c8bff 100644 --- a/dwitter-part-4/source_code_step_12/dwitter/migrations/0001_initial.py +++ b/dwitter-part-4/source_code_step_12/dwitter/migrations/0001_initial.py @@ -1,8 +1,8 @@ # Generated by Django 3.2.5 on 2021-08-06 12:57 +import django.db.models.deletion from django.conf import settings from django.db import migrations, models -import django.db.models.deletion class Migration(migrations.Migration): diff --git a/dwitter-part-4/source_code_step_12/dwitter/migrations/0002_dweet.py b/dwitter-part-4/source_code_step_12/dwitter/migrations/0002_dweet.py index af20fa8575..e6b04e9708 100644 --- a/dwitter-part-4/source_code_step_12/dwitter/migrations/0002_dweet.py +++ b/dwitter-part-4/source_code_step_12/dwitter/migrations/0002_dweet.py @@ -1,8 +1,8 @@ # Generated by Django 3.2.5 on 2021-08-17 09:01 +import django.db.models.deletion from django.conf import settings from django.db import migrations, models -import django.db.models.deletion class Migration(migrations.Migration): diff --git a/dwitter-part-4/source_code_step_12/dwitter/models.py b/dwitter-part-4/source_code_step_12/dwitter/models.py index ab1fdddc8d..074c086765 100644 --- a/dwitter-part-4/source_code_step_12/dwitter/models.py +++ b/dwitter-part-4/source_code_step_12/dwitter/models.py @@ -12,11 +12,7 @@ class Dweet(models.Model): created_at = models.DateTimeField(auto_now_add=True) def __str__(self): - return ( - f"{self.user} " - f"({self.created_at:%Y-%m-%d %H:%M}): " - f"{self.body[:30]}..." - ) + return f"{self.user} ({self.created_at:%Y-%m-%d %H:%M}): {self.body[:30]}..." class Profile(models.Model): diff --git a/dwitter-part-4/source_code_step_12/manage.py b/dwitter-part-4/source_code_step_12/manage.py index 0c555bc9d2..2ed572e2e7 100755 --- a/dwitter-part-4/source_code_step_12/manage.py +++ b/dwitter-part-4/source_code_step_12/manage.py @@ -1,5 +1,6 @@ #!/usr/bin/env python """Django's command-line utility for administrative tasks.""" + import os import sys diff --git a/emacs-the-best-python-editor/PyEval/pyeval_expression.py b/emacs-the-best-python-editor/PyEval/pyeval_expression.py index ae93daa2cb..cb84143d35 100644 --- a/emacs-the-best-python-editor/PyEval/pyeval_expression.py +++ b/emacs-the-best-python-editor/PyEval/pyeval_expression.py @@ -87,7 +87,6 @@ def parse(self): self._current_position < len(self._expr_string) and current_char != "$" ): - # Skip any leading whitespace characters while current_char.isspace(): self._current_position += 1 diff --git a/embeddings-and-vector-databases-with-chromadb/text_embeddings.py b/embeddings-and-vector-databases-with-chromadb/text_embeddings.py index bb12abc5b4..66f1438db5 100644 --- a/embeddings-and-vector-databases-with-chromadb/text_embeddings.py +++ b/embeddings-and-vector-databases-with-chromadb/text_embeddings.py @@ -15,7 +15,7 @@ print(text_embeddings.shape) -text_embeddings_dict = dict(zip(texts, list(text_embeddings))) +text_embeddings_dict = dict(zip(texts, list(text_embeddings), strict=False)) dog_text_1 = "The canine barked loudly." dog_text_2 = "The dog made a noisy bark." diff --git a/face-recognition/source_code_final/detector.py b/face-recognition/source_code_final/detector.py index a8e2e5d5d1..eda5bd01f0 100644 --- a/face-recognition/source_code_final/detector.py +++ b/face-recognition/source_code_final/detector.py @@ -87,7 +87,7 @@ def recognize_faces( draw = ImageDraw.Draw(pillow_image) for bounding_box, unknown_encoding in zip( - input_face_locations, input_face_encodings + input_face_locations, input_face_encodings, strict=False ): name = _recognize_face(unknown_encoding, loaded_encodings) if not name: @@ -108,7 +108,9 @@ def _recognize_face(unknown_encoding, loaded_encodings): ) votes = Counter( name - for match, name in zip(boolean_matches, loaded_encodings["names"]) + for match, name in zip( + boolean_matches, loaded_encodings["names"], strict=False + ) if match ) if votes: diff --git a/face-recognition/source_code_step_3/detector.py b/face-recognition/source_code_step_3/detector.py index 22d2ccd235..4d995f1810 100644 --- a/face-recognition/source_code_step_3/detector.py +++ b/face-recognition/source_code_step_3/detector.py @@ -59,7 +59,7 @@ def recognize_faces( ) for bounding_box, unknown_encoding in zip( - input_face_locations, input_face_encodings + input_face_locations, input_face_encodings, strict=False ): name = _recognize_face(unknown_encoding, loaded_encodings) if not name: @@ -77,7 +77,9 @@ def _recognize_face(unknown_encoding, loaded_encodings): ) votes = Counter( name - for match, name in zip(boolean_matches, loaded_encodings["names"]) + for match, name in zip( + boolean_matches, loaded_encodings["names"], strict=False + ) if match ) if votes: diff --git a/face-recognition/source_code_step_4/detector.py b/face-recognition/source_code_step_4/detector.py index 7489931645..9a04e33f70 100644 --- a/face-recognition/source_code_step_4/detector.py +++ b/face-recognition/source_code_step_4/detector.py @@ -65,7 +65,7 @@ def recognize_faces( draw = ImageDraw.Draw(pillow_image) for bounding_box, unknown_encoding in zip( - input_face_locations, input_face_encodings + input_face_locations, input_face_encodings, strict=False ): name = _recognize_face(unknown_encoding, loaded_encodings) if not name: @@ -86,7 +86,9 @@ def _recognize_face(unknown_encoding, loaded_encodings): ) votes = Counter( name - for match, name in zip(boolean_matches, loaded_encodings["names"]) + for match, name in zip( + boolean_matches, loaded_encodings["names"], strict=False + ) if match ) if votes: diff --git a/face-recognition/source_code_step_5/detector.py b/face-recognition/source_code_step_5/detector.py index c9a8ac6608..292165f7f7 100644 --- a/face-recognition/source_code_step_5/detector.py +++ b/face-recognition/source_code_step_5/detector.py @@ -65,7 +65,7 @@ def recognize_faces( draw = ImageDraw.Draw(pillow_image) for bounding_box, unknown_encoding in zip( - input_face_locations, input_face_encodings + input_face_locations, input_face_encodings, strict=False ): name = _recognize_face(unknown_encoding, loaded_encodings) if not name: @@ -86,7 +86,9 @@ def _recognize_face(unknown_encoding, loaded_encodings): ) votes = Counter( name - for match, name in zip(boolean_matches, loaded_encodings["names"]) + for match, name in zip( + boolean_matches, loaded_encodings["names"], strict=False + ) if match ) if votes: diff --git a/face-recognition/source_code_step_6/detector.py b/face-recognition/source_code_step_6/detector.py index a8e2e5d5d1..eda5bd01f0 100644 --- a/face-recognition/source_code_step_6/detector.py +++ b/face-recognition/source_code_step_6/detector.py @@ -87,7 +87,7 @@ def recognize_faces( draw = ImageDraw.Draw(pillow_image) for bounding_box, unknown_encoding in zip( - input_face_locations, input_face_encodings + input_face_locations, input_face_encodings, strict=False ): name = _recognize_face(unknown_encoding, loaded_encodings) if not name: @@ -108,7 +108,9 @@ def _recognize_face(unknown_encoding, loaded_encodings): ) votes = Counter( name - for match, name in zip(boolean_matches, loaded_encodings["names"]) + for match, name in zip( + boolean_matches, loaded_encodings["names"], strict=False + ) if match ) if votes: diff --git a/fastapi-url-shortener/source_code_final/shortener_app/main.py b/fastapi-url-shortener/source_code_final/shortener_app/main.py index 84fa1ea688..65bcad7f55 100644 --- a/fastapi-url-shortener/source_code_final/shortener_app/main.py +++ b/fastapi-url-shortener/source_code_final/shortener_app/main.py @@ -1,9 +1,9 @@ import validators +from fastapi.responses import RedirectResponse from sqlalchemy.orm import Session from starlette.datastructures import URL from fastapi import Depends, FastAPI, HTTPException, Request -from fastapi.responses import RedirectResponse from . import crud, models, schemas from .config import get_settings diff --git a/fastapi-url-shortener/source_code_step_2/shortener_app/main.py b/fastapi-url-shortener/source_code_step_2/shortener_app/main.py index 5f68a9cea2..922bab4652 100644 --- a/fastapi-url-shortener/source_code_step_2/shortener_app/main.py +++ b/fastapi-url-shortener/source_code_step_2/shortener_app/main.py @@ -1,10 +1,10 @@ import secrets import validators +from fastapi.responses import RedirectResponse from sqlalchemy.orm import Session from fastapi import Depends, FastAPI, HTTPException, Request -from fastapi.responses import RedirectResponse from . import models, schemas from .database import SessionLocal, engine diff --git a/fastapi-url-shortener/source_code_step_3/shortener_app/main.py b/fastapi-url-shortener/source_code_step_3/shortener_app/main.py index 85d9e74cbb..13fe20a246 100644 --- a/fastapi-url-shortener/source_code_step_3/shortener_app/main.py +++ b/fastapi-url-shortener/source_code_step_3/shortener_app/main.py @@ -1,8 +1,8 @@ import validators +from fastapi.responses import RedirectResponse from sqlalchemy.orm import Session from fastapi import Depends, FastAPI, HTTPException, Request -from fastapi.responses import RedirectResponse from . import crud, models, schemas from .database import SessionLocal, engine diff --git a/flask-connexion-rest-part-4/notes.py b/flask-connexion-rest-part-4/notes.py index dbb555dc7f..32b7f4765b 100644 --- a/flask-connexion-rest-part-4/notes.py +++ b/flask-connexion-rest-part-4/notes.py @@ -100,7 +100,6 @@ def update(person_id, note_id, note): # Did we find an existing note? if update_note is not None: - # turn the passed in note into a db object schema = NoteSchema() update = schema.load(note, session=db.session).data diff --git a/flask-connexion-rest-part-4/people.py b/flask-connexion-rest-part-4/people.py index 6df04247b4..3e74e4b409 100644 --- a/flask-connexion-rest-part-4/people.py +++ b/flask-connexion-rest-part-4/people.py @@ -41,7 +41,6 @@ def read_one(person_id): # Did we find a person? if person is not None: - # Serialize the data for the response person_schema = PersonSchema() data = person_schema.dump(person).data @@ -71,7 +70,6 @@ def create(person): # Can we insert this person? if existing_person is None: - # Create a person instance using the schema and the passed in person schema = PersonSchema() new_person = schema.load(person, session=db.session).data @@ -105,7 +103,6 @@ def update(person_id, person): # Did we find an existing person? if update_person is not None: - # turn the passed in person into a db object schema = PersonSchema() update = schema.load(person, session=db.session).data diff --git a/flask-google-login/user.py b/flask-google-login/user.py index 973e784b0e..06321a5674 100644 --- a/flask-google-login/user.py +++ b/flask-google-login/user.py @@ -27,8 +27,7 @@ def get(user_id): def create(id_, name, email, profile_pic): db = get_db() db.execute( - "INSERT INTO user (id, name, email, profile_pic)" - " VALUES (?, ?, ?, ?)", + "INSERT INTO user (id, name, email, profile_pic) VALUES (?, ?, ?, ?)", (id_, name, email, profile_pic), ) db.commit() diff --git a/formatting-floats-f-strings/Code_and_Solutions.ipynb b/formatting-floats-f-strings/Code_and_Solutions.ipynb index 30b24bee07..1d67c54306 100644 --- a/formatting-floats-f-strings/Code_and_Solutions.ipynb +++ b/formatting-floats-f-strings/Code_and_Solutions.ipynb @@ -93,7 +93,7 @@ "\n", "cost_price = 1000\n", "tax = 0.2\n", - "f\"£{1000:,.2f} + £{cost_price*tax:,.2f} = £{total_price(cost_price):,.2f}\"" + "f\"£{1000:,.2f} + £{cost_price * tax:,.2f} = £{total_price(cost_price):,.2f}\"" ] }, { @@ -240,8 +240,7 @@ "number = 64723.4161\n", "\n", "(\n", - " f\"The number {number:,.4f}, when rounded to \"\n", - " f\"two decimal places is {number:_.2f}.\"\n", + " f\"The number {number:,.4f}, when rounded to two decimal places is {number:_.2f}.\"\n", ")" ] }, @@ -282,8 +281,7 @@ "numerator = 3\n", "denominator = 8\n", "(\n", - " f\"{numerator}/{denominator} as a percentage \"\n", - " f\"is {numerator/denominator:.1%}.\"\n", + " f\"{numerator}/{denominator} as a percentage is {numerator / denominator:.1%}.\"\n", ")" ] }, @@ -326,7 +324,7 @@ "radius = 2.340\n", "(\n", " f\"The volume of a sphere with radius {radius} meters \"\n", - " f\"is {4/3*math.pi*radius**3:.5g} meters cubed.\"\n", + " f\"is {4 / 3 * math.pi * radius**3:.5g} meters cubed.\"\n", ")" ] }, @@ -670,8 +668,7 @@ "\n", "print(\n", " f\"By default, the result is displayed like this: {result}\",\n", - " f\"However, some people love trailing decimal points \"\n", - " f\"like this: {result:#.0f}\",\n", + " f\"However, some people love trailing decimal points like this: {result:#.0f}\",\n", " sep=\"\\n\",\n", ")" ] @@ -835,8 +832,7 @@ "source": [ "value = 13579 + 0.0245j\n", "print(\n", - " f\"The real part is {value.real:.2E} \"\n", - " f\"and the imaginary part {value.imag:.2E}.\"\n", + " f\"The real part is {value.real:.2E} and the imaginary part {value.imag:.2E}.\"\n", ")" ] }, @@ -895,7 +891,7 @@ } ], "source": [ - "f\"{(10000000000000 / 3)+.6666}\"" + "f\"{(10000000000000 / 3) + 0.6666}\"" ] }, { diff --git a/game-of-life-python/source_code_final/rplife/grid.py b/game-of-life-python/source_code_final/rplife/grid.py index 00493a1e04..f65438d418 100755 --- a/game-of-life-python/source_code_final/rplife/grid.py +++ b/game-of-life-python/source_code_final/rplife/grid.py @@ -45,7 +45,4 @@ def as_string(self, bbox): return "\n ".join(display) def __str__(self): - return ( - f"{self.pattern.name}:\n" - f"Alive cells -> {sorted(self.pattern.alive_cells)}" - ) + return f"{self.pattern.name}:\nAlive cells -> {sorted(self.pattern.alive_cells)}" diff --git a/game-of-life-python/source_code_step_2/rplife/grid.py b/game-of-life-python/source_code_step_2/rplife/grid.py index 00493a1e04..f65438d418 100755 --- a/game-of-life-python/source_code_step_2/rplife/grid.py +++ b/game-of-life-python/source_code_step_2/rplife/grid.py @@ -45,7 +45,4 @@ def as_string(self, bbox): return "\n ".join(display) def __str__(self): - return ( - f"{self.pattern.name}:\n" - f"Alive cells -> {sorted(self.pattern.alive_cells)}" - ) + return f"{self.pattern.name}:\nAlive cells -> {sorted(self.pattern.alive_cells)}" diff --git a/game-of-life-python/source_code_step_3/rplife/grid.py b/game-of-life-python/source_code_step_3/rplife/grid.py index 00493a1e04..f65438d418 100755 --- a/game-of-life-python/source_code_step_3/rplife/grid.py +++ b/game-of-life-python/source_code_step_3/rplife/grid.py @@ -45,7 +45,4 @@ def as_string(self, bbox): return "\n ".join(display) def __str__(self): - return ( - f"{self.pattern.name}:\n" - f"Alive cells -> {sorted(self.pattern.alive_cells)}" - ) + return f"{self.pattern.name}:\nAlive cells -> {sorted(self.pattern.alive_cells)}" diff --git a/game-of-life-python/source_code_step_4/rplife/grid.py b/game-of-life-python/source_code_step_4/rplife/grid.py index 00493a1e04..f65438d418 100755 --- a/game-of-life-python/source_code_step_4/rplife/grid.py +++ b/game-of-life-python/source_code_step_4/rplife/grid.py @@ -45,7 +45,4 @@ def as_string(self, bbox): return "\n ".join(display) def __str__(self): - return ( - f"{self.pattern.name}:\n" - f"Alive cells -> {sorted(self.pattern.alive_cells)}" - ) + return f"{self.pattern.name}:\nAlive cells -> {sorted(self.pattern.alive_cells)}" diff --git a/game-of-life-python/source_code_step_5/rplife/grid.py b/game-of-life-python/source_code_step_5/rplife/grid.py index 00493a1e04..f65438d418 100755 --- a/game-of-life-python/source_code_step_5/rplife/grid.py +++ b/game-of-life-python/source_code_step_5/rplife/grid.py @@ -45,7 +45,4 @@ def as_string(self, bbox): return "\n ".join(display) def __str__(self): - return ( - f"{self.pattern.name}:\n" - f"Alive cells -> {sorted(self.pattern.alive_cells)}" - ) + return f"{self.pattern.name}:\nAlive cells -> {sorted(self.pattern.alive_cells)}" diff --git a/game-of-life-python/source_code_step_6/rplife/grid.py b/game-of-life-python/source_code_step_6/rplife/grid.py index 00493a1e04..f65438d418 100755 --- a/game-of-life-python/source_code_step_6/rplife/grid.py +++ b/game-of-life-python/source_code_step_6/rplife/grid.py @@ -45,7 +45,4 @@ def as_string(self, bbox): return "\n ".join(display) def __str__(self): - return ( - f"{self.pattern.name}:\n" - f"Alive cells -> {sorted(self.pattern.alive_cells)}" - ) + return f"{self.pattern.name}:\nAlive cells -> {sorted(self.pattern.alive_cells)}" diff --git a/game-of-life-python/source_code_step_7/rplife/grid.py b/game-of-life-python/source_code_step_7/rplife/grid.py index 00493a1e04..f65438d418 100755 --- a/game-of-life-python/source_code_step_7/rplife/grid.py +++ b/game-of-life-python/source_code_step_7/rplife/grid.py @@ -45,7 +45,4 @@ def as_string(self, bbox): return "\n ".join(display) def __str__(self): - return ( - f"{self.pattern.name}:\n" - f"Alive cells -> {sorted(self.pattern.alive_cells)}" - ) + return f"{self.pattern.name}:\nAlive cells -> {sorted(self.pattern.alive_cells)}" diff --git a/geoshops/nearbyshops/migrations/0002_auto_20190324_2309.py b/geoshops/nearbyshops/migrations/0002_auto_20190324_2309.py index c53186e3da..93c323dda9 100644 --- a/geoshops/nearbyshops/migrations/0002_auto_20190324_2309.py +++ b/geoshops/nearbyshops/migrations/0002_auto_20190324_2309.py @@ -1,10 +1,11 @@ # Generated by Django 2.1.7 on 2019-03-24 22:56 -from django.db import migrations import json -from django.contrib.gis.geos import fromstr from pathlib import Path +from django.contrib.gis.geos import fromstr +from django.db import migrations + DATA_FILENAME = 'export.json' diff --git a/geoshops/shops/settings.py b/geoshops/shops/settings.py index 2e8975a7f9..edf50c8aea 100644 --- a/geoshops/shops/settings.py +++ b/geoshops/shops/settings.py @@ -97,12 +97,10 @@ }, {"NAME": "django.contrib.auth.password_validation.MinimumLengthValidator"}, { - "NAME": "django.contrib.auth.password_validation." - "CommonPasswordValidator" + "NAME": "django.contrib.auth.password_validation.CommonPasswordValidator" }, { - "NAME": "django.contrib.auth.password_validation." - "NumericPasswordValidator" + "NAME": "django.contrib.auth.password_validation.NumericPasswordValidator" }, ] diff --git a/hangman-tui/source_code/hangman.py b/hangman-tui/source_code/hangman.py index f4a79448d1..750bb3b6af 100644 --- a/hangman-tui/source_code/hangman.py +++ b/hangman-tui/source_code/hangman.py @@ -158,8 +158,7 @@ def game_over(wrong_guesses, target_word, guessed_letters): draw_hanged_man(wrong_guesses) print(f"Your word is: {guessed_word}") print( - "Current guessed letters: " - f"{join_guessed_letters(guessed_letters)}\n" + f"Current guessed letters: {join_guessed_letters(guessed_letters)}\n" ) player_guess = get_player_input(guessed_letters) diff --git a/histograms/histograms.py b/histograms/histograms.py index c9f08ffa12..495879433e 100644 --- a/histograms/histograms.py +++ b/histograms/histograms.py @@ -68,7 +68,7 @@ def ascii_histogram(seq) -> None: freq = [random.randint(5, 15) for _ in vals] data = [] -for f, v in zip(freq, vals): +for f, v in zip(freq, vals, strict=False): data.extend([v] * f) print("ASCII histogram of `data`:") ascii_histogram(data) @@ -93,7 +93,7 @@ def ascii_histogram(seq) -> None: # Reproducing `collections.Counter` print( "Reproducing `collections.Counter`:", - dict(zip(np.unique(a), bcounts[bcounts.nonzero()])), + dict(zip(np.unique(a), bcounts[bcounts.nonzero()], strict=False)), ) diff --git a/huggingface-transformers/gpus_google_colab.ipynb b/huggingface-transformers/gpus_google_colab.ipynb index 19ffacc6a3..aeef2b30a5 100644 --- a/huggingface-transformers/gpus_google_colab.ipynb +++ b/huggingface-transformers/gpus_google_colab.ipynb @@ -23,16 +23,14 @@ }, "outputs": [], "source": [ - "DATA_PATH = \"Scraped_Car_Review_dodge.csv\"\n", - "\n", - "import time\n", - "from tqdm import tqdm\n", "import polars as pl\n", - "import torch\n", + "from tqdm import tqdm\n", "from transformers import (\n", - " pipeline,\n", " TextClassificationPipeline,\n", - ")" + " pipeline,\n", + ")\n", + "\n", + "DATA_PATH = \"Scraped_Car_Review_dodge.csv\"" ] }, { @@ -246,7 +244,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.12.3" + "version": "3.13.7" }, "widgets": { "application/vnd.jupyter.widget-state+json": { diff --git a/intro-to-bokeh/code-snippets/east-west-gridplot-layout-with-nones.py b/intro-to-bokeh/code-snippets/east-west-gridplot-layout-with-nones.py index 566471ca5b..ee458b7065 100644 --- a/intro-to-bokeh/code-snippets/east-west-gridplot-layout-with-nones.py +++ b/intro-to-bokeh/code-snippets/east-west-gridplot-layout-with-nones.py @@ -16,7 +16,8 @@ # Plot the two visualizations with placeholders east_west_gridplot = gridplot( - [[west_fig, None], [None, east_fig]], toolbar_location="right" # noqa + [[west_fig, None], [None, east_fig]], # noqa: F821 + toolbar_location="right", ) # Plot the two visualizations in a horizontal configuration diff --git a/intro-to-bokeh/code-snippets/east-west-gridplot-layout.py b/intro-to-bokeh/code-snippets/east-west-gridplot-layout.py index 452a5889cc..ed9badc27f 100644 --- a/intro-to-bokeh/code-snippets/east-west-gridplot-layout.py +++ b/intro-to-bokeh/code-snippets/east-west-gridplot-layout.py @@ -16,7 +16,8 @@ # Configure the gridplot east_west_gridplot = gridplot( - [[west_fig, east_fig]], toolbar_location="right" # noqa + [[west_fig, east_fig]], # noqa: F821 + toolbar_location="right", ) # Plot the two visualizations in a horizontal configuration diff --git a/intro-to-bokeh/code-snippets/linked-axes.py b/intro-to-bokeh/code-snippets/linked-axes.py index f97fc88a77..bb7f992dfd 100644 --- a/intro-to-bokeh/code-snippets/linked-axes.py +++ b/intro-to-bokeh/code-snippets/linked-axes.py @@ -28,7 +28,6 @@ # For each stat in the dict for stat_label, stat_col in stat_names.items(): - # Create a figure fig = figure( y_axis_label=stat_label, diff --git a/intro-to-bokeh/code-snippets/read-nba-data.py b/intro-to-bokeh/code-snippets/read-nba-data.py index 43d69dc136..6e8d3e7292 100644 --- a/intro-to-bokeh/code-snippets/read-nba-data.py +++ b/intro-to-bokeh/code-snippets/read-nba-data.py @@ -29,7 +29,7 @@ # Clean up the player names, placing them in a single column three_takers["name"] = [ - f'{p["playFNm"]} {p["playLNm"]}' for _, p in three_takers.iterrows() + f"{p['playFNm']} {p['playLNm']}" for _, p in three_takers.iterrows() ] # Aggregate the total three-point attempts and makes for each player @@ -66,7 +66,6 @@ # Derive a win_loss column win_loss = [] for _, row in phi_gm_stats.iterrows(): - # If the 76ers score more points, it's a win if row["teamPTS"] > row["opptPTS"]: win_loss.append("W") @@ -95,7 +94,6 @@ # Derive a win_loss column win_loss = [] for _, row in phi_gm_stats_2.iterrows(): - # If the 76ers score more points, it's a win if row["teamPTS"] > row["opptPTS"]: win_loss.append("W") diff --git a/iterate-through-dictionary-python/dict-zip.py b/iterate-through-dictionary-python/dict-zip.py index 8e0310d00e..a5cbd70400 100644 --- a/iterate-through-dictionary-python/dict-zip.py +++ b/iterate-through-dictionary-python/dict-zip.py @@ -1,4 +1,4 @@ categories = ["color", "fruit", "pet"] objects = ["blue", "apple", "dog"] -dict(zip(categories, objects)) +dict(zip(categories, objects, strict=False)) diff --git a/itertools-in-python3/sp500.py b/itertools-in-python3/sp500.py index 1b28d8a7f9..0a026ebd30 100644 --- a/itertools-in-python3/sp500.py +++ b/itertools-in-python3/sp500.py @@ -44,7 +44,7 @@ def read_prices(csvfile, _strptime=datetime.strptime): prices = tuple(read_prices("SP500.csv")) gains = tuple( DataPoint(day.date, 100 * (day.value / prev_day.value - 1.0)) - for day, prev_day in zip(prices[1:], prices) + for day, prev_day in zip(prices[1:], prices, strict=False) ) # Find maximum daily gain/loss. diff --git a/itertools-in-python3/swimmers.py b/itertools-in-python3/swimmers.py index e3a43aa4a9..6f7f8e0990 100644 --- a/itertools-in-python3/swimmers.py +++ b/itertools-in-python3/swimmers.py @@ -41,7 +41,9 @@ def _median(times): events_by_name = sort_and_group(evts, key=lambda evt: evt.name) best_times = (min(evt) for _, evt in events_by_name) sorted_by_time = sorted(best_times, key=lambda evt: evt.time) - teams = zip(("A", "B"), it.islice(grouper(sorted_by_time, 4), 2)) + teams = zip( + ("A", "B"), it.islice(grouper(sorted_by_time, 4), 2), strict=False + ) for team, swimmers in teams: print( "{stroke} {team}: {names}".format( diff --git a/jupyter-lab-files/Population Changes.ipynb b/jupyter-lab-files/Population Changes.ipynb index ca44f522ac..c0eec0d712 100644 --- a/jupyter-lab-files/Population Changes.ipynb +++ b/jupyter-lab-files/Population Changes.ipynb @@ -28,7 +28,7 @@ " return differences\n", "\n", "\n", - "population_change = calculate_differences(population)" + "population_change = calculate_differences(population) # noqa: F821" ] }, { @@ -40,7 +40,7 @@ "source": [ "import pandas as pd\n", "\n", - "zipped = list(zip(decades, population, population_change))\n", + "zipped = list(zip(decades, population, population_change, strict=False)) # noqa: F821\n", "\n", "population_df = pd.DataFrame(\n", " zipped, columns=(\"Decade\", \"Population(Bn)\", \"Change\")\n", @@ -66,7 +66,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.11.0" + "version": "3.13.7" } }, "nbformat": 4, diff --git a/mandelbrot-set-python/03_bw.py b/mandelbrot-set-python/03_bw.py index dd49c3119e..fec347b0d5 100644 --- a/mandelbrot-set-python/03_bw.py +++ b/mandelbrot-set-python/03_bw.py @@ -2,7 +2,6 @@ from PIL import Image if __name__ == "__main__": - mandelbrot_set = MandelbrotSet(max_iterations=20) width, height = 512, 512 diff --git a/mandelbrot-set-python/04_grayscale.py b/mandelbrot-set-python/04_grayscale.py index f15236a33b..f112ab36b5 100644 --- a/mandelbrot-set-python/04_grayscale.py +++ b/mandelbrot-set-python/04_grayscale.py @@ -2,7 +2,6 @@ from PIL import Image if __name__ == "__main__": - mandelbrot_set = MandelbrotSet(max_iterations=20) width, height = 512, 512 diff --git a/mandelbrot-set-python/05_grayscale_smooth.py b/mandelbrot-set-python/05_grayscale_smooth.py index f9d8061e75..42550b3d36 100644 --- a/mandelbrot-set-python/05_grayscale_smooth.py +++ b/mandelbrot-set-python/05_grayscale_smooth.py @@ -2,7 +2,6 @@ from PIL import Image if __name__ == "__main__": - mandelbrot_set = MandelbrotSet(max_iterations=20, escape_radius=1000) width, height = 512, 512 diff --git a/mandelbrot-set-python/10_color_hsb.py b/mandelbrot-set-python/10_color_hsb.py index 5e8281b3f7..7632473716 100644 --- a/mandelbrot-set-python/10_color_hsb.py +++ b/mandelbrot-set-python/10_color_hsb.py @@ -6,9 +6,7 @@ def hsb(hue_degrees: int, saturation: float, brightness: float): return getrgb( - f"hsv({hue_degrees % 360}," - f"{saturation * 100}%," - f"{brightness * 100}%)" + f"hsv({hue_degrees % 360},{saturation * 100}%,{brightness * 100}%)" ) diff --git a/nearbyshops/shops/migrations/0002_auto_20181020_0450.py b/nearbyshops/shops/migrations/0002_auto_20181020_0450.py index 4b0e375c65..b8e87ebd49 100644 --- a/nearbyshops/shops/migrations/0002_auto_20181020_0450.py +++ b/nearbyshops/shops/migrations/0002_auto_20181020_0450.py @@ -1,10 +1,11 @@ # Generated by Django 2.1.2 on 2018-10-20 04:50 -from django.db import migrations import json -from django.contrib.gis.geos import fromstr from pathlib import Path +from django.contrib.gis.geos import fromstr +from django.db import migrations + DATA_FILENAME = 'data.json' diff --git a/nlp-sentiment-analysis/sentiment_analyzer.py b/nlp-sentiment-analysis/sentiment_analyzer.py index 564fb4d308..c29c58beb9 100644 --- a/nlp-sentiment-analysis/sentiment_analyzer.py +++ b/nlp-sentiment-analysis/sentiment_analyzer.py @@ -2,9 +2,9 @@ import random import pandas as pd +from spacy.util import compounding, minibatch import spacy -from spacy.util import compounding, minibatch TEST_REVIEW = """ Transcendently beautiful in moments outside the office, it seems almost @@ -53,7 +53,7 @@ def train_model( random.shuffle(training_data) batches = minibatch(training_data, size=batch_sizes) for batch in batches: - text, labels = zip(*batch) + text, labels = zip(*batch, strict=False) nlp.update(text, labels, drop=0.2, sgd=optimizer, losses=loss) with textcat.model.use_params(optimizer.averages): evaluation_results = evaluate_model( @@ -73,7 +73,7 @@ def train_model( def evaluate_model(tokenizer, textcat, test_data: list) -> dict: - reviews, labels = zip(*test_data) + reviews, labels = zip(*test_data, strict=False) reviews = (tokenizer(review) for review in reviews) true_positives = 0 false_positives = 1e-8 # Can't be 0 because of presence in denominator @@ -117,8 +117,7 @@ def test_model(input_data: str = TEST_REVIEW): prediction = "Negative" score = parsed_text.cats["neg"] print( - f"Review text: {input_data}\nPredicted sentiment: {prediction}" - f"\tScore: {score}" + f"Review text: {input_data}\nPredicted sentiment: {prediction}\tScore: {score}" ) diff --git a/numpy-examples/tutorial_code.ipynb b/numpy-examples/tutorial_code.ipynb index e24f9e54df..43c8f75cda 100644 --- a/numpy-examples/tutorial_code.ipynb +++ b/numpy-examples/tutorial_code.ipynb @@ -34,9 +34,10 @@ "metadata": {}, "outputs": [], "source": [ - "import numpy as np\n", "from pathlib import Path\n", "\n", + "import numpy as np\n", + "\n", "array = np.zeros((3, 2, 3))\n", "print(id(array))\n", "\n", @@ -145,9 +146,10 @@ "metadata": {}, "outputs": [], "source": [ - "import numpy.lib.recfunctions as rfn\n", "from pathlib import Path\n", "\n", + "import numpy.lib.recfunctions as rfn\n", + "\n", "issued_dtypes = [\n", " (\"id\", \"i8\"),\n", " (\"payee\", \"U10\"),\n", @@ -232,9 +234,10 @@ "metadata": {}, "outputs": [], "source": [ - "import numpy as np\n", "from pathlib import Path\n", "\n", + "import numpy as np\n", + "\n", "days = [\"mon\", \"tue\", \"wed\", \"thu\", \"fri\"]\n", "days_dtype = [(day, \"f8\") for day in days]\n", "company_dtype = [(\"company\", \"U20\"), (\"sector\", \"U20\")]\n", @@ -274,7 +277,9 @@ " (\"day\", \"f8\"),\n", "]\n", "\n", - "for day, csv_file in zip(days, sorted(Path.cwd().glob(\"share_prices-?.csv\"))):\n", + "for day, csv_file in zip(\n", + " days, sorted(Path.cwd().glob(\"share_prices-?.csv\")), strict=False\n", + "):\n", " portfolio[day] = np.loadtxt(\n", " csv_file.name,\n", " delimiter=\",\",\n", @@ -388,9 +393,10 @@ "metadata": {}, "outputs": [], "source": [ - "import numpy as np\n", "from pathlib import Path\n", "\n", + "import numpy as np\n", + "\n", "share_dtypes = [\n", " (\"company\", \"U20\"),\n", " (\"sector\", \"U20\"),\n", @@ -438,13 +444,6 @@ "metadata": {}, "outputs": [], "source": [ - "def profit_with_bonus(first_day, last_day):\n", - " if last_day >= first_day * 1.01:\n", - " return (last_day - first_day) * 1.1\n", - " else:\n", - " return last_day - first_day\n", - "\n", - "\n", "vectorized_profit_with_bonus = np.vectorize(profit_with_bonus)\n", "vectorized_profit_with_bonus(portfolio[\"mon\"], portfolio[\"fri\"])" ] @@ -518,7 +517,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.12.7" + "version": "3.13.7" } }, "nbformat": 4, diff --git a/numpy-tutorial/image_mod.ipynb b/numpy-tutorial/image_mod.ipynb index 678c56ba2e..88277c394e 100644 --- a/numpy-tutorial/image_mod.ipynb +++ b/numpy-tutorial/image_mod.ipynb @@ -15,9 +15,9 @@ "metadata": {}, "outputs": [], "source": [ - "import numpy as np\n", "import matplotlib.image as mpimg\n", "import matplotlib.pyplot as plt\n", + "import numpy as np\n", "\n", "%matplotlib inline" ] diff --git a/numpy-tutorial/maclaurin.ipynb b/numpy-tutorial/maclaurin.ipynb index 443856f60b..f9388b49ef 100644 --- a/numpy-tutorial/maclaurin.ipynb +++ b/numpy-tutorial/maclaurin.ipynb @@ -19,8 +19,9 @@ "metadata": {}, "outputs": [], "source": [ - "import numpy as np\n", - "from math import e, factorial" + "from math import e, factorial\n", + "\n", + "import numpy as np" ] }, { diff --git a/pandas-fast-flexible-intuitive/tutorial/timer.py b/pandas-fast-flexible-intuitive/tutorial/timer.py index b00f3ce7b8..d366e695c6 100644 --- a/pandas-fast-flexible-intuitive/tutorial/timer.py +++ b/pandas-fast-flexible-intuitive/tutorial/timer.py @@ -61,12 +61,14 @@ def _timeit(*args, **kwargs): # processes interfering with your timing accuracy." best = min(trials) / number print( - "Best of {} trials with {} function" - " calls per trial:".format(repeat, number) + "Best of {} trials with {} function calls per trial:".format( + repeat, number + ) ) print( - "Function `{}` ran in average" - " of {:0.3f} seconds.".format(func.__name__, best), + "Function `{}` ran in average of {:0.3f} seconds.".format( + func.__name__, best + ), end="\n\n", file=file, ) diff --git a/pandas-gradebook-project/data/generate_data.py b/pandas-gradebook-project/data/generate_data.py index 8918c859a1..1c296a51c0 100644 --- a/pandas-gradebook-project/data/generate_data.py +++ b/pandas-gradebook-project/data/generate_data.py @@ -64,9 +64,9 @@ def __post_init__(self): f"{self.first_name.lower()}.{self.last_name.lower()}@univ.edu" ) - assert ( - len(str(self.psid)) == 7 - ), f"PSID not 7 digits for {self.first_name} {self.last_name}" + assert len(str(self.psid)) == 7, ( + f"PSID not 7 digits for {self.first_name} {self.last_name}" + ) self.full_name = f"{self.last_name}" if self.modifier is not None: @@ -259,5 +259,11 @@ def __post_init__(self): ) print( - dict(zip((f"Quiz {n}" for n in range(1, n_quizzes + 1)), quiz_max_scores)) + dict( + zip( + (f"Quiz {n}" for n in range(1, n_quizzes + 1)), + quiz_max_scores, + strict=False, + ) + ) ) diff --git a/pandas-intro/pandas_intro.ipynb b/pandas-intro/pandas_intro.ipynb index 09df32e226..47391317ec 100644 --- a/pandas-intro/pandas_intro.ipynb +++ b/pandas-intro/pandas_intro.ipynb @@ -197,8 +197,6 @@ "metadata": {}, "outputs": [], "source": [ - "import numpy as np\n", - "\n", "nba.describe(include=object)" ] }, diff --git a/pandas-reset-index/Solutions.ipynb b/pandas-reset-index/Solutions.ipynb index 4e6475ce60..42903427ae 100644 --- a/pandas-reset-index/Solutions.ipynb +++ b/pandas-reset-index/Solutions.ipynb @@ -299,7 +299,7 @@ "source": [ "# Alternative, with apply(). Will be slow for big DataFrames\n", "def calculate_user_ID(row):\n", - " return f\"{row[\"last_name\"]}{row[\"first_name\"][0]}\"\n", + " return f\"{row['last_name']}{row['first_name'][0]}\"\n", "\n", "\n", "beach_boys.index = beach_boys.apply(calculate_user_ID, axis=1)\n", diff --git a/polars-lazyframe/dataframe_timer.py b/polars-lazyframe/dataframe_timer.py index 17eef0c961..f0c0113815 100644 --- a/polars-lazyframe/dataframe_timer.py +++ b/polars-lazyframe/dataframe_timer.py @@ -19,4 +19,4 @@ end = time.perf_counter() -f"Code finished in {(end - start)/10:0.4f} seconds." +f"Code finished in {(end - start) / 10:0.4f} seconds." diff --git a/polars-lazyframe/lazyframe_timer.py b/polars-lazyframe/lazyframe_timer.py index 643b5f9517..7f5415b9ba 100644 --- a/polars-lazyframe/lazyframe_timer.py +++ b/polars-lazyframe/lazyframe_timer.py @@ -19,4 +19,4 @@ end = time.perf_counter() -f"Code finished in {(end - start)/10:0.4f} seconds." +f"Code finished in {(end - start) / 10:0.4f} seconds." diff --git a/polars-lazyframe/tutorial_code.ipynb b/polars-lazyframe/tutorial_code.ipynb index b4885b1472..a947b396a0 100644 --- a/polars-lazyframe/tutorial_code.ipynb +++ b/polars-lazyframe/tutorial_code.ipynb @@ -257,9 +257,10 @@ "source": [ "# dataframe_timer.py\n", "\n", - "import polars as pl\n", "import time\n", "\n", + "import polars as pl\n", + "\n", "start = time.perf_counter()\n", "\n", "for _ in range(10):\n", @@ -277,7 +278,7 @@ "\n", "end = time.perf_counter()\n", "\n", - "f\"Code finished in {(end - start)/10:0.4f} seconds.\"" + "f\"Code finished in {(end - start) / 10:0.4f} seconds.\"" ] }, { @@ -289,9 +290,10 @@ "source": [ "# lazyframe_timer.py\n", "\n", - "import polars as pl\n", "import time\n", "\n", + "import polars as pl\n", + "\n", "start = time.perf_counter()\n", "\n", "for _ in range(10):\n", @@ -309,7 +311,7 @@ "\n", "end = time.perf_counter()\n", "\n", - "f\"Code finished in {(end - start)/10:0.4f} seconds.\"" + "f\"Code finished in {(end - start) / 10:0.4f} seconds.\"" ] }, { diff --git a/practical-k-means/practical-k-means-cancer-gene-expression.ipynb b/practical-k-means/practical-k-means-cancer-gene-expression.ipynb index f8afd6c7f5..56ad5753ef 100644 --- a/practical-k-means/practical-k-means-cancer-gene-expression.ipynb +++ b/practical-k-means/practical-k-means-cancer-gene-expression.ipynb @@ -30,14 +30,13 @@ "import tarfile\n", "import urllib\n", "\n", - "import numpy as np\n", "import matplotlib.pyplot as plt\n", + "import numpy as np\n", "import pandas as pd\n", "import seaborn as sns\n", - "\n", "from sklearn.cluster import KMeans\n", "from sklearn.decomposition import PCA\n", - "from sklearn.metrics import silhouette_score, adjusted_rand_score\n", + "from sklearn.metrics import adjusted_rand_score, silhouette_score\n", "from sklearn.pipeline import Pipeline\n", "from sklearn.preprocessing import LabelEncoder, MinMaxScaler" ] diff --git a/practical-k-means/practical-k-means-syntethic.ipynb b/practical-k-means/practical-k-means-syntethic.ipynb index aa75831177..0b03fbbc6b 100644 --- a/practical-k-means/practical-k-means-syntethic.ipynb +++ b/practical-k-means/practical-k-means-syntethic.ipynb @@ -29,8 +29,8 @@ "source": [ "import matplotlib.pyplot as plt\n", "from kneed import KneeLocator\n", - "from sklearn.datasets import make_blobs\n", "from sklearn.cluster import KMeans\n", + "from sklearn.datasets import make_blobs\n", "from sklearn.metrics import silhouette_score\n", "from sklearn.preprocessing import StandardScaler" ] @@ -470,7 +470,7 @@ "source": [ "# Plot the data and cluster silhouette comparison\n", "fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(8, 6), sharex=True, sharey=True)\n", - "fig.suptitle(f\"Clustering Algorithm Comparison: Crescents\", fontsize=16)\n", + "fig.suptitle(\"Clustering Algorithm Comparison: Crescents\", fontsize=16)\n", "fte_colors = {\n", " 0: \"#008fd5\",\n", " 1: \"#fc4f30\",\n", diff --git a/pygame-a-primer/pygame_simple.py b/pygame-a-primer/pygame_simple.py index 0d3a425f96..12476806c2 100644 --- a/pygame-a-primer/pygame_simple.py +++ b/pygame-a-primer/pygame_simple.py @@ -11,7 +11,6 @@ # Run until the user asks us to quit running = True while running: - # Did the user click the window close button? for event in pygame.event.get(): if event.type == pygame.QUIT: diff --git a/pyproject.toml b/pyproject.toml index 36c49fd131..73a3b776ad 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,20 +1,12 @@ -[tool.black] -line-length = 79 -target-version = ["py312"] -exclude = ''' -/( - \.git - | venv - | migrations - | node_modules -)/ -''' - - [tool.ruff] -target-version = "py312" -exclude = [".git", "venv", "migrations", "node_modules"] +target-version = "py313" +line-length = 79 +exclude = [ + ".devcontainers", + ".github", + "migrations" +] [tool.ruff.lint] select = ["E", "F", "I", "RUF100"] -ignore = ["E501"] # Line length is controlled by Black +ignore = ["E501"] diff --git a/python-311/dead_imghdr.py b/python-311/dead_imghdr.py index 72d0b52e19..1f0b06a5f4 100644 --- a/python-311/dead_imghdr.py +++ b/python-311/dead_imghdr.py @@ -1,5 +1,4 @@ import imghdr - import magic print(imghdr.what("python-311.jpg")) diff --git a/python-312/sales.py b/python-312/sales.py index 585dc9cf6c..6d5a7208f3 100644 --- a/python-312/sales.py +++ b/python-312/sales.py @@ -15,6 +15,5 @@ for month in calendar.Month: if month in sales: print( - f"{month.value:2d} {month.name:<10}" - f" {sales[month]:2d} {'*' * sales[month]}" + f"{month.value:2d} {month.name:<10} {sales[month]:2d} {'*' * sales[month]}" ) diff --git a/python-312/typing/quiz.py b/python-312/typing/quiz.py index 8719033c2a..f4bde250cd 100644 --- a/python-312/typing/quiz.py +++ b/python-312/typing/quiz.py @@ -39,7 +39,9 @@ def ask(self) -> bool: alternatives = random.sample( self.distractors + [self.answer], k=len(self.distractors) + 1 ) - labeled_alternatives = dict(zip(ascii_lowercase, alternatives)) + labeled_alternatives = dict( + zip(ascii_lowercase, alternatives, strict=False) + ) for label, alternative in labeled_alternatives.items(): print(f" {label}) {alternative}", end="") diff --git a/python-313/free-threading-jit/benchmarks/pyfeatures.py b/python-313/free-threading-jit/benchmarks/pyfeatures.py index 995680f84d..c685e0d8e4 100644 --- a/python-313/free-threading-jit/benchmarks/pyfeatures.py +++ b/python-313/free-threading-jit/benchmarks/pyfeatures.py @@ -1,9 +1,8 @@ +import _testinternalcapi import abc import sys import sysconfig -import _testinternalcapi - class Feature(abc.ABC): def __init__(self, name: str) -> None: diff --git a/python-313/free-threading-jit/benchmarks/pyinfo.py b/python-313/free-threading-jit/benchmarks/pyinfo.py index 0dce3cf30a..c81805022b 100644 --- a/python-313/free-threading-jit/benchmarks/pyinfo.py +++ b/python-313/free-threading-jit/benchmarks/pyinfo.py @@ -23,10 +23,7 @@ def system_details(): cpu = platform.processor() cores = os.cpu_count() endian = f"{sys.byteorder} Endian".title() - return ( - f"\N{PERSONAL COMPUTER} {name} {arch} with " - f"{cores}x CPU cores ({cpu} {endian})" - ) + return f"\N{PERSONAL COMPUTER} {name} {arch} with {cores}x CPU cores ({cpu} {endian})" def python_details(): diff --git a/python-313/free-threading-jit/benchmarks/uops.py b/python-313/free-threading-jit/benchmarks/uops.py index 4df65c94b9..37539aadca 100644 --- a/python-313/free-threading-jit/benchmarks/uops.py +++ b/python-313/free-threading-jit/benchmarks/uops.py @@ -1,6 +1,6 @@ +import _opcode import dis -import _opcode from pyinfo import print_details diff --git a/python-313/replace.py b/python-313/replace.py index c392e1a766..429c94ccfb 100644 --- a/python-313/replace.py +++ b/python-313/replace.py @@ -44,7 +44,7 @@ def __replace__(self, **kwargs): def __repr__(self): items = [f"{key}={value!r}" for key, value in self.items.items()] - return f"{type(self).__name__}(name='{self.name}', {", ".join(items)})" + return f"{type(self).__name__}(name='{self.name}', {', '.join(items)})" capitals = NamedContainer( diff --git a/python-314/tstrings.py b/python-314/tstrings.py index 3986ade942..06d740ed88 100644 --- a/python-314/tstrings.py +++ b/python-314/tstrings.py @@ -44,7 +44,7 @@ def find_users_query_v1(name: str) -> str: def render(template: Template) -> str: return "".join( f"{text}{value}" - for text, value in zip(template.strings, template.values) + for text, value in zip(template.strings, template.values, strict=False) ) diff --git a/python-assignment-statements/interning.py b/python-assignment-statements/interning.py index 7fb7a92f6b..5bab637c4f 100644 --- a/python-assignment-statements/interning.py +++ b/python-assignment-statements/interning.py @@ -1,6 +1,8 @@ from platform import python_version -interning = [x for x, y in zip(range(-10, 500), range(-10, 500)) if x is y] +interning = [ + x for x, y in zip(range(-10, 500), range(-10, 500), strict=False) if x is y +] print( f"Interning interval for Python {python_version()} is:" diff --git a/python-asyncio/as_completed.py b/python-asyncio/as_completed.py index 924b03ad5d..e55fe612fd 100644 --- a/python-asyncio/as_completed.py +++ b/python-asyncio/as_completed.py @@ -8,7 +8,7 @@ async def main(): print("Start:", time.strftime("%X")) for task in asyncio.as_completed([task1, task2]): result = await task - print(f'result: {result} completed at {time.strftime("%X")}') + print(f"result: {result} completed at {time.strftime('%X')}") print("End:", time.strftime("%X")) print(f"Both tasks done: {all((task1.done(), task2.done()))}") diff --git a/python-asyncio/chained.py b/python-asyncio/chained.py index c9df237e98..ab9da80081 100644 --- a/python-asyncio/chained.py +++ b/python-asyncio/chained.py @@ -33,8 +33,7 @@ async def fetch_posts(user): await asyncio.sleep(delay) posts = [f"Post {i} by {user['name']}" for i in range(1, 3)] print( - f"Post coro: got {len(posts)} posts by {user['name']}" - f" (done in {delay:.1f}s):" + f"Post coro: got {len(posts)} posts by {user['name']} (done in {delay:.1f}s):" ) for post in posts: print(f" - {post}") diff --git a/python-basic-data-types/escape_seqs.py b/python-basic-data-types/escape_seqs.py index 154b8ecc18..f9d4e90e6d 100644 --- a/python-basic-data-types/escape_seqs.py +++ b/python-basic-data-types/escape_seqs.py @@ -11,4 +11,4 @@ print("\x61") # Unicode by name -print("\N{rightwards arrow}") +print("\N{RIGHTWARDS ARROW}") diff --git a/python-bindings/ctypes_c_test.py b/python-bindings/ctypes_c_test.py index 947cdf1e27..32ececc239 100644 --- a/python-bindings/ctypes_c_test.py +++ b/python-bindings/ctypes_c_test.py @@ -1,5 +1,6 @@ #!/usr/bin/env python -""" Simple examples of calling C functions through ctypes module. """ +"""Simple examples of calling C functions through ctypes module.""" + import ctypes import pathlib import sys diff --git a/python-bindings/ctypes_cpp_test.py b/python-bindings/ctypes_cpp_test.py index 5a044b94cb..1ecf2f087a 100644 --- a/python-bindings/ctypes_cpp_test.py +++ b/python-bindings/ctypes_cpp_test.py @@ -1,5 +1,6 @@ #!/usr/bin/env python -""" Simple examples of calling C functions through ctypes module. """ +"""Simple examples of calling C functions through ctypes module.""" + import ctypes import pathlib import sys diff --git a/python-bindings/tasks.py b/python-bindings/tasks.py index 2faeaac2c5..10ec7a4623 100644 --- a/python-bindings/tasks.py +++ b/python-bindings/tasks.py @@ -1,5 +1,5 @@ -""" Task definitions for invoke command line utility for python bindings - overview article. +"""Task definitions for invoke command line utility for python bindings +overview article. """ import glob @@ -132,8 +132,7 @@ def build_cppmult(c): """Build the shared library for the sample C++ code""" print_banner("Building C++ Library") invoke.run( - "g++ -O3 -Wall -Werror -shared -std=c++11 -fPIC cppmult.cpp " - "-o libcppmult.so " + "g++ -O3 -Wall -Werror -shared -std=c++11 -fPIC cppmult.cpp -o libcppmult.so " ) print("* Complete") diff --git a/python-bitwise-operators/src/stegano/encoder.py b/python-bitwise-operators/src/stegano/encoder.py index 3f75444959..e4be8d07b2 100644 --- a/python-bitwise-operators/src/stegano/encoder.py +++ b/python-bitwise-operators/src/stegano/encoder.py @@ -42,12 +42,16 @@ def encode(bitmap: Bitmap, path: pathlib.Path) -> None: raise EncodingError("Not enough pixels to embed a secret file") bitmap.reserved_field = file.size_bytes - for secret_byte, eight_bytes in zip(file.secret_bytes, bitmap.byte_slices): + for secret_byte, eight_bytes in zip( + file.secret_bytes, bitmap.byte_slices, strict=False + ): secret_bits = [(secret_byte >> i) & 1 for i in reversed(range(8))] bitmap[eight_bytes] = bytes( [ byte | 1 if bit else byte & ~1 - for byte, bit in zip(bitmap[eight_bytes], secret_bits) + for byte, bit in zip( + bitmap[eight_bytes], secret_bits, strict=False + ) ] ) diff --git a/python-built-in-functions/person.py b/python-built-in-functions/person.py index 908949f854..0b9c7fa213 100644 --- a/python-built-in-functions/person.py +++ b/python-built-in-functions/person.py @@ -5,5 +5,5 @@ def __init__(self, name, age): jane = Person("Jane", 25) -print(getattr(jane, "name")) -print(getattr(jane, "age")) +print(jane.name) +print(jane.age) diff --git a/python-callable-instances/timing.py b/python-callable-instances/timing.py index 8201acbe1c..51760769cb 100644 --- a/python-callable-instances/timing.py +++ b/python-callable-instances/timing.py @@ -28,8 +28,7 @@ def timer(*args, **kwargs): total_time += end - start average_time = total_time / self.repetitions print( - f"{func.__name__}() takes " - f"{average_time * 1000:.4f} ms on average" + f"{func.__name__}() takes {average_time * 1000:.4f} ms on average" ) return result diff --git a/python-continue/aoc_2022_d7.py b/python-continue/aoc_2022_d7.py index c62734f959..fe1fe7b480 100644 --- a/python-continue/aoc_2022_d7.py +++ b/python-continue/aoc_2022_d7.py @@ -13,7 +13,6 @@ def get_path_name(folder_name): def parse(lines): - # We read each line and create some structures # - We maintain a path list stack, which tells us how deep the structure is # - It starts with ["/"] @@ -94,7 +93,6 @@ def parse(lines): def get_file_sizes(tree): - # We've got the tree, so we need all the keys paths = sorted([k for k in tree.keys()], reverse=True) @@ -122,7 +120,6 @@ def get_file_sizes(tree): def part1(file_sizes): - total = 0 # Now we can go through them all in this order @@ -154,7 +151,6 @@ def part2(file_sizes): if __name__ == "__main__": - with open(root_path / "input", "r") as f: # with open(root_path / "sample", "r") as f: lines = [line.strip() for line in f.readlines()] diff --git a/python-copy/benchmark.py b/python-copy/benchmark.py index dbfff8ead7..5533ee28c0 100644 --- a/python-copy/benchmark.py +++ b/python-copy/benchmark.py @@ -41,7 +41,7 @@ def sliceable(instance): def random_dict(size): keys = random_set(size) values = random_set(size) - return dict(zip(keys, values)) + return dict(zip(keys, values, strict=False)) def random_set(size): diff --git a/python-dash/avocado_analytics_2/app.py b/python-dash/avocado_analytics_2/app.py index 8a70d5f93f..adba4c1936 100644 --- a/python-dash/avocado_analytics_2/app.py +++ b/python-dash/avocado_analytics_2/app.py @@ -11,8 +11,7 @@ external_stylesheets = [ { "href": ( - "https://fonts.googleapis.com/css2?" - "family=Lato:wght@400;700&display=swap" + "https://fonts.googleapis.com/css2?family=Lato:wght@400;700&display=swap" ), "rel": "stylesheet", }, diff --git a/python-dash/avocado_analytics_3/app.py b/python-dash/avocado_analytics_3/app.py index a2d83538e0..bef0faaa45 100644 --- a/python-dash/avocado_analytics_3/app.py +++ b/python-dash/avocado_analytics_3/app.py @@ -12,8 +12,7 @@ external_stylesheets = [ { "href": ( - "https://fonts.googleapis.com/css2?" - "family=Lato:wght@400;700&display=swap" + "https://fonts.googleapis.com/css2?family=Lato:wght@400;700&display=swap" ), "rel": "stylesheet", }, diff --git a/python-dict-comprehension/computer_parts_v1.py b/python-dict-comprehension/computer_parts_v1.py index a32f9dcd87..394f6f9b73 100644 --- a/python-dict-comprehension/computer_parts_v1.py +++ b/python-dict-comprehension/computer_parts_v1.py @@ -9,4 +9,4 @@ "Cooling Fan", ] stocks = [15, 8, 12, 30, 25, 10, 5, 20] -print({part: stock for part, stock in zip(parts, stocks)}) +print({part: stock for part, stock in zip(parts, stocks, strict=False)}) diff --git a/python-dict-comprehension/computer_parts_v2.py b/python-dict-comprehension/computer_parts_v2.py index 4ecca57cb2..3e0ccf45bf 100644 --- a/python-dict-comprehension/computer_parts_v2.py +++ b/python-dict-comprehension/computer_parts_v2.py @@ -13,6 +13,6 @@ print( { part: stock * cost - for part, stock, cost in zip(parts, stocks, part_costs) + for part, stock, cost in zip(parts, stocks, part_costs, strict=False) } ) diff --git a/python-dicts/dict_zip.py b/python-dicts/dict_zip.py index 6038d67fdc..58ad9ff66d 100644 --- a/python-dicts/dict_zip.py +++ b/python-dicts/dict_zip.py @@ -1,4 +1,4 @@ cities = ["Colorado", "Chicago", "Boston", "Minnesota", "Milwaukee", "Seattle"] teams = ["Rockies", "White Sox", "Red Sox", "Twins", "Brewers", "Mariners"] -print(dict(zip(cities, teams))) +print(dict(zip(cities, teams, strict=False))) diff --git a/python-download-file-from-url/01_download_urllib.py b/python-download-file-from-url/01_download_urllib.py index 3ec0f0cf26..e9f0479c22 100644 --- a/python-download-file-from-url/01_download_urllib.py +++ b/python-download-file-from-url/01_download_urllib.py @@ -1,9 +1,6 @@ from urllib.request import urlretrieve -url = ( - "https://api.worldbank.org/v2/en/indicator/" - "NY.GDP.MKTP.CD?downloadformat=csv" -) +url = "https://api.worldbank.org/v2/en/indicator/NY.GDP.MKTP.CD?downloadformat=csv" filename = "gdp_by_country.zip" path, headers = urlretrieve(url, filename) diff --git a/python-download-file-from-url/04_download_threading.py b/python-download-file-from-url/04_download_threading.py index 37c65591ba..1f0ac782e0 100644 --- a/python-download-file-from-url/04_download_threading.py +++ b/python-download-file-from-url/04_download_threading.py @@ -16,8 +16,7 @@ def download_file(url): template_url = ( - "https://api.worldbank.org/v2/en/indicator/" - "{resource}?downloadformat=csv" + "https://api.worldbank.org/v2/en/indicator/{resource}?downloadformat=csv" ) urls = [ diff --git a/python-download-file-from-url/05_download_sequential.py b/python-download-file-from-url/05_download_sequential.py index be8291e6b7..16d0cb99e4 100644 --- a/python-download-file-from-url/05_download_sequential.py +++ b/python-download-file-from-url/05_download_sequential.py @@ -14,8 +14,7 @@ def download_file(url): template_url = ( - "https://api.worldbank.org/v2/en/indicator/" - "{resource}?downloadformat=csv" + "https://api.worldbank.org/v2/en/indicator/{resource}?downloadformat=csv" ) urls = [ diff --git a/python-download-file-from-url/06_download_async.py b/python-download-file-from-url/06_download_async.py index c9fea0c4fd..e918a6b188 100644 --- a/python-download-file-from-url/06_download_async.py +++ b/python-download-file-from-url/06_download_async.py @@ -21,8 +21,7 @@ async def download_file(url): template_url = ( - "https://api.worldbank.org/v2/en/indicator/" - "{resource}?downloadformat=csv" + "https://api.worldbank.org/v2/en/indicator/{resource}?downloadformat=csv" ) urls = [ diff --git a/python-enumerate/enumerate_alternatives.py b/python-enumerate/enumerate_alternatives.py index d797d0260c..cd7eed3cca 100644 --- a/python-enumerate/enumerate_alternatives.py +++ b/python-enumerate/enumerate_alternatives.py @@ -17,5 +17,5 @@ pets = ["Leo", "Aubrey", "Frieda"] owners = ["Bartosz", "Sarah Jane", "Philipp"] -for pet, owner in zip(pets, owners): +for pet, owner in zip(pets, owners, strict=False): print(f"{pet} & {owner}") diff --git a/python-eval-mathrepl/mathrepl.py b/python-eval-mathrepl/mathrepl.py index 9d96ec63ae..4a03e266d1 100644 --- a/python-eval-mathrepl/mathrepl.py +++ b/python-eval-mathrepl/mathrepl.py @@ -25,7 +25,7 @@ Build math expressions using numeric values and operators. Use any of the following functions and constants: -{', '.join(ALLOWED_NAMES.keys())} +{", ".join(ALLOWED_NAMES.keys())} """ diff --git a/python-first/chart.py b/python-first/chart.py index 9b6414e690..591bdaa1ca 100644 --- a/python-first/chart.py +++ b/python-first/chart.py @@ -81,7 +81,8 @@ def find_match_gen(iterable): looping_ratio = [loop / loop for loop in looping_times] generator_ratio = [ - gen / loop for gen, loop in zip(generator_times, looping_times) + gen / loop + for gen, loop in zip(generator_times, looping_times, strict=False) ] fig, ax = plt.subplots() diff --git a/python-first/chart_gen_loop_in.py b/python-first/chart_gen_loop_in.py index 16cf4694f3..7eba3f2567 100644 --- a/python-first/chart_gen_loop_in.py +++ b/python-first/chart_gen_loop_in.py @@ -95,9 +95,12 @@ def find_match_in(list_to_search, item_to_find): looping_ratio = [loop / loop for loop in looping_times] generator_ratio = [ - gen / loop for gen, loop in zip(generator_times, looping_times) + gen / loop + for gen, loop in zip(generator_times, looping_times, strict=False) +] +in_ratio = [ + in_ / loop for in_, loop in zip(in_times, looping_times, strict=False) ] -in_ratio = [in_ / loop for in_, loop in zip(in_times, looping_times)] fig, ax = plt.subplots() diff --git a/python-first/test_fixtures.py b/python-first/test_fixtures.py index 34d78a7453..e12afff5d5 100644 --- a/python-first/test_fixtures.py +++ b/python-first/test_fixtures.py @@ -1,4 +1,4 @@ -""" Country data obtained from https://github.com/samayo/country-json """ +"""Country data obtained from https://github.com/samayo/country-json""" countries = [ {"country": "Austria", "population": 8_840_521}, diff --git a/python-for-loop/parallel_iteration.py b/python-for-loop/parallel_iteration.py index 8d0aa1852f..03f6607333 100644 --- a/python-for-loop/parallel_iteration.py +++ b/python-for-loop/parallel_iteration.py @@ -1,5 +1,5 @@ numbers = [1, 2, 3] letters = ["a", "b", "c"] -for number, letter in zip(numbers, letters): +for number, letter in zip(numbers, letters, strict=False): print(number, "->", letter) diff --git a/python-for-loop/sorting.py b/python-for-loop/sorting.py index 75c61d3769..b226069b82 100644 --- a/python-for-loop/sorting.py +++ b/python-for-loop/sorting.py @@ -14,4 +14,4 @@ ) for name, grade in sorted_students: - print(f"{name}'s average grade: {grade:->{20-len(name)}.1f}") + print(f"{name}'s average grade: {grade:->{20 - len(name)}.1f}") diff --git a/python-format-mini-language/percentages.py b/python-format-mini-language/percentages.py index 86ac408450..b1bfff9111 100644 --- a/python-format-mini-language/percentages.py +++ b/python-format-mini-language/percentages.py @@ -1,4 +1,4 @@ wins = 25 games = 35 -print(f"Team's winning percentage: {wins/games:.2%}") +print(f"Team's winning percentage: {wins / games:.2%}") diff --git a/python-formatted-output/format.py b/python-formatted-output/format.py index 8abf0fe9eb..83234de0b1 100644 --- a/python-formatted-output/format.py +++ b/python-formatted-output/format.py @@ -112,8 +112,8 @@ print(f"{0b111010100001:_b}") print(f"{0b111010100001:#_b}") -print(f"{0xae123fcc8ab2:_x}") -print(f"{0xae123fcc8ab2:#_x}") +print(f"{0xAE123FCC8AB2:_x}") +print(f"{0xAE123FCC8AB2:#_x}") print("{0:_b}".format(0b111010100001)) print("{0:#_b}".format(0b111010100001)) print("{0:_x}".format(0xAE123FCC8AB2)) diff --git a/python-get-all-files-in-directory/bonus/testing_flat_dir.py b/python-get-all-files-in-directory/bonus/testing_flat_dir.py index 7dd6a8ecba..f596007d97 100644 --- a/python-get-all-files-in-directory/bonus/testing_flat_dir.py +++ b/python-get-all-files-in-directory/bonus/testing_flat_dir.py @@ -64,5 +64,4 @@ def list_flat_os_listdir(): ) finally: - recursive_rmdir(flat_dir) diff --git a/python-get-all-files-in-directory/create_large_dir.py b/python-get-all-files-in-directory/create_large_dir.py index 5e7c9671e5..83de918248 100644 --- a/python-get-all-files-in-directory/create_large_dir.py +++ b/python-get-all-files-in-directory/create_large_dir.py @@ -65,7 +65,6 @@ class Item: def create_item(item: Item, path_to: Path = Path.cwd()) -> None: - if not item.children and not item.num_junk_files: path_to.joinpath(item.name).touch(exist_ok=True) return diff --git a/python-guitar-synthesizer/source_code_final/src/digitar/instrument.py b/python-guitar-synthesizer/source_code_final/src/digitar/instrument.py index b5f0b98c76..023f8a7271 100644 --- a/python-guitar-synthesizer/source_code_final/src/digitar/instrument.py +++ b/python-guitar-synthesizer/source_code_final/src/digitar/instrument.py @@ -57,6 +57,8 @@ def upstroke(self, chord: Chord) -> tuple[Pitch, ...]: ) return tuple( string.press_fret(fret_number) - for string, fret_number in zip(self.tuning.strings, chord) + for string, fret_number in zip( + self.tuning.strings, chord, strict=False + ) if fret_number is not None ) diff --git a/python-guitar-synthesizer/source_code_step_4/src/digitar/instrument.py b/python-guitar-synthesizer/source_code_step_4/src/digitar/instrument.py index b5f0b98c76..023f8a7271 100644 --- a/python-guitar-synthesizer/source_code_step_4/src/digitar/instrument.py +++ b/python-guitar-synthesizer/source_code_step_4/src/digitar/instrument.py @@ -57,6 +57,8 @@ def upstroke(self, chord: Chord) -> tuple[Pitch, ...]: ) return tuple( string.press_fret(fret_number) - for string, fret_number in zip(self.tuning.strings, chord) + for string, fret_number in zip( + self.tuning.strings, chord, strict=False + ) if fret_number is not None ) diff --git a/python-guitar-synthesizer/source_code_step_5/src/digitar/instrument.py b/python-guitar-synthesizer/source_code_step_5/src/digitar/instrument.py index b5f0b98c76..023f8a7271 100644 --- a/python-guitar-synthesizer/source_code_step_5/src/digitar/instrument.py +++ b/python-guitar-synthesizer/source_code_step_5/src/digitar/instrument.py @@ -57,6 +57,8 @@ def upstroke(self, chord: Chord) -> tuple[Pitch, ...]: ) return tuple( string.press_fret(fret_number) - for string, fret_number in zip(self.tuning.strings, chord) + for string, fret_number in zip( + self.tuning.strings, chord, strict=False + ) if fret_number is not None ) diff --git a/python-guitar-synthesizer/source_code_step_6/src/digitar/instrument.py b/python-guitar-synthesizer/source_code_step_6/src/digitar/instrument.py index b5f0b98c76..023f8a7271 100644 --- a/python-guitar-synthesizer/source_code_step_6/src/digitar/instrument.py +++ b/python-guitar-synthesizer/source_code_step_6/src/digitar/instrument.py @@ -57,6 +57,8 @@ def upstroke(self, chord: Chord) -> tuple[Pitch, ...]: ) return tuple( string.press_fret(fret_number) - for string, fret_number in zip(self.tuning.strings, chord) + for string, fret_number in zip( + self.tuning.strings, chord, strict=False + ) if fret_number is not None ) diff --git a/python-guitar-synthesizer/source_code_step_7/src/digitar/instrument.py b/python-guitar-synthesizer/source_code_step_7/src/digitar/instrument.py index b5f0b98c76..023f8a7271 100644 --- a/python-guitar-synthesizer/source_code_step_7/src/digitar/instrument.py +++ b/python-guitar-synthesizer/source_code_step_7/src/digitar/instrument.py @@ -57,6 +57,8 @@ def upstroke(self, chord: Chord) -> tuple[Pitch, ...]: ) return tuple( string.press_fret(fret_number) - for string, fret_number in zip(self.tuning.strings, chord) + for string, fret_number in zip( + self.tuning.strings, chord, strict=False + ) if fret_number is not None ) diff --git a/python-import/finders_and_loaders/csv_importer.py b/python-import/finders_and_loaders/csv_importer.py index bbabd3dfe6..54ad962eb3 100644 --- a/python-import/finders_and_loaders/csv_importer.py +++ b/python-import/finders_and_loaders/csv_importer.py @@ -36,8 +36,8 @@ def exec_module(self, module): fieldnames = tuple(_identifier(f) for f in rows.fieldnames) # Create a dict with each field - values = zip(*(row.values() for row in data)) - fields = dict(zip(fieldnames, values)) + values = zip(*(row.values() for row in data), strict=False) + fields = dict(zip(fieldnames, values, strict=False)) # Add the data to the module module.__dict__.update(fields) diff --git a/python-import/population.py b/python-import/population.py index 7ac259e1e2..e73a8cd667 100644 --- a/python-import/population.py +++ b/python-import/population.py @@ -38,7 +38,7 @@ def data(self): def get_country(self, country): """Get population data for one country""" country = self.data[country] - years, population = zip(*country.items()) + years, population = zip(*country.items(), strict=False) return years, population def plot_country(self, country): diff --git a/python-interview-problems-parsing-csv/full_code/csv_parser.py b/python-interview-problems-parsing-csv/full_code/csv_parser.py index 6645b3f551..bed93831b6 100644 --- a/python-interview-problems-parsing-csv/full_code/csv_parser.py +++ b/python-interview-problems-parsing-csv/full_code/csv_parser.py @@ -1,5 +1,6 @@ #!/usr/bin/env python3 -""" Reusable CSV parser for both football and weather data. """ +"""Reusable CSV parser for both football and weather data.""" + import csv diff --git a/python-interview-problems-parsing-csv/full_code/football_final.py b/python-interview-problems-parsing-csv/full_code/football_final.py index a607dc3496..1517d7c5b2 100644 --- a/python-interview-problems-parsing-csv/full_code/football_final.py +++ b/python-interview-problems-parsing-csv/full_code/football_final.py @@ -1,15 +1,16 @@ #!/usr/bin/env python3 -""" Find Minimum Goal Differential - Write a program that takes a filename on the command line and processes the - CSV contents. The contents will be a CSV file with end-of-season football - standings for the English Premier League. - Determine which team had the smallest goal differential that season. - The first line of the CSV file will be column headers: +"""Find Minimum Goal Differential +Write a program that takes a filename on the command line and processes the +CSV contents. The contents will be a CSV file with end-of-season football +standings for the English Premier League. +Determine which team had the smallest goal differential that season. +The first line of the CSV file will be column headers: - Team,Games,Wins,Losses,Draws,Goals For,Goals Against + Team,Games,Wins,Losses,Draws,Goals For,Goals Against - Write unit tests with Pytest to test your program. +Write unit tests with Pytest to test your program. """ + import csv_reader diff --git a/python-interview-problems-parsing-csv/full_code/football_v1.py b/python-interview-problems-parsing-csv/full_code/football_v1.py index ec099488c9..ac1cd2e521 100644 --- a/python-interview-problems-parsing-csv/full_code/football_v1.py +++ b/python-interview-problems-parsing-csv/full_code/football_v1.py @@ -1,23 +1,24 @@ #!/usr/bin/env python3 -""" Find Minimum Goal Differential - Write a program that takes a filename on the command line and processes the - CSV contents. The contents will be a CSV file with end-of-season football - standings for the English Premier League. - Determine which team had the smallest goal differential that season. - The first line of the CSV file will be column headers, with each subsequent - line showing the data for one team: - - Team,Games,Wins,Losses,Draws,Goals For,Goals Against - Arsenal,38,26,9,3,79,36 - - The columns labeled "Goals" and "Goals Allowed" contain the total number of - goals scored for and against each team in that season (so Arsenal scored 79 - goals against opponents and had 36 goals scored against them). - - Write a program to read the file, then print the name of the team with the - smallest difference in "for" and "against" goals. Create unit tests with - Pytest to test your program. +"""Find Minimum Goal Differential +Write a program that takes a filename on the command line and processes the +CSV contents. The contents will be a CSV file with end-of-season football +standings for the English Premier League. +Determine which team had the smallest goal differential that season. +The first line of the CSV file will be column headers, with each subsequent +line showing the data for one team: + + Team,Games,Wins,Losses,Draws,Goals For,Goals Against + Arsenal,38,26,9,3,79,36 + +The columns labeled "Goals" and "Goals Allowed" contain the total number of +goals scored for and against each team in that season (so Arsenal scored 79 +goals against opponents and had 36 goals scored against them). + +Write a program to read the file, then print the name of the team with the +smallest difference in "for" and "against" goals. Create unit tests with +Pytest to test your program. """ + import csv diff --git a/python-interview-problems-parsing-csv/full_code/football_v2.py b/python-interview-problems-parsing-csv/full_code/football_v2.py index 352d01e87f..841b35e567 100644 --- a/python-interview-problems-parsing-csv/full_code/football_v2.py +++ b/python-interview-problems-parsing-csv/full_code/football_v2.py @@ -1,15 +1,16 @@ #!/usr/bin/env python3 -""" Find Minimum Goal Differential - Write a program that takes a filename on the command line and processes the - CSV contents. The contents will be a CSV file with end-of-season football - standings for the English Premier League. - Determine which team had the smallest goal differential that season. - The first line of the CSV file will be column headers: +"""Find Minimum Goal Differential +Write a program that takes a filename on the command line and processes the +CSV contents. The contents will be a CSV file with end-of-season football +standings for the English Premier League. +Determine which team had the smallest goal differential that season. +The first line of the CSV file will be column headers: - Team,Games,Wins,Losses,Draws,Goals For,Goals Against + Team,Games,Wins,Losses,Draws,Goals For,Goals Against - Write unit tests with Pytest to test your program. +Write unit tests with Pytest to test your program. """ + import csv diff --git a/python-interview-problems-parsing-csv/full_code/football_v3.py b/python-interview-problems-parsing-csv/full_code/football_v3.py index 0f26ef355c..308707dfc3 100644 --- a/python-interview-problems-parsing-csv/full_code/football_v3.py +++ b/python-interview-problems-parsing-csv/full_code/football_v3.py @@ -1,15 +1,16 @@ #!/usr/bin/env python3 -""" Find Minimum Goal Differential - Write a program that takes a filename on the command line and processes the - CSV contents. The contents will be a CSV file with end-of-season football - standings for the English Premier League. - Determine which team had the smallest goal differential that season. - The first line of the CSV file will be column headers: +"""Find Minimum Goal Differential +Write a program that takes a filename on the command line and processes the +CSV contents. The contents will be a CSV file with end-of-season football +standings for the English Premier League. +Determine which team had the smallest goal differential that season. +The first line of the CSV file will be column headers: - Team,Games,Wins,Losses,Draws,Goals For,Goals Against + Team,Games,Wins,Losses,Draws,Goals For,Goals Against - Write unit tests with Pytest to test your program. +Write unit tests with Pytest to test your program. """ + import csv diff --git a/python-interview-problems-parsing-csv/full_code/football_v4.py b/python-interview-problems-parsing-csv/full_code/football_v4.py index a52c3a6f3b..b9e77f2727 100644 --- a/python-interview-problems-parsing-csv/full_code/football_v4.py +++ b/python-interview-problems-parsing-csv/full_code/football_v4.py @@ -1,15 +1,16 @@ #!/usr/bin/env python3 -""" Find Minimum Goal Differential - Write a program that takes a filename on the command line and processes the - CSV contents. The contents will be a CSV file with end-of-season football - standings for the English Premier League. - Determine which team had the smallest goal differential that season. - The first line of the CSV file will be column headers: +"""Find Minimum Goal Differential +Write a program that takes a filename on the command line and processes the +CSV contents. The contents will be a CSV file with end-of-season football +standings for the English Premier League. +Determine which team had the smallest goal differential that season. +The first line of the CSV file will be column headers: - Team,Games,Wins,Losses,Draws,Goals For,Goals Against + Team,Games,Wins,Losses,Draws,Goals For,Goals Against - Write unit tests with Pytest to test your program. +Write unit tests with Pytest to test your program. """ + import csv diff --git a/python-interview-problems-parsing-csv/full_code/test_football_v1.py b/python-interview-problems-parsing-csv/full_code/test_football_v1.py index 3534d470fe..3f0a293a5b 100644 --- a/python-interview-problems-parsing-csv/full_code/test_football_v1.py +++ b/python-interview-problems-parsing-csv/full_code/test_football_v1.py @@ -1,5 +1,6 @@ #!/usr/bin/env python3 -""" Pytest functions for CSV Football problem """ +"""Pytest functions for CSV Football problem""" + import football_v1 as fb import pytest diff --git a/python-interview-problems-parsing-csv/full_code/test_football_v2.py b/python-interview-problems-parsing-csv/full_code/test_football_v2.py index d3afdc5f42..a63b0046c5 100644 --- a/python-interview-problems-parsing-csv/full_code/test_football_v2.py +++ b/python-interview-problems-parsing-csv/full_code/test_football_v2.py @@ -1,5 +1,6 @@ #!/usr/bin/env python3 -""" Pytest functions for CSV Football problem """ +"""Pytest functions for CSV Football problem""" + import football_v2 as fb import pytest diff --git a/python-interview-problems-parsing-csv/full_code/test_weather_final.py b/python-interview-problems-parsing-csv/full_code/test_weather_final.py index f59a1ee01a..39d5125366 100644 --- a/python-interview-problems-parsing-csv/full_code/test_weather_final.py +++ b/python-interview-problems-parsing-csv/full_code/test_weather_final.py @@ -1,23 +1,24 @@ #!/usr/bin/env python3 -""" Find the day with the highest average temperature. - Write a program that takes a filename on the command line and processes the - CSV contents. The contents will be a CSV file with a month of weather data, - one day per line. +"""Find the day with the highest average temperature. +Write a program that takes a filename on the command line and processes the +CSV contents. The contents will be a CSV file with a month of weather data, +one day per line. - Determine which day had the highest average temperature where the average - temperature is the average of the day's high and low temperatures. This is - not normally how average temperature is computed, but it will work for our - demonstration. +Determine which day had the highest average temperature where the average +temperature is the average of the day's high and low temperatures. This is +not normally how average temperature is computed, but it will work for our +demonstration. - The first line of the CSV file will be column headers: +The first line of the CSV file will be column headers: - Day,MxT,MnT,AvT,AvDP,1HrP TPcn,PDir,AvSp,Dir,MxS,SkyC,MxR,Mn,R AvSLP + Day,MxT,MnT,AvT,AvDP,1HrP TPcn,PDir,AvSp,Dir,MxS,SkyC,MxR,Mn,R AvSLP - The day number, max temperature, and min temperature are the first three - columns. +The day number, max temperature, and min temperature are the first three +columns. - Write unit tests with Pytest to test your program. +Write unit tests with Pytest to test your program. """ + import pytest import weather_final as wthr diff --git a/python-interview-problems-parsing-csv/full_code/test_weather_v1.py b/python-interview-problems-parsing-csv/full_code/test_weather_v1.py index a30ead49c7..ec1d002a00 100644 --- a/python-interview-problems-parsing-csv/full_code/test_weather_v1.py +++ b/python-interview-problems-parsing-csv/full_code/test_weather_v1.py @@ -1,23 +1,24 @@ #!/usr/bin/env python3 -""" Find the day with the highest average temperature. - Write a program that takes a filename on the command line and processes the - CSV contents. The contents will be a CSV file with a month of weather data, - one day per line. +"""Find the day with the highest average temperature. +Write a program that takes a filename on the command line and processes the +CSV contents. The contents will be a CSV file with a month of weather data, +one day per line. - Determine which day had the highest average temperature where the average - temperature is the average of the day's high and low temperatures. This is - not normally how average temperature is computed, but it will work for our - demonstration. +Determine which day had the highest average temperature where the average +temperature is the average of the day's high and low temperatures. This is +not normally how average temperature is computed, but it will work for our +demonstration. - The first line of the CSV file will be column headers: +The first line of the CSV file will be column headers: - Day,MxT,MnT,AvT,AvDP,1HrP TPcn,PDir,AvSp,Dir,MxS,SkyC,MxR,Mn,R AvSLP + Day,MxT,MnT,AvT,AvDP,1HrP TPcn,PDir,AvSp,Dir,MxS,SkyC,MxR,Mn,R AvSLP - The day number, max temperature, and min temperature are the first three - columns. +The day number, max temperature, and min temperature are the first three +columns. - Write unit tests with Pytest to test your program. +Write unit tests with Pytest to test your program. """ + import pytest import weather_v1 as wthr diff --git a/python-interview-problems-parsing-csv/full_code/weather_final.py b/python-interview-problems-parsing-csv/full_code/weather_final.py index 1a7073b192..454f66b90d 100644 --- a/python-interview-problems-parsing-csv/full_code/weather_final.py +++ b/python-interview-problems-parsing-csv/full_code/weather_final.py @@ -1,23 +1,24 @@ #!/usr/bin/env python3 -""" Find the day with the highest average temperature. - Write a program that takes a filename on the command line and processes the - CSV contents. The contents will be a CSV file with a month of weather data, - one day per line. +"""Find the day with the highest average temperature. +Write a program that takes a filename on the command line and processes the +CSV contents. The contents will be a CSV file with a month of weather data, +one day per line. - Determine which day had the highest average temperature where the average - temperature is the average of the day's high and low temperatures. This is - not normally how average temperature is computed, but it will work for our - demonstration. +Determine which day had the highest average temperature where the average +temperature is the average of the day's high and low temperatures. This is +not normally how average temperature is computed, but it will work for our +demonstration. - The first line of the CSV file will be column headers: +The first line of the CSV file will be column headers: - Day,MxT,MnT,AvT,AvDP,1HrP TPcn,PDir,AvSp,Dir,MxS,SkyC,MxR,Mn,R AvSLP + Day,MxT,MnT,AvT,AvDP,1HrP TPcn,PDir,AvSp,Dir,MxS,SkyC,MxR,Mn,R AvSLP - The day number, max temperature, and min temperature are the first three - columns. +The day number, max temperature, and min temperature are the first three +columns. - Write unit tests with Pytest to test your program. +Write unit tests with Pytest to test your program. """ + import csv_parser diff --git a/python-interview-problems-parsing-csv/full_code/weather_v1.py b/python-interview-problems-parsing-csv/full_code/weather_v1.py index 75e0aad48d..9fe4457e8e 100644 --- a/python-interview-problems-parsing-csv/full_code/weather_v1.py +++ b/python-interview-problems-parsing-csv/full_code/weather_v1.py @@ -1,23 +1,24 @@ #!/usr/bin/env python3 -""" Find the day with the highest average temperature. - Write a program that takes a filename on the command line and processes the - CSV contents. The contents will be a CSV file with a month of weather data, - one day per line. +"""Find the day with the highest average temperature. +Write a program that takes a filename on the command line and processes the +CSV contents. The contents will be a CSV file with a month of weather data, +one day per line. - Determine which day had the highest average temperature where the average - temperature is the average of the day's high and low temperatures. This is - not normally how average temperature is computed, but it will work for our - demonstration. +Determine which day had the highest average temperature where the average +temperature is the average of the day's high and low temperatures. This is +not normally how average temperature is computed, but it will work for our +demonstration. - The first line of the CSV file will be column headers: +The first line of the CSV file will be column headers: - Day,MxT,MnT,AvT,AvDP,1HrP TPcn,PDir,AvSp,Dir,MxS,SkyC,MxR,Mn,R AvSLP + Day,MxT,MnT,AvT,AvDP,1HrP TPcn,PDir,AvSp,Dir,MxS,SkyC,MxR,Mn,R AvSLP - The day number, max temperature, and min temperature are the first three - columns. +The day number, max temperature, and min temperature are the first three +columns. - Write unit tests with Pytest to test your program. +Write unit tests with Pytest to test your program. """ + import csv diff --git a/python-interview-problems-parsing-csv/full_code/weather_v2.py b/python-interview-problems-parsing-csv/full_code/weather_v2.py index 86ee6cef05..fef580aff4 100644 --- a/python-interview-problems-parsing-csv/full_code/weather_v2.py +++ b/python-interview-problems-parsing-csv/full_code/weather_v2.py @@ -1,23 +1,24 @@ #!/usr/bin/env python3 -""" Find the day with the highest average temperature. - Write a program that takes a filename on the command line and processes the - CSV contents. The contents will be a CSV file with a month of weather data, - one day per line. +"""Find the day with the highest average temperature. +Write a program that takes a filename on the command line and processes the +CSV contents. The contents will be a CSV file with a month of weather data, +one day per line. - Determine which day had the highest average temperature where the average - temperature is the average of the day's high and low temperatures. This is - not normally how average temperature is computed, but it will work for our - demonstration. +Determine which day had the highest average temperature where the average +temperature is the average of the day's high and low temperatures. This is +not normally how average temperature is computed, but it will work for our +demonstration. - The first line of the CSV file will be column headers: +The first line of the CSV file will be column headers: - Day,MxT,MnT,AvT,AvDP,1HrP TPcn,PDir,AvSp,Dir,MxS,SkyC,MxR,Mn,R AvSLP + Day,MxT,MnT,AvT,AvDP,1HrP TPcn,PDir,AvSp,Dir,MxS,SkyC,MxR,Mn,R AvSLP - The day number, max temperature, and min temperature are the first three - columns. +The day number, max temperature, and min temperature are the first three +columns. - Write unit tests with Pytest to test your program. +Write unit tests with Pytest to test your program. """ + import csv diff --git a/python-interview-problems-parsing-csv/skeleton_code/football_v1.py b/python-interview-problems-parsing-csv/skeleton_code/football_v1.py index e4c49ec713..27f33eb44c 100644 --- a/python-interview-problems-parsing-csv/skeleton_code/football_v1.py +++ b/python-interview-problems-parsing-csv/skeleton_code/football_v1.py @@ -1,21 +1,21 @@ #!/usr/bin/env python3 -""" Find Minimum Goal Differential - Write a program that takes a filename on the command line and processes the - CSV contents. The contents will be a CSV file with end-of-season football - standings for the English Premier League. - Determine which team had the smallest goal differential that season. - The first line of the CSV file will be column headers, with each subsequent - line showing the data for one team: +"""Find Minimum Goal Differential +Write a program that takes a filename on the command line and processes the +CSV contents. The contents will be a CSV file with end-of-season football +standings for the English Premier League. +Determine which team had the smallest goal differential that season. +The first line of the CSV file will be column headers, with each subsequent +line showing the data for one team: - Team,Games,Wins,Losses,Draws,Goals For,Goals Against - Arsenal,38,26,9,3,79,36 + Team,Games,Wins,Losses,Draws,Goals For,Goals Against + Arsenal,38,26,9,3,79,36 - The columns labeled "Goals" and "Goals Allowed" contain the total number of - goals scored for and against each team in that season (so Arsenal scored 79 - goals against opponents and had 36 goals scored against them). +The columns labeled "Goals" and "Goals Allowed" contain the total number of +goals scored for and against each team in that season (so Arsenal scored 79 +goals against opponents and had 36 goals scored against them). - Write a program to read the file, then print the name of the team with the - smallest difference in "for" and "against" goals. Create unit tests with - Pytest to test your program. +Write a program to read the file, then print the name of the team with the +smallest difference in "for" and "against" goals. Create unit tests with +Pytest to test your program. """ # import csv diff --git a/python-interview-problems-parsing-csv/skeleton_code/test_football_v1.py b/python-interview-problems-parsing-csv/skeleton_code/test_football_v1.py index 6bc64997a3..5e79beaf71 100644 --- a/python-interview-problems-parsing-csv/skeleton_code/test_football_v1.py +++ b/python-interview-problems-parsing-csv/skeleton_code/test_football_v1.py @@ -1,5 +1,6 @@ #!/usr/bin/env python3 -""" Pytest functions for CSV Football problem """ +"""Pytest functions for CSV Football problem""" + import pytest # import football_v1 as fb diff --git a/python-interview-problems-parsing-csv/skeleton_code/test_weather_v1.py b/python-interview-problems-parsing-csv/skeleton_code/test_weather_v1.py index 72f962d8d9..52255109fc 100644 --- a/python-interview-problems-parsing-csv/skeleton_code/test_weather_v1.py +++ b/python-interview-problems-parsing-csv/skeleton_code/test_weather_v1.py @@ -1,5 +1,6 @@ #!/usr/bin/env python3 -""" Pytest functions for CSV Weather problem """ +"""Pytest functions for CSV Weather problem""" + import pytest # import weather_v1 as wthr diff --git a/python-interview-problems-parsing-csv/skeleton_code/weather_v1.py b/python-interview-problems-parsing-csv/skeleton_code/weather_v1.py index 0092d10dee..2172d54fec 100644 --- a/python-interview-problems-parsing-csv/skeleton_code/weather_v1.py +++ b/python-interview-problems-parsing-csv/skeleton_code/weather_v1.py @@ -1,21 +1,21 @@ #!/usr/bin/env python3 -""" Find the day with the highest average temperature. - Write a program that takes a filename on the command line and processes the - CSV contents. The contents will be a CSV file with a month of weather data, - one day per line. +"""Find the day with the highest average temperature. +Write a program that takes a filename on the command line and processes the +CSV contents. The contents will be a CSV file with a month of weather data, +one day per line. - Determine which day had the highest average temperature where the average - temperature is the average of the day's high and low temperatures. This is - not normally how average temperature is computed, but it will work for our - demonstration. +Determine which day had the highest average temperature where the average +temperature is the average of the day's high and low temperatures. This is +not normally how average temperature is computed, but it will work for our +demonstration. - The first line of the CSV file will be column headers: +The first line of the CSV file will be column headers: - Day,MxT,MnT,AvT,AvDP,1HrP TPcn,PDir,AvSp,Dir,MxS,SkyC,MxR,Mn,R AvSLP + Day,MxT,MnT,AvT,AvDP,1HrP TPcn,PDir,AvSp,Dir,MxS,SkyC,MxR,Mn,R AvSLP - The day number, max temperature, and min temperature are the first three - columns. +The day number, max temperature, and min temperature are the first three +columns. - Write unit tests with Pytest to test your program. +Write unit tests with Pytest to test your program. """ # import csv diff --git a/python-isinstance/bool_int_test.py b/python-isinstance/bool_int_test.py index a9aee66105..3c48edd7ac 100644 --- a/python-isinstance/bool_int_test.py +++ b/python-isinstance/bool_int_test.py @@ -15,4 +15,4 @@ print() for element in test_data: - print("bool") if type(element) is bool else print("int") # noqa + print("bool") if type(element) is bool else print("int") diff --git a/python-lazy-evaluation/using_zip.py b/python-lazy-evaluation/using_zip.py index 5c6b4f29f3..e304cc5f0a 100644 --- a/python-lazy-evaluation/using_zip.py +++ b/python-lazy-evaluation/using_zip.py @@ -10,11 +10,11 @@ print(names) # Using 'zip()' in a 'for' loop -for day, name in zip(weekdays, names): +for day, name in zip(weekdays, names, strict=False): print(f"{day}: {name}") # Using 'zip()' with 'next()' -day_name_pairs = zip(weekdays, names) +day_name_pairs = zip(weekdays, names, strict=False) print(next(day_name_pairs)) print(next(day_name_pairs)) diff --git a/python-list-comprehension/list_comprehension_with_condition_and_function.py b/python-list-comprehension/list_comprehension_with_condition_and_function.py index 274dbd47f3..2535fc75f3 100644 --- a/python-list-comprehension/list_comprehension_with_condition_and_function.py +++ b/python-list-comprehension/list_comprehension_with_condition_and_function.py @@ -1,7 +1,4 @@ -sentence = ( - "The rocket, who was named Ted, came back " - "from Mars because he missed his friends." -) +sentence = "The rocket, who was named Ted, came back from Mars because he missed his friends." def is_consonant(letter): diff --git a/python-maze-solver/source_code_final/src/maze_solver/models/maze.py b/python-maze-solver/source_code_final/src/maze_solver/models/maze.py index 0195db22a7..b3f2770f86 100644 --- a/python-maze-solver/source_code_final/src/maze_solver/models/maze.py +++ b/python-maze-solver/source_code_final/src/maze_solver/models/maze.py @@ -63,12 +63,12 @@ def validate_rows_columns(maze: Maze) -> None: def validate_entrance(maze: Maze) -> None: - assert 1 == sum( - 1 for square in maze if square.role is Role.ENTRANCE - ), "Must be exactly one entrance" + assert 1 == sum(1 for square in maze if square.role is Role.ENTRANCE), ( + "Must be exactly one entrance" + ) def validate_exit(maze: Maze) -> None: - assert 1 == sum( - 1 for square in maze if square.role is Role.EXIT - ), "Must be exactly one exit" + assert 1 == sum(1 for square in maze if square.role is Role.EXIT), ( + "Must be exactly one exit" + ) diff --git a/python-maze-solver/source_code_final/src/maze_solver/persistence/file_format.py b/python-maze-solver/source_code_final/src/maze_solver/persistence/file_format.py index 6aa6be2401..4ee474535a 100644 --- a/python-maze-solver/source_code_final/src/maze_solver/persistence/file_format.py +++ b/python-maze-solver/source_code_final/src/maze_solver/persistence/file_format.py @@ -14,9 +14,9 @@ class FileHeader: @classmethod def read(cls, file: BinaryIO) -> "FileHeader": - assert ( - file.read(len(MAGIC_NUMBER)) == MAGIC_NUMBER - ), "Unknown file type" + assert file.read(len(MAGIC_NUMBER)) == MAGIC_NUMBER, ( + "Unknown file type" + ) (format_version,) = struct.unpack("B", file.read(1)) width, height = struct.unpack("<2I", file.read(2 * 4)) return cls(format_version, width, height) diff --git a/python-maze-solver/source_code_final/src/maze_solver/view/renderer.py b/python-maze-solver/source_code_final/src/maze_solver/view/renderer.py index 4e3ecd8e72..3b7c10d656 100644 --- a/python-maze-solver/source_code_final/src/maze_solver/view/renderer.py +++ b/python-maze-solver/source_code_final/src/maze_solver/view/renderer.py @@ -11,10 +11,10 @@ from maze_solver.view.primitives import Point, Polyline, Rect, Text, tag ROLE_EMOJI = { - Role.ENTRANCE: "\N{pedestrian}", - Role.EXIT: "\N{chequered flag}", - Role.ENEMY: "\N{ghost}", - Role.REWARD: "\N{white medium star}", + Role.ENTRANCE: "\N{PEDESTRIAN}", + Role.EXIT: "\N{CHEQUERED FLAG}", + Role.ENEMY: "\N{GHOST}", + Role.REWARD: "\N{WHITE MEDIUM STAR}", } diff --git a/python-maze-solver/source_code_step_2/src/maze_solver/models/maze.py b/python-maze-solver/source_code_step_2/src/maze_solver/models/maze.py index d3396029c5..ac4f248dd0 100644 --- a/python-maze-solver/source_code_step_2/src/maze_solver/models/maze.py +++ b/python-maze-solver/source_code_step_2/src/maze_solver/models/maze.py @@ -54,12 +54,12 @@ def validate_rows_columns(maze: Maze) -> None: def validate_entrance(maze: Maze) -> None: - assert 1 == sum( - 1 for square in maze if square.role is Role.ENTRANCE - ), "Must be exactly one entrance" + assert 1 == sum(1 for square in maze if square.role is Role.ENTRANCE), ( + "Must be exactly one entrance" + ) def validate_exit(maze: Maze) -> None: - assert 1 == sum( - 1 for square in maze if square.role is Role.EXIT - ), "Must be exactly one exit" + assert 1 == sum(1 for square in maze if square.role is Role.EXIT), ( + "Must be exactly one exit" + ) diff --git a/python-maze-solver/source_code_step_3/src/maze_solver/models/maze.py b/python-maze-solver/source_code_step_3/src/maze_solver/models/maze.py index d3396029c5..ac4f248dd0 100644 --- a/python-maze-solver/source_code_step_3/src/maze_solver/models/maze.py +++ b/python-maze-solver/source_code_step_3/src/maze_solver/models/maze.py @@ -54,12 +54,12 @@ def validate_rows_columns(maze: Maze) -> None: def validate_entrance(maze: Maze) -> None: - assert 1 == sum( - 1 for square in maze if square.role is Role.ENTRANCE - ), "Must be exactly one entrance" + assert 1 == sum(1 for square in maze if square.role is Role.ENTRANCE), ( + "Must be exactly one entrance" + ) def validate_exit(maze: Maze) -> None: - assert 1 == sum( - 1 for square in maze if square.role is Role.EXIT - ), "Must be exactly one exit" + assert 1 == sum(1 for square in maze if square.role is Role.EXIT), ( + "Must be exactly one exit" + ) diff --git a/python-maze-solver/source_code_step_3/src/maze_solver/view/renderer.py b/python-maze-solver/source_code_step_3/src/maze_solver/view/renderer.py index 4e3ecd8e72..3b7c10d656 100644 --- a/python-maze-solver/source_code_step_3/src/maze_solver/view/renderer.py +++ b/python-maze-solver/source_code_step_3/src/maze_solver/view/renderer.py @@ -11,10 +11,10 @@ from maze_solver.view.primitives import Point, Polyline, Rect, Text, tag ROLE_EMOJI = { - Role.ENTRANCE: "\N{pedestrian}", - Role.EXIT: "\N{chequered flag}", - Role.ENEMY: "\N{ghost}", - Role.REWARD: "\N{white medium star}", + Role.ENTRANCE: "\N{PEDESTRIAN}", + Role.EXIT: "\N{CHEQUERED FLAG}", + Role.ENEMY: "\N{GHOST}", + Role.REWARD: "\N{WHITE MEDIUM STAR}", } diff --git a/python-maze-solver/source_code_step_4/src/maze_solver/models/maze.py b/python-maze-solver/source_code_step_4/src/maze_solver/models/maze.py index 0195db22a7..b3f2770f86 100644 --- a/python-maze-solver/source_code_step_4/src/maze_solver/models/maze.py +++ b/python-maze-solver/source_code_step_4/src/maze_solver/models/maze.py @@ -63,12 +63,12 @@ def validate_rows_columns(maze: Maze) -> None: def validate_entrance(maze: Maze) -> None: - assert 1 == sum( - 1 for square in maze if square.role is Role.ENTRANCE - ), "Must be exactly one entrance" + assert 1 == sum(1 for square in maze if square.role is Role.ENTRANCE), ( + "Must be exactly one entrance" + ) def validate_exit(maze: Maze) -> None: - assert 1 == sum( - 1 for square in maze if square.role is Role.EXIT - ), "Must be exactly one exit" + assert 1 == sum(1 for square in maze if square.role is Role.EXIT), ( + "Must be exactly one exit" + ) diff --git a/python-maze-solver/source_code_step_4/src/maze_solver/persistence/file_format.py b/python-maze-solver/source_code_step_4/src/maze_solver/persistence/file_format.py index 6aa6be2401..4ee474535a 100644 --- a/python-maze-solver/source_code_step_4/src/maze_solver/persistence/file_format.py +++ b/python-maze-solver/source_code_step_4/src/maze_solver/persistence/file_format.py @@ -14,9 +14,9 @@ class FileHeader: @classmethod def read(cls, file: BinaryIO) -> "FileHeader": - assert ( - file.read(len(MAGIC_NUMBER)) == MAGIC_NUMBER - ), "Unknown file type" + assert file.read(len(MAGIC_NUMBER)) == MAGIC_NUMBER, ( + "Unknown file type" + ) (format_version,) = struct.unpack("B", file.read(1)) width, height = struct.unpack("<2I", file.read(2 * 4)) return cls(format_version, width, height) diff --git a/python-maze-solver/source_code_step_4/src/maze_solver/view/renderer.py b/python-maze-solver/source_code_step_4/src/maze_solver/view/renderer.py index 4e3ecd8e72..3b7c10d656 100644 --- a/python-maze-solver/source_code_step_4/src/maze_solver/view/renderer.py +++ b/python-maze-solver/source_code_step_4/src/maze_solver/view/renderer.py @@ -11,10 +11,10 @@ from maze_solver.view.primitives import Point, Polyline, Rect, Text, tag ROLE_EMOJI = { - Role.ENTRANCE: "\N{pedestrian}", - Role.EXIT: "\N{chequered flag}", - Role.ENEMY: "\N{ghost}", - Role.REWARD: "\N{white medium star}", + Role.ENTRANCE: "\N{PEDESTRIAN}", + Role.EXIT: "\N{CHEQUERED FLAG}", + Role.ENEMY: "\N{GHOST}", + Role.REWARD: "\N{WHITE MEDIUM STAR}", } diff --git a/python-mcp/tests/test_server.py b/python-mcp/tests/test_server.py index aec6c002e2..fd4e2997e8 100644 --- a/python-mcp/tests/test_server.py +++ b/python-mcp/tests/test_server.py @@ -38,7 +38,9 @@ async def test_mcp_server_connection(): tool_descriptions = [tool.description for tool in tools] print("\nYour server has the follow tools:") - for tool_name, tool_description in zip(tool_names, tool_descriptions): + for tool_name, tool_description in zip( + tool_names, tool_descriptions, strict=False + ): print(f"{tool_name}: {tool_description}") assert sorted(EXPECTED_TOOLS) == sorted(tool_names) diff --git a/python-microservices-with-grpc/marketplace/recommendations_pb2.py b/python-microservices-with-grpc/marketplace/recommendations_pb2.py index d22b890fbe..aa32349cdf 100644 --- a/python-microservices-with-grpc/marketplace/recommendations_pb2.py +++ b/python-microservices-with-grpc/marketplace/recommendations_pb2.py @@ -234,9 +234,9 @@ ) _RECOMMENDATIONREQUEST.fields_by_name["category"].enum_type = _BOOKCATEGORY -_RECOMMENDATIONRESPONSE.fields_by_name["recommendations"].message_type = ( - _BOOKRECOMMENDATION -) +_RECOMMENDATIONRESPONSE.fields_by_name[ + "recommendations" +].message_type = _BOOKRECOMMENDATION DESCRIPTOR.message_types_by_name["RecommendationRequest"] = ( _RECOMMENDATIONREQUEST ) diff --git a/python-microservices-with-grpc/recommendations/recommendations_pb2.py b/python-microservices-with-grpc/recommendations/recommendations_pb2.py index d22b890fbe..aa32349cdf 100644 --- a/python-microservices-with-grpc/recommendations/recommendations_pb2.py +++ b/python-microservices-with-grpc/recommendations/recommendations_pb2.py @@ -234,9 +234,9 @@ ) _RECOMMENDATIONREQUEST.fields_by_name["category"].enum_type = _BOOKCATEGORY -_RECOMMENDATIONRESPONSE.fields_by_name["recommendations"].message_type = ( - _BOOKRECOMMENDATION -) +_RECOMMENDATIONRESPONSE.fields_by_name[ + "recommendations" +].message_type = _BOOKRECOMMENDATION DESCRIPTOR.message_types_by_name["RecommendationRequest"] = ( _RECOMMENDATIONREQUEST ) diff --git a/python-minimax-nim/nim/nim.py b/python-minimax-nim/nim/nim.py index e861f98ca2..1c4eb359e9 100644 --- a/python-minimax-nim/nim/nim.py +++ b/python-minimax-nim/nim/nim.py @@ -62,7 +62,7 @@ def import_game_engine(game_name): def input_choice(choices, text="Please choose: "): """Get input from the player""" - inputs = dict(zip(string.ascii_letters, choices)) + inputs = dict(zip(string.ascii_letters, choices, strict=False)) for letter, choice in inputs.items(): print(f"{letter}) {str(choice).replace('_', ' ').title()}") diff --git a/python-optional-arguments/mutable_default_bug.py b/python-optional-arguments/mutable_default_bug.py index b77273c6bc..228760cbf1 100644 --- a/python-optional-arguments/mutable_default_bug.py +++ b/python-optional-arguments/mutable_default_bug.py @@ -27,6 +27,5 @@ def add_item(item_name, quantity, shopping_list={}): print(f"{v}x {k}") print( - "\nNote how both lists contain the same combined items " - "due to the shared default." + "\nNote how both lists contain the same combined items due to the shared default." ) diff --git a/python-practice-problems/caesar.py b/python-practice-problems/caesar.py index 13d7ce0ff3..4370d1d526 100755 --- a/python-practice-problems/caesar.py +++ b/python-practice-problems/caesar.py @@ -1,23 +1,24 @@ #!/usr/bin/env python3 -""" Caesar Cipher - A caesar cipher is a simple substitution cipher where each letter of the - plain text is substituted with a letter found by moving 'n' places down the - alphabet. For an example, if the input plain text is: +"""Caesar Cipher +A caesar cipher is a simple substitution cipher where each letter of the +plain text is substituted with a letter found by moving 'n' places down the +alphabet. For an example, if the input plain text is: - abcd xyz + abcd xyz - and the shift value, n, is 4. The encrypted text would be: +and the shift value, n, is 4. The encrypted text would be: - efgh bcd + efgh bcd - You are to write a function which accepts two arguments, a plain-text - message and a number of letters to shift in the cipher. The function will - return an encrypted string with all letters being transformed while all - punctuation and whitespace remains unchanged. +You are to write a function which accepts two arguments, a plain-text +message and a number of letters to shift in the cipher. The function will +return an encrypted string with all letters being transformed while all +punctuation and whitespace remains unchanged. - Note: You can assume the plain text is all lowercase ascii, except for - whitespace and punctuation. +Note: You can assume the plain text is all lowercase ascii, except for +whitespace and punctuation. """ + import unittest diff --git a/python-practice-problems/integersums.py b/python-practice-problems/integersums.py index a2956adb2e..db74c7c599 100755 --- a/python-practice-problems/integersums.py +++ b/python-practice-problems/integersums.py @@ -1,10 +1,11 @@ #!/usr/bin/env python3 -""" Sum of Integers Up To n - Write a function, add_it_up, which returns the sum of the integers from 0 - to the single integer input parameter. +"""Sum of Integers Up To n +Write a function, add_it_up, which returns the sum of the integers from 0 +to the single integer input parameter. - The function should return 0 if a non-integer is passed in. +The function should return 0 if a non-integer is passed in. """ + import unittest diff --git a/python-practice-problems/logparse.py b/python-practice-problems/logparse.py index ee2d2dd417..69ed976425 100755 --- a/python-practice-problems/logparse.py +++ b/python-practice-problems/logparse.py @@ -1,17 +1,16 @@ #!/usr/bin/env python3 -""" log parser - Accepts a filename on the command line. The file is a linux-like log file - from a system you are debugging. Mixed in among the various statements are - messages indicating the state of the device. They look like: - Jul 11 16:11:51:490 [139681125603136] dut: Device State: ON - The device state message has many possible values, but this program only - cares about three: ON, OFF, and ERR. +"""log parser +Accepts a filename on the command line. The file is a linux-like log file +from a system you are debugging. Mixed in among the various statements are +messages indicating the state of the device. They look like: + Jul 11 16:11:51:490 [139681125603136] dut: Device State: ON +The device state message has many possible values, but this program only +cares about three: ON, OFF, and ERR. - Your program will parse the given log file and print out a report giving - how long the device was ON, and the time stamp of any ERR conditions. +Your program will parse the given log file and print out a report giving +how long the device was ON, and the time stamp of any ERR conditions. """ - if __name__ == "__main__": # TODO: Your code goes here print("There are no unit tests for logparse.") diff --git a/python-practice-problems/sudokusolve.py b/python-practice-problems/sudokusolve.py index b142c2e341..d1fcdb4a88 100755 --- a/python-practice-problems/sudokusolve.py +++ b/python-practice-problems/sudokusolve.py @@ -1,45 +1,46 @@ #!/usr/bin/env python3 -""" Sudoku Solver - NOTE: A description of the Sudoku puzzle can be found at: +"""Sudoku Solver +NOTE: A description of the Sudoku puzzle can be found at: - https://en.wikipedia.org/wiki/Sudoku + https://en.wikipedia.org/wiki/Sudoku - Given a string in SDM format, described below, write a program to find and - return the solution for the Sudoku puzzle given in the string. The solution - should be returned in the same SDM format as the input. +Given a string in SDM format, described below, write a program to find and +return the solution for the Sudoku puzzle given in the string. The solution +should be returned in the same SDM format as the input. - Some puzzles will not be solvable. In that case, return the string - "Unsolvable". +Some puzzles will not be solvable. In that case, return the string +"Unsolvable". - The general sdx format is described here: +The general sdx format is described here: - http://www.sudocue.net/fileformats.php + http://www.sudocue.net/fileformats.php - For our purposes, each SDX string will be a sequence of 81 digits, one for - each position on the Sudoku puzzle. Known numbers will be given and unknown - positions will have a zero value. +For our purposes, each SDX string will be a sequence of 81 digits, one for +each position on the Sudoku puzzle. Known numbers will be given and unknown +positions will have a zero value. - For example, this string of digits (split onto two lines for readability): +For example, this string of digits (split onto two lines for readability): - 0040060790000006020560923000780610305090004 - 06020540890007410920105000000840600100 + 0040060790000006020560923000780610305090004 + 06020540890007410920105000000840600100 - represents this starting Sudoku puzzle: +represents this starting Sudoku puzzle: - 0 0 4 0 0 6 0 7 9 - 0 0 0 0 0 0 6 0 2 - 0 5 6 0 9 2 3 0 0 + 0 0 4 0 0 6 0 7 9 + 0 0 0 0 0 0 6 0 2 + 0 5 6 0 9 2 3 0 0 - 0 7 8 0 6 1 0 3 0 - 5 0 9 0 0 0 4 0 6 - 0 2 0 5 4 0 8 9 0 + 0 7 8 0 6 1 0 3 0 + 5 0 9 0 0 0 4 0 6 + 0 2 0 5 4 0 8 9 0 - 0 0 7 4 1 0 9 2 0 - 1 0 5 0 0 0 0 0 0 - 8 4 0 6 0 0 1 0 0 + 0 0 7 4 1 0 9 2 0 + 1 0 5 0 0 0 0 0 0 + 8 4 0 6 0 0 1 0 0 - The unit tests provide may take a while to run, so be patient. +The unit tests provide may take a while to run, so be patient. """ + import unittest @@ -91,7 +92,7 @@ class SudokuSolverTestCase(unittest.TestCase): def test_solver(self): for index, problem in enumerate(self.problems): - print(f"Testing puzzle {index+1}") + print(f"Testing puzzle {index + 1}") result = sudoku_solve(problem) self.assertEqual(result, self.expected[index]) diff --git a/python-print/snake.py b/python-print/snake.py index 799f9381c9..3eb955ae11 100644 --- a/python-print/snake.py +++ b/python-print/snake.py @@ -26,7 +26,9 @@ def main(screen): # Move the snake snake.pop() - snake.insert(0, tuple(map(sum, zip(snake[0], direction)))) + snake.insert( + 0, tuple(map(sum, zip(snake[0], direction, strict=False))) + ) # Change direction on arrow keystroke direction = directions.get(screen.getch(), direction) diff --git a/python-quiz-application/source_code_final/quiz.py b/python-quiz-application/source_code_final/quiz.py index 74dffe9b81..4258ee98e0 100644 --- a/python-quiz-application/source_code_final/quiz.py +++ b/python-quiz-application/source_code_final/quiz.py @@ -66,7 +66,9 @@ def ask_question(question): def get_answers(question, alternatives, num_choices=1, hint=None): print(f"{question}?") - labeled_alternatives = dict(zip(ascii_lowercase, alternatives)) + labeled_alternatives = dict( + zip(ascii_lowercase, alternatives, strict=False) + ) if hint: labeled_alternatives["?"] = "Hint" diff --git a/python-quiz-application/source_code_final_37/quiz.py b/python-quiz-application/source_code_final_37/quiz.py index 060507e5f6..1a784985ac 100644 --- a/python-quiz-application/source_code_final_37/quiz.py +++ b/python-quiz-application/source_code_final_37/quiz.py @@ -68,7 +68,9 @@ def ask_question(question): def get_answers(question, alternatives, num_choices=1, hint=None): print(f"{question}?") - labeled_alternatives = dict(zip(ascii_lowercase, alternatives)) + labeled_alternatives = dict( + zip(ascii_lowercase, alternatives, strict=False) + ) if hint: labeled_alternatives["?"] = "Hint" diff --git a/python-quiz-application/source_code_step_2/quiz.py b/python-quiz-application/source_code_step_2/quiz.py index a93940899a..da4660961b 100644 --- a/python-quiz-application/source_code_step_2/quiz.py +++ b/python-quiz-application/source_code_step_2/quiz.py @@ -68,7 +68,11 @@ print(f"{question}?") correct_answer = alternatives[0] labeled_alternatives = dict( - zip(ascii_lowercase, random.sample(alternatives, k=len(alternatives))) + zip( + ascii_lowercase, + random.sample(alternatives, k=len(alternatives)), + strict=False, + ) ) for label, alternative in labeled_alternatives.items(): print(f" {label}) {alternative}") diff --git a/python-quiz-application/source_code_step_3/quiz.py b/python-quiz-application/source_code_step_3/quiz.py index 59ca77c9c7..99edbacb00 100644 --- a/python-quiz-application/source_code_step_3/quiz.py +++ b/python-quiz-application/source_code_step_3/quiz.py @@ -99,7 +99,9 @@ def ask_question(question, alternatives): def get_answer(question, alternatives): print(f"{question}?") - labeled_alternatives = dict(zip(ascii_lowercase, alternatives)) + labeled_alternatives = dict( + zip(ascii_lowercase, alternatives, strict=False) + ) for label, alternative in labeled_alternatives.items(): print(f" {label}) {alternative}") diff --git a/python-quiz-application/source_code_step_4/quiz.py b/python-quiz-application/source_code_step_4/quiz.py index 5495a4c0af..2b64662fb9 100644 --- a/python-quiz-application/source_code_step_4/quiz.py +++ b/python-quiz-application/source_code_step_4/quiz.py @@ -48,7 +48,9 @@ def ask_question(question): def get_answer(question, alternatives): print(f"{question}?") - labeled_alternatives = dict(zip(ascii_lowercase, alternatives)) + labeled_alternatives = dict( + zip(ascii_lowercase, alternatives, strict=False) + ) for label, alternative in labeled_alternatives.items(): print(f" {label}) {alternative}") diff --git a/python-quiz-application/source_code_step_5/quiz.py b/python-quiz-application/source_code_step_5/quiz.py index 8628991b88..f3f4e6723d 100644 --- a/python-quiz-application/source_code_step_5/quiz.py +++ b/python-quiz-application/source_code_step_5/quiz.py @@ -57,7 +57,9 @@ def ask_question(question): def get_answers(question, alternatives, num_choices=1, hint=None): print(f"{question}?") - labeled_alternatives = dict(zip(ascii_lowercase, alternatives)) + labeled_alternatives = dict( + zip(ascii_lowercase, alternatives, strict=False) + ) if hint: labeled_alternatives["?"] = "Hint" diff --git a/python-script-structure/iris_summary.py b/python-script-structure/iris_summary.py index ddcee3c745..205d843694 100644 --- a/python-script-structure/iris_summary.py +++ b/python-script-structure/iris_summary.py @@ -105,9 +105,9 @@ def fetch_iris(): logging.info("Fetching Iris dataset...") try: iris_data = fetch_ucirepo(id=UCIDataset.IRIS.value) - assert ( - "data" in iris_data.keys() - ), "Object does not have expected structure" + assert "data" in iris_data.keys(), ( + "Object does not have expected structure" + ) except Exception as e: logging.critical(f"Failed to correctly fetch Iris dataset: {e}") sys.exit(1) diff --git a/python-serialize/http-payload/django-rest-api/manage.py b/python-serialize/http-payload/django-rest-api/manage.py index e170f6bafc..317280df26 100755 --- a/python-serialize/http-payload/django-rest-api/manage.py +++ b/python-serialize/http-payload/django-rest-api/manage.py @@ -1,5 +1,6 @@ #!/usr/bin/env python """Django's command-line utility for administrative tasks.""" + import os import sys diff --git a/python-set-comprehension/colors.py b/python-set-comprehension/colors.py index a7fab40509..e99606dad4 100644 --- a/python-set-comprehension/colors.py +++ b/python-set-comprehension/colors.py @@ -1,4 +1,4 @@ -colors = {"blue", "red", "green", "orange", "green"} +colors = {"blue", "red", "green", "orange"} print(colors) colors.add("purple") print(colors) diff --git a/python-set/literals.py b/python-set/literals.py index 0fc6bf42e2..53abb13132 100644 --- a/python-set/literals.py +++ b/python-set/literals.py @@ -22,6 +22,6 @@ } print(rgb_colors) -print({2, 4, 6, 8, 10, 8, 2}) -print({"Smith", "McArthur", "Wilson", "Johansson", "Smith"}) +print({2, 4, 6, 8, 10}) +print({"Smith", "McArthur", "Wilson", "Johansson"}) print({42, "Hi!", 3.14159, None, "Python"}) diff --git a/python-sockets-tutorial/libclient.py b/python-sockets-tutorial/libclient.py index ce1c4662b9..0dba7567ce 100644 --- a/python-sockets-tutorial/libclient.py +++ b/python-sockets-tutorial/libclient.py @@ -126,8 +126,7 @@ def close(self): self.selector.unregister(self.sock) except Exception as e: print( - f"Error: selector.unregister() exception for " - f"{self.addr}: {e!r}" + f"Error: selector.unregister() exception for {self.addr}: {e!r}" ) try: @@ -197,8 +196,7 @@ def process_response(self): # Binary or unknown content-type self.response = data print( - f"Received {self.jsonheader['content-type']} " - f"response from {self.addr}" + f"Received {self.jsonheader['content-type']} response from {self.addr}" ) self._process_response_binary_content() # Close when response has been processed diff --git a/python-sockets-tutorial/libserver.py b/python-sockets-tutorial/libserver.py index 7aa6c4485f..ee039f99da 100644 --- a/python-sockets-tutorial/libserver.py +++ b/python-sockets-tutorial/libserver.py @@ -146,8 +146,7 @@ def close(self): self.selector.unregister(self.sock) except Exception as e: print( - f"Error: selector.unregister() exception for " - f"{self.addr}: {e!r}" + f"Error: selector.unregister() exception for {self.addr}: {e!r}" ) try: @@ -196,8 +195,7 @@ def process_request(self): # Binary or unknown content-type self.request = data print( - f"Received {self.jsonheader['content-type']} " - f"request from {self.addr}" + f"Received {self.jsonheader['content-type']} request from {self.addr}" ) # Set selector to listen for write events, we're done reading. self._set_selector_events_mask("w") diff --git a/python-sort-unicode-strings/python-sort-unicode-strings.ipynb b/python-sort-unicode-strings/python-sort-unicode-strings.ipynb index 3d6038682d..9edaf0c073 100644 --- a/python-sort-unicode-strings/python-sort-unicode-strings.ipynb +++ b/python-sort-unicode-strings/python-sort-unicode-strings.ipynb @@ -310,7 +310,6 @@ "outputs": [], "source": [ "import sys\n", - "import unicodedata\n", "\n", "\n", "def transliterate_v2(text: str, mapping: dict[str, str] = None) -> str:\n", @@ -320,7 +319,7 @@ " if unicodedata.combining(character := chr(code_point))\n", " )\n", " if mapping:\n", - " src, dst = [\"\".join(x) for x in zip(*mapping.items())]\n", + " src, dst = [\"\".join(x) for x in zip(*mapping.items(), strict=False)]\n", " table = str.maketrans(src, dst, combining_characters)\n", " else:\n", " table = str.maketrans(dict.fromkeys(combining_characters))\n", @@ -476,7 +475,6 @@ "outputs": [], "source": [ "import functools\n", - "import unicodedata\n", "\n", "\n", "def case_insensitive(text: str) -> str:\n", @@ -670,6 +668,10 @@ } ], "source": [ + "import locale\n", + "\n", + "from natsort import natsorted, ns\n", + "\n", "filenames = [\n", " \"raport_maj-2023.xlsx\",\n", " \"błędy.log.3\",\n", @@ -678,12 +680,8 @@ " \"Błędy.log.101\",\n", "]\n", "\n", - "import locale\n", - "\n", "locale.setlocale(locale.LC_ALL, \"pl_PL.UTF-8\")\n", "\n", - "from natsort import natsorted, ns\n", - "\n", "natsorted(filenames, alg=ns.LOCALE | ns.IGNORECASE)" ] }, @@ -850,7 +848,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.11.5" + "version": "3.13.7" } }, "nbformat": 4, diff --git a/python-split-list/spatial_splitting.py b/python-split-list/spatial_splitting.py index 32fa344b1f..404e9157a2 100644 --- a/python-split-list/spatial_splitting.py +++ b/python-split-list/spatial_splitting.py @@ -30,7 +30,10 @@ def __len__(self): 7500 """ return prod( - map(lambda x: x[1] - x[0], zip(self.start_point, self.end_point)) + map( + lambda x: x[1] - x[0], + zip(self.start_point, self.end_point, strict=False), + ) ) def __iter__(self) -> Iterator[tuple[int, ...]]: @@ -48,7 +51,11 @@ def __iter__(self) -> Iterator[tuple[int, ...]]: 149 98 149 99 """ - return product(*starmap(range, zip(self.start_point, self.end_point))) + return product( + *starmap( + range, zip(self.start_point, self.end_point, strict=False) + ) + ) def slices(self) -> tuple[slice, ...]: """Return the slice for each dimension. @@ -60,7 +67,9 @@ def slices(self) -> tuple[slice, ...]: """ return tuple( slice(start, end) - for start, end in zip(self.start_point, self.end_point) + for start, end in zip( + self.start_point, self.end_point, strict=False + ) ) @cached_property @@ -116,7 +125,9 @@ def split_multi(num_chunks: int, *dimensions: int) -> Iterator[Bounds]: """Return a sequence of n-dimensional slices.""" num_chunks_along_axis = find_most_even(num_chunks, len(dimensions)) for slices_by_dimension in product( - *starmap(get_slices, zip(dimensions, num_chunks_along_axis)) + *starmap( + get_slices, zip(dimensions, num_chunks_along_axis, strict=False) + ) ): yield Bounds( start_point=tuple(s.start for s in slices_by_dimension), diff --git a/python-split-list/splitting.py b/python-split-list/splitting.py index 2fce4a9915..352d063d45 100644 --- a/python-split-list/splitting.py +++ b/python-split-list/splitting.py @@ -53,7 +53,7 @@ def split_into_pairs( def split_drop_last( iterable: Iterable[Any], chunk_size: int ) -> Iterator[tuple[Any, ...]]: - return zip(*[iter(iterable)] * chunk_size) + return zip(*[iter(iterable)] * chunk_size, strict=False) def split_sequence( diff --git a/python-sqlite-sqlalchemy/project/build_data/build_author_book_publisher_sqlite.py b/python-sqlite-sqlalchemy/project/build_data/build_author_book_publisher_sqlite.py index 09ce0a79f3..b18d3d94b5 100644 --- a/python-sqlite-sqlalchemy/project/build_data/build_author_book_publisher_sqlite.py +++ b/python-sqlite-sqlalchemy/project/build_data/build_author_book_publisher_sqlite.py @@ -26,7 +26,6 @@ def get_author_book_publisher_data(filepath): def populate_database(session, author_book_publisher_data): # insert the data for row in author_book_publisher_data: - author = ( session.query(Author) .filter(Author.last_name == row["last_name"]) diff --git a/python-sqlite-sqlalchemy/project/examples/example_3/app/customers/routes.py b/python-sqlite-sqlalchemy/project/examples/example_3/app/customers/routes.py index 577f6aac42..69003ae969 100644 --- a/python-sqlite-sqlalchemy/project/examples/example_3/app/customers/routes.py +++ b/python-sqlite-sqlalchemy/project/examples/example_3/app/customers/routes.py @@ -16,7 +16,6 @@ @customers_bp.route("/customers", methods=["GET"]) @customers_bp.route("/customers/", methods=["GET"]) def customers(customer_id=None): - # Start the query for customers query = db.session.query( Customer, func.sum(Invoice.total).label("invoices_total") diff --git a/python-sqlite-sqlalchemy/project/examples/example_3/app/employees/routes.py b/python-sqlite-sqlalchemy/project/examples/example_3/app/employees/routes.py index 96cf937a7b..13ee4c494f 100644 --- a/python-sqlite-sqlalchemy/project/examples/example_3/app/employees/routes.py +++ b/python-sqlite-sqlalchemy/project/examples/example_3/app/employees/routes.py @@ -15,7 +15,6 @@ @employees_bp.route("/employees", methods=["GET"]) @employees_bp.route("/employees/", methods=["GET"]) def employees(employee_id=None): - # Start the query for employees query = db.session.query(Employee) diff --git a/python-sqlite-sqlalchemy/project/examples/example_3/app/playlists/routes.py b/python-sqlite-sqlalchemy/project/examples/example_3/app/playlists/routes.py index e824df0941..4395e3625d 100644 --- a/python-sqlite-sqlalchemy/project/examples/example_3/app/playlists/routes.py +++ b/python-sqlite-sqlalchemy/project/examples/example_3/app/playlists/routes.py @@ -15,7 +15,6 @@ @playlists_bp.route("/playlists", methods=["GET"]) @playlists_bp.route("/playlists/", methods=["GET"]) def playlists(playlist_id=None): - # Start the query for playlists query = db.session.query(Playlist) diff --git a/python-string-formatting/f-strings.py b/python-string-formatting/f-strings.py index 9c73203553..c200b9174b 100644 --- a/python-string-formatting/f-strings.py +++ b/python-string-formatting/f-strings.py @@ -10,6 +10,5 @@ credit = 450.00 print(f"Debit: ${debit}, Credit: ${credit}, Balance: ${credit - debit}") print( - f"Debit: ${debit:.2f}, Credit: ${credit:.2f}, " - f"Balance: ${credit - debit:.2f}" + f"Debit: ${debit:.2f}, Credit: ${credit:.2f}, Balance: ${credit - debit:.2f}" ) diff --git a/python-string-interpolation/f_strings.py b/python-string-interpolation/f_strings.py index 5b86d880d4..1d15674335 100644 --- a/python-string-interpolation/f_strings.py +++ b/python-string-interpolation/f_strings.py @@ -10,7 +10,7 @@ radius = 16 -print(f"The area of your circle is {math.pi * radius ** 2}") +print(f"The area of your circle is {math.pi * radius**2}") name = "Pythonista" site = "real python" diff --git a/python-tic-tac-toe-game-tkinter/source_code_final/tic_tac_toe.py b/python-tic-tac-toe-game-tkinter/source_code_final/tic_tac_toe.py index bc0f6f45d1..2e50757290 100755 --- a/python-tic-tac-toe-game-tkinter/source_code_final/tic_tac_toe.py +++ b/python-tic-tac-toe-game-tkinter/source_code_final/tic_tac_toe.py @@ -47,7 +47,7 @@ def _get_winning_combos(self): [(move.row, move.col) for move in row] for row in self._current_moves ] - columns = [list(col) for col in zip(*rows)] + columns = [list(col) for col in zip(*rows, strict=False)] first_diagonal = [row[i] for i, row in enumerate(rows)] second_diagonal = [col[j] for j, col in enumerate(reversed(columns))] return rows + columns + [first_diagonal, second_diagonal] diff --git a/python-tic-tac-toe-game-tkinter/source_code_step_2/tic_tac_toe.py b/python-tic-tac-toe-game-tkinter/source_code_step_2/tic_tac_toe.py index c039b7a316..aaa4058977 100755 --- a/python-tic-tac-toe-game-tkinter/source_code_step_2/tic_tac_toe.py +++ b/python-tic-tac-toe-game-tkinter/source_code_step_2/tic_tac_toe.py @@ -47,7 +47,7 @@ def _get_winning_combos(self): [(move.row, move.col) for move in row] for row in self._current_moves ] - columns = [list(col) for col in zip(*rows)] + columns = [list(col) for col in zip(*rows, strict=False)] first_diagonal = [row[i] for i, row in enumerate(rows)] second_diagonal = [col[j] for j, col in enumerate(reversed(columns))] return rows + columns + [first_diagonal, second_diagonal] diff --git a/python-tic-tac-toe-game-tkinter/source_code_step_3/tic_tac_toe.py b/python-tic-tac-toe-game-tkinter/source_code_step_3/tic_tac_toe.py index 5af4b24f93..d3c9b58ac5 100755 --- a/python-tic-tac-toe-game-tkinter/source_code_step_3/tic_tac_toe.py +++ b/python-tic-tac-toe-game-tkinter/source_code_step_3/tic_tac_toe.py @@ -47,7 +47,7 @@ def _get_winning_combos(self): [(move.row, move.col) for move in row] for row in self._current_moves ] - columns = [list(col) for col in zip(*rows)] + columns = [list(col) for col in zip(*rows, strict=False)] first_diagonal = [row[i] for i, row in enumerate(rows)] second_diagonal = [col[j] for j, col in enumerate(reversed(columns))] return rows + columns + [first_diagonal, second_diagonal] diff --git a/python-tic-tac-toe-game-tkinter/source_code_step_4/tic_tac_toe.py b/python-tic-tac-toe-game-tkinter/source_code_step_4/tic_tac_toe.py index 7f44900e49..5314a69a1a 100755 --- a/python-tic-tac-toe-game-tkinter/source_code_step_4/tic_tac_toe.py +++ b/python-tic-tac-toe-game-tkinter/source_code_step_4/tic_tac_toe.py @@ -47,7 +47,7 @@ def _get_winning_combos(self): [(move.row, move.col) for move in row] for row in self._current_moves ] - columns = [list(col) for col in zip(*rows)] + columns = [list(col) for col in zip(*rows, strict=False)] first_diagonal = [row[i] for i, row in enumerate(rows)] second_diagonal = [col[j] for j, col in enumerate(reversed(columns))] return rows + columns + [first_diagonal, second_diagonal] diff --git a/python-tic-tac-toe-game-tkinter/source_code_step_5/tic_tac_toe.py b/python-tic-tac-toe-game-tkinter/source_code_step_5/tic_tac_toe.py index bc0f6f45d1..2e50757290 100755 --- a/python-tic-tac-toe-game-tkinter/source_code_step_5/tic_tac_toe.py +++ b/python-tic-tac-toe-game-tkinter/source_code_step_5/tic_tac_toe.py @@ -47,7 +47,7 @@ def _get_winning_combos(self): [(move.row, move.col) for move in row] for row in self._current_moves ] - columns = [list(col) for col in zip(*rows)] + columns = [list(col) for col in zip(*rows, strict=False)] first_diagonal = [row[i] for i, row in enumerate(rows)] second_diagonal = [col[j] for j, col in enumerate(reversed(columns))] return rows + columns + [first_diagonal, second_diagonal] diff --git a/python-type-checking/game_001.py b/python-type-checking/game_001.py index 2ebf38a135..6c999fd246 100644 --- a/python-type-checking/game_001.py +++ b/python-type-checking/game_001.py @@ -23,7 +23,7 @@ def play(): """Play a 4-player card game""" deck = create_deck(shuffle=True) names = "P1 P2 P3 P4".split() - hands = {n: h for n, h in zip(names, deal_hands(deck))} + hands = {n: h for n, h in zip(names, deal_hands(deck), strict=False)} for name, cards in hands.items(): card_str = " ".join(f"{s}{r}" for (s, r) in cards) diff --git a/python-type-checking/game_002.py b/python-type-checking/game_002.py index b3e5fb1b30..4cf3a66e3f 100644 --- a/python-type-checking/game_002.py +++ b/python-type-checking/game_002.py @@ -40,7 +40,7 @@ def play() -> None: """Play a 4-player card game""" deck = create_deck(shuffle=True) names = "P1 P2 P3 P4".split() - hands = {n: h for n, h in zip(names, deal_hands(deck))} + hands = {n: h for n, h in zip(names, deal_hands(deck), strict=False)} start_player = choose(names) turn_order = player_order(names, start=start_player) diff --git a/python-type-checking/game_003.py b/python-type-checking/game_003.py index 99e43b0316..853d01015a 100644 --- a/python-type-checking/game_003.py +++ b/python-type-checking/game_003.py @@ -53,7 +53,8 @@ def __init__(self, *names): deck = Deck.create(shuffle=True) self.names = (list(names) + "P1 P2 P3 P4".split())[:4] self.hands = { - n: Player(n, h) for n, h in zip(self.names, deck.deal(4)) + n: Player(n, h) + for n, h in zip(self.names, deck.deal(4), strict=False) } def play(self): diff --git a/python-type-checking/hearts.py b/python-type-checking/hearts.py index 71579d5ca9..4f93f572e2 100644 --- a/python-type-checking/hearts.py +++ b/python-type-checking/hearts.py @@ -178,7 +178,7 @@ def play(self) -> None: def play_round(self) -> Dict[str, int]: """Play a round of the Hearts card game""" deck = Deck.create(shuffle=True) - for player, hand in zip(self.players, deck.deal(4)): + for player, hand in zip(self.players, deck.deal(4), strict=False): player.hand.add_cards(hand.cards) start_player = next( p for p in self.players if p.has_card(Card("♣", "2")) @@ -210,7 +210,9 @@ def player_order(self, start: Optional[Player] = None) -> List[Player]: def trick_winner(trick: List[Card], players: List[Player]) -> Player: lead = trick[0].suit valid = [ - (c.value, p) for c, p in zip(trick, players) if c.suit == lead + (c.value, p) + for c, p in zip(trick, players, strict=False) + if c.suit == lead ] return max(valid)[1] diff --git a/python-unittest/test_stack.py b/python-unittest/test_stack.py index fa139f13e1..9557d8a6cd 100644 --- a/python-unittest/test_stack.py +++ b/python-unittest/test_stack.py @@ -28,7 +28,7 @@ def test_iter(self): items = [5, 6, 7] for item in items: self.stack.push(item) - for stack_item, test_item in zip(self.stack, items): + for stack_item, test_item in zip(self.stack, items, strict=False): self.assertEqual(stack_item, test_item) def test_reversed(self): diff --git a/python-walrus-operator/walrus_quiz.py b/python-walrus-operator/walrus_quiz.py index 3791ebecac..f06cf6a266 100644 --- a/python-walrus-operator/walrus_quiz.py +++ b/python-walrus-operator/walrus_quiz.py @@ -21,7 +21,7 @@ correct = answers[0] random.shuffle(answers) - coded_answers = dict(zip(string.ascii_lowercase, answers)) + coded_answers = dict(zip(string.ascii_lowercase, answers, strict=False)) valid_answers = sorted(coded_answers.keys()) for code, answer in coded_answers.items(): diff --git a/python-wav-files/synth_stereo.py b/python-wav-files/synth_stereo.py index 4bd05f577d..6436f0fdc7 100644 --- a/python-wav-files/synth_stereo.py +++ b/python-wav-files/synth_stereo.py @@ -14,7 +14,9 @@ def sound_wave(frequency, num_seconds): left_channel = sound_wave(440, 2.5) right_channel = sound_wave(480, 2.5) -stereo_frames = itertools.chain(*zip(left_channel, right_channel)) +stereo_frames = itertools.chain( + *zip(left_channel, right_channel, strict=False) +) with wave.open("output.wav", mode="wb") as wav_file: wav_file.setnchannels(2) diff --git a/python-wav-files/synth_stereo_16bits_array.py b/python-wav-files/synth_stereo_16bits_array.py index 695ddbe412..aea0642b5e 100644 --- a/python-wav-files/synth_stereo_16bits_array.py +++ b/python-wav-files/synth_stereo_16bits_array.py @@ -16,7 +16,9 @@ def sound_wave(frequency, num_seconds): right_channel = sound_wave(480, 2.5) stereo_frames = array.array("h") -for left_sample, right_sample in zip(left_channel, right_channel): +for left_sample, right_sample in zip( + left_channel, right_channel, strict=False +): stereo_frames.append(left_sample) stereo_frames.append(right_sample) diff --git a/python-wav-files/synth_stereo_16bits_bytearray.py b/python-wav-files/synth_stereo_16bits_bytearray.py index a5b547037d..1f374942ca 100644 --- a/python-wav-files/synth_stereo_16bits_bytearray.py +++ b/python-wav-files/synth_stereo_16bits_bytearray.py @@ -18,7 +18,9 @@ def sound_wave(frequency, num_seconds): right_channel = sound_wave(480, 2.5) stereo_frames = bytearray() -for left_sample, right_sample in zip(left_channel, right_channel): +for left_sample, right_sample in zip( + left_channel, right_channel, strict=False +): stereo_frames.extend(int16(left_sample)) stereo_frames.extend(int16(right_sample)) diff --git a/python-while-loop/process_pairs.py b/python-while-loop/process_pairs.py index 4b278dc35c..628fe300bc 100644 --- a/python-while-loop/process_pairs.py +++ b/python-while-loop/process_pairs.py @@ -28,5 +28,5 @@ def process_pairs(sequence): print("\nWith zip()") -for first, second in zip(scientists[::2], scientists[1::2]): +for first, second in zip(scientists[::2], scientists[1::2], strict=False): print(f"- {first} and {second}") diff --git a/python-wordle/source_code_final/wyrdl.py b/python-wordle/source_code_final/wyrdl.py index 900105a182..d8b35ceb6c 100644 --- a/python-wordle/source_code_final/wyrdl.py +++ b/python-wordle/source_code_final/wyrdl.py @@ -57,7 +57,7 @@ def show_guesses(guesses, word): letter_status = {letter: letter for letter in ascii_uppercase} for guess in guesses: styled_guess = [] - for letter, correct in zip(guess, word): + for letter, correct in zip(guess, word, strict=False): if letter == correct: style = "bold white on green" elif letter in word: diff --git a/python-wordle/source_code_step_1/wyrdl.py b/python-wordle/source_code_step_1/wyrdl.py index 439956e38c..b43276eb06 100644 --- a/python-wordle/source_code_step_1/wyrdl.py +++ b/python-wordle/source_code_step_1/wyrdl.py @@ -7,7 +7,9 @@ break correct_letters = { - letter for letter, correct in zip(guess, WORD) if letter == correct + letter + for letter, correct in zip(guess, WORD, strict=False) + if letter == correct } misplaced_letters = set(guess) & set(WORD) - correct_letters wrong_letters = set(guess) - set(WORD) diff --git a/python-wordle/source_code_step_2/wyrdl.py b/python-wordle/source_code_step_2/wyrdl.py index 937343653c..b4c61644bb 100644 --- a/python-wordle/source_code_step_2/wyrdl.py +++ b/python-wordle/source_code_step_2/wyrdl.py @@ -18,7 +18,9 @@ break correct_letters = { - letter for letter, correct in zip(guess, word) if letter == correct + letter + for letter, correct in zip(guess, word, strict=False) + if letter == correct } misplaced_letters = set(guess) & set(word) - correct_letters wrong_letters = set(guess) - set(word) diff --git a/python-wordle/source_code_step_3/wyrdl.py b/python-wordle/source_code_step_3/wyrdl.py index 25356aa79e..6a80a81325 100644 --- a/python-wordle/source_code_step_3/wyrdl.py +++ b/python-wordle/source_code_step_3/wyrdl.py @@ -32,7 +32,9 @@ def get_random_word(word_list): def show_guess(guess, word): correct_letters = { - letter for letter, correct in zip(guess, word) if letter == correct + letter + for letter, correct in zip(guess, word, strict=False) + if letter == correct } misplaced_letters = set(guess) & set(word) - correct_letters wrong_letters = set(guess) - set(word) diff --git a/python-wordle/source_code_step_4/wyrdl.py b/python-wordle/source_code_step_4/wyrdl.py index 483b41d909..a86d5174b5 100644 --- a/python-wordle/source_code_step_4/wyrdl.py +++ b/python-wordle/source_code_step_4/wyrdl.py @@ -44,7 +44,7 @@ def get_random_word(word_list): def show_guesses(guesses, word): for guess in guesses: styled_guess = [] - for letter, correct in zip(guess, word): + for letter, correct in zip(guess, word, strict=False): if letter == correct: style = "bold white on green" elif letter in word: diff --git a/python-wordle/source_code_step_5/wyrdl.py b/python-wordle/source_code_step_5/wyrdl.py index 0484c84645..7ed2e86248 100644 --- a/python-wordle/source_code_step_5/wyrdl.py +++ b/python-wordle/source_code_step_5/wyrdl.py @@ -47,7 +47,7 @@ def get_random_word(word_list): def show_guesses(guesses, word): for guess in guesses: styled_guess = [] - for letter, correct in zip(guess, word): + for letter, correct in zip(guess, word, strict=False): if letter == correct: style = "bold white on green" elif letter in word: diff --git a/python-yaml/formatter/server.py b/python-yaml/formatter/server.py index 35cd3fb492..b123716e2a 100644 --- a/python-yaml/formatter/server.py +++ b/python-yaml/formatter/server.py @@ -9,11 +9,11 @@ from typing import Optional import yaml +from fastapi.responses import HTMLResponse, JSONResponse +from fastapi.staticfiles import StaticFiles from pydantic import BaseModel from fastapi import FastAPI -from fastapi.responses import HTMLResponse, JSONResponse -from fastapi.staticfiles import StaticFiles TEST_DATA = { "person": { diff --git a/python-yaml/yaml2html.py b/python-yaml/yaml2html.py index 725bf38031..a1219ac973 100644 --- a/python-yaml/yaml2html.py +++ b/python-yaml/yaml2html.py @@ -25,7 +25,6 @@ def html(self): return "".join(self._html) def process(self, event): - if isinstance(event, OPEN_TAG_EVENTS): self._handle_tag() diff --git a/python313-preview-gil-jit/benchmarks/pyfeatures.py b/python313-preview-gil-jit/benchmarks/pyfeatures.py index 995680f84d..c685e0d8e4 100644 --- a/python313-preview-gil-jit/benchmarks/pyfeatures.py +++ b/python313-preview-gil-jit/benchmarks/pyfeatures.py @@ -1,9 +1,8 @@ +import _testinternalcapi import abc import sys import sysconfig -import _testinternalcapi - class Feature(abc.ABC): def __init__(self, name: str) -> None: diff --git a/python313-preview-gil-jit/benchmarks/pyinfo.py b/python313-preview-gil-jit/benchmarks/pyinfo.py index 0dce3cf30a..c81805022b 100644 --- a/python313-preview-gil-jit/benchmarks/pyinfo.py +++ b/python313-preview-gil-jit/benchmarks/pyinfo.py @@ -23,10 +23,7 @@ def system_details(): cpu = platform.processor() cores = os.cpu_count() endian = f"{sys.byteorder} Endian".title() - return ( - f"\N{PERSONAL COMPUTER} {name} {arch} with " - f"{cores}x CPU cores ({cpu} {endian})" - ) + return f"\N{PERSONAL COMPUTER} {name} {arch} with {cores}x CPU cores ({cpu} {endian})" def python_details(): diff --git a/python313-preview-gil-jit/benchmarks/uops.py b/python313-preview-gil-jit/benchmarks/uops.py index 4df65c94b9..37539aadca 100644 --- a/python313-preview-gil-jit/benchmarks/uops.py +++ b/python313-preview-gil-jit/benchmarks/uops.py @@ -1,6 +1,6 @@ +import _opcode import dis -import _opcode from pyinfo import print_details diff --git a/queue/src/thread_safe_queues.py b/queue/src/thread_safe_queues.py index b2c3bb6c9d..dae5ea8a38 100644 --- a/queue/src/thread_safe_queues.py +++ b/queue/src/thread_safe_queues.py @@ -122,7 +122,6 @@ def animate(self): live.update(self.render()) def render(self): - match self.buffer: case PriorityQueue(): title = "Priority Queue" diff --git a/random-data/urlsafe.py b/random-data/urlsafe.py index 01f74b0943..35d370d8bd 100644 --- a/random-data/urlsafe.py +++ b/random-data/urlsafe.py @@ -27,7 +27,13 @@ def tok_to_trans(length): if __name__ == "__main__": for nbytes in range(10): - d = dict(zip(("tok", "enc", "trans", "res"), token_urlsafe(nbytes))) + d = dict( + zip( + ("tok", "enc", "trans", "res"), + token_urlsafe(nbytes), + strict=False, + ) + ) print(d) print("\tlengths:", {k: len(v) for k, v in d.items()}) diff --git a/requirements.txt b/requirements.txt index a79f21d56d..a2fd190def 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,2 +1 @@ -black[jupyter]==24.4.2 -ruff==0.4.2 +ruff==0.13.3 diff --git a/rp-portfolio/manage.py b/rp-portfolio/manage.py index ff792ca5eb..b3f36b90eb 100755 --- a/rp-portfolio/manage.py +++ b/rp-portfolio/manage.py @@ -1,5 +1,6 @@ #!/usr/bin/env python """Django's command-line utility for administrative tasks.""" + import os import sys diff --git a/scipy-linalg/linear-systems.ipynb b/scipy-linalg/linear-systems.ipynb index cbf412f685..760329f7ee 100644 --- a/scipy-linalg/linear-systems.ipynb +++ b/scipy-linalg/linear-systems.ipynb @@ -22,9 +22,7 @@ "id": "8771e87c", "metadata": {}, "outputs": [], - "source": [ - "import scipy" - ] + "source": [] }, { "cell_type": "markdown", diff --git a/seaborn-visualization/tutorial.ipynb b/seaborn-visualization/tutorial.ipynb index b7f7712ec3..e48dce2c97 100644 --- a/seaborn-visualization/tutorial.ipynb +++ b/seaborn-visualization/tutorial.ipynb @@ -26,7 +26,6 @@ "outputs": [], "source": [ "import matplotlib.pyplot as plt\n", - "\n", "import seaborn as sns\n", "\n", "tips = sns.load_dataset(\"tips\")\n", @@ -97,7 +96,6 @@ "outputs": [], "source": [ "import matplotlib.pyplot as plt\n", - "\n", "import seaborn as sns\n", "\n", "tips = sns.load_dataset(\"tips\")\n", @@ -139,7 +137,6 @@ "outputs": [], "source": [ "import matplotlib.pyplot as plt\n", - "\n", "import seaborn as sns\n", "\n", "(\n", @@ -198,7 +195,6 @@ "source": [ "import matplotlib.pyplot as plt\n", "import pandas as pd\n", - "\n", "import seaborn as sns\n", "\n", "crossings = pd.read_csv(\"cycle_crossings_apr_jun.csv\")\n", @@ -238,8 +234,8 @@ "metadata": {}, "outputs": [], "source": [ - "import seaborn.objects as so\n", "import pandas as pd\n", + "import seaborn.objects as so\n", "\n", "crossings = pd.read_csv(\"cycle_crossings_apr_jun.csv\")\n", "\n", @@ -353,7 +349,6 @@ "outputs": [], "source": [ "import matplotlib.pyplot as plt\n", - "\n", "import seaborn as sns\n", "\n", "sns.barplot(\n", @@ -413,7 +408,6 @@ "source": [ "import matplotlib.pyplot as plt\n", "import pandas as pd\n", - "\n", "import seaborn as sns\n", "\n", "crossings = pd.read_csv(\"cycle_crossings_apr_jun.csv\")\n", @@ -462,7 +456,6 @@ "source": [ "import matplotlib.pyplot as plt\n", "import pandas as pd\n", - "\n", "import seaborn as sns\n", "\n", "crossings = pd.read_csv(\"cycle_crossings_apr_jun.csv\")\n", @@ -511,8 +504,8 @@ "metadata": {}, "outputs": [], "source": [ - "import seaborn as sns\n", "import matplotlib.pyplot as plt\n", + "import seaborn as sns\n", "\n", "(\n", " sns.histplot(data=cereals_data, x=\"Rating\", bins=10).set(\n", @@ -582,7 +575,6 @@ "source": [ "import matplotlib.pyplot as plt\n", "import pandas as pd\n", - "\n", "import seaborn as sns\n", "\n", "cereals_data = pd.read_csv(\"cereals_data.csv\").rename(\n", @@ -617,7 +609,6 @@ "source": [ "import matplotlib.pyplot as plt\n", "import pandas as pd\n", - "\n", "import seaborn as sns\n", "\n", "cereals_data = pd.read_csv(\"cereals_data.csv\").rename(\n", @@ -645,7 +636,6 @@ "source": [ "import matplotlib.pyplot as plt\n", "import pandas as pd\n", - "\n", "import seaborn as sns\n", "\n", "cereals_data = pd.read_csv(\"cereals_data.csv\").rename(\n", @@ -683,7 +673,6 @@ "source": [ "import matplotlib.pyplot as plt\n", "import pandas as pd\n", - "\n", "import seaborn as sns\n", "\n", "crossings = pd.read_csv(\"cycle_crossings_apr_jun.csv\")\n", @@ -728,7 +717,6 @@ "source": [ "import matplotlib.pyplot as plt\n", "import pandas as pd\n", - "\n", "import seaborn as sns\n", "\n", "crossings = pd.read_csv(\"cycle_crossings_apr_jun.csv\")\n", @@ -774,7 +762,6 @@ "source": [ "import matplotlib.pyplot as plt\n", "import pandas as pd\n", - "\n", "import seaborn as sns\n", "\n", "crossings = pd.read_csv(\"cycle_crossings_apr_jun.csv\")\n", @@ -819,7 +806,6 @@ "source": [ "import matplotlib.pyplot as plt\n", "import pandas as pd\n", - "\n", "import seaborn as sns\n", "\n", "crossings = pd.read_csv(\"cycle_crossings_apr_jun.csv\")\n", @@ -903,9 +889,8 @@ "source": [ "import matplotlib.pyplot as plt\n", "import pandas as pd\n", - "from sklearn.linear_model import LinearRegression\n", - "\n", "import seaborn as sns\n", + "from sklearn.linear_model import LinearRegression\n", "\n", "\n", "def calculate_regression(month, data):\n", @@ -961,7 +946,6 @@ "source": [ "import matplotlib.pyplot as plt\n", "import pandas as pd\n", - "\n", "import seaborn as sns\n", "\n", "crossings = pd.read_csv(\"cycle_crossings_apr_jun.csv\")\n", @@ -988,9 +972,8 @@ "source": [ "import matplotlib.pyplot as plt\n", "import pandas as pd\n", - "from sklearn.linear_model import LinearRegression\n", - "\n", "import seaborn as sns\n", + "from sklearn.linear_model import LinearRegression\n", "\n", "crossings = pd.read_csv(\"cycle_crossings_apr_jun.csv\")\n", "\n", @@ -1035,8 +1018,8 @@ "metadata": {}, "outputs": [], "source": [ - "import seaborn.objects as so\n", "import pandas as pd\n", + "import seaborn.objects as so\n", "\n", "crossings = pd.read_csv(\"cycle_crossings_apr_jun.csv\")\n", "\n", @@ -1067,8 +1050,8 @@ "metadata": {}, "outputs": [], "source": [ - "import seaborn.objects as so\n", "import pandas as pd\n", + "import seaborn.objects as so\n", "\n", "crossings = pd.read_csv(\"cycle_crossings_apr_jun.csv\")\n", "\n", @@ -1095,8 +1078,8 @@ "metadata": {}, "outputs": [], "source": [ - "import seaborn.objects as so\n", "import pandas as pd\n", + "import seaborn.objects as so\n", "\n", "crossings = pd.read_csv(\"cycle_crossings_apr_jun.csv\")\n", "\n", @@ -1132,8 +1115,8 @@ "metadata": {}, "outputs": [], "source": [ - "import seaborn.objects as so\n", "import pandas as pd\n", + "import seaborn.objects as so\n", "\n", "crossings = pd.read_csv(\"cycle_crossings_apr_jun.csv\")\n", "\n", @@ -1164,8 +1147,8 @@ "metadata": {}, "outputs": [], "source": [ - "import seaborn.objects as so\n", "import pandas as pd\n", + "import seaborn.objects as so\n", "\n", "crossings = pd.read_csv(\"cycle_crossings_apr_jun.csv\")\n", "\n", @@ -1200,8 +1183,8 @@ "metadata": {}, "outputs": [], "source": [ - "import seaborn.objects as so\n", "import pandas as pd\n", + "import seaborn.objects as so\n", "\n", "crossings = pd.read_csv(\"cycle_crossings_apr_jun.csv\")\n", "\n", diff --git a/setup.cfg b/setup.cfg deleted file mode 100644 index dbadfc3d69..0000000000 --- a/setup.cfg +++ /dev/null @@ -1,9 +0,0 @@ -[flake8] -exclude = .git,venv,.venv,*/migrations/*,settings.py -# Handle formatting conflicts between Black and Flake8: -# https://github.com/python/black/issues/280 (E203) -# https://github.com/python/black/issues/43 (W503) -ignore = E203,W503 - -[pycodestyle] -exclude = .git,venv diff --git a/sort-python-dictionary/compare_lambda_vs_getter.py b/sort-python-dictionary/compare_lambda_vs_getter.py index 0301f376c6..f34b98f8c6 100644 --- a/sort-python-dictionary/compare_lambda_vs_getter.py +++ b/sort-python-dictionary/compare_lambda_vs_getter.py @@ -40,7 +40,8 @@ f"""\ {sorted_with_lambda_time=:.2f} seconds {sorted_with_itemgetter_time=:.2f} seconds -itemgetter is {( - sorted_with_lambda_time / sorted_with_itemgetter_time -):.2f} times faster""" +itemgetter is { + ( + sorted_with_lambda_time / sorted_with_itemgetter_time + ):.2f} times faster""" ) diff --git a/spacy/examples.py b/spacy/examples.py index 1a884121ba..1be70e873d 100644 --- a/spacy/examples.py +++ b/spacy/examples.py @@ -3,13 +3,13 @@ from collections import Counter import textacy - -import spacy -from spacy import displacy from spacy.language import Language from spacy.matcher import Matcher from spacy.tokenizer import Tokenizer +import spacy +from spacy import displacy + nlp = spacy.load("en_core_web_sm") # %% Introduction diff --git a/storing-images/storing_images.ipynb b/storing-images/storing_images.ipynb index 416190a233..d24aa60b33 100644 --- a/storing-images/storing_images.ipynb +++ b/storing-images/storing_images.ipynb @@ -22,16 +22,17 @@ "output_type": "stream", "text": [ "Loaded CIFAR-10 training set:\n", - " - np.shape(images) (50000, 32, 32, 3)\n", - " - np.shape(labels) (50000,)\n" + " - np.shape(images) (0,)\n", + " - np.shape(labels) (0,)\n" ] } ], "source": [ - "import numpy as np\n", "import pickle\n", "from pathlib import Path\n", "\n", + "import numpy as np\n", + "\n", "# Path to the unzipped CIFAR data\n", "data_dir = Path(\"data/cifar-10-batches-py/\")\n", "\n", @@ -73,9 +74,7 @@ { "cell_type": "code", "execution_count": 2, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "from pathlib import Path\n", @@ -102,9 +101,7 @@ { "cell_type": "code", "execution_count": 3, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "class CIFAR_Image:\n", @@ -129,26 +126,28 @@ "metadata": {}, "outputs": [ { - "name": "stderr", - "output_type": "stream", - "text": [ - "/Users/ysbecca/anaconda3/lib/python3.6/site-packages/h5py/__init__.py:34: FutureWarning: Conversion of the second argument of issubdtype from `float` to `np.floating` is deprecated. In future, it will be treated as `np.float64 == np.dtype(float).type`.\n", - " from ._conv import register_converters as _register_converters\n" + "ename": "ModuleNotFoundError", + "evalue": "No module named 'h5py'", + "output_type": "error", + "traceback": [ + "\u001b[31m---------------------------------------------------------------------------\u001b[39m", + "\u001b[31mModuleNotFoundError\u001b[39m Traceback (most recent call last)", + "\u001b[36mCell\u001b[39m\u001b[36m \u001b[39m\u001b[32mIn[4]\u001b[39m\u001b[32m, line 5\u001b[39m\n\u001b[32m 2\u001b[39m \u001b[38;5;28;01mimport\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[34;01mcsv\u001b[39;00m\n\u001b[32m 4\u001b[39m \u001b[38;5;66;03m# For HDF5\u001b[39;00m\n\u001b[32m----> \u001b[39m\u001b[32m5\u001b[39m \u001b[38;5;28;01mimport\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[34;01mh5py\u001b[39;00m\n\u001b[32m 7\u001b[39m \u001b[38;5;66;03m# For lmdb\u001b[39;00m\n\u001b[32m 8\u001b[39m \u001b[38;5;28;01mimport\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[34;01mlmdb\u001b[39;00m\n", + "\u001b[31mModuleNotFoundError\u001b[39m: No module named 'h5py'" ] } ], "source": [ "# For disk\n", - "from PIL import Image\n", "import csv\n", "\n", - "# For lmdb\n", - "import lmdb\n", - "import pickle\n", - "\n", "# For HDF5\n", "import h5py\n", "\n", + "# For lmdb\n", + "import lmdb\n", + "from PIL import Image\n", + "\n", "\n", "def store_single_disk(image, image_id, label):\n", " \"\"\"Stores a single image as a .png file on disk.\n", @@ -182,7 +181,7 @@ " map_size = image.nbytes * 10\n", "\n", " # Create a new LMDB environment\n", - " env = lmdb.open(str(lmdb_dir / f\"single_lmdb\"), map_size=map_size)\n", + " env = lmdb.open(str(lmdb_dir / \"single_lmdb\"), map_size=map_size)\n", "\n", " # Start a new write transaction\n", " with env.begin(write=True) as txn:\n", @@ -206,13 +205,13 @@ " file = h5py.File(hdf5_dir / f\"{image_id}.h5\", \"w\")\n", "\n", " # Create a dataset in the file\n", - " dataset = file.create_dataset(\n", + " file.create_dataset(\n", " \"image\",\n", " np.shape(image),\n", " h5py.h5t.STD_U8BE,\n", " data=image,\n", " )\n", - " meta_set = file.create_dataset(\n", + " file.create_dataset(\n", " \"meta\",\n", " np.shape(label),\n", " h5py.h5t.STD_U8BE,\n", @@ -237,19 +236,9 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Method: disk, Time usage: 0.02178083499893546\n", - "Method: lmdb, Time usage: 0.0024577950025559403\n", - "Method: hdf5, Time usage: 0.00864763500430854\n" - ] - } - ], + "outputs": [], "source": [ "from timeit import timeit\n", "\n", @@ -268,10 +257,8 @@ }, { "cell_type": "code", - "execution_count": 6, - "metadata": { - "collapsed": true - }, + "execution_count": null, + "metadata": {}, "outputs": [], "source": [ "def store_many_disk(images, labels):\n", @@ -340,13 +327,13 @@ " file = h5py.File(hdf5_dir / f\"{num_images}_many.h5\", \"w\")\n", "\n", " # Create a dataset in the file\n", - " dataset = file.create_dataset(\n", + " file.create_dataset(\n", " \"images\",\n", " np.shape(images),\n", " h5py.h5t.STD_U8BE,\n", " data=images,\n", " )\n", - " meta_set = file.create_dataset(\n", + " file.create_dataset(\n", " \"meta\",\n", " np.shape(labels),\n", " h5py.h5t.STD_U8BE,\n", @@ -371,18 +358,9 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "(100000, 32, 32, 3)\n", - "(100000,)\n" - ] - } - ], + "outputs": [], "source": [ "cutoffs = [10, 100, 1000, 10000, 100000]\n", "\n", @@ -396,31 +374,9 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Method: disk, Time usage: 0.011318083998048678\n", - "Method: lmdb, Time usage: 0.0015257080012816004\n", - "Method: hdf5, Time usage: 0.002065688000584487\n", - "Method: disk, Time usage: 0.1060425999967265\n", - "Method: lmdb, Time usage: 0.007775104997563176\n", - "Method: hdf5, Time usage: 0.00335644900042098\n", - "Method: disk, Time usage: 0.6783636820036918\n", - "Method: lmdb, Time usage: 0.03405023599771084\n", - "Method: hdf5, Time usage: 0.004012751996924635\n", - "Method: disk, Time usage: 8.831336139999621\n", - "Method: lmdb, Time usage: 0.48035822899691993\n", - "Method: hdf5, Time usage: 0.03763485200033756\n", - "Method: disk, Time usage: 80.57666425999923\n", - "Method: lmdb, Time usage: 4.341894056000456\n", - "Method: hdf5, Time usage: 0.28518653900391655\n" - ] - } - ], + "outputs": [], "source": [ "from timeit import timeit\n", "\n", @@ -442,34 +398,9 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'disk': [0.011318083998048678,\n", - " 0.1060425999967265,\n", - " 0.6783636820036918,\n", - " 8.831336139999621,\n", - " 80.57666425999923],\n", - " 'hdf5': [0.002065688000584487,\n", - " 0.00335644900042098,\n", - " 0.004012751996924635,\n", - " 0.03763485200033756,\n", - " 0.28518653900391655],\n", - " 'lmdb': [0.0015257080012816004,\n", - " 0.007775104997563176,\n", - " 0.03405023599771084,\n", - " 0.48035822899691993,\n", - " 4.341894056000456]}" - ] - }, - "execution_count": 9, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "store_many_timings" ] @@ -483,10 +414,8 @@ }, { "cell_type": "code", - "execution_count": 12, - "metadata": { - "collapsed": true - }, + "execution_count": null, + "metadata": {}, "outputs": [], "source": [ "import matplotlib.pyplot as plt\n", @@ -521,7 +450,7 @@ " )\n", "\n", " all_plots = []\n", - " for data, label in zip(y_data, legend_labels):\n", + " for data, label in zip(y_data, legend_labels, strict=False):\n", " if log:\n", " (temp,) = plt.loglog(x_range, data, label=label)\n", " else:\n", @@ -538,48 +467,9 @@ }, { "cell_type": "code", - "execution_count": 13, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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\nQmCC\n", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "image/png": "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\nTkSuQmCC\n", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], + "outputs": [], "source": [ "disk_x = store_many_timings[\"disk\"]\n", "lmdb_x = store_many_timings[\"lmdb\"]\n", @@ -615,20 +505,9 @@ }, { "cell_type": "code", - "execution_count": 14, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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\n6quvIicn5wWmR0RERPWZ1kKlqKgIpqamau3GxsYAACMjI7U+iUSCkpKSF5geERER1Wd8jgoRERHp\nLAb+oGkAACAASURBVBYqREREpLMqfI7KwYMHkZaWptKWlJQEAPj000/V4pV9RERERC9ChYVKYmIi\nEhMTNfbt2rVLY7tEInn+rIiIiIhQQaESERHxMvMgIiIiUqO1UPH29n6mHSoUimdOhoiIiKg8rZNp\no6KiqryzGzduYOTIkc+VEBEREZGS1kJl4cKFiIyMrPSOoqKiMGzYMK1zWoiIiIiqSuutH3Nzc3z9\n9dcoKSlBUFCQ1h1kZGTg008/xR9//AFBEDBw4MDqyJOIiIjqIa0jKhEREbCyssI333yDTZs2aYz5\n7bffMGjQIBw9ehSNGjXCqlWrsHTp0mpLloiIiOoXrYWKq6sroqKiYG1tjaVLl2L9+vViX35+Pj77\n7DNMnToVWVlZ6NevH/bs2YPevXu/lKSJiIiofqjwOSpOTk7YsmULxo8fjxUrVqC0tBS+vr745JNP\nkJqaioYNG+I///kP3nzzzZeVLxEREdUjT32Evr29PbZs2YLmzZsjLCwMo0aNQmpqKvr06YPY2FgW\nKURERFRtKvVdP02aNMHmzZvh7OyM0tJSdO/eHStXrkSjRo2qOz8iIiKqxyr9pYTW1taIjIxE69at\nceTIEYSFhVVnXkRERETa56jEx8drbJ8yZQrmzp2L8PBwFBYWokePHmoxb7zxxovLkIiIiOotrYXK\n2LFjtX7BoCAIAAC5XA65XK7Wz4e+ERER0YugtVDx9/fnNyETERFRjdJaqCxevPhl5kFERESkptKT\naYmIiIheNhYqREREpLNYqBAREZHOYqFCREREOouFChEREeksFipERESksyr89mRtiouLUVxcrLVf\nKpU+c0JERERESpUuVEpLS7Fy5Ups374dmZmZWuMkEgkuX778QpIjIiKi+q3Shcr69esRHh4Og//X\n3p1H13Tvbxx/ksiAhHCpmiklhqokbVBjJKjWEFeCtGb3YqHaag23eikdaJe6RSilpVRbIsTUCIk5\n9UM0StXcpGpKlag5keT8/rDOqcgJJ5LD1vN+rWWRvT9nn0/22nGe7P3d312kiGrXri0vLy979gUA\nAGB7UImKilLZsmX17bffqmLFivbsCQAAQFI+BtOePXtWHTp0IKQAAIAHxuagUqFCBV26dMmevQAA\n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\nlSsrOjpanp6ekqSmTZtq7Nix+vTTTzV69GhJUnZ2tsaNG6eiRYsqKipKjz/+uCSpU6dO6tevnz76\n6CNNnz7d0tf777+va9euadmyZapTp44kKTw8XN26ddOECRMUFRVlqZ02bZpOnz6t2bNnKzAwUJI0\nYMAAde3aVRMmTFDz5s3l5uZm874CAMDR2HxG5YMPPtD69evl4eGhevXqWSZ+u/OPv79/vhqIi4tT\n6dKl1adPnxzLO3furCpVqmj79u3Kzs7W0qVLlZmZqUGDBllCiiQNHjxYnp6eioyMtCxbu3at/vzz\nT/Xt29cSUiQpNDRU1atX1/Lly5WVlSVJ2rFjh5KTkxUaGmoJKZLUpEkTNW3aVHFxcUpLS5MkpaSk\nKCEhQUFBQZaQIkm1atVSp06d9NNPP1luzb569aqio6NVr149S0iRpHLlyqlXr15KTU3V1q1b87Wv\nAABwNDafUVm/fr1q1qypr7/+Wl5eXoXy5llZWRo0aJCKFClidZCum5ubbt68qczMTO3evVuSFBAQ\nkKPG3d1dDRs21Pbt23X58mV5eXlZahs1apRrmwEBAVqyZImOHj0qHx+fu9Y2atRI27dv1549exQc\nHHzP2iVLlmjXrl2qU6eO9u3bp4yMjDxrpVuXnIKDg++6jwAAcGQ2B5X09HS1aNGi0EKKJLm4uOQ6\nk2J2/Phx/fLLL6pSpYrc3Nx04sQJlSlTRsWLF89VW7FiRUlScnKyGjRoYBkEW7ly5Vy1lSpVstT6\n+Pjctda8XfM4mfzUnjhxQpJUpUqVe9YCAADrbL704+fnp0OHDtmzF4vs7Gy9++67ys7OVrdu3SRJ\nFy9ezDMkmZebB/KmpaXJzc1NHh4euWrNl4LMtRcvXpQklShRIs/ay5cv37PW3MP91AIAAOtsPqMy\nevRohYeHa/LkyerTp4/Kly9vl4ZMJpPGjRunHTt2qH79+pYzLpmZmXkOPDUvT09Pz3ftzZs3cyy3\nVmu+o6iwa8093IlHEBQM+w+PGo5ZPGoe5DFrc1CZPHmySpcurS+//FJffvmlihQpoqJFi+aqc3Jy\n0s6dO++rmczMTP33v//V8uXLVblyZc2aNcvyoe7h4WH58L+TORyY+8lvrSSr9fauLVasmNUebx+o\nWxg26kyhbs/oCnv/4cFytONV4ph91HHMFtzd5mmzOaiYx1PY60zK9evX9eqrr2rLli2qVq2a5s+f\nr3LlylnWlyhRIs9LJebl5ksqJUqUUHp6ujIyMnKd0TBf8rm91ryNMmXK2Fx7rx5Klix5z9rb70gC\nAAC52RxUNm7caLcm/vzzT/373//Wjz/+qLp162revHn6xz/+kaOmWrVq2r17t27cuJFr7MmpU6fk\n7OysqlWrWmp/+OEHnTx5Uk888USOWvMEbtWrV7fUmpebl+VVa/77zkng7rXde9UCAADrHvqDe9LT\n0zVo0CD9+OOPCggI0KJFi3KFFEny9/dXdna2EhMTc71+7969qlmzpuUMhXkuF/PtxLfbuXOnvLy8\nVKNGjXvW7tq1S87OzmrQoIFNtZLUsGFDSVK9evXk4eFx11pfX99c6wAAwF/yHVS2bt2q1157Te3a\ntVOTJk0kSatWrVJERISuX7+e7wamTp2qpKQk+fr6au7cuXleDunQoYNcXFwUERGRY7r82bNn68qV\nK+revbtlWXBwsIoXL6558+ZZ7r6RpGXLliklJUVhYWGWeVsCAgJUoUIFLVmyJMfZjx07dighIUFt\n2rRR6dKlJd26LdnPz0+xsbHav3+/pfbIkSNatWqV6tevr3r16km6Nf6kTZs2SkpKyjFdfmpqqhYt\nWqTHHntMrVq1yvf+AgDAkdh86UeSxo0bp8jISJlMJrm4uCg7O1uS9NNPP2nhwoXatm2bvvjiC6tz\nnVhz7tw5LV68WJL0xBNPaO7cuVbrBg4cqBo1aqh///6aO3euQkJCFBgYqGPHjmnz5s3y8/Oz3MYs\nSd7e3ho5cqTeeecdhYSEqH379kpNTVVMTIyqVaumQYMGWWpdXFw0fvx4DRkyRF27dlXHjh117do1\nrV69WqVKldLIkSNz9DJ27Fj17NlTvXv3VseOHeXi4qJVq1bJZDJp/PjxOWpHjBihhIQEDR8+XC++\n+KJKlSqltWvX6vz584qIiGD6fAAA7sHmoPLtt99q6dKlateund544w2tXLlSs2bNkiQNHTpUV69e\nVVRUlObPn69hw4bZtM0ff/zRclfM7c/IuVOfPn3k7u6uN954Q+XLl9fXX3+thQsXqmzZsurbt6+G\nDRuW60M/PDxcJUuW1Lx587R48WKVLFlSISEhev311+Xt7Z2jtlWrVpo3b54iIiK0bNkyFStWTIGB\ngRoxYkSuyd3q16+vxYsXa+rUqVq9erVcXV3VsGFDvfbaa3rqqady1JrP1EyZMkWbNm1SVlaWfHx8\n9OGHH6pp06Y27SMAAByZk8lkMtlSGBISIpPJpJUrV0qSIiIiNHPmzBz3Unfr1k1Xr17V2rVr7dOt\nA9izZ0++n5d0LzMH228gtBENnd36YbeAAnC041XimH3UccwW3N0++2weo5KcnKzmzZvftebZZ5/V\nqVOn8tcdAABAHmwOKh4eHjp//vxda37//Xer09YDAADcD5uDir+/vzZs2KAzZ6zPwJeSkqK4uDj5\n+fkVWnMAAMCx2RxUhg4dqoyMDIWFhWn+/PlKTk6WdGtOkM8//1w9evTQzZs3c9xRAwAAUBA23/VT\nr149zZgxQ2PGjNGHH35oWd6nTx+ZTCZ5enpqypQpevrpp+3SKAAAcDz5mkelZcuW2rRpk+Lj43Xg\nwAFdvnxZxYoVU+3atdWmTRvLc24AAAAKQ76CinRrUO2LL76oF1980R79AAAAWOQZVE6fPn3fG61Q\nocJ9vxYAAMAsz6DSunVrOTk55XuDTk5O+vnnnwvUFAAAgGTDpZ9ixYrpmWeeUZEi+b5KBAAAUCB5\npo+ePXtqw4YNSk1NVVJSklq3bq3nn39eTZs2laur64PsEQAAOKg8g8rbb7+tt99+W0lJSYqNjdX6\n9eu1cuVKeXp6KigoiNACAADs7p7Xc3x9feXr66sxY8Zo3759WrdunTZs2KDo6Gh5enoqMDBQ7du3\nV7NmzXI9wRgAAKAg8jXwpEGDBmrQoIFGjRqlAwcOWM60rF69WsWLF1dgYKCef/55BQcH26tfAADg\nQGyeQv9O9erV04gRI7Ru3TpFRkbqySef1Jo1a/TKK68UZn8AAMCB3fetPFeuXNHmzZu1fv16bdu2\nTdevX5erq6uaNGlSmP0BAAAHlq+gcuHCBcXHx2v9+vX6v//7P928eVMeHh5q1qyZ2rZtq9atW8vT\n09NevQIAAAdzz6By+vRpbdiwQRs2bFBSUpKysrJUrFgxtWnTRm3btlXLli1VtGjRB9ErAABwMHkG\nldmzZ2v9+vU6ePCgJMnLy0sdO3ZU27ZtucMHAAA8EHkGlU8++UROTk4qU6aMgoOD1bhxYxUpUkQm\nk0nbtm2760aDgoIKvVEAAOB47nrpx2Qy6dy5c/r222/17bff3nNjJpNJTk5OlrMwAAAABZFnUBk2\nbNiD7AMAACAXggoAADCs+57wDQAAwN4IKgAAwLAIKgAAwLAIKgAAwLAIKgAAwLAIKgAAwLAIKgAA\nwLAIKgAAwLAIKgAAwLAIKgAAwLAIKgAAwLAIKgAAwLAIKgAAwLAIKgAAwLAIKgAAwLAIKgAAwLAI\nKgAAwLAIKgAAwLAIKgAAwLAIKgAAwLAIKgAAwLAIKgAAwLAIKgAAwLAIKgAAwLAIKgAAwLAIKgAA\nwLAIKgAAwLAIKgAAwLAIKgAAwLAIKgAAwLAIKgAAwLAIKgAAwLAIKgAAwLAIKgAAwLAIKgAAwLAI\nKgAAwLAIKgAAwLAIKgAAwLAIKgAAwLAIKgAAwLAIKgAAwLAIKgAAwLAIKgAAwLAIKgAAwLAIKgAA\nwLAIKgAAwLAIKgAAwLAIKgAAwLAIKgAAwLAIKgAAwLAIKgAAwLAIKgAAwLAIKgAAwLAIKgAAwLAI\nKgAAwLAIKgAAwLAIKgAAwLAIKgAAwLAIKgAAwLAIKgAAwLAIKgAAwLAIKgAAwLAIKgAAwLAIKgAA\nwLAIKgAAwLAIKgAAwLAIKgAAwLAIKgAAwLAIKgAAwLAIKgAAwLAIKgAAwLAIKgAAwLAIKgAAwLAI\nKgAAwLAIKgAAwLAIKgAAwLAIKgAAwLAIKgAAwLAIKgAAwLAIKgAAwLAMFVRSU1Pl7++vBQsWWF0f\nHR2tkJAQNWzYUC1atNCkSZN09epVq7WbN29W9+7d5evrqyZNmuitt97S+fPnrdYmJSWpb9++evbZ\nZxUQEKDhw4frt99+s1p77NgxDRkyRE2aNJG/v78GDBigAwcOWK09c+aMRo4cqebNm8vX11cvvfSS\nvv/++3vvCAAAIMlAQeXq1at65ZVXdOXKFavr58yZo9GjRys7O1s9e/aUj4+PFixYoAEDBigjIyNH\n7Zo1azRo0CCdP39e4eHhaty4sVasWKEePXro0qVLOWp37dqlXr166ejRo+rSpYuCgoK0adMmhYaG\n6uTJkzlqjx8/rvDwcO3cuVPt2rVTp06dtHfvXoWHh2vfvn05av/44w+99NJLiomJUbNmzRQWFqZf\nf/1V/fv3V3x8fCHsMQAA/v6KPOwGJOnUqVN65ZVX8jwzcerUKU2fPl2+vr5atGiRXF1dJUnTpk3T\nrFmztHTpUvXs2VPSrcAzceJEVa5cWdHR0fL09JQkNW3aVGPHjtWnn36q0aNHS5Kys7M1btw4FS1a\nVFFRUXr88cclSZ06dVK/fv300Ucfafr06ZY+3n//fV27dk3Lli1TnTp1JEnh4eHq1q2bJkyYoKio\nKEvttGnTdPr0ac2ePVuBgYGSpAEDBqhr166aMGGCmjdvLjc3t8LcjQAA/O089DMqCxYsUMeOHXXo\n0CE1btzYas3SpUuVmZmpQYMGWUKKJA0ePFienp6KjIy0LFu7dq3+/PNP9e3b1xJSJCk0NFTVq1fX\n8uXLlZWVJUnasWOHkpOTFRoaagkpktSkSRM1bdpUcXFxSktLkySlpKQoISFBQUFBlpAiSbVq1VKn\nTp30008/6eDBg5JuhaXo6GjVq1fPElIkqVy5curVq5dSU1O1devWguw2AAAcwkMPKgsXLlTFihX1\n1VdfqXPnzlZrdu/eLUkKCAjIsdzd3V0NGzbUoUOHdPny5Ry1jRo1yrWdgIAAXbx4UUePHr1nbaNG\njZSVlaU9e/bYVCvduowkSfv27VNGRoZNtQAAIG8PPahMmDBB0dHR8vPzy7PmxIkTKlOmjIoXL55r\nXcWKFSVJycnJkmQZBFu5cuVctZUqVbK51rzdlJSUfNeeOHFCklSlSpV71gIAgLw99KDSvHlzubi4\n3LXm4sWL8vLysrrOvNw8CDctLU1ubm7y8PDIVWu+FGSuvXjxoiSpRIkSedaaz9Tcrdbcw/3UAgCA\nvBliMO29ZGZm5jnw1Lw8PT0937U3b97MsdxarfmOosKuNfdgjXmsC+4P+w+PGo5ZPGoe5DH7SAQV\nDw8Py4f/nczhoGjRovdVK8lqvb1rixUrZrVHSTkG6xaGjTpTqNszusLef3iwHO14lThmH3UcswVn\nHg9qzUO/9GOLEiVK5HmpxLzcfEmlRIkSSk9PzzW3ivTXJZ/ba2/fxv3W3tlDyZIl71l7+x1JAADA\nukciqFSrVk3nz5/XjRs3cq07deqUnJ2dVbVqVUutpFyTtd2+rHr16vmuNf9d2NsFAAB5eySCir+/\nv7Kzs5WYmJhjeXp6uvbu3auaNWtazlD4+/tL+ut24tvt3LlTXl5eqlGjxj1rd+3aJWdnZzVo0MCm\nWklq2LChJKlevXry8PC4a62vr++9vm0AABzeIxFUOnToIBcXF0VEROS4pDN79mxduXJF3bt3tywL\nDg5W8eLFNW/ePMvdN5K0bNkypaSkKCwsTM7Ot77tgIAAVahQQUuWLMlx9mPHjh1KSEhQmzZtVLp0\naUm3bkv28/NTbGys9u/fb6k9cuSIVq1apfr166tevXqSbo0/adOmjZKSknJMl5+amqpFixbpscce\nU6tWrQp3JwEA8Df0SAymrVGjhvr376+5c+cqJCREgYGBOnbsmDZv3iw/Pz9169bNUuvt7a2RI0fq\nnXfeUUhIiNq3b6/U1FTFxMSoWrVqGjRokKXWxcVF48eP15AhQ9S1a1d17NhR165d0+rVq1WqVCmN\nHDkyRx9jx45Vz5491bt3b3Xs2FEuLi5atWqVTCaTxo8fn6N2xIgRSkhI0PDhw/Xiiy+qVKlSWrt2\nrc6fP6+IiAimzwcAwAaPRFCRpDfeeEPly5fX119/rYULF6ps2bLq27evhg0blutDPzw8XCVLltS8\nefO0ePFilSxZUiEhIXr99dfl7e2do7ZVq1aaN2+eIiIitGzZMhUrVkyBgYEaMWJErsnd6tevr8WL\nF2vq1KlavXq1XF1d1bBhQ7322mt66qmnctSaz9RMmTJFmzZtUlZWlnx8fPThhx+qadOm9tlJAAD8\nzTiZTCbTw24Cf9mzZ49lPExhmTl4Y6Fuz+iGzm79sFtAATja8SpxzD7qOGYL7m6ffY/EGBUAAOCY\nCCoAAMCwCCoAAMCwCCoAAMCwCCoAAMCwCCoAAMCwCCoAAMCwCCoAAMCwCCoAAMCwCCoAAMCwCCoA\nAMCwCCoAAMCwCCoAAMCwCCoAAMCwCCoAAMCwCCoAAMCwCCoAAMCwCCoAAMCwCCoAAMCwCCoAAMCw\nCCoAAMCwCCoAAMCwCCoAAMCwCCoAAMCwCCoAAMCwCCoAAMCwCCoAAMCwCCoAAMCwCCoAAMCwCCoA\nAMCwCCoAAMCwCCoAAMCwCCoAAMCwCCoAAMCwCCoAAMCwCCoAAMCwCCoAAMCwCCoAAMCwCCoAAMCw\nCCoAAMCwCCoAAMCwCCoAAMCwCCoAAMCwCCoAAMCwCCoAAMCwCCoAAMCwCCoAAMCwCCoAAMCwCCoA\nAMCwCCoAAMCwCCoAAMCwCCoAAMCwCCoAAMCwCCoAAMCwCCoAAMCwCCoAAMCwCCoAAMCwCCoAAMCw\nCCoAAMCwCCoAAMCwCCoAAMCwCCoAAMCwCCoAAMCwCCoAAMCwCCoAAMCwijzsBgDgdq03D33YLTwE\nBx92A4BhcUYFAAAYFkEFAAAYFkEFAAAYFkEFAAAYFkEFAAAYFkEFAAAYFkEFAAAYFkEFAAAYFkEF\nAAAYFkEFAAAYFkEFAAAYFs/6AQCgAHg+lX1xRgUAABgWQQUAABgWQQUAABgWQQUAABgWQQUAABgW\n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\n15h/+72byZMnKzQ09D66haNq27atzpw5o3379uVYfu7cOf3www96/vnn73vbfn5+cnZ21g8//GDz\na6KioiRJ7dq1u+/3BW73zDPPSFK+jsM7JScnKyMjQ+7u7ho5cqSaN2+up59+WuHh4dq6dWthtVpg\njFGBzfbv36+NGzfKw8NDLVq0yHF9383NTe+++65efvllTZw4UY0bN87zVOLNmzd15swZFS1aVJUr\nV35Q7cOBtG3bVjNnzlRcXJwaNGhgWb5+/XqZTCa1bdtW8+bNu69tu7u7y9vbWxcuXNCVK1dyHOcH\nDx7UjBkzLF+np6fryJEj2rp1q0JCQnKN7YJj2LVrV47jojCYf1k8d+5cvt6vS5culvFX5vEp69at\nk5+fnzp27KjU1FTFxcVp4MCBeu+99wzxSyJBBbnExcXp1KlTlq8zMzOVnJyszZs3KzMzU2+99ZZK\nly6dayCiv7+/evTooW+++UYff/yxxo8fb3X7aWlpys7OznOiu/nz51udJK9Pnz65bgsFrPHx8VHV\nqlW1YcMGjRgxwrLcfNnnzjOC+WW+hHP16tUcQeXQoUOWuyhu5+zsLHd3d6WlpXGLsgPatWtXrtve\nC8p8DFr7v/Ju7xcQEGAJKjdu3FCVKlUUFhamgQMHWmqOHTum7t27691331XLli1z3Q30oBFUkIt5\nzhMzV1dXeXt7q2nTpnr55ZfVrFmzPF/75ptvKj4+Xt988406duwoPz+/XDXmCe4uXbpkdRvz589X\nampqruVdunQhqMBmbdu21dy5c3Xs2DHVrFlTFy5cUGJiosaMGVPgbV+9elVS7ts3u3TpYpmfRbp1\nRuXs2bOKjIzU3LlzlZiYqBUrVsjd3b3APeDRYcs8KvmV1zFoy/uZde3a1TLQ+3Y1a9ZUnz59NHPm\nTMXHx6tHjx757q8wMUYFuUyaNEmHDx+2/Pnpp5+0fft2ffrpp3cNKdKtEenjx4+XyWTSf//7X8vz\njG7n5uamsmXL6saNG1YDydatW3O8vy3jWIA7tW3bVtJfd/9s2LBB2dnZBR4n8ueff+ry5cvy9va+\n5+Mv3N3dVbVqVb355ptq166djh8/rujo6AK9PyDJctbbXpfP69atK0l5zqz+IBFUUOiCg4PVtm1b\nHTt2TJ999pnVmnvdQgoUVIMGDVShQgXLMbZ+/Xo1bNiwwJd9zE+N9fX1zdfrzHO6WLs0BORXYmKi\npPwfh7c7duyYvv/+e5lMplzr0tPTJckQZ/8IKrCLt99+W15eXpozZ47V+/y7d+8uFxcXzZ49Wxcu\nXLjrtrKzs+3VJv7m2rRpowMHDujQoUPauXNnge72MVu8eLEkqUOHDvl6nflSJw8hRUFduXJFK1eu\nVJEiRdS+ffv73s748ePVr18//fzzz7nWmQN5/fr173v7hYWgArsoV66c3nzzTWVkZOjYsWO51tet\nW1dDhgzRuXPn1Lt3b8vo89tdunRJU6ZM0ZYtWyQp13MtgHsxX/4ZP368MjMzCxRUTCaTPvvsM23f\nvl0+Pj75+oBIS0tTZGSkJKl169b33QNw/fp1jR49WhcuXFCPHj1Uvnz5+96W+efhk08+UWZmpmX5\nnj17tHTpUlWpUkXNmzcvcM8FxWBa2E337t21atUqSzK/09ChQ+Xu7q5PPvlEnTp1kp+fn+rWrSt3\nd3elpKQoISFBN27c0GOPPaaxY8eqQoUKD/g7gJF89tlnWrFihdV1L7/8stXlfn5+Klu2rPbu3Stf\nX189/vjjNr3Xl19+meNZP2lpadq9e7d++eUXVaxYUREREVafI3Tn7ckmk0m///67YmNjdenSJYWF\nhalhw4Y29QDHdunSpRzHUkZGhs6ePauEhASdP39ezZo10+jRowv0Hj169FBsbKzl9vlmzZrpzJkz\nio+Pl6urqz7++ONcj4l4GB5+B/jbcnJy0rvvvquQkBCrg2qdnJz073//W23btlVUVJS2bdumNWvW\n6Nq1a/rHP/6h5s2bKzg4WC+88AIzekLJyclKTk62ui4oKMjqHWHOzs4KDg7WN998k69BtAsXLrT8\n28nJSZ6enqpevbpee+019erVK885gu68PdnFxUVeXl6qU6eOOnfurC5dutjcAxzb5cuXczzNvkiR\nIipZsqTq1KmjDh06qFOnTnk+dNNWrq6u+uKLLzRnzhytWbNGX331lTw9PdWmTRsNHz48x8MLHyYn\nk7VRNAAAAAbARX8AAGBYBBUAAGBYBBUAAGBYBBUAAGBYBBUAAGBYBBUAAGBYBBUAAGBYBBUAAGBY\nBBUAAGBYBBUAAGBY/w/+cTwVm7VYwAAAAABJRU5ErkJggg==\n", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], + "outputs": [], "source": [ "# Memory used in KB\n", "disk_mem = [24, 204, 2004, 20032, 200296]\n", @@ -673,10 +552,8 @@ }, { "cell_type": "code", - "execution_count": 15, - "metadata": { - "collapsed": true - }, + "execution_count": null, + "metadata": {}, "outputs": [], "source": [ "def read_single_disk(image_id):\n", @@ -717,7 +594,7 @@ " \"\"\"\n", "\n", " # Open the LMDB environment; see (1)\n", - " env = lmdb.open(str(lmdb_dir / f\"single_lmdb\"), readonly=True)\n", + " env = lmdb.open(str(lmdb_dir / \"single_lmdb\"), readonly=True)\n", "\n", " # Start a new read transaction\n", " with env.begin() as txn:\n", @@ -763,19 +640,9 @@ }, { "cell_type": "code", - "execution_count": 16, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Method: disk, Time usage: 0.0029513100016629323\n", - "Method: lmdb, Time usage: 0.0010519620045670308\n", - "Method: hdf5, Time usage: 0.0038483430034830235\n" - ] - } - ], + "outputs": [], "source": [ "from timeit import timeit\n", "\n", @@ -794,22 +661,9 @@ }, { "cell_type": "code", - "execution_count": 17, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'disk': 0.0029513100016629323,\n", - " 'hdf5': 0.0038483430034830235,\n", - " 'lmdb': 0.0010519620045670308}" - ] - }, - "execution_count": 17, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "read_single_timings" ] @@ -823,10 +677,8 @@ }, { "cell_type": "code", - "execution_count": 18, - "metadata": { - "collapsed": true - }, + "execution_count": null, + "metadata": {}, "outputs": [], "source": [ "def read_many_disk(num_images):\n", @@ -918,31 +770,9 @@ }, { "cell_type": "code", - "execution_count": 19, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Method: disk, No. images: 10, Time usage: 0.007798415004799608\n", - "Method: lmdb, No. images: 10, Time usage: 0.0014411589945666492\n", - "Method: hdf5, No. images: 10, Time usage: 0.0024644029981573112\n", - "Method: disk, No. images: 100, Time usage: 0.07457431899820222\n", - "Method: lmdb, No. images: 100, Time usage: 0.009639914002036676\n", - "Method: hdf5, No. images: 100, Time usage: 0.004666212997108232\n", - "Method: disk, No. images: 1000, Time usage: 0.5799051089998102\n", - "Method: lmdb, No. images: 1000, Time usage: 0.04127998500189278\n", - "Method: hdf5, No. images: 1000, Time usage: 0.014238975003536325\n", - "Method: disk, No. images: 10000, Time usage: 5.8348617760057095\n", - "Method: lmdb, No. images: 10000, Time usage: 0.31768411499797367\n", - "Method: hdf5, No. images: 10000, Time usage: 0.09621400500327582\n", - "Method: disk, No. images: 100000, Time usage: 62.479549773001054\n", - "Method: lmdb, No. images: 100000, Time usage: 3.457494147995021\n", - "Method: hdf5, No. images: 100000, Time usage: 1.3067588940029964\n" - ] - } - ], + "outputs": [], "source": [ "from timeit import timeit\n", "\n", @@ -964,48 +794,9 @@ }, { "cell_type": "code", - "execution_count": 20, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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\nqufiAAAAAElFTkSuQmCC\n", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "image/png": "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\nO3eeOc/j9xHmiYiIACAtLU3dqvVviYmJQO79eY/T09MjIyODM2fOcO3aNW7dusWNGzcICgoiISEB\nyL2fLk/ee3y8FfNxZTkriq2tbYFlBgYGAFhbWxdYl1cIPv5+8q7VjRs3ivzs8h5w+fdnJ4R4flL4\nCSHKlbzWoWrVqhW5Td66vG0fPnwI/NNi9qR9npWRkVGBZSkpKUBu4Xf+/Pkn7p+3LeQ+ybps2TJW\nr16tzpx3jpYtW6JSqQgMDCx0/6Lem7m5OTo6OvmKK0150uero6NTrGPkvZ+HDx8+02cnhCgdUvgJ\nIcqVvHvEnvRHP2+4j7xt8wqSx7sU/+1J655V3vm6devGsmXLir3f/PnzWbp0Kfr6+gwdOpQOHTrQ\npEkTHBwc0NfX54cffihQ+OV176alpRV6zIyMjDIp+kpL3mc3ZMgQvv32Wy2nEaLqqbKF382bN5kx\nYwaBgYGYmJjg6enJ+PHjC/12L4QoOw0aNCAkJISQkJB8DxI8LigoCAAHBwfgn27QsLCwIo8bHh5e\nahnr168PwPXr14vcJjo6mvv371O3bl1q1KhBVlYWa9euBWD69OkMGjSowD4xMTEFljVo0ADI/4DE\n4x5/EKQiKM5nd+3aNdLS0nBwcMDS0rKMkglRNVTJhzsyMzMZPXo0hoaGbNy4kTlz5nD48GHmzZun\n7WhCVHldu3YFYM+ePYUO5BsTE8ORI0cAePnll9X76Ovrc/ny5UKLv7Nnz3Lr1q1Sy9iuXTtMTU25\nefMmp0+fLnSbr776Ci8vL2bNmgXkPnmc12pX2P2LDx48UD+skp2drV7u7u4O5D7oEBsbW2C/HTt2\nPHP+vG5ZbbQUdu7cGV1dXfz9/Qst/rKzs/n44495/fXXWbVqVZnnE6Kyq5KF36VLl7h58yYzZ86k\nUaNGdOjQgU8++YTdu3drO5oQlVZSUtIT/2VkZAC5T8M2aNCA+/fv8/HHH+drBYuMjGTUqFE8evSI\nNm3aqIsiW1tbXnvtNRRFYdy4cfkKiqCgoAKzbTwvMzMzRowYAcDEiRPzFX/p6enMmDGDM2fOoKen\nx/DhwwGoUaOGutt25cqVZGZmqvcJCQnhP//5j/qBkLzPAsDFxYXu3bvz6NEjxo4dm+/z2LJlC+vX\nr3/m/Hld5CV52OV5OTg40L9/f3Jychg9erS69RZyH4j57LPPiIqKwtTUtMiHP4QQJVclu3obNmzI\n8uXL893sraOjQ1JSkhZTCVG5PT5zQ2HGjh2Lt7c3hoaGLFq0iPfffx9/f3/c3d1p3LgxKpWK8PBw\nFEXBycmJefPmoaenp97/888/58qVKwQFBdG3b1+aNGlCTk4OERER1K5dm5o1a3L//v18+zyPMWPG\ncP36dfbv38/IkSOxt7fHysqKGzduqO9P9PHxwcXFBch9wnXMmDHMnDmTnTt38scff1CnTh0SExOJ\njo4GcodEOXv2bIHp3nx9fXnvvfe4dOkSHh4eODo6Eh8fz927d+nevTvHjh17puxOTk4cO3aMNWvW\n8Ndff9GnTx8+/PDDUvhUiufbb7/lzp07nDt3jsGDB1O/fn1MTU2JjIzk0aNHGBgYsGDBgkKfIhZC\nPJ8q2eJnbW1Np06d1K9VKhW//fZbvmVCCO1p1KgRfn5+fPTRRzRo0ICoqCju3r1LixYt+PLLL9my\nZUuBacbMzMxYt24dY8eOpV69ekRGRpKQkMDrr7/Oli1bMDMzA8DY2LhUMurr6/Pjjz8yb948Xnrp\nJVJTUwkNDcXIyIiePXuybt063njjjXz7jBgxgqVLl9K+fXv09PQICwsjMzMTDw8P1qxZw5IlSzAw\nMCA8PDxf17SNjQ3r169nzJgx2NvbExERga6uLmPHjmXOnDnPnH3UqFEMGjQIMzMzrl+//sR7IzXB\nzMyMVatWMW3aNFxdXXnw4AFhYWFYWFjQv39/tm7dSufOncs0kxBVhY5SkR4H05DvvvuOzZs3s3Xr\nVpo0aaLtOEIIDejUqRMPHjxg/fr1uLq6ajuOEEJoRZVs8cujKArTp09n/fr1zJ07V4o+ISqo8PBw\nevTowZgxYwpdHxwczIMHD9DX1y/TAY+FEKK8qbKFn0ql4ssvv2Tjxo3MmzdPPUWQEKLiqVevHikp\nKRw+fJiVK1eSk5OjXnf9+nU+++wzAPr27avu8hVCiKqoynb1zpgxg/Xr17Nw4UK6d++u7ThCiOfk\n5+fH5MmTURSF6tWrY29vT3JyMjdv3kRRFFxcXFi5cqWMCyeEqNIqXOEXGxuLp6cn3t7e6uEUHped\nnc1vv/3G5s2biY6OxsbGhsGDBzNq1Cj1nJIXLlzAy8uLCRMmFBhEtbB5OYUQFcPVq1dZuXIlFy9e\nJCYmBmNjY+rVq0ffvn15++23MTQ01HZEIYTQqgpV+KWmpjJy5EguXrzIF198UWjh9+2337Jp0yZc\nXV1p27Yt58+fJzAwkN69e7NgwQIAvv/+e1auXFnoOYKCgtQTiz/u39MoCSGEEEKUZ4U9yFZhxvG7\nffs23t7e+Qb7/Lfz58+zadMmevfuzfz589UTl0+ePBk/Pz+OHTtG9+7dmTRpEpMmTXrmDJp+EjAk\nJKTQEf1F5SfXvuqSa181yXWvusrq2hfVYFUhCr/Vq1ezYMEC0tPT6dixI2fOnCl0u3Xr1gG5A8Hm\nTUmko6PDp59+ys6dO9myZctz3c9X1FyZpSU9PV3j5xDlk1z7qkuufdUk173q0va1rxCF39q1a7G3\nt8fHx4eoqKgiC7+AgACqV6+Oo6NjvuW2trbUr1+fc+fOPVcOTVfo8g2w6pJrX3XJta+a5LpXXdpu\n8asQw7n4+Pjg5+dH27Zti9wmMzOTmJgYHBwcCl1vb29PUlIS8fHxmoophBBCCFGuVYjCr3Pnzk+d\nX/Phw4cAmJubF7o+b3lycnLphhNCCCGEqCAqROFXHNnZ2QBFDteQtzwjI6PMMgkhhBBClCeVpvDL\nm3g9Kyur0PWZmZkAmJiYlFkmIYQQQojypNIUfmZmZujq6pKSklLo+rwu3qK6goUQQgghKrtKU/gZ\nGhpiZ2dHdHR0oeujo6OxtrbGysqqjJMJIYQQQpQPlabwg9wBluPi4oiMjMy3PDY2lqioKFq1aqWl\nZEIIIYQQ2lepCr+BAwcCMG/ePFQqFQCKovDDDz8A4OXlpbVsQgghhBDaViEGcC6uTp064enpyb59\n+/Dy8sLNzY2///6bgIAAevfuTbdu3bQdUQghhBBCaypV4Qcwe/ZsGjduzI4dO1izZg12dnaMGzeO\nDz74QD2NmxBCCCFEVVThCr/BgwczePDgItcbGBgwZswYxowZU4aphBBCCCHKv0p1j58QQgghhCia\nFH5CCCGEEGVAURRyVIpWM1S4rl4hhBBCiIrmUvRDvva7QlJKGn80d9ZaDin8hBBCCCE0JDEti9kH\nrrLe/yY1zYwY3c5aq3mk8BOlbuHChfz0008Fluvr62NmZoajoyOvv/46r776qnpddHQ07u7uGBoa\n4ufnR6NGjQo99scff8yRI0c4cuQIderUKbA+JCSErVu3cvbsWWJiYsjOzsbW1pYXX3yRYcOG0bBh\nw2K/j+XLl7N+/Xru379P9erVWbVqFX379sXd3Z3FixcD8O677+Lv78+5c+ewsLAo9rGFEEJUbiqV\nwtbz0cz6/SqJj7IY2akB43s2IToyQqu5pPATGuPu7k6zZs3Ur7Ozs4mPj+f333/n888/5/r164wf\nPz7fPpmZmUyZMoVff/31mYbfUalUzJ8/n2XLlqGnp4ebmxsvvfQSenp6hIaGsnnzZjZv3oyPjw9v\nvPHGU4938uRJ5s6dS61atRg2bBhGRkbUqlWLsWPHPlPxKIQQouoJvpPEtzuvEHAjAdd61fF91QVn\nu/LROCCFn9AYDw+PQofe+c9//sOgQYNYsWIFb775Jvb29vnWnzt3js2bNz/TTCsLFixg6dKluLi4\n8MMPP1CvXr1868PCwhg1ahRTpkzBxcUlX0FamODgYADGjRuXr1D09vYudiYhhBBVS3J6FvMOhbPm\nrygsTQyY/XpLXm9bB13d8jOOsDzVK8pc/fr1cXd3Jycnhz///DPfusaNG2NgYMCcOXO4d+9esY4X\nHh7OihUrsLGx4eeffy5Q9AE4OjoyY8YMcnJy+OWXX556zMzMTACqV69erAxCCCGqLkVR2HnhNu5z\nj7PqdCRvta/L0QldebNd3XJV9IEUfkJLbG1tAXj48GG+5fXq1WP06NEkJSUxffr0Yh1ry5YtZGdn\n8/777z+xUOvUqRODBg2iY8eOTzyek5OT+h7FMWPG4OTkxPbt24mOjsbJyYmPP/74qZn++usvRo4c\niaurK61bt8bLy4v9+/cX2O7GjRt88sknfPDBB7i4uNCjRw+mTp1KXFzcU88hhBBC+yLuJfPOirN8\nsvECtS2N8fv4Jb4b1AIrU0NtRyuUdPUKrbh58ybwTwH4uFGjRrFv3z4OHDjA4cOH8fDweOKxDh8+\nDOTeU/g0s2bNeuo2Y8eOxd/fH39/fzw9PWnYsOFTu4Yft2XLFr755husra3x9PTE1NSUI0eO8Mkn\nnzB+/HhGjx4NQHx8PCNGjCAhIYGOHTvSpEkTQkND2bBhA2fPnmXXrl0YGBgU+7xCCCHKTlpmNguO\nRPDzyetUM9Jn+kAX3u7ggF45a+H7Nyn8ytC2wGg2B9wqcn1aWhqmJx4Wub4svNmuLq+5FnxatjRd\nvnyZo0ePYmxsTJcuXQqsNzQ0xNfXlyFDhjBt2jQ6duyImZlZocfKysri7t27mJiYULdu3VLJ5+3t\nzcKFC/H396dv377qwjM6Ovqp+8bExDBt2jQaNmzIunXr1C2Q48ePZ8SIEcyfP58ePXrg6OjIvn37\nuHPnDjNmzMDZ2VldXE6bNo1169Zx6tQpunXrVirvSQghROlQFIUDQTFM2x3MncR03nCtw+Q+Talh\nZqTtaMUihZ/QmMOHD3P79m316+zsbCIjI/njjz/Izs7myy+/xNq68PGMXF1deeutt9iwYQNz585l\nypQphW6XkJCASqXC3Ny80PWrVq0iJSWlwPLhw4drZPiVXbt2kZmZybhx4/J1OxsbGzNu3DhGjhzJ\njh07mDRpEiqVCoCgoCCcnJzU244fP56PPvoIGxubUs8nhBCi5KLupzJlVxDHw+JoWtucBW+3oV19\n7Y7L96yk8CtDr7nWeWJrWkhIyDN1KZZ3eePt5TEwMMDKyoqXXnqJIUOG8PLLLz9x/4kTJ3LkyBE2\nbNhA//79adu2bYFtrKysAEhKSir0GKtWrSI2NrbA8kGDBmmk8Lty5QqQe49feHh4vnVpaWkAXL16\nFYDevXuzaNEi1q1bx+7du+natStdunSha9euUvQJIUQ5kp6Vw+I/rrH0+DUM9XT5tp8zw16sh75e\nxXtUQgo/oTEzZ84sdDiX4jIzM2PKlCmMGTOGb775hh07dhTYxtDQEBsbG+Li4oiNjS1wz+CJEyfy\nvc4bAFpTkpOTAdi4cWOR2yQmJgK59zdu3bqVJUuWcPDgQXbv3s3u3bsxMDBg8ODBfP311xgals+b\ng4UQoqo4ejWWqbuCuRmfxqut7fjKsxm1LIy1HavEpPAT5ZqHhwe9evXi4MGDLF++vNBt3N3d2bhx\nI4cOHWLo0KFlnDA/U1NTILebuzj3HNatW5cZM2bwzjvvkJOTw8mTJ9m+fTubNm3C3Nyczz77TNOR\nhRBCFCI6IQ2f3cEcCo6lkU011r/vRqfGNbUd67lVvDZKUeV8/fXXmJubs2zZMm7cuFFgvZeXF3p6\neixdupT4+PgnHivvvjpNybtX7/LlywXWRUVF8f3333P06FEgtyt86tSppKSkoKenR6tWrRg7dizr\n1q0DIDAwUKNZhRBCFJSZrWLRsQg8fjjOn+H3mfRKU37/pEulKPpACj9RAdja2jJx4kQyMzOJiCg4\nx6GzszMff/wxcXFxDBs2jNDQ0ALbJCUlMWfOHI4fPw6Arq5mfvQHDBiAnp4eP/74Y76x+LKzs/H1\n9WXlypXqsQuvX7/Ohg0b2LBhQ75j5D0QY2dnp5GMQgghCvdn+H1emX+C/x0IpZtjLQ5P6MpH3Rph\nqF95yiXp6hUVgpeXF7t27SqyFWzMmDEYGRnx448/MmDAANq2bYuzszNGRkZERUVx6tQp0tPTqVWr\nFl999ZXGiqr69evz2WefMWvWLPr160ePHj2wtLTkxIkTXLt2je7duzNgwAAA3nzzTTZv3sycOXM4\nevQorq6uPHjwgP3792NqasqoUaM0klEIIUR+MYnpTN8bzJ5Ld6lXw5TVI9vTzamWtmNphBR+okLQ\n0dHB19eXgQMHqqdT+/f6Dz74gF69erFt2zZOnjzJnj17SEtLo0aNGnTu3BkPDw88PT01/sDEyJEj\nadiwIStXruTgwYOoVCrq1q3L5MmTGTJkCPr6ub92lpaW/PbbbyxZsoRjx45x5coVzMzM6NKlC2PH\njqVJkyYazSmEEFVdVo6KNaejmHcojCyVwngPRz7s2hBjAz1tR9MYHUVRFG2HqAgCAwNxdXXV6Dkq\n23Auovjk2lddcu2rJrnu2ucfGc83flcIjU2mR9NaTO3fHIcapho/b1ld+6LqFmnxE0IIIUSVEZec\nwczfQ9h+/jb2ViYsf9eVns626OiU76nWSosUfkIIIYSo9HJUCuvO3uB/B0JJz8phTPdGjO3eBBPD\nytutWxgp/IQQQghRqf19M4Fvdl7hyu0kXmpcA58BLjSuVfgc8JWdFH5CCCGEqJQSUjOZfSCUjedu\nUsvciIVvt6FfyxeqTLduYaTwE0IIIUSlolIpbA64xff7r5KUns1/XmrAf3s6YmYkZY98AkIIIYSo\nNILuJPK13xX+vvmQDvWtmTawOU1rW2g7VrkhhZ8QQgghKryk9Cx+OBjG2r+isK5myNw3WjG4rX2V\n7tYtjBR+QgghhKiwFEXB78Jtvtt7lfjUDIZ2rMeEXk5YmhhoO1q5JIWfEEIIISqksNhkvvG7wtnI\neFrVtWL1yPa42FtqO1a5JoWfEEIIISqU1Ixs5h8JZ+WfkZgZ6zNzcAu82tVFV1e6dZ9GCj8hhBBC\nVAiKorDvcgy+e4KJSUrHq11dJvVpinU1zc7BXplI4SeEEEKIcu96XApTdgVxMvw+ze0sWDy0LW0d\nqms7VoUjhZ8QQgghyq1HmTksOhbB8hPXMdLXxWdAc4Z2rIeedOuWiK62A4jKZ+HChTg5ObF9+/Yn\nbrd9+3acnJxwcnLiq6++euK2q1atUm979uxZ9fJ3331XvTzvn7OzM66urrz66qvMnz+fpKSkAsc7\ne/Zsgf2cnJxo2bIlHh4e+Pr6Eh8fX7IPQAghRKk4HBxLz3nH+elYBH1bvsCRiV0Z3qm+FH3PQVr8\nRLlw9OhRcnJy0NMrfLLsAwcOPHH/YcOGYWGRO0BndnY2Dx8+JCAggMWLF7Njxw5+++036tSpU2C/\npk2b4uHhAeTeO/Lo0SPCwsJYt24dx48fZ9u2bVhayhNiQghRlm7Fp+GzO4jDIfdwtDVj46iOdGxY\nQ9uxKgUp/ITW2djYEBcXR0BAAG5ubgXWx8bGcuHCBUxNTUlLSyv0GMOHDy9Q2KlUKhYuXMjixYsZ\nPXo0fn5+6Ovn/5Fv1qwZ3t7eBY73yy+/MHv2bFavXs0nn3zyHO9OCCFEcWVk57D8+HV+OhaBnq4O\nX3o2ZeRLDTDQkw7K0iKfpNA6d3d3AA4dOlTo+gMHDqCjo0O3bt2e6bi6urp88skndOnShfDwcHbu\n3FnsfV977TUAzp0790znFEIIUTInwuJ45ceTzD0UhkczW45M6MqoLo2k6Ctl8mkKrWvQoAFNmjTh\n8OHDha4/cOAAbdu2pWbNmiU6/nvvvQfAvn37ir1PXsugoaEMESCEEJp0N/ERH68LZNhKfwDWvteB\nRUPa8oKliZaTVU5S+IlyoVevXty9e5dLly7lWx4XF8f58+d55ZVXSnzstm3boqury/nz54u9z7Zt\n2wDo3bt3ic8rhBCiaFk5KpYdv4b73OMcCbnHxF6O7P9vZ7o42mg7WqUm9/iVpQsb4O/filztkJYK\nZ6qVYaBCtBkKrd8u89P26tWLRYsWcfjwYVq2bKlefvDgQRRFoVevXvz8888lOraRkRFWVlbEx8eT\nkpKCmZmZel1ISAgLFy5Uv87IyCAsLIwTJ04wcOBA3nzzzZK/KSGEEIU6c/0B3/hdIfxeCh7NbJnS\n35m61qbajlUlSOEnyoWmTZtSr149Dh06xKeffqpentfNa2tr+1zHz+uyTU1NzVf4Xb16latXrxbY\nXldXFyMjIxISErC2tn6ucwshhMh1LzmdGXtD8LtwhzrVTfh5WDs8nJ/v/+/i2UjhV5Zav/3E1rSb\nISE0a9asDAOVL7169WLFihVERETQuHFj4uPjCQgIYPLkyc997NTUVABMTfN/oxw0aBCzZs1Sv87I\nyCAmJoYtW7awYsUKAgIC2LFjB0ZGRs+dQQghqqrsHBW/nbnB3INhZGSr8O7RmI+7NcbEsPAhvITm\nyD1+otzo1asX8M/TvYcOHUKlUj33fXaJiYkkJydjZWWFubn5E7c1MjKiXr16TJw4kd69e3Pt2jX8\n/Pye6/y9mLyxAAAgAElEQVRCCFGVBd5IYMBPp5i6O5jWDlYcGN+FCb2cpOjTEin8RLnRsmVL7Ozs\n1IXfwYMHad269XN38wYGBgLQpk2bZ9ovb0zBwrqChRBCPFl8aiafb73Ia0tOE5+ayeIhbVn7Xgca\n1NTyvexVnHT1inKlZ8+erFmzhqtXr3L27FkmTpz43Mdct24dAP369Xum/fKmentaK6EQQoh/qFQK\nG8/dYvaBq6SkZ/Nhl4aMc29CNSMpOcoDuQqiXOnVqxdr1qxhypQpZGdnP9cwLoqisGLFCv7880+a\nNm1Knz59ir1vQkICW7ZsAaBHjx4lziCEEFXJ5ehEvt55hYu3HuLWwBrfgS442sqX5/JECj+hMcuX\nL2fHjh2FrhsyZEihy9u2bYuNjQ0XLlygTZs21K5du1jnWrNmTb65ehMSEjh37hzXr1/H3t6en376\nqdB5gP89nIuiKNy7d48DBw6QlJTEG2+8QevWrYuVQQghqqrEtCzmHAzlt7M3qFHNiB+9WvNqazt0\ndHS0HU38ixR+QmMiIyOJjIwsdJ27u7u6UHucrq4uHh4ebNiw4Zke6li7dq36v3V0dDAzM6NBgwb8\n97//5d133803hMvj/j2ci56eHubm5jRr1oxXX32VQYMGFTuDEEJUNYqisO38bWbuCyEhLZPhL9bn\n016OWBgbaDuaKIKOoiiKtkNUBIGBgbi6umr0HCFVfDiXqkyufdUl175qqgzX/WpMEt/4XeFcVAJt\nHazwHehCcztLbccq98rq2hdVt0iLnxBCCCGKLSUjm3mHwlh9OgoLY31mv9aS113roKsr3boVgQzn\n8v8yMzPp168fp0+f1nYUIYQQotxRFIVdF+/gPvcPVp6KxKt9XY5O6Mab7etK0VeBSIsfubM1TJgw\ngfDwcG1HEUIIIcqdiHspTNl1hVMRD3Cxt2DZu+1oXddK27FECVT5wi8iIoIJEyYgtzoKIYQQ+aVl\nZvPT0QhWnLyOiYEevq825x23euhJC1+FVeULP39/f9zc3Bg/frwM2yGEEEKQ2617MDiWabuDuf3w\nEa+1rcMXnk2paSbzlld0Vb7we+edd7QdQQghhCg3bjxIZequII6FxtG0tjlbRr9I+/rW2o4lSkmV\nL/yEEEIIAelZOSw9fo3Ff1zDQFeHr/s2Y3in+hjoyXOglYkUfkIIIUQVdyz0HlN3BXHjQRr9W9nx\ndd9m2FoYazuW0AAp/IQQQogq6vbDR0zbHcSBoFga2lRj3ftuvNS4prZjCQ2Swk8IIYSoYjKzVfz8\n53UWHokA4PNXnHj/5YYY6ku3bmVXYa9wbGwsrq6urF69utD12dnZrF69Gk9PT1q2bIm7uzuLFi0i\nKyurbIMKIYQQ5cjpiPv0mX+C2ftD6eJYk8MTuvJxt8ZS9FURFbLFLzU1FW9vb1JSUorcZtq0aWza\ntAlXV1d69OjB+fPnWbBgAaGhoSxYsKAM0wohhBDady8pnel7Q9h18Q4O1qasGtGe7k1raTuWKGMV\nrvC7ffs23t7eBAUFFbnN+fPn2bRpE71792b+/Pno6OigKAqTJ0/Gz8+PY8eO0b179wL7hYaGajK6\nEEIIUeayc1Ss+esG8w6FkZmj4hP3JnzUrRHGBnrajia0oEIVfqtXr2bBggWkp6fTsWNHzpw5U+h2\n69atA2Ds2LHo6OSOLq6jo8Onn37Kzp072bJlS6GF39OEhISUPHwxpKena/wcZeHIkSMsXLgQLy8v\n3n777SK3GzhwIDY2NqxYsUL9+t/09fUxMTHBwcGBLl260LNnT3R183dH5J3vaSZPnkzHjh0BuHjx\nIlOmTCl0OysrqyJvIdCUynLtxbOTa181ldV1D7qXzqIz94lMyKSdvQkfdaiJnUUOkRFhGj+3KJy2\nf+crVOG3du1a7O3t8fHxISoqqsjCLyAggOrVq+Po6Jhvua2tLfXr1+fcuXMlOn+zZs1KtF9xhYSE\naPwcZSHvB9rGxuap78fQ0DDfNubm5gwfPlz9Oj09nfv373Pq1CmWLFnCxYsXWbZsGYaGhgXO16FD\nBzp06FDkubp06UKjRo0A1D87Xl5e2NjY5NvO1NS0zK9DZbn24tnJta+aNH3d76dkMOv3q2wNvIOd\npTFLh7rSu7mtujFEaE9Z/c4HBgYWurxCFX4+Pj506tQJPT09oqKiCt0mMzOTmJgYWrVqVeh6e3t7\nIiMjiY+Px9paRiIvbywsLPD29i6wPCUlhU8//ZTjx48zffp0pk2bVmCbDh06FLpvYfK69T///HPM\nzMyeL7QQQpQTOSqF9f43+d/+qzzKyuGjbo3w7tEYU8MK9edeaFCFeoSnc+fO6Ok9+Z6Ehw8fArkt\nR4XJW56cnFy64YRGmZmZMWfOHGxsbNi6dSs3btx4ruOFhoZib28vRZ8QotK4eOshgxaf4hu/K7jY\nW/L7J12Y9EpTKfpEPhWq8CuO7OxsgHxdgY/LW56RkVFmmUTpsLCw4I033iAnJ4f9+/eX+Dg5OTlE\nREQUuBVACCEqoodpmXy54zIDF58iJjGdBW+3Yd37bjSuJV9sRUGV7muAsXHuFDNFjdeXmZkJgImJ\nSZllEqWnXbt2QO6T2yUVGRlJZmYmRkZGfPbZZ5w5c4akpCScnZ356KOP6NKlS2nFFUIIjVGpFLYG\nRjNr/1USH2Xx3ksN+K9HE8yNDbQdTZRjla7wMzMzQ1dXt8gx/vK6eIvqCtakXdd2sSN8R5Hr09LS\nML1hWoaJChrUZBADGg0olWP5+/sX62nbZ2FrawtAXFzcM51v0KBB1KlTB/jn/r79+/fTtm1b+vfv\nT2xsLIcPH2bUqFFMnz6d119/vVRzCyFEaQq+k8Q3O68QeCOBdvWq4zvQhWYvWGg7lqgAKl3hZ2ho\niJ2dHdHR0YWuj46OxtraGisrqzJOVvX4+/vj7+9fqsfM66ovrLB/0vk6dOigLvzS09NxcHDgjTfe\nYNSoUeptIiIi8PLywtfXl65duxZ42lcIIbQtKT2LeYfCWHM6iuqmhvzv9Za81rYOurrytK4onkpX\n+AG4urqyc+dOIiMjadCggXp5bGwsUVFRJRrDrzQMaDTgia1plW1Yh7Fjxz7xKVsnJ6dnPmZqaiqQ\nO+TKs54vz2uvvcZrr71WYHnjxo0ZPnw4ixYt4siRI7z11lvPnE8IITRBURR2XrjDd/tCuJ+SwVC3\nekzs5YSlqXTrimdT6R7ugH8GAp43bx4qlQrI/aX54YcfgNyx20TFdPv2bQDq1q2rkeM7OzsDFNli\nLIQQZS08Npm3V5zhv5suYGdpzM4xL+E70EWKPlEilbLFr1OnTnh6erJv3z68vLxwc3Pj77//JiAg\ngN69e9OtWzdtRxQlFBAQAECbNm1KfIyIiAju3bvHiy++WGAw07ynvY2MjEoeUgghSkFqRjYLjobz\ny8lIqhnp890gF95q74CedOuK51ApCz+A2bNn07hxY3bs2MGaNWuws7Nj3LhxfPDBBzJyeQWVkpLC\nzp070dfXp0+fPiU+zpQpUwgICGD79u00b94837q8kc5dXFyeK6sQQpSUoijsvxLDtD3B3E1M5812\ndZj0SlNqmMkXUvH8KmzhN3jwYAYPHlzkegMDA8aMGcOYMWPKMJXQlEePHjFp0iTi4+MZOnQoL7zw\nQomP9corrxAQEMCPP/7IkiVL0NfP/TUIDAxk8+bNODg40Llz59KKLoQQxRZ5P5Upu4I4ERZHsxcs\n+OmdNrjWk1mmROmpsIWfqJySkpLyDcmSNwXfqVOnePDgAS+//DKTJk16rnO89dZbHDhwgBMnTjBw\n4EBefvll7t69y5EjRzAwMGDu3LnqYlAIIcpCelYOi49FsPT4dYz0dZnS35l3O9ZDX69S3oovtEj+\nuolyJTk5mZ9++kn9Wl9fH0tLS5o1a0a/fv0YMGDAU6ftexoDAwNWrlzJsmXL2LNnD7/99htmZmb0\n7NmTcePG5XsSXAghNO1ISCxTdwdxK/4RA1vb8aVnM2pZGGs7lqikdBRFUbQdoiIIDAzE1dVVo+eo\nbMO5iOKTa191ybWvmkJCQjCzrce0PcEcCo6lcS0zpr3anE6Namo7mtCwsvqdL6pukRY/IYQQogxl\nZOew8VICm65Eoaujwxd9mjLypQYY6ku3rtA8KfyEEEKIMnL0aizTdgcT9SCNPi61+aafM3ZWMne8\nKDtS+AkhhBAaFnU/lWl7gjl69R4Nbaox3aM2Qz00e/uQEIWRwk8IIYTQkLTMbH46GsHPJyMx0NPh\nS8+mjOjUgGvhodqOJqooKfyEEEKIUqYoCrsv3WXG3hBiktIZ3MaeyX2aytO6Quuk8BNCCCFKUcjd\nJKbuCuJsZDzN7SxYNEQGYRblhxR+QgghRClITMvih0Oh/HrmBpYmBjK3riiXpPATQgghnkOOSmFz\nwC3+dyCUh2mZDHGrx4RejliZGmo7mhAFSOEnhBBClND5mwlM2RnE5duJdKhvzdQBzXG2s9B2LCGK\nJIWfEEII8YzuJafz/e+hbDsfja2FEfPfas2AVnbo6Ei3rijfpPATQgghiikrR8Wa01HMPxxOenYO\no7s2wrtHY6oZyZ9TUTHIT6oQQghRDH+G32fq7iAi7qXQzcmGb/s509DGTNuxhHgmUvgJIYQQTxCd\nkMb0PSHsD4rBwdqUn4e1w71ZLenWFRWSFH5CCCFEIdKzclh6/BpL/riGro4OE3s58n7nhhgb6Gk7\nmhAlJoWfEEII8RhFUTgQFMv0vcFEJzyib8sX+MqzGXZWJtqOJsRzk8JPCCGE+H8R91Lw2R3EyfD7\nONmas/4DNzo1qqntWEKUGin8hBBCVHnJ6VksOBLOqlNRmBjqMaW/M+92rIe+nq62owlRqqTwE0II\nUWWpVAo7/r7NrP1XuZ+SwZuudfnsFSdqmhlpO5qojFLvY5gYCTTTWgQp/IQQQlRJV24n8u3OK5y/\n+ZBWda34eVg7WtW10nYsURmpciBgJRzxpY5RdejoqbUoUvgJIYSoUuJTM/nfgVA2nrtJjWqGzH69\nJa+3rYOurgzPIjTgdiDs+RTuXoAGXYlu+jGNtBhHCj8hhBBVQnaOivX+N5l7MIyUjGxGdmrAf3s2\nwcLYQNvRRGX0KAGO+Oa29JnZwusroflgMq9e1WosKfyEEEJUev6R8UzZFUTI3SQ6NarB1AHNcbQ1\n13YsURkpClzcCAe/hkfx4DYaun8JxhbaTgZI4SeEEKISi0lMZ8a+EHZdvIO9lQlLhrTlFZfaMuuG\n0Ix7IbB3Atw4BXXaQ98d8EJLbafKRwo/IYQQlU5Gdg6//BnJT0cjyFYpjHNvwkddG2FiKLNuCA3I\nSIHj38OZxWBkDv0XQJt3Qbf8DQckhZ8QQohK5djVe0zbE0zk/VR6OdvyTT9n6lqbajuWqIwUBa7u\ngd8nQ1J0brHn4QPVamg7WZGk8BNCCFEp3HiQyrTdwRy5eo+GNtVY+14HujjaaDuWqKziI+H3zyH8\nINi65D684eCm7VRPJYWfEEKICi0tM5tFxyJYcSISAz0dvvRsyohODTDUL3/dbKISyM6AU/Ph5FzQ\n1YfeM6DDh6BXMUqqipFSCCGE+BdFUdhz6S4z9oVwNzGdwW3smdynKbUsjLUdTVRW147C3okQfw2a\nD8ot+izstJ3qmRRZ+Lm7u5fogDo6Ohw+fLjEgYQQQoinuRqTxNRdQZy5Hk9zOwsWvt2GdvWttR1L\nVFZJd+HAFxC0A6wbwtDt0LhkdZK2FVn4JSYmFnjcPT09naysLHR0dKhTpw6WlpakpaVx8+ZNsrOz\nqVGjBjY2cj+FEEIIzUh8lMW8Q2H8euYG5sb6fDfIhbfaO6Ans24ITcjJBv/lcGwG5GRC96+g0zgw\nqLitykUWfgEBAfleh4WF8e6779K5c2cmTZqUr8BLTk5mzpw57NmzBx8fH82lFUIIUSWpVAqbA24x\n+0AoD9MyGeJWjwm9HLEyNdR2NFFZ3TwLez+F2CvQuCd4zs5t7avgin2P36xZs7C3t2f27Nno/mtc\nGnNzc3x8fAgNDWXWrFls2LCh1IMKIYSomv6+mcCUXUFcik6kff3qTB3QgeZ2ltqOJSqr1AdweAr8\n/StY2MObv0Kz/lBJBv0uduF3/vx53nrrrQJF3+Nat27Nxo0bSyWYEEKIqi0uOYPv919la2A0thZG\nzH+rNQNa2cmsG0IzVKrcYu/wFMhIzu3S7ToJjMy0naxUFbvws7CwIDw8/InbXLhwAWtrublWCCFE\nyWXlqFhzOor5h8NJz85hdNdGjO3RGDMjGYhCaEjMZdjzKUT7g0Mn6DsXbJ21nUojiv1b5O7uzsaN\nG1m8eDEffvghenr/THuTmZnJnDlzuHjxIqNGjdJIUCGEEJXfqYj7TN0VRPi9FLo52fBtP2ca2lSu\nFhdRjqQnwR8z4exSMLGGgUuh1VuVplu3MMUu/MaNG8fZs2dZuHAha9aswcnJiWrVqpGSkkJwcDCp\nqam0bduWjz/+WJN5hRBCVELRCWl8tzeE36/E4GBtys/D2uHerJZ06wrNUBQI2g77v4SUWGg3Enp8\nA6aVv9ey2IVf9erV2bp1Kz///DN79+7F399fva5Ro0YMGjSI4cOHY2BgoJGgQgghKp/0rByWHb/O\nkuMRAEzs5cj7nRtibKD3lD2FKKH7EbBvAlz/A15oBW+thzqu2k5VZp7phglTU1PGjRvHuHHjyMjI\nIDExEUtLS4yMjDSVTwghRCWkKAoHg2Px3RNMdMIj+rZ8ga88m2FnZaLtaKKyynoEJ3+AUz+Cvgl4\nzoF274Fu1fqSUeI7ZY2MjKhVq1aB5WfOnKFjx47PFUoIIUTlFXEvBZ/dQZwMv4+TrTnrP3CjU6Oa\n2o4lKrOwg7BvIjy8AS29oKcvmNtqO5VWPFPht27dOvbs2UN8fDw5OTkoigLkfnPLzs4mOTmZ9PR0\nQkJCNBJWCCFExZWcnsXCoxGs/DMSE0M9pvR35t2O9dDXK3qYMCGey8NbsH8yXN0DNR1h+G5o0EXb\nqbSq2IXfxo0b8fX1BcDY2JiMjAwMDXNHTM/IyADA0tKSN998UwMxhRBCVFSKorDj79vM/P0q91My\neNO1Lp+94kRNM7lNSGhIThb8tQiOf5/7IIf7FHhxLOjLTC/FLvw2b96MiYkJa9eupUWLFrz99ts0\nbtwYX19foqOj8fX15dSpU/Tv31+TeYUQQlQgV24nMmVXEIE3EmhV14qfh7WjVV0rbccSlVnUqdyp\n1uKuglNf6DMLrBy0narcKHb7emRkJL1796ZFixZA7iwdZ86cAaBOnTosWLCAmjVrsnz5cs0kFUII\nUWEkpGby5Y7L9P/pT248SGX26y3Z8VEnKfqE5qTcgx2jYbUnZKXB2xvh7fVS9P1LsVv8cnJysLX9\n50bIBg0acPv2bdLS0jA1NcXIyIju3bvz559/aiSoEEKI8i9HpbD+7A3mHAwjJSObkZ0a8IlHEyxN\nZKgvoSGqHAhcBUemQWYadJ4InSeAoam2k5VLxS78bG1tuXv3rvq1g4MDiqIQFhZG69atgdzhXuLi\n4ko/pRBCiHLPPzKeKbuCCLmbRKdGNZg6oDmOtubajiUqs9vnc7t17/yd+9CG51ywcdR2qnKt2IVf\np06d2LVrl3q4lmbNmqGnp8euXbto3bo1WVlZnDp1iho1amgyrxBCiHImJjGdmb+HsPPCHewsjVk8\npC19XGrLrBtCcx49hKO+cO4XMKsFr/0CLq9V6qnWSkuxC78PP/yQAwcOMHLkSGbMmMGgQYPo168f\nGzZs4PLlyyQlJXHz5k2GDx+uybxCCCHKiYzsHFb+GcXCo+FkqxTG9WjMR90aY2JYtQbEFWVIUeDS\nJjj4NaQ9ALcPofuXYGyp7WQVRrELPzs7O7Zt28by5cupV68eAF9++SXx8fGcOHECXV1devXqhbe3\nt8bClqbMzEx8fX3Zv38/hoaGjBgxgg8++EDbsYQQokI4FnqPabuDibyfSk9nW77p64xDDbmnSmjQ\nvauwdwLc+BPs28HQbblTroln8kwDONvb2+Pj46N+bWFhwfLly0lOTsbAwABjY+NSD6gps2fP5sKF\nC6xatYqYmBg+//xz7Ozs6Nu3r7ajCSFEuXXjQSq+e4I5HHKPhjWrsXpke7o5FZzFSYhSk5kKx2fD\nXz+BoRn0nw9thoGuDPxdEiWasi01NZWwsDASExPp1q0bKpWqQhV9aWlpbN68maVLl+Li4oKLiwvv\nv/8+v/32mxR+QghRiLTMbBYfu8byk9cx0NXhiz5NGflSAwz15Y+v0BBFgat7c2feSLwFbYaChw9U\nq5jT+2WpslgTtIaQ6BDmNpurtRzPVPjdv3+f7777jkOHDpGTk4OOjg7BwcGsX7+e7du3M3PmTNq1\na6eprKXm6tWrZGZm4urqql7m6urK4sWLycnJQU9P7k8RQgjInXVj7+W7zNgbwp3EdAa1sWdyn6bY\nWlScL/uiAoqPhN8nQfgBqNUc3jsADh21narEwhLC+PrPrwmJD6F3rd5azVLswi8+Ph4vLy9u375N\n27ZtycjIIDg4GAATExPu3LnDBx98wMaNG3FyctJY4NIQFxeHpaUlRkb/TBdUs2ZNsrKyePDgAbVq\nSbeFEEKExiQzdVcQf11/gPMLFix4uw3t6ltrO5aozLIz4NQCODkHdPWh13e5D3DoVcxxILNUWay8\nvJKll5ZiYWjBD91+oE5aHa1mKnYb/YIFC7h79y5Llixh/fr1dO/eXb1uxIgRrFy5kuzsbJYsWaKR\noKXp0aNH6nmG8+S9zszM1EYkIYQoNxIfZTF1VxCeC04SEpPE9IEu7PZ+WYo+oVnXjsGSTnBsOji+\nAmP8odPYClv0hSWEMWTvEH668BMeDh74vepHz3o9tR2r+C1+R48epWfPnvkKvse5ubnRq1cvAgMD\nSy2cphgZGRUo8PJem5iYaCOSEEJonUqlsCXwFrP3h5KQlsk7bg5M6OlE9Woysb3QoKS7cPAruLIN\nrBvmPq3b2EPbqUqssFa+8lDw5Sl24ZeQkEDdunWfuI2trS3x8fHPHUrTbG1tSUpKIjMzU93SFxcX\nh6GhIZaWMhaQEKLquXDrIVN2XuFidCLt6lVnzYAOuNjL/w+FBuVkw7kVcPQ7yMmEbl/CS5+AQcW9\nfzQ0PpRvTn1DSHwIfer34Qu3L6huXF3bsfIpduFXu3Zt9T19Rbl06RK1a9d+7lCa1qxZMwwMDPj7\n779xc3MDIDAwkObNm6OvX6IHnYUQokKKS85g9v6rbAmMppa5ET96tebV1nYy64bQrFv+sOdTiL0M\njdzB839Qo5G2U5VYliqLXy7/wrJLy7AwtGBet3l41CufrZbFvsevd+/e/PXXX2zcuLHQ9atWrSIw\nMBAPD82+0djYWFxdXVm9enWh67Ozs1m9ejWenp60bNkSd3d3Fi1aRFZWlnobExMTBg4ciI+PD5cu\nXeLIkSOsXLmSYcOGaTS7EEKUF1k5Kn75M5Iec/7A78JtPuzakKMTuzGwjb0UfUJz0uJhlzf80jN3\n5o031+Z27Vbgoi80PpQhe4ew6MIiejr0xO9Vv3Jb9MEztPiNHj2a48eP4+Pjw7p161CpVABMnjyZ\noKAgIiIicHBwYPTo0RoLm5qaire3NykpKUVuM23aNDZt2oSrqys9evTg/PnzLFiwgNDQUBYsWKDe\n7osvvmDq1KkMHz6catWqMWbMGDw9PTWWXQghyovTEfeZujuIsNgUujra8G1/ZxrZmGk7lqjMVCq4\nsA4OfQvpidDJG7pOAiNzbScrsYrUyve4Yhd+ZmZmbNiwgblz57Jz507S0tIA8PPzw9DQkFdffZXP\nP/8cCwsLjQS9ffs23t7eBAUFFbnN+fPn2bRpE71792b+/Pno6OigKAqTJ0/Gz8+PY8eOqR9OMTEx\n4fvvv+f777/XSF4hhChvbj98xHd7g9l3OYa61iasGNYOj2a1pIVPaFbMFdj7Kdw6Cw4vQt+5YNtc\n26meS0W4l68oOoqiKMXZMDo6mjp1cseeycnJITIykqSkJExNTWnYsGGB4VFK0+rVq1mwYAHp6em0\nb9+eM2fO8MUXXzBixIh8202YMIE9e/awe/duHB0d1ctjY2Pp2rUrPXr0YPHixSXKEBgYiKmpZueh\nTE9Pr1AzoIjSI9e+6iqLa5+Zo2LrlUQ2X34IgFcLK15zscRQT2bd0Jaq8Duvm5VKzSsrsA7fQo6h\nOfdajSWxfl+owF80slXZ+N31Y9udbZjpmfF+/fdxs3Z7pmOU1bVPS0vLN1FFnmK3+A0bNowWLVow\nf/589PT0aNy4cakGfJK1a9eq5wmOiorizJkzhW4XEBBA9erV8xV9kPsUb/369Tl37txz5WjWrNlz\n7f80ISEhGj+HKJ/k2lddmrz2iqJwKDgW333B3Ip/RN8WL/Bl32bYW8mwVdpWqX/nFQWCdsChLyE5\nBlxHoO/+LXam1thpO9tzCI0PxfeU73O38pXVtS9qeL1iF373799/6nAumuLj40OnTp3Q09MjKiqq\n0G0yMzOJiYmhVatWha63t7cnMjKS+Ph4rK1lEFIhROV2LS4Fn93BnAiLw9HWjPXvu9GpccWc41RU\nIA+uwb6JcO0o1G4JXr9BnfI/leuTVNR7+YpS7MKvffv2nD59Ot/Yd2Wlc+fOT93m4cPcLgxz88Jv\nFM1bnpycLIWfEKLSSsnIZuGRcFaeisRYX49v+znz7ov1MJBuXaFJWY/gz3m5//SNoc//oP1/QFdP\n28meS0W+l68oxS783njjDaZPn07v3r3p3LkzderUKbKPWhvDomRnZwMUWZTmLc/IyCizTEIIUVYU\nRcHvwm1m7rvKveQM3mxXh89faUpNM6On7yzE8wg/lNvKlxAFLd6EXtPB3FbbqZ5LZWvle1yxC7//\n/ve/6v/evHlzkdvp6OhopfDLK0IfH6/vcTIlmxCisrpyO5Gpu4IIuJFAqzqWLHvXlTYOFbtVQlQA\niRR4TIQAACAASURBVNGwfzKE7IaajjB8NzToou1Uz60ytvI9rtiF38yZMzWZ47mZmZmhq6tb5Bh/\nycnJQNFdwUIIUdEkpGYy52AoG/xvUt3UkO9fa8EbrnXR1a24T02KCiAnC84sgT9mgaIC92/hRW/Q\nr9hzOlfmVr7HFbvwGzRokCZzPDdDQ0Ps7OyIjo4udH10dDTW1tZYWVmVcTIhhChdOSqF9f43mXsw\nlOT0bIa9WJ/xPR2xNDHQdjRR2d04nTvVWlwIOHnCK7Ogej1tp3pulb2V73GVamJaV1dXdu7cSWRk\nJA0aNFAvj42NJSoqSj14sxBCVFTnouKZsjOI4LtJdGxojc8AF5xqS0+G0LCUuNxZNy6uB0sHeGsD\nNK34s11VlVa+x1Wqwm/gwIHs3LmTefPm8eOPP6Krq4uiKPzwww8AeHl5aTmhEEKUTGxSOjP3heB3\n4Q4vWBrz0ztt6NviBZl1Q2iWKgcCV8MRH8hMg5c/hS6fgaFmJzQoC1Wple9xlarw69SpE56enuzb\n93/s3Xdc1XX7x/EXGxnKEhREcIDgwAFuyIWaVubMdVuWpXabNuwuy7q7tbzt1nJ3/5w5cuQoNVfu\ncpviQJkqIIICyt7nHM7398dJbk0tVODLuJ6PR4/0fI/yLjiHi+v7+Xyu3QwdOpT27dtz/vx5zp49\nS+/evenatavaEYUQ4rFodHq+PR7LwoNX0BYpvNWtMX/v1ggr8yr19i0qopvnYddkSAwBzyDDqLXa\nTdRO9dSqY5fvXlXunWPWrFk0btyYrVu3snr1alxdXZk0aRJvvPGG/GQshKhUfolKYfqOcGLu5BLs\n68ynzzfFw9Fa7ViiqsvPgMMz4MxysHKCgcuhxeBKPWrtrvu6fA368FG76tHlu1elK/wGDhzIwIED\nH3ndzMyMCRMmMGHChHJMJYQQpSc+NY/pO8M5EJFMAydrVr7alm5NnNWOJao6RYFLm2HvVMi7A23f\ngO5TwbKW2smemlavZfml5Sy9uJSaFjWZ13UePTx6qB1LFU9c+OXk5FBQUICdnR2mppWufhRCiAon\nX1PEf3+5ypIjMZgaG/Hhsz68FuiJhWnlnn4gKoHbUYbbunFHwc0fRm4G11ZqpyoVUWlRfHL8EyLT\nIunToA8ft/sYO8vqe8LHY1VsOp2OZcuWsWXLFm7evFn8eP369RkwYACvv/66FIFCCPGYFEVh96Uk\nZuwK52ZmAS+2cuWjPr7UqfXw6UhClBpNLhyZDScWgbk1PD8X2owG48o/4k+6fA9X4ipNo9EwZswY\nzp49i4WFBT4+Pjg7O5OZmUlkZCTz58/n+PHjrFq1ChMT+elUCCFK4nq6hs+Xn+bEtVR869Zk3rDW\ntGsg88RFOYjcBXs+hMwb0GokBE8Dm9pqpyoV0uV7tBIXfitXruTMmTO88MILfPTRRzg4/O+NKScn\nhxkzZrBt2za+++47Ro8eXRZZhRCiykjL1bDw0BVWn0jA1tKMz19sxoj2HpjI1A1R1tLjYM8UiN4D\nzk3h1T3g0UntVKVCunx/rcSF308//YS3tzf/+c9/MP5DC9jGxoYvvviCsLAwtm7dKoWfEEI8QnaB\nlhXHYll+NJZcjY4+XrZ8MbQDDtaVe9yVqAR0hXBiIRz5CoyModcX0H48mFSNiS/S5SuZEhd+N27c\nYPjw4Q8UfXeZmJjQoUMHNm/eXGrhhBCiqijQFrH21HW+OXyV9DwtfZrX4b2e3ujSEqToE2Uv5hfY\n9T6kXoGmL0LvmVDLTe1UpUK6fI+nxIVfjRo1uHPnzp8+JzU1FXNzeQMTQoi7tEV6Np9NYMHBKyRl\nFfCMd23e7+WNXz1DJyIiTeWAomrLTjIcz3J5C9g3gJE/gFfVOaz43i5f3wZ9+ajdR9Ll+wslLvz8\n/f05cOAAkZGR+Pj4PHA9PDyc/fv307lz51INKIQQlZFer7Aj9CZz9kdzPTUPfw975g1rRYeGjmpH\nE9VBkc5wAPPhGYZbvF2mQOC7YFY1dopr9VqWhy5naehSalnUYl63efSoL12+kihx4Td+/HiOHDnC\nqFGjeOWVV/D398fW1pbk5GRCQkLYsGEDer2eN998syzzCiFEhaYoCgcjUvhqXxSRSdn41q3Jt6MD\n6NbEWaYHifKRcBZ2vgtJodCoB/SdDY6N1E5VaqTL93RKXPj5+fkxb948Pv74YxYtWnTfG5iiKNja\n2jJr1iz8/PzKJKgQQlR0J67dYfbeKM7HZ9DAyZqFw1vzXIu6GMtOXVEe8tLg4DQIWQ22dWHIasN6\nviryA4d0+UrHY522HBwcTIcOHTh48CCRkZHk5ORgbW2Nj48PwcHB2NjYlFVOIYSosC7cyOCrvVEc\nu3qHurUs+XJgCwb718PUpPIfgisqAb0eLq6H/f80zNntOAG6TgELW7WTlRrp8pWeEhd+27Ztw8fH\nBx8fH1588UVefPHFB54TEhLCqVOnZE6uEKJaiErK5ut9UewLT8bB2pxPn2/KyPb1sTSTQ+xFOUm6\nbBi1duMUuHeA5+eASzO1U5Ua6fKVvhIXflOmTGHixIkP3dhx1/79+9mwYYMUfkKIKi0+NY+5B6LZ\ndiERG3NTJvf05tXABthYyMhKUU4Ks+GXL+HU/0ENO3jxv9ByeJUYtXaXdPnKxiPfpX788UcOHTp0\n32O7du0iIiLioc/XarWcPn0aOzv5pAghqqbkrAIWHrrC97/dwNTEiLHPNOTNLo2ws5JjrEQ5URQI\n3w4/fwTZN8F/NPT4DKyqzpg/6fKVrUcWfkFBQXzxxRfk5eUBYGRkRExMDDExMY/8y8zNzZk0aVLp\npxRCCBWl52pY/Os1Vp2Io0ivMLxdfd7q3hiXmlXjaAxRSaReg93/gGsHoU4LeGkNuLdVO1Wpki5f\n2Xtk4Ve7dm0OHDhAfn4+iqIQHBzMK6+8wssvv/zAc42MjDA1NcXe3h4zs6ox+kUIIXIKdaw4Gsvy\nozHkaHQMaO3GOz28qe9opXY0UZ1oC+DYXMM/phbQZxYEjAGTqrO0QFv0+/QN6fKVuT/9qnFw+F/r\neObMmfj6+uLmVjVGvAghxKPcHa/231+ukZar4dlmdXivlzfeLlVnl6SoJK4cgN3vQ3ostBhimK9r\nW0ftVKUqMi2ST459QlR6lHT5ykGJf1wYMGBAWeYQQgjVaYv0bAlJYP4Bw3i1IC8n3u/VhJbu8k1I\nlLPMRNj7kWE9n6MXvLwdGnZVO1Wpki6fOqpOn1gIIZ7Q3fFqc/dHE5eaR5v6dswd2oqOjWS8mihn\nRVo4vRgOzwSlCLp/Cp0mGm7xViHS5VOPFH5CiGrrj+PVfOrYsuKVALr7yHg1oYLrJ2HXe5ASDt7P\nQp//gL2n2qlKlXT51CeFnxCiWjp5LZXZeyM5F5+Bp6MVC4a35nkZrybUkHvHMHXjwjqo5Q7DNoBP\nX7VTlTrp8lUMUvgJIaqVizcy+GpfFEev3KFOTUtm/j5ezUzGq4nyptfDudVw4F+gyYHAd+GZf4C5\ntdrJSpV0+SoWKfyEENVCdLJhvNreMMN4tU+e8+VvHTxkvJpQhWVaJKyYAIkh4BkEfb8C50dPxqqs\n7u3yPdfwOaa0nSJdPpU9VuGXlZXFzp07GTFiBACZmZlMmzaNs2fP4ubmxqRJk+jYsWOZBBVCiCcR\nn5rHvAPRbP19vNp7Pb15TcarCbWkX4df/4PnxQ1g5QQDlxmOaalia0q1RVqWXVrGstBl1LKoxfxu\n8+lev7vasQSPUfjFx8czbNgw0tPT6dGjBy4uLvzzn/9k7969WFlZERoayhtvvMHatWtp1apVWWYW\nQoi/lJJVwILfx6uZGBsxNqgh47s0wt5axqsJFWQnwZGvIGQVGBmT5jUUxwFfGubsVjF/7PJ91O4j\nalnUUjuW+F2JC79FixaRmZnJP/7xD+zs7Lhz5w779+/Hy8uLzZs3c/v2bYYMGcLixYtZvHhxWWYW\nQohHSs/VsPjINVafiENXpDCsnTsTu3vJeDWhjrw0OD4PTi8FvRZaj4Jn/kHKzSwcq1jRJ12+yqHE\nhd/Jkyfp1asXr732GgA//fQTer2e/v37Y2lpibu7O7179+bnn38us7BCCPEoOYU6vj0Wy7Ijv49X\na+XGO8EyXk2opDAbTv4XTi4y/NrvJeg6BRwaGq7fzFI3XymTLl/lUeLCLzMzk/r16xf//ujRoxgZ\nGREYGFj8mI2NDRqNpnQTCiHEn/jjeLXezVyY3KuJjFcT6tDmw5nlhrm6eang8zx0mwouTdVOViak\ny1f5lLjwq1OnDjdu3ABAo9Fw4sQJateuTZMmTYqfc+HCBerWrVv6KYUQ4g90d8erHbzCrUzDeLXJ\nvZrQSsarCTXoNHD+OzgyG7JvQaPu0P0TcPNXO1mZkS5f5VTiwi8gIICffvqJRYsWERUVRW5uLoMG\nDQLgxo0brFy5knPnzvHGG2+UWVghhNDrFXZeusXc/dHE3smldX07vn6pJZ0aOakdTVRH+iK4tBkO\n/xsyroN7Bxi0HDwD//rPVlLS5avcSlz4TZ48mYiICBYtWgSAu7s748ePB2DNmjWsX7+e1q1bS+En\nhCgTiqJwKDKF2Xv/N15t+csB9PCV8WpCBYoCETvg8Ay4HQl1/GDkFmgcXOWOZrnXvV2+5xs+z5R2\nU6TLV8mUuPBzdHRk48aNnDhxAr1eT6dOnbC0NOyS6927N23atCE4OBgzM7MyCyuEqJ7uHa/m4WjF\n/GGteMHPVcarifKnKHDtIBz8HG5dACdvGLIafPuBcdWd/nJvl8/O0o4F3RbQrX43tWOJJ/BYJ5ia\nm5vTtWvXBx4PCAgorTxCCFEsNCGD2Xv/N17t3wNaMCRAxqsJlVw/YSj44k+AXX3o/3/Q4iUwqdqH\ngUuXr2p55FfrmTNnnvgvbdu27RP/WSGEuJKczdf7ovk5LAl7KzMZrybUdfM8HPoCrh4AGxfDeLU2\nr4Bp1T4MXFukZemlpSwPXS5dvirkkYXfqFGjnnjdTERExBMHEkJUXzfS8ph7IJpt5xOxMjfl3WBv\nXgv0xNZSlpAIFaREGtbwRfwENeyh53Ro+waYV/2zIaXLV3U9VuG3e/duUlNTCQwMpHXr1tSqVYu8\nvDwuXbrEoUOHcHNzK57jK4QQJZWSVcDCQ1f5/kw8xkZGvCHj1YSa0uPgly8hdCOYWUOXKdDx72BZ\n9Qsf6fJVfY8s/KZOnXrf7zdu3Eh6ejqLFy+mS5cuDzz/7NmzvPrqq+h0utJPKYSokjLyNCz+NYZV\nJ2LRFSkMbevOpB4yXk2oJOuW4Ry+c2vA2AQ6ToDO74K1o9rJyoV0+aqHEq9I/fbbb+nZs+dDiz4w\nbPDo3bs369atY8yYMaUWUAhR9eT+Pl5t6e/j1fq3cuOdYC88HK3Vjiaqo9xUOD4XflsGep1h/d4z\n/4Ca1WMggXT5qpcSF37JyckEBQX96XNsbW1JT09/6lBCiKqpQFvE+tPxfHP4Kqm5Gno1NYxXa1JH\nxqsJFRRkwclvDP9oc8FvKHT5EBwaqJ2s3EiXr/opceHn4eHB4cOHeeedd7CxsXng+p07d9i/fz/e\n3t6lGlAIUfnpivT8cC6B+QeucDOzgMDGTkzu5U3r+vZqRxPVkSYPziwzzNPNTzecwddtKjj7qJ2s\n3EiXr/oqceE3atQoPvnkE15++WXefPNNmjVrhrW1NdnZ2Zw7d47//ve/pKamMm3atLLMK4SoRPR6\nhV2XbjHn9/Fqrdzt+GpISzo1lvFqQgU6DZxbDUe+gpwkw5SN7p+Aa2u1k5WriNQIPjn+CdHp0dLl\nq4ZKXPgNHjyYhIQEli9fzqRJkx64bm5uzieffEKPHj1KNaAQovJRFIXDUSnM3htNxK0smrjYsuzl\nAIJlvJpQg77IsEP3l5mQEQ/1O8GQleDRSe1k5Uq6fAIec3LHO++8w4ABA9izZw9RUVFkZWVRs2ZN\nmjVrRt++fXF1dS2rnEKISuJUTCqz90YRcj29eLza836umMh4NVHe9HrDGXyHZ8CdaKjbCp6fC416\nVOl5ug8jXT5x12PPmfHw8GD8+PFlkUUIUYldSshk9r4ojkTfxqWmBTMGNOelAHcZrybKn6IYpmwc\nnA5JoVDbB176DnxfqHYFn3T5xB89duEXGxtLYmIiGo0GRVEe+hy53StE9XE1xTBebc9lw3i1qX19\nGdVRxqsJlcQdM8zTvXEK7D1hwBJoMcRwLl81I10+8TAlLvzS09OZMGEC58+ff+RzFEXByMhIRrYJ\nUQ3cSMtj3oErbD2fgJW5Ke8EezEmsIGMVxPqSAwxzNO9dghs68Jzc6D1qCo/T/dhpMsn/kyJC785\nc+Zw7tw5vLy86NixI7a2trJIW4hqKCWrgEWHr7LhN8N4tdd/H6/mIOPVhBpSIgwFX+ROqOEAvWZA\n2zFgVkPtZKq4t8v3QsMX+LDdh9LlE/cpceF38OBBmjZtyubNmzExqX4tcyGqu4w8DUuOxLDyuGG8\n2ktt3ZnU3Ys6tWS8mlBBWszv83Q3gYWt4Ry+Dm8afl0N/bHLt7D7Qrq6d1U7lqiASlz45ebm0rlz\nZyn6hKhmcgt1rDwey5IjMeQU6nixpSvvBHvj6STj1YQKMhMN83TPfwfGZtD5bcM/Vg5qJ1ONdPnE\n4yhx4eft7U1MTExZZlGVRqNh4MCBfPzxx3TqVL3OdhLiYf44Xq1nUxcm9/LGp05NtaOJ6ij3Dhyd\nA2eWg6KHgNcgaDLY1lE7mWq0RVqWhC5hxaUV0uUTJVbiwu/NN99k4sSJ7Nu3j169epVlpnJXWFjI\n5MmTuXLlitpRhFCdrkjPj+cSmXcgmpuZBXRq5Mj7vZvQRsarCTXkZ8DJRXDq/0CbBy1HQJcPwN5D\n7WSqCk8N55Pjn3Al/Yp0+cRjKXHhFx4eTpMmTXj77bdxd3fH09MTc/MHF3MbGRmxcOHCUg1Zlq5e\nvcrkyZMfeTSNENWFXq+w+/It5uyLJuZOLi3d7Zg9pCWdZbyaUIMmF04vgePzoSADmg2Arh9D7eo9\nD/5ul2/5peXYW9pLl088thIXfosWLSr+dXx8PPHx8Q99XmXb6fvbb7/Rvn173n33XVq1aqV2HCHK\nnaIo/BJ1m9l7owi/lYW3iw1LR/nTs6lLpXs9iypAVwghqwzzdHNTwKs3dJ8KdVuqnUx10uUTpeGx\ndvVWRSNGjFA7ghCqOf37eLWz19Op72DFvKGteKGljFcTKijSwcUN8Ot/IPMGeATC0LVQv73ayVQn\nXT5Rmkpc+Lm5uZVljjJRWFhIUlLSQ685OjpiY2NTzomEqBjuHa/mbGvBF/2bM7StjFcTKtDrIXwr\nHP43pF4F1zbQbwE07Fbtxqs9jHT5RGl77JFtCQkJbNu2jaioKPLz87Gzs8PLy4u+ffvi7u5eFhmf\n2KVLlxg5cuRDr82cOZOBAweWcyIh1HU1JZs5+6PZfSkJOyszPu7rw8sdPWW8mih/igLRew2HLydf\nAuemMHQd+DwnBR/3d/kcLB2kyydKzWMVfhs2bGDGjBnodLoHri1atIipU6cybNiwUgv3tAICAoiK\nilI7hhCqu5GWx/yDV/jxXAI1zEx4u4cXrwfJeDWhktgjhnm6Cb+BfQMYuByaD6yW83Qf5t4uX79G\n/fig7QfS5ROlpsSF34kTJ5g+fTpOTk6MHz8ef39/nJ2dycrK4syZM3zzzTd8/vnnNGrUiLZt25Zl\nZiFECaVkF/DNoaus/y0eIyMjxgQ2YHyXRjjaWKgdTVRHCSFwaDrE/AK2rvDCfGg1EkzkBxCQLp8o\nHyUu/JYvX46trS0bNmygXr16xY87ODjg6elJhw4dGDRoECtWrCiVwi85OZm+ffsyceJERo8e/cB1\nnU7H2rVr2bRpEwkJCdSuXZuBAwcyduxYzMzkTURUb5l5WpYcucbK43FoivS8FODOpB6NqVures4v\nFSpLDoNDMyBqF1g5Qe+ZhgOYzWTc313S5RPlpcSFX2hoKD179ryv6LuXu7s7PXr04PDhw08dKjc3\nl4kTJ5KTk/PI50yfPp2NGzfi7+9P9+7dOXfuHAsWLCAqKooFCxY8dQYhKqPcQh2rTsSx+Ndr5BTq\n6NfSlXdlvJpQS+o1w6aNyz+ARU3o/gm0fxMsZGPdXdoiLYtDF7Pi0grp8olyUeLCT6vVYmVl9afP\nsbKyoqCg4KkCJSYmMnHiRMLCwh75nHPnzrFx40Z69+7N/PnzMTIyQlEUpkyZwrZt2zh8+DDdunV7\n7I8t6wFFZVWo+994tTs5GoJ9DePVfOvKeDWhgswEw7Es59eBqQUEvgudJlbreboPI10+oYYSF34N\nGzbk6NGjFBQUYGn5YHs+Pz+fI0eO0KBBgycOs2rVKhYsWEBBQQEdOnTg1KlTD33eunXrAHjrrbeK\nD5g1MjLivffeY/v27WzevPmJCr+/EhERUep/570KCgrK/GOIiulJP/dFeoUD17JZfzGDlFwdfnUs\n+TjIFV9nS8hIJCIjsQzSitJUlV73JgVpOIWvxu7ajwBkNB7EHd9XKKrhCNeTgWR1A1YQGr2GTfGb\n2PnbTmqZ1eIDrw8IsA/gZsxNbnJT7XiijKn9mi9x4TdkyBCmT5/OpEmT+Oyzz+471+/q1avMmDGD\nhIQEPvnkkycOs2bNGtzc3Jg2bRpxcXGPLPzOnj2Lvb093t73j+5xcXHB09OTM2fOPHGGP+Pr61sm\nf+9dERERZf4xRMX0uJ97vV5hz+Ukvt4fRcztXFrWq8WcYT50buwo0zYqmSrxus9PhxML4dRi0BVA\nqxHQ5UMc7NyRHt//5Gnz2BS1iVVhq0gtSJUuXzVVXq/5kJCQhz5e4sJv+PDhnD59mr179xIcHIyL\niwu2trYkJyeTnZ2Noij06tXrkefmlcS0adPo1KkTJiYmxMXFPfQ5Go2GpKQkWrZ8+PgeNzc3YmNj\nSUtLw8FB3nJE1aIoCr9E3+arvVGE3TSMV1syyp9eMl5NqKEwB04vhhMLoCATmg8yzNN1aqx2sgol\nR5PDhsgNrAlfQ0ZhBu3rtmdirYkMaj9I7WiiGipx4WdkZMS8efPYvn07W7duJTIykjt37mBtbU27\ndu0YMGAA/fv3f6owQUFBf/mcjIwMAGxtbR96/e7j2dnZUviJKuW32DRm743kTFw67g41mDu0Jf1a\nusl4NVH+tAUQshKOfg25t8G7j2Gebp0WaierUDILM1kXsY61EWvJ1mQT6BbIOL9xtHJuVWVu74vK\n57EOcDYyMqJ///4PFHiFhYVYWJTPuWB3D482Nzd/6PW7jxcWFpZLHiHK2uXETGbvjeLX38erfd6/\nOUMD3DE3lfFqopwV6eDCOvh1FmQlQINnoPsGcJezW++VVpDGd+HfsSFyA7naXLq5d2Oc3ziaOTVT\nO5oQj1f4RUdHM2/ePLp168aQIUOKHw8KCqJNmzZ8+umnZT7T9+7GEq1W+9DrGo0GgBo15LwyUbld\nTclh7v5odl26hZ2VGR/1MYxXq2Eu0w1EOdPrIexHw9EsadfALQD6fwMNu6qdrEK5k3+HVZdXsSl6\nEwW6Anp69GSs31iaODRRO5oQxUpc+EVFRTF8+HDy8/Np06ZN8eMFBQU0a9aMY8eOMWjQIDZs2PBU\nO3v/io2NDcbGxo884y87Oxt49K1gISq6hPQ85h+4wg+/j1eb9Pt4tZoyXk2UN0WBqD1weAYkXwbn\nZjD8e/B+Vubp3iMpN4mVl1fyw5Uf0Oq19GnQh7EtxtLQrqHa0YR4QIkLv/nz56MoCuvXr6d169bF\nj1taWrJy5UrOnz/P6NGjmTt3bpkeoGxubo6rqysJCQkPvZ6QkICDgwN2dnZllkGIsnA7u5BvDl9l\n3enrGBkZ8VrnBrzZVcarCZXE/GKYp5t4FhwawaAV0GwgGMsSg7sScxJZcWkF265uQ1EUXmj0AmNa\njMGjpofa0YR4pMea3PH888/fV/Tdq3Xr1vTt25eDBw+WWrhH8ff3Z/v27cTGxt7XXUxOTiYuLq5M\nzvAToqxk5mlZdS6Nn9Zf/328Wj0mdvfC1U6WKwgV3PgNDk6HuKNQsx70WwgtR4DJY60MqtKuZ11n\n+aXl7Ly2EyMjIwY0HsBrLV7DzaZslzoJURpK/ErOy8v7yxm41tbW5bKpon///mzfvp25c+cyb948\njI2NURSFOXPmADB06NAyzyDE09IW6Vl36jpzD1whM19rGK/W05sGMl5NqCHpEhz6AqJ/Buva8Ox/\nwH+0zNO9x7WMaywNXcrPcT9jZmzGUJ+hjG42mjrWddSOJkSJlbjwa9y4Mb/++iu5ublYWz/4jamw\nsJCjR4/SsGHZr2no1KkTffv2Zffu3QwdOpT27dtz/vx5zp49S+/evenatWuZZxDiaRyJvs3nO8O5\nkpJD58aOjPC15LnOrdSOJaqjO1cMmzbCfgTLWtDjn9BunMzTvUdUWhRLQpdw4PoBLE0tebnpy7zS\n7BWcajipHU2Ix1biwm/o0KFMnTqV8ePH8/7779O8eXNMTEzQ6/WEhYUxb9484uPj+eyzz8oyb7FZ\ns2bRuHFjtm7dyurVq3F1dWXSpEm88cYbcpCtqLBi7+QyY1c4ByJS8HC0Yukof3o2dSEyMlLtaKK6\nyYg3zNO9sB5Ma0DQ+4Z5ujVkffRdYXfCWBy6mF9u/IK1mTWvt3idUU1HYW9pr3Y0IZ5YiQu/QYMG\ncfHiRTZt2sSwYcMwMTHBwsKCwsJCioqKUBSFQYMGMWzYsFIJNnDgQAYOHPjI62ZmZkyYMIEJEyaU\nyscToixlF2hZdOgq3x6PxdzEmCl9fHi1sycWpnI0iyhn2cmGg5dDVhp+3348BL4HNrXVzVWBXEi5\nwOLQxRxPPI6tuS1/b/l3RviOkNFqokp4rNW606dPp0+fPuzatYuoqCiysrKwsrLC29ubfv360blz\n57LKKUSlVKRX2BJyg9l7o0jN1TDEvx7v926Cs62smxLlLC/NMFrt9BLQFULrv0GXD6BWPbWT6eFU\nfwAAIABJREFUVQiKonA2+SxLLi7hdNJp7C3sebvN2wxrMgwbc7ntLaqOx96m1bFjRzp27FgWWYSo\nUn6LTWPajjDCbmbh72HPt6Pb4ldPbqOJclaYDad+n6dbmA0tBkPXj8CxkdrJKgRFUTh58yRLQpdw\nLuUcjpaOvB/wPkO8h2BlZqV2PCFK3WMXfjqdjuPHjxMZGUlmZiYffPABUVFRWFtbU6+e/OQoRGJG\nPjN3R7Az9BZ1a1myYHhrXvCrK2tPRfnSFsDZFYbbunmp0OQ5wzxdFxkbBoaC70jCEZaGLiX0TijO\nVs5MaTeFQV6DsDSVjryouh6r8Dt9+jQffvghycnJKIqCkZERH3zwAXv27GHZsmW89957jBkzpqyy\nClGh5Wl0LP41hiW/XsPICN7u4cX4Lo1kxJooX0VaOL/WME83+6ZhrFr3T6FegNrJKgS9oudQ/CGW\nhi4lIi0CNxs3Pu3wKf0b98fc5OEz4IWoSkpc+EVERDB27FgsLS0ZN24cMTEx7N+/H4BWrVrh5OTE\nV199RYMGDejevXuZBRaiolEUhZ8u3uTLPZHcyizghZauTOnjg5scwCzKk74ILv9gOJolPRbqtYOB\nS6DBM2onqxCK9EXsu76PpaFLuZpxFY+aHnze+XOea/gcZsYyDlFUHyUu/BYsWICFhQU//vgjbm5u\nLFq0qLjw69q1K5s3b6Zfv36sXLlSCj9RbYQmZDBtRzgh19Np7laTBcNb09bTQe1YojpRFIjcCYdm\nwO0IcGkBIzaBVy+Zpwvo9Dp2x+5mWegy4rLiaFirIV8GfUlvz96YGss0ElH9lPirPiQkhGeffRY3\nt4ePpHF2dqZPnz7s2bOn1MIJUVGlZBUwa28UW0IScLIxZ9YgPwb518PEWL7RinKiKHDtkGHaxs1z\n4NgYBq+Epv1lni6gLdLy07WfWH5pOQk5CTSxb8LXXb4m2CMYYyP5/yOqrxIXfoWFhVhZ/fkOJxMT\nk3IZ2SaEWgp1RXx7LI5Fh66gKdIz7pmGvNW9MbaWcqtIlKP4U3Dwc7h+DGrVhxe/Ab9hMk8XKCwq\nZOuVray4vIKk3CSaOTbjg7Yf0NW9q2ywEoLHKPwaNWrE8ePH0ev1GD/kp0mtVsuxY8do0KBBqQYU\noiJQFIV94cn8e3cE11PzCPZ1YepzvjJXV5SvWxcNHb4r+8DaGfrMBv9XwNRC7WSqy9flszlqM6vC\nVnE7/zatarfis46f0dm1sxR8QtyjxIXfkCFDmDZtGlOmTOGjjz6671pqairTp0/n+vXrTJ06tdRD\nCqGmqKRspu8M4/jVVLycbfhuTDuCvGTKgShHt6Ph8AwI3waWdhD8L2g3FszlB49cbS7fR37PmvA1\npBWk0bZOW2YGzaRdnXZS8AnxECUu/IYPH8758+f56aef2LFjBxYWhp8wu3fvTlJSEnq9nuDgYEaO\nHFlmYYUoT+m5Gubsj2bd6evYWpoxrV8zRravj6mJrA8S5ST9umGe7sUNYGYFz3wAnd4CSxkdlqXJ\nYn3EetZGrCWzMJNOrp0Y5zeONi5t1I4mRIX2WAtCZs2aRbdu3diyZQvh4eHodDpycnLw9/dnwIAB\nfzpbV4jKQlukZ+2p68w7cIWcQh2jOnjwTrA39tZyxpcoJ9lJcOQrCFkFRsbQ4e8Q+C5YO6mdTHUZ\nBRl8F/Ed6yPWk6PNoUu9LozzG0eL2i3UjiZEpfDYK4H79OlDnz59yiKLEKo7En2b6TvDuZqSQ2Bj\nJz59vilN6tiqHUtUF3lpcHwenF4Kei20eRme+QfUdFU7mepS81NZHb6ajZEbydPlEVw/mLF+Y/F1\n9FU7mhCVylNtASssLCQpKQknJyesrWWtiai8Yu/kMmNXOAciUvBwtGLZywEE+zrLGiFRPgqy4NT/\nwclFhnm6fkOh64fg0FDtZKpLyUth5eWVbIneQmFRIc96Pssbfm/gZe+ldjQhKqW/LPwOHTrE/v37\neeWVV/Dx8QEMOxznzJnD2rVrKSgowNjYmJ49e/LZZ59hb29f5qGFKC1ZBVoWHbrKyuOxWJia8FEf\nH0Z39sTCVMasiXKgzcchch38tA7y08D3Beg2FZyli3Ur5xYrLq9g65WtFClFPNfwOV5v8ToNasnJ\nEUI8jT8t/P75z3+yefNmwDCd427hN3fuXJYtW4aRkRGdOnXCyMiIffv2cfXqVX788UfMzWUtlKjY\nivQKm8/e4Kt9UaTmahjiX4/3ezfB2VaGs4tycDsaLq6HC+txyUmGRj2g+yfgJhsTbmTfYMWlFWy/\nth2AFxu9yJgWY3C3dVc5mRBVwyMLv0OHDrFp0yaaNm3K5MmTCQgwDPhOTk7m22+/xcjIiM8//5zB\ngwcDcPDgQSZMmMCaNWt4/fXXyye9EE/gt9g0pu0II+xmFgEe9qwc3Y4W9WSXpChjeWmGWboXN0Bi\nCBiZQONgrtd7EY8uchpCbGYsyy8tZ1fMLkyMTBjsNZjXmr9GXZu6akcTokp5ZOG3ZcsW7OzsWLNm\nDTY2NsWP//zzz+h0Ojw8PIqLPoAePXrQpk0bfv75Zyn8RIWUkJ7HzD2R7Aq9Rd1aliwY3poX/OrK\nOj5Rdoq0cPWgobsXtQeKNODSHHrNAL+XwMaZvIgItVOq6kr6FZaFLuPnuJ+xMLFghO8IRjcbjbOV\ns9rRhKiSHln4hYaG0rVr1/uKPoATJ05gZGRE9+7dH/gzLVu2ZMuWLaWfUoinkKfRsfjXGJb8eg0j\nI3gn2ItxzzSihrms4xNlJOkSXNgAlzZB7m2wcoK2r0PL4VDXT+10FUJEagRLQ5dyIP4AVqZWvNr8\nVV5u+jKONRzVjiZElfbIwi8zMxMXF5f7HtPr9YSEhADQsWPHB/8yU1O0Wm0pRxTiySiKwk8XbzJz\ndyRJWQX0a+nKlD4+uNrVUDuaqIpybhsKvQsbIPkSGJtBk2eh5Qjw6gkmMs8ZIPR2KEtDl/Jrwq/Y\nmtkyzm8cf/P9G3aWdmpHE6JaeGThZ2trS3p6+n2PhYaGkpOTg5mZGW3btn3gz8TFxcmuXlEhXLyR\nwfSd4YRcT6e5W00WjmhNW08HtWOJqkZXCNE/w4X1cGU/KEXg2gb6fgXNB4GVfM3dFZIcwpKLSzh5\n6yS1LGrxVqu3GO47nJrmNdWOJkS18sjCr0WLFpw4cQK9Xo+xsWFE1c6dOwFDt69Gjfu7Jrdv3+bY\nsWMEBQWVYVwh/lxKVgGz9kaxJSQBJxsLZg3yY7B/PYyNZR2fKCWKAonnDOv2Lm2BggywrQudJhpu\n5Tr7qJ2wwlAUhdNJp1lycQlnk8/iYOnAu/7vMrTJUKzN5OxXIdTwyMLvpZdeYsKECbz33nuMHDmS\n6OhoNm7ciJGR0QPzeNPS0njnnXcoKCigX79+ZR5aiD8q0Bbx7fFYvjl0FU2RnnFdGvJWt8bYWsrt\nNVFKsm7Cxe8Nu3LvRIOpJfg8D62GQ8NuYCxrRu9SFIVjicdYErqEi7cvUrtGbT5o+wGDvQdTw1SW\nWgihpkcWfj169GDkyJGsW7eOvXv3AoYX84gRI+jSpUvx88aPH8/JkycpLCzk2WefJTg4uOxTC/E7\nRVHYF57MjF0RxKfl0bOpC1P7+uLpJN0EUQo0eRC5Cy6sg5hfAAXqd4QXFkCz/mApxwDdS1EUDt84\nzNLQpYSlhlHHug5T209lgNcALEws1I4nhOAvDnD+9NNP6d27N4cPH0an09G5c2e6du1633NiYmKw\ntrZm7NixjB8/viyzCnGfyKQspu8I58S1VLxdbFg7pj2BXjLEXjwlRYH4k4Z1e2HbQJMNdvWhywfQ\ncpiMUXsIvaJn//X9LA1dSnR6NPVs6vGvjv+iX6N+mMmmFiEqlL8c2dauXTvatWv3yOs//vjjA0e+\nCFGW0nI1zN0fzbrT17G1NGP6i80Y0a4+pibGakcTlVl63P9u5abHgbkNNH0RWo2A+p3AWL6+/kin\n1/Fz3M8sC11GTGYMnjU9mRE4g74N+mJq/FSj4IUQZeSpX5lS9Inyoi3Ss/bUdebujyZXU8SoDh68\nE+yNvbWMCBRPqDDb0NW7uAGuHweMoMEz0PUjw9xcc1ky8DBavZad13ay/NJy4rPjaWzXmNnPzKan\nR09MZK2jEBWa/EgmKoVfo2/z+c5wrqbkEOTlxKfPN8XbxVbtWKIy0hdB7BFDsRexA7R54NgYun8K\nfkPBTmbCPoqmSMO2q9v49vK3JOYk4uvgy7yu8+hWvxvGRtIRFaIykMJPVGgxt3OYsSuCg5EpeDpa\nsezlAIJ9nWXMmnh8d64Y1u2FboSsRLCoZSj0Wo2EegEgX1OPVKAr4IcrP/Dt5W9JyUvBz8mPj9t/\nTJBbkLwWhahkpPATFVJWgZaFB6+w6kQcFqYmfNTHh9GdPbEwldtI4jHkp8PlHw0FX+JZMDKGxsHQ\n6wto0hfMLNVOWKHlafPYFLWJVWGrSC1IpY1zGz7v/Dkd63aUgk+ISkoKP1GhFOkVNp+9wey9UaTl\naXjJ3533ezehtq0cBSFKqEgH1w4air2oPVBUCM5NDcVei5fA1uWv/45qLkeTw4bIDawJX0NGYQbt\n67Zntt9s2tZ5cGKTEKJykcJPVBinY1KZtiOc8FtZBHjYs+qFdrSoJ+ekiRJKumxYtxe6CXJTwMoR\nAl41TNOo21Ju5ZZAZmEm6yPW813Ed2Rrsgl0C2Sc3zhaObdSO5oQopRI4SdUl5Cex8w9kewKvYVr\nLUsWDm/N83515VaS+Gu5d+DSZkN3LykUjM3Au7fhCJbGPcFUdnyXRHpBOmvC17AhcgO52ly6uXdj\nnN84mjk1UzuaEKKUSeEnVJOn0bH4l2ssORKDkRG8E+zFuGcaUcNc1vGJP6HTQPTPhu7elX2g10Hd\nVtBnNjQfBNaOaiesNO7k32HV5VVsit5Ega6Anh49Ges3liYOTdSOJoQoI1L4iXKnKArbL9zkyz2R\nJGUV0K+lK1P6+OBqJzM8xSMoCtw8Bxc2wOUthk0bNnWgw98N3T1nX7UTVipJuUmsvLySH678gFav\npU+DPoxtMZaGdjKVRIiqTgo/Ua4u3shg2o4wzsVn0MKtFotGtCbA00HtWKKiyrplOH7l4ga4HQmm\nluDzHLQcAQ27gom8hT2OxJxEVlxawbar21AUhRcavcCYFmPwqOmhdjQhRDmRd01RLlKyCpi1N4ot\nIQk42Vgwa7Afg9vUw9hY1vGJP9DmQ+Quw7q9mMOg6MG9A7wwH5r2hxp2aiesdOKz4ll2aRk7r+3E\nyMiIAY0H8FqL13CzcVM7mhCinEnhJ8pUgbaIb4/H8s2hq2iLFMZ3acSEbo2wtZTB7eIeigLxp+Di\nesMItcIsqOUOQZMNu3IdG6mdsFKKyYhh6aWl7Indg5mxGUN9hjK62WjqWNdRO5oQQiVS+IkyoSgK\ne8OS+ffuCOLT8ujZ1IWpfX3xdJLZp+Ie6dcNt3IvrIf0WDCzhqYvQqvh4BEIxjIG7ElEpUWxNHQp\n+6/vx9LUkpebvswrzV7BqYaT2tGEECqTwk+UusikLKbvCOfEtVS8XWxYO6Y9gV7yDUf8rjAHwrcb\n1u3FHTU81uAZ6PIh+L4AFjbq5qvEwlLDWHJxCYdvHMbazJrXW7zOqKajsLe0VzuaEKKCkMJPlJq0\nXA1z9kex/nQ8NWuY8fmLzRjerj6mJtK1qfb0eog7YtiVG/ETaPPAoSF0+wRaDgW7+monrNQupFxg\nSegSjiUew9bclr+3/DsjfEdQy0IOQBdC3E8KP/HUtEV61p66ztz90eRqini5oyfvBHthZyWH51Z7\nd64aOnsXv4esBLCoCX4vGXblureTaRpP6UzSGZZcXMLppNPYW9jzdpu3GdZkGDbm0jUVQjycFH7i\nqfwafZvPd4ZzNSWHIC8nPn2+Kd4utmrHEmrKz4CwHw3dvYTfwMgYGnWHntMMR7GYyXmNT0NRFE7e\nPMmS0CWcSzmHo6Uj7we8zxDvIViZWakdTwhRwUnhJ55IzO0cZuyK4GBkCp6OVix/OYAevs4yZq26\nKtLBtUOGXbmRu6GoEGr7Qs/p0OIlqFlX7YSVnqIoHEk4wtLQpYTeCcXZypkp7aYwyGsQlqaWascT\nQlQSUviJx5JVoGXhwSusOhGHhakJH/f14ZVOnliYypi1aik5zLAj99JmyEmGGg7gP9qwK7duK7mV\nWwr0ip5D8YdYGrqUiLQI3Gzc+LTDp/Rv3B9zE1lOIYR4PFL4iRIp0itsOnuDr/ZGkZan4SV/d97v\n3YTathZqRxPlLfcOXNpi6O7dugjGpuDV21DsefUGUylGSkORvoh91/exNHQpVzOu4lHTg887f85z\nDZ/DzFjOwRRCPBkp/MRfOh2TyrQd4YTfyqKtpz2rX2hHczfZLVit6DRwZa9h3d6VvaDXQd2W8Ox/\noMVgsJbjekqLTq9jd+xuloUuIy4rjoa1GvJl0Jf09uyNqbG8ZQshno68i4hHSkjPY+buSHZduoVr\nLUsWDm/N8351ZR1fdaEocOvC77dyt0B+Gti4QIc3DbtyXZqqnbBK0RZp+enaTyy/tJyEnASa2Dfh\n6y5fE+wRjLGRHIkkhCgdUviJB+RpdCz+5RpLjsRgZATvBnsz9pmG1DCXdXzVQnbS79M0NsDtCDCx\nAJ++hmKvUXcwkbeN0qTRa/g+8nu+vfwtt3Jv0cyxGR+0/YCu7l3lhywhRKmTd3BRTFEUtl+4yZd7\nIknKKuDFVq58+KwPrnZy/EaVp82HyF2GM/euHQJFD/XawfNzodkAqCGTH0rbrZxb7Lu+jxUXV5Cu\nTadV7Vb8s+M/6ezaWQo+IUSZqbaFX3x8PP/+978JCQmhRo0a9O3bl3fffRcLi+q5WeHCjQym7Qjj\nfHwGLdxqsWhEawI8HdSOJcqSosCN04ZbuWHboDATataDwPeg5XBwaqx2wipFU6ThXMo5jiUc41ji\nMa5lXgOgmW0zZnebTbs67aTgE0KUuWpZ+Gk0GsaPH0/jxo35/vvvSU1N5eOPPwZgypQpKqcrXylZ\nBfzn5yh+OJeAk40Fswb7MbhNPYyN5RtQlZURDxc3Grp7adfAzAp8+0GrEeAZBMaynqy03My5ybHE\nYxxNPMrpW6fJ1+VjZmyGv4s/A7wGEOQWROGtQnzr+qodVQhRTVTLwi80NJT4+Hg2b96MtbU1jRo1\n4u233+bLL7+sNoVfgbaIFcdi+e/hq2iLFMZ3acSEbo2wtZRjIqqkwhzDjNwL6yHuqOExzyAImgxN\n+4GFTFspDZoiDSHJIRxLNHT1YjJjAHCzcaNfo34EugXSrk67+yZsRNyKUCuuEKIaqpaFX8OGDVm6\ndCnW1tbFjxkZGZGVlaViqvKhKAp7w5KZsTucG2n59GrqwtTnfPFwtP7rPywqF73eUORd3ADhP4E2\nF+wbQNePoeUwsPdQO2GVkJCdwPHE4xxLPMbppP919QJcAhjkNYjAeoE0qNlAbuMKISqEaln4OTg4\n0KlTp+Lf6/V61q5de99jVVHErSym7wjnZEwq3i42rB3TnkAvOX+tykm9Zij2Ln4PmTfAoia0GGTY\nlVu/g0zTeEqFRYWEJIVwNPEoxxKPEZcVB/yvqxfkFkTbOm1lbq4QokKqkoVfYWEhSUlJD73m6OiI\njY3NfY/NnDmTiIgItmzZUh7xyl1aroav90Wx4bd4atYw4/MXmzG8XX1MTWQtV5WRnwFhWw0F343T\nYGQMDbtB8L/A5zkwk53ZT+NG9o3i27dnks6Qr8vH3NictnXaMrTJUALdAvGo6SFdPSFEhVclC79L\nly4xcuTIh16bOXMmAwcOBAy3PWfMmMGGDRuYP38+Xl5e5RmzzGmL9Hx38jrzDkSTqyni5Y6evBPs\nhZ2VjNSqEop0EHPYsG4vchcUFYJTEwieBn4vQU1XtRNWWoVFhZxNOltc7N3t6rnbutO/cX8C3QJp\nW6ctNUyloBZCVC5VsvALCAggKirqT5+j1+uZOnUqO3bsYO7cuQQHB5dTuvLxS1QKn+8M59rtXIK8\nnPjn803xcpEF/FVCSoSh2AvdBDlJhjP22rxsmJXr2kZu5T6hG1k3im/fnkk6Q0FRARYmFgTUCWCY\nz7Dirp4QQlRmVbLwK4kvv/ySHTt2sHDhQrp166Z2nFITczuHL3ZFcCgyBU9HK1a8EkB3H2e5BVXZ\n5abC5S2Ggu/WBTA2Ba9ehvP2vHuDafU8f/JpFOgKOJv8v67e9azrANS3rc9Ar4HFXT1LU0uVkwoh\nROmpcIVfcnIyffv2ZeLEiYwePfqB6zqdjrVr17Jp0yYSEhKoXbs2AwcOZOzYsZiZlewokgsXLrB6\n9WomT55M8+bNuX37dvG12rVrl9Z/SrnKzNey8OAVVp2Iw9LMhI/7+jC6UwPMTWUdX6Wl08DV/YZi\nL3ov6LVQpwU8+yU0Hww2lfNrVU3xWfH3dfUKiwqxMLGgbZ22DPcZTpBbEPVr1lc7phBClJkKVfjl\n5uYyceJEcnJyHvmc6dOns3HjRvz9/enevTvnzp1jwYIFREVFsWDBghJ9nL179wLw9ddf8/XXX993\nLSwsDFPTCvW/5U8V6RU2nrnB1/uiSMvTMDTAncm9mlDbVjpAlZKiwK2Lhk0alzZDXipYO0P7cYbu\nXp3maiesVAp0BZxJOlPc1YvPjgfAo6YHg70HE+gWSIBLgHT1hBDVRoWpcBITE5k4cSJhYWGPfM65\nc+fYuHEjvXv3Zv78+RgZGaEoClOmTGHbtm0cPny4RLdtP/zwQz788MPSjK+KUzGpTNsRTsStLNp6\n2rP6hXY0d6uldizxBEzz78DxBYaCLyUcTMyhSV/DNI1GPcCkwrxUKzRFUbiedd1Q6N08xtmksxQW\nFWJpYknbOm0Z6TuSILcg3Gu6qx1VCCFUUSG+m6xatYoFCxZQUFBAhw4dOHXq1EOft27dOgDeeuut\n4jVrRkZGvPfee2zfvp3NmzeX6Xq9iIiyPWG/oKCgRB8jOUfLirNpHL2ei7O1KR91cSbIwxqjrJtE\nZN0s04yidNW4E4pjxBoa3zwB6MlzbE6m/wdk1Q9Gb14TioDoK2rHrNAKiwoJyw7jfMZ5LmReILkw\nGYC6lnXp4dSDVrVa0bRmU8yNDbvZcxJziEisONMySvq6F1WLfN6rL7U/9xWi8FuzZg1ubm5MmzaN\nuLi4RxZ+Z8+exd7eHm9v7/sed3FxwdPTkzNnzpRpTl/fsp2nGRER8acfI0+j4/9+ucaSI4kYG8F7\nPb0Z+0xDLM1MyjSXKGWKYpio8essw7+tHLnjOwqnHhOxcvLCCqirdsYKTFEU4rLiim/fnk06i0av\nwdLEknZ12zHGbQyBboG421aOrt5fve5F1SSf9+qrvD73ISEhD328QhR+06ZNo1OnTpiYmBAXF/fQ\n52g0GpKSkmjZsuVDr7u5uREbG0taWhoODg5lmLb86fUK2y8m8p89USRlFfBiK1c+fNYHVzs5Q6xS\nURS4egCOzDYcsmzjAr1mQMCr3L4Wj5NT1TpHsjTlafM4k3SmeGNGYk4iAJ41PXmpyUsEuQXhX8cf\nCxNZ2yqEEH+mQhR+QUFBf/mcjIwMAGxtH34W3d3Hs7Ozq1Thd+FGBtN2hHE+PgO/erX4ZmRr/D2q\nzn9ftaDXQ9RuQ8F36wLUrAd9v4LWo8BMNhU8jKIoxGbFcizB0NULSQ5Bo9dQw7QG7eu059Vmr9LZ\nrTP1bOupHVUIISqVClH4lYROpwPA3PzhUyfuPl5YWFhumcpSclYB//k5kh/PJVLb1oLZg/0Y1KYe\nxsZyHl+loS8yjFE7+rVhw4Z9A+i3EPyGgalMT/mjPG0evyX9VnwL925Xr2GthsUHKPu7+GNuIv/v\nhBDiSVWaws/S0tAZ0Wq1D72u0WgAqFGjct/+LNAWseJYLN8cvoquSOHNro2Y0K0xNhaV5lMlirSG\no1iOfg2pVw1j1AYug2YDZXfuPRRFITYztvj2bUhyCFq91tDVq9ue15q/Rme3zrjZuKkdVQghqoxK\n813IxsYGY2PjR57xl52dDTz6VnBFpygKx6/nMnbHr9xIy6d3Mxc+7uuLh6O12tFESekKDYctH5sL\nGdfBpQUMWQ2+/cBYDtIGQ1fv1K1THEs8xvHE49zMNexCb1SrESN8RhBYL5A2zm2kqyeEEGWk0hR+\n5ubmuLq6kpCQ8NDrCQkJODg4YGdnV87JSse/d0ew7GgyTVxsWfd6ezo3dlI7kigpTR6cWwPH50P2\nTXDzhz6zDKPUqvmoPEVRuJZxrfj2bUhKCDq9DitTK9rXbc+YFoYduK42rmpHFUKIaqHSFH4A/v7+\nbN++ndjYWBo0aFD8eHJyMnFxcZV65m6nRk5YF2Xz1nNtMTWR7lClUJgNZ7+FEwsh9zbU7wT9v4GG\n3ap1wZerzb2vq3cr9xYAje0a8zffvxHoZujqmZmUbMSiEEKI0lOpCr/+/fuzfft25s6dy7x58zA2\nNkZRFObMmQPA0KFDVU745Lr5OFNHSZWirzLIz4DflsKp/0J+uqHQe+Yf4NlZ7WSqUBSFqxlXi7t6\n51LOFXf1OtTtwBt+bxDoGkhdGzmdUAgh1FapCr9OnTrRt29fdu/ezdChQ2nfvj3nz5/n7Nmz9O7d\nm65du6odUVRluamGYu+3pVCYBd594Jn3oV6A2snKXY4mh9O3TnM08SjHbx4nKTcJMHT1RvmOItAt\nkNbOraWrJ4QQFUylKvwAZs2aRePGjdm6dSurV6/G1dWVSZMm8cYbbxSPcROiVGUnw8mFcOZb0OZB\n034Q9D7U9VM7WblRFIUrGVeKu3rnk8+jU3RYm1nToW4HxvmNI9AtkDrWddSOKoQQ4k9UuMJv4MCB\nDBw48JHXzczMmDBhAhMmTCjHVKJaykwwbNgIWQ16LTQfDEGTwdlH7WTlIkeTU7xW71jiMZLzDDNw\nvey9GNVsFEFuQbSq3Uq6ekIIUYlUuMJPCNWlxRqOZLmwHlCg5XAIfBccG6mdrEwpikKEtZQgAAAg\nAElEQVR0enTxuXoXUy6iU3TYmNnQ0bUjgW6BdHLtJF09IYSoxKTwE+Ku29FwbA6EbgJjU/B/BTq/\nDXb11U5WZrI12Zy8ebJ4B25KfgoATeyb8EqzVwh0C6Slc0vMjKWrJ4QQVYEUfkIkXYajX0HYNjC1\nhPbjodNEqFn1dqEqikJUehTHEo9xNOEoF29fpEgpwtbMlg6uHQhyC6KzW2ecrZzVjiqEEKIMSOEn\nqq/EEDjyFUTtBnNbw+3cjhPAumodnp2lybqvq3c7/zYAPg4+vNr8VQLdAvGr7SddPSGEqAak8BPV\nT/wp+HUWXDsIlnbQ9WNoPxZq2KudrFQoikJkWmTxpox7u3p31+oFugVS26q22lGFEEKUMyn8RPWg\nKBD7q6HDF3cUrJwg+F8QMAYsa6qd7qllFmZy8tZJjiUc4/jN49zJvwOAr4MvrzV/rbirZ2osL3kh\nhKjO5LuAqNoUBa7shyOzIeE3sK0LvWeC/2gwt1I73RPTK/oHunp6RY+tuS2dXDsVd/WcalSt29ZC\nCCGejhR+omrS6yFyp6HgSwqFWvXhuTnQaiSYWaqd7olkFmZy8uZJw7SMxOOkFqQChq7emOZjCKoX\nRAunFtLVE0II8UjyHUJULfoiCNtquKV7OwIcGsKL34DfUKhkBw3rFT0RqRHFhV7onVD0ip6a5jWL\nu3qd3TpLV08IIUSJSeEnqoYireH8vaNfQ9o1qP3/7d17VFV1/v/xJyAIqICoUKApHD14A/NueBnx\nEmWlQvnFMa8zY/UztZY42ppM8zLilGbq6JhZYmKmTorZSnOm7K6mpI7XLqAimngbbiL3/fuDOBMJ\n5QXOOXBej7VYrPPZH/Z+7/0Wea/P3p/Pbg3Rq6FdFLjUnH/mGXkZfHX+q9IZuOe/5GreVQDaNmrL\nn0L/RO/A3rRv3F6jeiIiclv010NqtqJ8OJgAX7wKmalwVxj83zpo/TA4O9s6ut+UXZBNckYy289t\n5+Spkxy9fJQSowTvut6EB4TTO7A39wXcp1E9ERGpEir8pGYqyIVv1pa+Szf7R2jaFR5aBK0GgpOT\nraO7wX/z/ktKZgrJGcnlvl/MLX1ThhNOtGvUjifCnqBXYC/aN2qPi7OLjaMWEZHaRoWf1Cz52bB/\nNXz1d8i9DM17QdRKCPqdzQs+wzC4fP0yyZnJJGckcyrzlKXAK7tlC+BRxwOTt4ked/cg2DuYYO9g\nPDM86R7W3YbRi4iII1DhJzXD9f/CvlWwdwXkZYCpP/SZCs3DrR5KiVHChWsXKhzByy7ItvRr4NYA\nk7eJiGYRpQWeTzAmbxP+9fxxdip/G/rEtRPWPg0REXFAKvzEvl27XFrsff065GdByEPQJxYCO1f7\noYtLijmXc47kjGSSM8uP4F0vum7p5+vui8nHxKCgQQR7B2PyMWHyMdHIvRFOdnjbWUREHJcKP7FP\n2Rfgq2Vw4E0ovA7thkLvWLgrtMoPVVhcSGp26v9G7jJSSM5M5nTmaQpKCiz9/Dz9MHmbeLTVowR5\nB2HyMRHsHUxD99rxqjcREan9VPiJfck4Wzph45u3oKQIQodB7ynQJOSOd51fnM/pzNM3jOClZqVS\nZBRZ+gXWD8TkYyI8INwyghfkHUQDtwZ3HIOIiIgtqfAT+3A1BT5/BQ5vAJzg3hHQ69nSBZhvUW5h\nLimZKTeM4J3LOUeJUQKAs5Mz9zS4h2DvYPrf059gn9JJFi28WuDpWnNf5SYiIvJrVPiJbV36tnTR\n5SObwdkVuvwBwieDT7Pf/NHM/EzLqF1yZumzdykZKfx47UdLnzrOdWjh1YI2vm14OPhhywSL5l7N\ncXNxq84zExERsTsq/MQ2LhwpfY/u8ffA1QN6TIDwSdDgrnLdDMPgat5VS1GXnPm/EbzL1y9b+rm7\nuBPkHUQn/06YvE2WWbTNGjTTWy5ERER+or+IYl1pSaUF33c7oK5X6YSNHhMwPH25mHuR5PNflSvw\nUjJTyMjPsPx4Pdd6mLxN9AzoaZk9G+wdTED9gBuWSBEREZHyVPiJdZz5Cj57mZLkjzlf35eU7mNI\nuasNybnnSflkMimZKeQU5li6e9f1xuRtYkDzAeVG8Pw9/bVEioiIyG1S4SfVoqikiLTssyR/+x4p\nxzaXFnh1PTgVHESeUQwXd8PF3TT2aIzJ28TDwQ+XG8HzdfdVgSciIlLFVPjJHSkoLuBM1pnS5VEy\nTlleV3Ym8xSFRnFpJ2e4y8cfU+P2dPFtVTqC99MsWu+63rY9AREREQeiwk9uyvWi66Vr4JVNrvjp\nDRZns89S/FOB54QTTes2xJSbRe/s/2Jy9cIUOoKgLk9Sz8PXxmcgIiIiKvyknJyCHMv6d6cy/zeC\ndz7nPAYGAHWc6tDMqxktfVpyf4v7MTVoQfDlU7RISsD91CFo1BJ+F1e6+LKLq43PSERERMqo8HNQ\nGXkZpQXeL0bw0nPTLX1cnV0J8g4irHEYQ1oOweRd+gzePQ3uwdXFFYoK4D8b4YOZpQsw+7WFR9+A\ndlHg7GLDsxMREZGKqPCrxQzD4EreldIFjn8q7MpG867mXbX086jjQZB3EN3u6mZZ4DjYJ5jA+oEV\nr4FXmAdJ8aWvVss8C3ffCzHrIWQQOGtJFREREXulwq8WMAyD9Nz0cgVe2fesgixLvwauDQj2CaZv\ns76ly6P89B7au+rddXNr4BVc+6ngWwo5F6BpN3h4MbQcAJqBKyIiYvdU+NUgxSXFnM85b3nuruxt\nFimZKeQW5Vr6+br7EuQdxAMtHigdwftpiZQmHk1ub4mUvCzYvxr2LIfcy9CiNzz6eul3FXwiIiI1\nhgo/O1RYUsjZrLOWkbuy5/BOZ50mvzjf0s/Pw49gn2CiWkVZRvCCfUrXwKsSuVdh32uw7x+Qlwkt\nB0KfqXBPj6rZv4iIiFiVCj878cW5L1j7/VoufXuJM1lnKDKKLNsC6wcS5B1Ej7t7lI7e+QQT5B2E\nl5tX9QSTcwn2LoevV0NBNrR+uLTgC+hYPccTERERq1DhZye+Sf+GM7lnaO3Xmr7N+v6vwPMKwtPV\n0zpBZP0IXy2FA2ugKA/aR5e+S9e/nXWOLyIiItVKhZ+dmNxpMgM9BtKmTRvrHzwjFb54FQ6ug5Ji\nCIuB3lOgcSvrxyIiIiLVRoWfI7uSDF+8AoffAZyg40jo9Sw0bGHryERERKQaqPBzRBdPwOeL4Oi7\n4OIGXf8E4ZPBO9DWkYmIiEg1UuHnSH48DJ8thBPvgWs9uG8ihE+C+n62jkxERESsQIWfI0g7AJ+9\nDN/thLre0Gca9Ph/4FlFy76IiIhIjaDCrzY7/UVpwZfyCXj4Qr8Z0HU8ePjYOjIRERGxARV+tY1h\nQPLHpbd0U7+Cen5w/zzoPA7q1rd1dCIiImJDKvxqC8MovZX72ctwLgm8AuHBl6HTKHD1sHV0IiIi\nYgdU+NV0JSVwYht8tgjSj5QuxfLIUujwe6jjZuvoRERExI6o8KupiotKl2P5fBFc/hYatYKo16D9\nY+CitIqIiMiNVCHUNEUFcHhD6cLL/z0Nfu3gsTXQdgg4u9g6OhEREbFjKvxqisK80leqffEqZKVB\nQEeIjAPzA+DsbOvoREREpAZQ4WfvCq7BgTXw1VLISYdmPWDwEjD1BycnW0cnIiIiNYgKP3uVlwlf\nvw57V0DuFQj6HTz2JjTvqYJPREREbosKP3uTexX2rSz9ysuEVpHQZyo062bryERERKSGU+FnL65d\nocnhv8PWRCjIgTaPQO+pEHCvrSMTERGRWsJhZwUkJyczduxYOnbsSEREBKtXr7ZtQDun0+jbtyHk\nQZiwF2ISVPSJiIhIlXLIEb/CwkLGjx9P9+7dmT17NikpKcTGxuLn58fgwYNtE9TAOSQ3/z0tu/S3\nzfFFRESk1nPIEb/09HTCwsKYNWsWzZs3JyIigvDwcPbv32+7oLwCKKwXYLvji4iISK3nkIVf06ZN\nefXVV3F3d8cwDJKSkti/fz/33XefrUMTERERqTYOeav35/r06cPFixeJiIggMjLS1uGIiIiIVJta\nWfjl5+dz4cKFCrc1atSI+vXrWz6vWLGCixcv8uKLLxIXF8eMGTOsFaaIiIiIVdXKwu/IkSM8/vjj\nFW6Li4sjOjra8jk0NBSAvLw8pk+fzrRp03Bzc7NKnCIiIiLWVCsLvy5duvDtt99Wuj09PZ2jR4/S\nv///ZtCaTCYKCwvJycnB19fXGmGKiIiIWJVDTu5ITk5m0qRJXLlyxdJ27NgxfH19VfSJiIhIrWV3\nhV96ejqdO3cmPj6+wu1FRUXEx8czaNAgwsLC6N+/P8uXL6ewsPCmj9G1a1dMJhPPPfccycnJ7N69\nm0WLFvHUU09V0VmIiIiI2B+7KvyuXbvGpEmTyMnJqbTPnDlziIuLw8fHh9GjR+Pv78/SpUuJjY29\n6eO4urqyatUqXFxcGDZsGDNnzmTMmDGMHj26Kk5DRERExC7ZzTN+586dY9KkSRw7dqzSPt988w0b\nN24kMjKSJUuW4OTkhGEYPPfccyQmJrJ7924iIiJu6nh33303K1eurKrwRUREROyeXRR+8fHxLF26\nlLy8PHr06MHevXsr7Ld+/XoAJk6ciJOTEwBOTk5MmTKFbdu2sXnz5psu/G7HiRMnqm3fUDqzuLqP\nIfZJuXdcyr1jUt4dl61zbxeF31tvvUVgYCCzZ8/m9OnTlRZ+Bw4coGHDhpjN5nLt/v7+tGjRotpf\nudamTZtq3f+JEyeq/Rhin5R7x6XcOybl3XFZK/dJSUkVttvFM36zZ88mMTGRTp06VdqnoKCACxcu\ncM8991S4PTAwkKysLK5evVpdYYqIiIjUaHZR+PXu3RsXF5df7ZORkQFAgwYNKtxe1p6dnV21wYmI\niIjUEnZR+N2MoqIigErfqlHWnp+fb7WYRERERGqSGlP4ubu7A1S6Xl9BQQEAHh4eVotJREREpCax\ni8kdN6N+/fo4OztXusZf2S3eym4FV4XKHpSsaccQ+6TcOy7l3jEp747LlrmvMYWfm5sbAQEBpKWl\nVbg9LS0NX19ffHx8quX4nTt3rpb9ioiIiFhLjbnVC6XF16VLlzh16lS59vT0dE6fPk2HDh1sFJmI\niIiI/atRhd/QoUMBWLx4MSUlJQAYhsErr7wCQExMjM1iExEREbF3NarwCw8PZ9CgQXz44YfExMSw\ncOFCRo4cSWJiIpGRkfTt29fWIVpNQUEBDz/8MF999ZWtQxErSE1N5amnnqJr16706dOHBQsWaAa7\ng0hOTmbs2LF07NiRiIgIVq9ebeuQxAZmzJjBqFGjbB2GWMH7779PSEhIua8JEyZU2f5rzDN+ZV56\n6SVatmzJ1q1bWbt2LQEBAUyePJnx48dbXuNW2+Xn5xMbG8v3339v61DECgoKCnjqqado2bIl77zz\nDleuXOEvf/kLAM8995yNo5PqVFhYyPjx4+nevTuzZ88mJSWF2NhY/Pz8GDx4sK3DEyvZs2cPmzdv\nplu3brYORazg+++/Z+DAgcyaNcvSVrdu3Srbv90VftHR0URHR1e63dXVlaeffpqnn37ailHZjx9+\n+IHY2FgMw7B1KGIl//nPf0hNTWXz5s3Uq1cPk8nEM888w4IFC1T41XLp6emEhYUxa9Ys3N3dad68\nOeHh4ezfv1+Fn4PIzc3lhRde+NU3W0ntkpycTEhICE2aNKmW/deoW70CX3/9Nd27d2fjxo22DkWs\nJDg4mFWrVlGvXj1Lm5OTE1lZWTaMSqyhadOmvPrqq7i7u2MYBklJSezfv5/77rvP1qGJlSxevJhu\n3bpptM+B/PDDDwQFBVXb/u1uxE9+3YgRI2wdgliZr68v4eHhls8lJSUkJCSUa5Par0+fPly8eJGI\niAgiIyNtHY5YwcGDB9m5cyfvv/8+b775pq3DESsoKCjg7Nmz7N69myVLlmAYBg888ACTJ0+u9M1l\nt0ojfiI1TFxcHCdOnGDq1Km2DkWsaMWKFaxYsYJjx44RFxdn63CkmhUUFPD888/zl7/8BW9vb1uH\nI1Zy5swZioqK8PT0ZNmyZUybNo3t27dX6e+8RvxEagjDMPjrX//Khg0bWLJkCa1atbJ1SGJFoaGh\nAOTl5TF9+nSmTZtWZSMAYn+WL19O8+bNefDBB20dilhRq1at2Lt3Lw0bNgSgdevWGIZBbGwszz//\nPHXq3HnZpsJPpAYoKSnh+eefZ/v27SxevJgBAwbYOiSxgvT0dI4ePUr//v0tbSaTicLCQnJycvD1\n9bVhdFKdtm/fzqVLl+jYsSNQOsO7uLiYjh07cvDgQRtHJ9WprOgrU/Y7f/XqVfz8/O54/7rVK1ID\nLFiwgO3bt7Ns2TLuv/9+W4cjVpKcnMykSZO4cuWKpe3YsWP4+vqq6Kvl1q1bx/vvv09iYiKJiYkM\nGzaM9u3bk5iYaOvQpBrt2rWL8PBwCgoKLG3Hjx/Hy8urymb5qvCzkvT0dDp37kx8fHyF24uKioiP\nj2fQoEGEhYXRv39/li9fTmFhoXUDlSpVFXk/dOgQa9euZfLkybRv355Lly5ZvsR+VUXuu3btislk\n4rnnniM5OZndu3ezaNEinnrqKSudhdyOqsh9YGAgzZs3t3x5eXlZlvQR+1RVv/OGYTBz5kxOnTrF\nJ598wksvvcQf//jHKlurWIWfFVy7do1JkyaRk5NTaZ85c+YQFxeHj48Po0ePxt/fn6VLlxIbG2vF\nSKUqVVXeP/zwQwAWLVpEr169yn0VFRVV+3nIrauq3Lu6urJq1SpcXFwYNmwYM2fOZMyYMYwePdoa\npyG3Qf/fO6aqynvDhg154403OHfuHNHR0bzwwgsMHz6cJ598suqCNaRapaWlGVFRUYbZbDbMZrOx\nZs2aG/okJSUZZrPZmDRpklFSUmIYhmGUlJQY06ZNM8xms/Hxxx9bOWq5U8q741LuHZdy75hqWt41\n4leN4uPjeeSRRzh58iQ9evSotN/69esBmDhxomUo18nJiSlTpuDk5MTmzZutEq9UDeXdcSn3jku5\nd0w1Me8q/KrRW2+9RWBgIAkJCQwZMqTSfgcOHKBhw4aYzeZy7f7+/rRo0YL9+/dXd6hShZR3x6Xc\nOy7l3jHVxLyr8KtGs2fPJjEx8VffsVhQUMCFCxe45557KtweGBhIVlYWV69era4wpYop745LuXdc\nyr1jqol5V+FXjXr37o2Li8uv9snIyACgQYMGFW4va8/Ozq7a4KTaKO+OS7l3XMq9Y6qJeVfhZ2Nl\nszIrW4G/rD0/P99qMUn1U94dl3LvuJR7x2RveVfhZ2Pu7u4Ala7XV7aIo4eHh9VikuqnvDsu5d5x\nKfeOyd7yrsLPxurXr4+zs3Ola/+UDf1WNkQsNZPy7riUe8el3Dsme8u7Cj8bc3NzIyAggLS0tAq3\np6Wl4evri4+Pj5Ujk+qkvDsu5d5xKfeOyd7yrsLPDnTu3JlLly5x6tSpcu3p6emcPn2aDh062Cgy\nqU7Ku+NS7h2Xcu+Y7CnvKvzswNChQwFYvHgxJSUlABiGwSuvvAJATEyMzWKT6qO8Oy7l3nEp947J\nnvJex2pHkkqFh4czaNAgPvjgA2JiYujevTsHDx7kwIEDREZG0rdvX1uHKNVAeXdcyr3jUu4dkz3l\nXYWfnXjppZdo2bIlW7duZe3atQQEBDB58mTGjx9veb2L1D7Ku+NS7h2Xcu+Y7CXvToZhGFY7moiI\niIjYjJ7xExEREXEQKvxEREREHIQKPxEREREHocJPRERExEGo8BMRERFxECr8RERERByECj8RERER\nB6HCT0RERMRBqPATERERcRAq/ETkti1btoyQkBBGjRpVaZ+srKzf7FPdyuL897//bbMYbkdRURF/\n+9vf6NmzJ6GhoTzyyCOV9h01ahQhISFkZWVZMUIRqWn0rl4RuWNff/01mzdvZtiwYbYOpVb55z//\nyZtvvklQUBBRUVE0atSo0r5RUVF069aNunXrWjFCEalpVPiJSJV4+eWXiYiIoHHjxrYOpdY4fvw4\nADNnziQ8PPxX+0ZHR1sjJBGp4XSrV0TuWNu2bcnMzGTevHm2DqVWKSgoAKBhw4Y2jkREagsVfiJy\nx8aPH09QUBA7duxg9+7dv9l/y5YthISEEB8ff8O2Xz6rlpaWRkhICCtWrGDXrl1ERUURFhZGv379\nWLNmDQBJSUmMGDGCe++9l379+rFs2TKKiopu2HdeXh7z58/nvvvu495772XUqFHs27evwhh37NjB\n8OHD6dixI506dWLMmDHs3bu3XJ99+/YREhLC22+/zZQpUwgLC6NXr14kJSX96vl/+eWXjBs3jk6d\nOhEWFkZUVBTr16+npKSk3Dlv3boVgKFDhxISElJprBVdt7LYtm3bxqZNm3jwwQcJDQ3lgQceYNu2\nbQB89NFHREdH06FDByIjI1m/fv0N+z137hyzZs1iwIABhIaG0rFjR6Kjo9mwYcMNfa9du8bLL79M\nv379CAsLIzo6mo8//pjnn3+ekJCQ27rGAEeOHOHJJ5+kV69ehIaGEhkZycKFC8nJyfnV6ywiN1Lh\nJyJ3zM3Njblz5+Lk5MTs2bO5du1alR9j165dTJkyBZPJRExMDNeuXWPBggXMmzePsWPH0rBhQ37/\n+99jGAZ///vfKyxiFixYwLZt2xg0aBAPPPAAR44cYdy4cXzyySfl+i1ZsoRnn32WixcvEhUVRVRU\nFD/88APjxo2zFE0/t3z5co4cOcLIkSNp27Yt7dq1q/Q81q1bxx/+8AeOHDnCwIEDefTRR8nOzmbO\nnDnExsZiGAZeXl5MnDiR1q1bAxATE8PEiRMJDAy85eu2Zs0a4uLi6Ny5M4899hgXLlxg2rRp/O1v\nf+OZZ54hODiYmJgYMjMzmTNnTrkJMGlpaTz66KMkJiZy7733MnbsWAYOHEhycjIvvvgiCQkJlr4F\nBQWMGzeO1atX4+fnx+OPP079+vWZMGECe/bsuSGum73Gp06dYty4cRw8eJB+/foxZswYGjduzOuv\nv87TTz99y9dDxOEZIiK3aenSpYbZbDb+9a9/GYZhGC+88IJhNpuNuXPnWvpkZmYaZrPZGDlypKXt\n3XffNcxms7FmzZob9jly5EjDbDYbmZmZhmEYxtmzZw2z2VzuOIZhGJ9//rmlPSEhwdJe1v+xxx67\nIc6uXbsaZ8+etbQfO3bM6NChg9G3b1+jqKjIMAzDOHz4sBESEmKMHDnSyM3NtfS9evWqMXDgQKND\nhw7GlStXDMMwjL179xpms9no0KGDcfHixd+8XqmpqUbbtm2Nvn37GqmpqZb2a9euGaNHjzbMZrOx\ndetWS/v06dMNs9lsHD9+/Df3/cvrVhZbmzZtjCNHjlj6vfPOO5brtnv3bkv7vn37DLPZbDzzzDOW\ntrJ8fvnll+WOdfjwYcNsNhsxMTGWtjfeeMMwm83GnDlzjJKSEkv7ggULLMf7+c/f7DUu+/k9e/aU\ni+GJJ54wzGaz8d133/3mtRGR/9GIn4hUmalTp9KkSRPWr1/P4cOHq3TfgYGBDBgwwPK5U6dOAHh6\nejJ8+HBLe9OmTWncuDHnzp27YR+jR4+madOmls9t27Zl8ODBnD9/ngMHDgClM2kNw2DatGl4eHhY\n+jZs2JDx48dz/fp1duzYUW6/nTp1okmTJr95Du+99x5FRUU8/fTTNGvWzNLu6enJjBkzAHj33Xd/\ncz+3onPnzrRv375crABBQUH07dvX0t6hQweActdt8ODBzJ8//4aJJWFhYbi7u3PlyhVL29atW/H0\n9OTZZ5/FycnJ0j5x4kS8vb3L/fytXOOy299Hjhwpt4+4uDj27NlDq1atbv5iiIhm9YpI1fHy8uKF\nF15g8uTJzJgxgy1btlTZvps3b17us6enJwB33XUXLi4u5bbVrVu3wvXsyoqenwsLC2Pjxo2cPHmS\n7t27c+zYMaD01vIvbwFfuHABgBMnTpRr/3kx+WtOnjwJQNeuXW/Y1qpVK7y8vCx9qsovr1tZofXL\nmMuWgSmbUALQpUsXunTpQkZGBidOnCA1NZVTp05x6NAh8vPzKS4uBiA/P5/vvvuOdu3a0aBBg3L7\nrVevHiEhIXz99deWtlu5xlFRUWzYsIGFCxeSkJBAnz596NOnDz179rT8GxCRm6fCT0SqVGRkJP37\n9+ejjz5i9erVPP7441Wy35+PDP2cm5vbTe+jonXw6tWrB0Bubi4A2dnZAKxatarS/WRmZpb7fLNr\n55VNRvhlcVTGz8+PM2fO3NS+btadXLfMzEzi4uJ4//33KSwsxMnJicDAQHr06GFZagYgIyMDoNJR\nTz8/v3Kfb+Uat27dmk2bNrFy5Uo+/fRTNm3axKZNm/D09GT06NE3jDCKyK9T4SciVW7WrFns27eP\nf/zjH/Ts2fOG7WV/qA3DuGHb9evXqy2usoLj5y5evAhguR3p6emJi4sLhw8fxtXVtUqPX1Zkpqen\n4+vre8P2zMxMfHx8qvSYd+LPf/4zn376KcOHD2fIkCGYzWbq168PwPbt2y39ys6rslm2v5zsc6vX\nuHXr1rz66qsUFBRw8OBBPvvsM7Zs2cLKlSvx9/dnxIgRt3uKIg5Hz/iJSJXz9/dnypQp5OfnM2vW\nrBu2l/2xLxtlK2MYBmfPnq22uH75nBjAoUOHACzPwYWEhFBcXHzD7dyyvgsXLrQ8D3irymbpVrTc\ny5kzZ7h06ZLdPLOWlZXFp59+Svv27Zk9ezadOnWyFH1paWnk5+dbCvf69evTokULTp48We5WMUBx\ncTFHjx4t13Yr1zgxMZG5c+diGAZubm50796dP//5zyxbtgyo+FqKSOVU+IlItRgxYgQdO3Ysd0uw\nTHBwMACff/655TkxgLffftty27A6rFu3jqtXr1o+HzhwgJ07d9KqVSvCwsKA0mfKAObPn19uBCsn\nJ4cXX3yR119/vVzMt2LIkCHUqVOHlStXlitwc3NzmTNnjqWPPXB1dcXZ2ZmsrMRkh8cAAAMISURB\nVKxyxVxeXh5z584FoLCw0NIeHR1NTk6OpSAr89prr3Hp0qVybbdyjQ8dOkRCQsINE2rS0tIACAgI\nuNNTFXEoutUrItXCycmJefPmMXTo0HIFAmBZ6+7gwYOMGDGCrl278u2337J37146dOhQ5TOCy9Sp\nU4chQ4YwaNAgrly5ws6dO3F3dycuLs7Sp0ePHowaNYp169bx0EMP8bvf/Q43Nzf+/e9/8+OPPzJ8\n+HC6d+9+W8dv1qwZ06dP569//StRUVEMGDAAT09PPvvsM86ePctDDz3E0KFDq+p074iHhwcDBw7k\nww8/ZNiwYfTs2ZPc3Fx2797N5cuX8fb2Jjs7m5KSEpydnRk7diw7d+5k1apVJCUlERYWxvHjxzlw\n4ABeXl7lCrxbucZ/+tOf2LFjB1OnTmXnzp00b96cc+fOsWvXLpo0acLIkSNtdYlEaiSN+IlItWnZ\nsiVPPPFEhdtee+01oqKiOH36NAkJCVy/fp21a9dalhWpDvPnz6dv375s2bKFjz76iJ49e7Jx40ZC\nQ0PL9ZsxYwYvvfQSd999N++99x5bt26lcePGzJ8/v8Jb17di9OjRvP7667Rr145du3axdetWfHx8\nmDdvHosWLbqjfVe1+fPnM2bMGLKzs0lISODzzz8nNDSUDRs2MHToUPLy8ixvE6lbty7x8fGMGDGC\n1NRUEhISyMnJYdWqVbRo0QJ3d/dy+77Za9y0aVM2bNjAoEGDOHr0KGvWrGH//v0MHjyYTZs24e/v\nb9VrIlLTORkVPV0tIiJyC9LS0vD19a1wiZWIiAg8PDz44IMPbBCZiPycRvxEROSOzZ07l86dO98w\nOeeDDz7g/Pnzt317XESqlkb8RETkjn388cdMmDABb29v7r//fnx8fEhOTuaTTz6hSZMmbNmypcJ1\nFEXEulT4iYhIldi7dy9vvvkmx48fJzMzkyZNmhAREcGECRNU9InYCRV+IiIiIg5Cz/iJiIiIOAgV\nfiIiIiIOQoWfiIiIiINQ4SciIiLiIFT4iYiIiDiI/w89hQpmqsIj6QAAAABJRU5ErkJggg==\n", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], + "outputs": [], "source": [ "disk_x_r = read_many_timings[\"disk\"]\n", "lmdb_x_r = read_many_timings[\"lmdb\"]\n", @@ -1041,48 +832,9 @@ }, { "cell_type": "code", - "execution_count": 22, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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\n", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "image/png": "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\n4nxWr1y5wpgxY8jKyqJq1apYWVmRmJiIr68vvr6+XLhwQUyiEt6MJAjCG7t06ZIkk8kkmUxW6DpZ\nWVlSr169JJlMJg0bNkx6+vSpsiwoKEjq37+/JJPJpC+//FKl3oIFCySZTCZ1795devDggfK4r6+v\n1L59e2Uc//zzT6HikMvl0sSJE5X1ZDKZ1LRpU2nQoEHSihUrpHPnzkmZmZkF1nd2dpZkMpk0efJk\nlePx8fGSjY2NJJPJpClTpkjx8fHKsps3b0pdunSRZDKZNGPGDJV6ihjat28vBQcHS5IkSampqVJG\nRoYkSZK0aNEiSSaTSX369JH8/f2V9eLi4qRJkyZJMplMcnBwkHJycgrVfwcHB0kmk0nTpk2TkpOT\nlceTk5Ol6dOnSzKZTLK2tpaysrLy9Fkmk0mDBw+WQkNDlWWenp6SpaWlJJPJpKNHjyqPZ2RkSF27\ndpVkMpk0c+ZMKS0tTZIkScrMzJSWLFmibK9r166FiluSJGV7r3qvo6OjldelWbNm0r1791TKt23b\nJslkMqljx46Sj4+P8nhqaqo0f/58SSaTSV26dFG5NqdOnZJkMpnUunVr6eLFiyrtXb58WWrdurUk\nk8mkzZs3K4/L5XJpyJAhkkwmk0aPHq38POTk5Eh//PGH8poV5XvoZYr3ZdiwYa88759//lF+TnLL\n/fk/cOCA8viVK1eU8VlZWUnTp0+XUlNTJUmSpJSUFGW/Jk6cqNJecT6rAwcOlGQymfTHH3+oHD9/\n/rzUokULSSaTSb6+vkW/OILwP+IZP0EoJ0ePHiU4OJhq1aqxYcMGlZmyDRo0YPPmzejp6XH16lXO\nnDkDQFxcHHv37kVNTY1169bRqFEjZZ22bduydOnSIsehpqbG6tWrGTt2rPK2b3Z2Nrdu3WLr1q2M\nGTOGDh06sGzZMlJSUgrd7u7du0lISEAmk7Fq1SqV0cKWLVuyYcMG1NTUOHLkCA8fPsxTf/DgwdSv\nXx8APT09KlWqRFRUFHv37kVLS4t169bRtGlT5fnGxsasXLmSWrVq4e/vX6i18J48eUJERAQ6Ojos\nWLBAZZRTX1+fGTNmAJCcnExUVFSe+pqamjg7OytHI+HFjNEPP/wQgJs3byqPHz9+nIiICOrXr8+v\nv/6Krq4uANra2vz4448qI0VF9fvvvzN06FCVf4MHD6Znz5506tQJT09P9PT0WLVqlcrt+czMTDZt\n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\n", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], + "outputs": [], "source": [ "plot_with_legend(\n", " cutoffs,\n", @@ -1118,29 +870,11 @@ " log=True,\n", ")" ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [] } ], "metadata": { "kernelspec": { - "display_name": "Python 3", + "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, @@ -1154,9 +888,9 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.6.1" + "version": "3.13.7" } }, "nbformat": 4, - "nbformat_minor": 2 + "nbformat_minor": 4 } diff --git a/storing-images/storing_images.py b/storing-images/storing_images.py index 38d7459ee7..b966655f8a 100644 --- a/storing-images/storing_images.py +++ b/storing-images/storing_images.py @@ -288,7 +288,7 @@ def plot_with_legend( ) all_plots = [] - for data, label in zip(y_data, legend_labels): + for data, label in zip(y_data, legend_labels, strict=False): if log: (temp,) = plt.loglog(x_range, data, label=label) else: diff --git a/structural-pattern-matching/fetcher.py b/structural-pattern-matching/fetcher.py index 98d21ce9db..f27218cc12 100644 --- a/structural-pattern-matching/fetcher.py +++ b/structural-pattern-matching/fetcher.py @@ -11,8 +11,8 @@ def fetch(url): match connection.getresponse(): case HTTPResponse(status=code) if code >= 400: raise ValueError("Failed to fetch URL") - case HTTPResponse(status=code) as resp if ( - code >= 300 and (redirect := resp.getheader("Location")) + case HTTPResponse(status=code) as resp if code >= 300 and ( + redirect := resp.getheader("Location") ): return fetch(redirect) case HTTPResponse(status=code) as resp if code >= 200: diff --git a/structural-pattern-matching/guessing_game.py b/structural-pattern-matching/guessing_game.py index 333524320c..e1094c004a 100644 --- a/structural-pattern-matching/guessing_game.py +++ b/structural-pattern-matching/guessing_game.py @@ -2,9 +2,9 @@ MIN, MAX = 1, 100 MAX_TRIES = 5 -PROMPT_1 = f"\N{mage} Guess a number between {MIN} and {MAX}: " -PROMPT_2 = "\N{mage} Try again: " -BYE = "Bye \N{waving hand sign}" +PROMPT_1 = f"\N{MAGE} Guess a number between {MIN} and {MAX}: " +PROMPT_2 = "\N{MAGE} Try again: " +BYE = "Bye \N{WAVING HAND SIGN}" def main(): @@ -39,9 +39,9 @@ def play_game(): prompt = PROMPT_2 print(f"Too high! {num_tries} tries left.") case _: - print("You won \N{party popper}") + print("You won \N{PARTY POPPER}") return - print("You lost \N{pensive face}") + print("You lost \N{PENSIVE FACE}") def want_again(): diff --git a/structural-pattern-matching/issue_comments.py b/structural-pattern-matching/issue_comments.py index ebc6a622ad..df781a011f 100644 --- a/structural-pattern-matching/issue_comments.py +++ b/structural-pattern-matching/issue_comments.py @@ -18,10 +18,7 @@ class Comment: @property def footer(self): - return ( - f"Comment by [{self.user}]({self.user_url})" - f" on [{self.when}]({self.url})" - ) + return f"Comment by [{self.user}]({self.user_url}) on [{self.when}]({self.url})" def render(self): return Panel( diff --git a/structural-pattern-matching/repl.py b/structural-pattern-matching/repl.py index 7e4bb0e823..4afee133c1 100644 --- a/structural-pattern-matching/repl.py +++ b/structural-pattern-matching/repl.py @@ -2,7 +2,7 @@ import sys import traceback -PROMPT = "\N{snake} " +PROMPT = "\N{SNAKE} " COMMANDS = ("help", "exit", "quit") diff --git a/thread-safety-locks/bank_deadlock.py b/thread-safety-locks/bank_deadlock.py index d079dab54f..c8a8a72f05 100644 --- a/thread-safety-locks/bank_deadlock.py +++ b/thread-safety-locks/bank_deadlock.py @@ -15,8 +15,7 @@ def deposit(self, amount): ) with self.lock: print( - f"Thread {threading.current_thread().name} " - "acquired lock for deposit()" + f"Thread {threading.current_thread().name} acquired lock for deposit()" ) time.sleep(0.1) self._update_balance(amount) diff --git a/thread-safety-locks/bank_rlock.py b/thread-safety-locks/bank_rlock.py index 280c71e849..01aefb664e 100644 --- a/thread-safety-locks/bank_rlock.py +++ b/thread-safety-locks/bank_rlock.py @@ -15,8 +15,7 @@ def deposit(self, amount): ) with self.lock: print( - f"Thread {threading.current_thread().name} " - "acquired lock for .deposit()" + f"Thread {threading.current_thread().name} acquired lock for .deposit()" ) time.sleep(0.1) self._update_balance(amount) diff --git a/tic-tac-toe-ai-python/source_code_bonus/tic-tac-toe/frontends/browser/renderers.py b/tic-tac-toe-ai-python/source_code_bonus/tic-tac-toe/frontends/browser/renderers.py index 4742d0db08..e7a952614d 100644 --- a/tic-tac-toe-ai-python/source_code_bonus/tic-tac-toe/frontends/browser/renderers.py +++ b/tic-tac-toe-ai-python/source_code_bonus/tic-tac-toe/frontends/browser/renderers.py @@ -15,11 +15,11 @@ def render(self, game_state: GameState) -> None: for select in document.querySelectorAll("select"): select.removeAttribute("disabled") if game_state.winner: - status.innerHTML = f"{game_state.winner} wins \N{party popper}" + status.innerHTML = f"{game_state.winner} wins \N{PARTY POPPER}" for i in game_state.winning_cells: button = document.querySelector(f"[data-id='{i}'] text") button.classList.add("win") elif game_state.tie: - status.innerHTML = "Tie \N{neutral face}" + status.innerHTML = "Tie \N{NEUTRAL FACE}" else: document.querySelector("#status").innerHTML = "" diff --git a/tic-tac-toe-ai-python/source_code_bonus/tic-tac-toe/frontends/browser/script.py b/tic-tac-toe-ai-python/source_code_bonus/tic-tac-toe/frontends/browser/script.py index 6855c60198..6cd8432a2a 100644 --- a/tic-tac-toe-ai-python/source_code_bonus/tic-tac-toe/frontends/browser/script.py +++ b/tic-tac-toe-ai-python/source_code_bonus/tic-tac-toe/frontends/browser/script.py @@ -15,7 +15,6 @@ async def main() -> None: - player_x = document.querySelector("#playerX").value player_o = document.querySelector("#playerO").value diff --git a/tic-tac-toe-ai-python/source_code_bonus/tic-tac-toe/frontends/console/renderers.py b/tic-tac-toe-ai-python/source_code_bonus/tic-tac-toe/frontends/console/renderers.py index 9844289b79..8c9e75e5dd 100644 --- a/tic-tac-toe-ai-python/source_code_bonus/tic-tac-toe/frontends/console/renderers.py +++ b/tic-tac-toe-ai-python/source_code_bonus/tic-tac-toe/frontends/console/renderers.py @@ -10,11 +10,11 @@ def render(self, game_state: GameState) -> None: clear_screen() if game_state.winner: print_blinking(game_state.grid.cells, game_state.winning_cells) - print(f"{game_state.winner} wins \N{party popper}") + print(f"{game_state.winner} wins \N{PARTY POPPER}") else: print_solid(game_state.grid.cells) if game_state.tie: - print("No one wins this time \N{neutral face}") + print("No one wins this time \N{NEUTRAL FACE}") def clear_screen() -> None: diff --git a/tic-tac-toe-ai-python/source_code_bonus/tic-tac-toe/frontends/window/renderers.py b/tic-tac-toe-ai-python/source_code_bonus/tic-tac-toe/frontends/window/renderers.py index 46a2aeeace..9ec553ca1a 100644 --- a/tic-tac-toe-ai-python/source_code_bonus/tic-tac-toe/frontends/window/renderers.py +++ b/tic-tac-toe-ai-python/source_code_bonus/tic-tac-toe/frontends/window/renderers.py @@ -29,13 +29,15 @@ def __init__(self, window: Window) -> None: self.window = window def render(self, game_state: GameState) -> None: - for label, button in zip(game_state.grid.cells, self.window.buttons): + for label, button in zip( + game_state.grid.cells, self.window.buttons, strict=False + ): button.config(text=label) if game_state.winner: - self.window.title(f"{game_state.winner} wins \N{party popper}") + self.window.title(f"{game_state.winner} wins \N{PARTY POPPER}") bold_style = ttk.Style() bold_style.configure("Bold.TButton", font=(None, 9, "bold")) for i in game_state.winning_cells: self.window.buttons[i].config(style="Bold.TButton") elif game_state.tie: - self.window.title("Tie \N{neutral face}") + self.window.title("Tie \N{NEUTRAL FACE}") diff --git a/tic-tac-toe-ai-python/source_code_final/tic-tac-toe/frontends/console/renderers.py b/tic-tac-toe-ai-python/source_code_final/tic-tac-toe/frontends/console/renderers.py index 9844289b79..8c9e75e5dd 100644 --- a/tic-tac-toe-ai-python/source_code_final/tic-tac-toe/frontends/console/renderers.py +++ b/tic-tac-toe-ai-python/source_code_final/tic-tac-toe/frontends/console/renderers.py @@ -10,11 +10,11 @@ def render(self, game_state: GameState) -> None: clear_screen() if game_state.winner: print_blinking(game_state.grid.cells, game_state.winning_cells) - print(f"{game_state.winner} wins \N{party popper}") + print(f"{game_state.winner} wins \N{PARTY POPPER}") else: print_solid(game_state.grid.cells) if game_state.tie: - print("No one wins this time \N{neutral face}") + print("No one wins this time \N{NEUTRAL FACE}") def clear_screen() -> None: diff --git a/tic-tac-toe-ai-python/source_code_step_3/tic-tac-toe/frontends/console/renderers.py b/tic-tac-toe-ai-python/source_code_step_3/tic-tac-toe/frontends/console/renderers.py index 9844289b79..8c9e75e5dd 100644 --- a/tic-tac-toe-ai-python/source_code_step_3/tic-tac-toe/frontends/console/renderers.py +++ b/tic-tac-toe-ai-python/source_code_step_3/tic-tac-toe/frontends/console/renderers.py @@ -10,11 +10,11 @@ def render(self, game_state: GameState) -> None: clear_screen() if game_state.winner: print_blinking(game_state.grid.cells, game_state.winning_cells) - print(f"{game_state.winner} wins \N{party popper}") + print(f"{game_state.winner} wins \N{PARTY POPPER}") else: print_solid(game_state.grid.cells) if game_state.tie: - print("No one wins this time \N{neutral face}") + print("No one wins this time \N{NEUTRAL FACE}") def clear_screen() -> None: diff --git a/top-python-game-engines/adventurelib/adventurelib_basic.py b/top-python-game-engines/adventurelib/adventurelib_basic.py index 6121dc1a35..db1a8f4c39 100644 --- a/top-python-game-engines/adventurelib/adventurelib_basic.py +++ b/top-python-game-engines/adventurelib/adventurelib_basic.py @@ -53,7 +53,6 @@ # Define functions to use items def unlock_living_room(current_room): - if current_room == living_room: print("You unlock the door.") current_room.locked["east"] = False @@ -133,7 +132,6 @@ def look(): @adv.when("look at ITEM") @adv.when("inspect ITEM") def look_at(item: str): - # Check if the item is in your inventory or not obj = inventory.find(item) if not obj: diff --git a/top-python-game-engines/adventurelib/adventurelib_game.py b/top-python-game-engines/adventurelib/adventurelib_game.py index 1bb8a013db..a7d6798a79 100644 --- a/top-python-game-engines/adventurelib/adventurelib_game.py +++ b/top-python-game-engines/adventurelib/adventurelib_game.py @@ -277,7 +277,6 @@ def answer_riddle(): @adv.when("fight CHARACTER", context="giant") def fight_giant(character: str): - global giant_hit_points, hit_points sword = inventory.find("sword") @@ -316,7 +315,6 @@ def fight_giant(character: str): def print_giant_condition(): - if giant_hit_points < 10: print("The giant staggers, his eyes unfocused.") elif giant_hit_points < 20: @@ -330,7 +328,6 @@ def print_giant_condition(): def print_player_condition(): - if hit_points < 4: print("Your eyes lose focus on the giant as you sway unsteadily.") elif hit_points < 8: @@ -410,7 +407,6 @@ def flee(): @adv.when("adios") @adv.when("later") def goodbye(): - # Are you fighting the giant? if adv.get_context() == "giant": # Not so fast! diff --git a/top-python-game-engines/adventurelib/adventurelib_game_rooms.py b/top-python-game-engines/adventurelib/adventurelib_game_rooms.py index dddab2c9d6..e5d3784d76 100644 --- a/top-python-game-engines/adventurelib/adventurelib_game_rooms.py +++ b/top-python-game-engines/adventurelib/adventurelib_game_rooms.py @@ -15,7 +15,6 @@ # Create a subclass of Rooms to track some custom properties class GameArea(adv.Room): def __init__(self, description: str): - super().__init__(description) # All areas can have locked exits diff --git a/top-python-game-engines/pygame/pygame_basic.py b/top-python-game-engines/pygame/pygame_basic.py index 4326273daf..d897856f5f 100644 --- a/top-python-game-engines/pygame/pygame_basic.py +++ b/top-python-game-engines/pygame/pygame_basic.py @@ -25,7 +25,6 @@ # Run until the user asks to quit running = True while running: - # Did the user click the window close button? for event in pygame.event.get(): if event.type == pygame.QUIT: diff --git a/top-python-game-engines/pygame/pygame_game.py b/top-python-game-engines/pygame/pygame_game.py index 29d0a4d000..4b07de8691 100644 --- a/top-python-game-engines/pygame/pygame_game.py +++ b/top-python-game-engines/pygame/pygame_game.py @@ -109,7 +109,6 @@ def __init__(self): # Run until you get to an end condition running = True while running: - # Did the user click the window close button? for event in pygame.event.get(): if event.type == pygame.QUIT: diff --git a/torchaudio/speech.py b/torchaudio/speech.py index 106f89ba81..68f403b292 100644 --- a/torchaudio/speech.py +++ b/torchaudio/speech.py @@ -14,12 +14,12 @@ def replace(obj, **kwargs): from torch import Tensor, clamp, randn_like from torch.nn import functional as F from torch.utils.data import Dataset +from torchaudio.datasets import SPEECHCOMMANDS +from torchaudio.datasets.speechcommands import FOLDER_IN_ARCHIVE from tqdm import tqdm import torchaudio from torchaudio import functional as AF -from torchaudio.datasets import SPEECHCOMMANDS -from torchaudio.datasets.speechcommands import FOLDER_IN_ARCHIVE class SpeechSample(NamedTuple): diff --git a/typer-cli-python/source_code_final/rptodo/cli.py b/typer-cli-python/source_code_final/rptodo/cli.py index 9e9d84944a..9d97f4c38e 100644 --- a/typer-cli-python/source_code_final/rptodo/cli.py +++ b/typer-cli-python/source_code_final/rptodo/cli.py @@ -72,7 +72,7 @@ def add( raise typer.Exit(1) else: typer.secho( - f"""to-do: "{todo['Description']}" was added """ + f"""to-do: "{todo["Description"]}" was added """ f"""with priority: {priority}""", fg=typer.colors.GREEN, ) @@ -123,7 +123,7 @@ def set_done(todo_id: int = typer.Argument(...)) -> None: raise typer.Exit(1) else: typer.secho( - f"""to-do # {todo_id} "{todo['Description']}" completed!""", + f"""to-do # {todo_id} "{todo["Description"]}" completed!""", fg=typer.colors.GREEN, ) @@ -212,6 +212,6 @@ def main( help="Show the application's version and exit.", callback=_version_callback, is_eager=True, - ) + ), ) -> None: return diff --git a/typer-cli-python/source_code_step_2/rptodo/cli.py b/typer-cli-python/source_code_step_2/rptodo/cli.py index d9733cb8dd..f8918a0c05 100644 --- a/typer-cli-python/source_code_step_2/rptodo/cli.py +++ b/typer-cli-python/source_code_step_2/rptodo/cli.py @@ -24,6 +24,6 @@ def main( help="Show the application's version and exit.", callback=_version_callback, is_eager=True, - ) + ), ) -> None: return diff --git a/typer-cli-python/source_code_step_3/rptodo/cli.py b/typer-cli-python/source_code_step_3/rptodo/cli.py index 89531fcd5b..62a529d50e 100644 --- a/typer-cli-python/source_code_step_3/rptodo/cli.py +++ b/typer-cli-python/source_code_step_3/rptodo/cli.py @@ -53,6 +53,6 @@ def main( help="Show the application's version and exit.", callback=_version_callback, is_eager=True, - ) + ), ) -> None: return diff --git a/typer-cli-python/source_code_step_4/rptodo/cli.py b/typer-cli-python/source_code_step_4/rptodo/cli.py index 89531fcd5b..62a529d50e 100644 --- a/typer-cli-python/source_code_step_4/rptodo/cli.py +++ b/typer-cli-python/source_code_step_4/rptodo/cli.py @@ -53,6 +53,6 @@ def main( help="Show the application's version and exit.", callback=_version_callback, is_eager=True, - ) + ), ) -> None: return diff --git a/typer-cli-python/source_code_step_5/rptodo/cli.py b/typer-cli-python/source_code_step_5/rptodo/cli.py index b3277ecc12..981f50f628 100644 --- a/typer-cli-python/source_code_step_5/rptodo/cli.py +++ b/typer-cli-python/source_code_step_5/rptodo/cli.py @@ -72,7 +72,7 @@ def add( raise typer.Exit(1) else: typer.secho( - f"""to-do: "{todo['Description']}" was added """ + f"""to-do: "{todo["Description"]}" was added """ f"""with priority: {priority}""", fg=typer.colors.GREEN, ) @@ -125,6 +125,6 @@ def main( help="Show the application's version and exit.", callback=_version_callback, is_eager=True, - ) + ), ) -> None: return diff --git a/typer-cli-python/source_code_step_6/rptodo/cli.py b/typer-cli-python/source_code_step_6/rptodo/cli.py index 3956d0561c..dc292623c3 100644 --- a/typer-cli-python/source_code_step_6/rptodo/cli.py +++ b/typer-cli-python/source_code_step_6/rptodo/cli.py @@ -72,7 +72,7 @@ def add( raise typer.Exit(1) else: typer.secho( - f"""to-do: "{todo['Description']}" was added """ + f"""to-do: "{todo["Description"]}" was added """ f"""with priority: {priority}""", fg=typer.colors.GREEN, ) @@ -123,7 +123,7 @@ def set_done(todo_id: int = typer.Argument(...)) -> None: raise typer.Exit(1) else: typer.secho( - f"""to-do # {todo_id} "{todo['Description']}" completed!""", + f"""to-do # {todo_id} "{todo["Description"]}" completed!""", fg=typer.colors.GREEN, ) @@ -143,6 +143,6 @@ def main( help="Show the application's version and exit.", callback=_version_callback, is_eager=True, - ) + ), ) -> None: return diff --git a/typer-cli-python/source_code_step_7/rptodo/cli.py b/typer-cli-python/source_code_step_7/rptodo/cli.py index 9e9d84944a..9d97f4c38e 100644 --- a/typer-cli-python/source_code_step_7/rptodo/cli.py +++ b/typer-cli-python/source_code_step_7/rptodo/cli.py @@ -72,7 +72,7 @@ def add( raise typer.Exit(1) else: typer.secho( - f"""to-do: "{todo['Description']}" was added """ + f"""to-do: "{todo["Description"]}" was added """ f"""with priority: {priority}""", fg=typer.colors.GREEN, ) @@ -123,7 +123,7 @@ def set_done(todo_id: int = typer.Argument(...)) -> None: raise typer.Exit(1) else: typer.secho( - f"""to-do # {todo_id} "{todo['Description']}" completed!""", + f"""to-do # {todo_id} "{todo["Description"]}" completed!""", fg=typer.colors.GREEN, ) @@ -212,6 +212,6 @@ def main( help="Show the application's version and exit.", callback=_version_callback, is_eager=True, - ) + ), ) -> None: return diff --git a/wordcount/tests/realpython/models.py b/wordcount/tests/realpython/models.py index c30e1f99a6..3b7404f7f5 100644 --- a/wordcount/tests/realpython/models.py +++ b/wordcount/tests/realpython/models.py @@ -121,8 +121,10 @@ def update(self, test: Test) -> None: node[test.id] = {status.value: self.num_failures(test) + 1} def num_failures(self, test: Test) -> int: - match self.root.get("statuses", {}).get(str(test.task_number), {}).get( - test.id + match ( + self.root.get("statuses", {}) + .get(str(test.task_number), {}) + .get(test.id) ): case None | "skipped" | "passed": return 0