TODO

ToRead

PyNEngUK

New book:

  • update git images (latest git version)

New site:

  • fix PDF images/links
  • ? offline docs mode?
  • maybe python package pynenguk (docs, quiz, pyneng)?
  • readthedocs can host mkdocs (can it generate PDF?)
  • add examples to site (for search)?

Waiting for:

  • tasks unification (en messages)
  • tests unification (en messages)
  • solutions
  • pyneng-cli

Book

  • update code output to Python 3.11!
  • Translation
  • Tasks https://github.com/natenka/pyneng-tasks-uk

Topic (blog?)

  • python package
  • python project code org
  • code org in single script
  • functions (as in adv)
  • textual
  • pydantic

Додати тему: як організувати код у проекті. На основі того, що вже записала, але без прив’язки до PyPi та великих проектів. Вигадати приклад реорганізації як було в лекції, два скрипти, виділяємо загальне, робимо import package.

Там же поговорити про функції, приклади рефакторингу з великої функції більш дрібні. І переробити одну з прив’язкою умовно до команди та парсингу (+ threads) на три окремі функції: відправити show, threads, а потім вже об’єднуємо в специфіку.)

pyneng-quiz

  • rewrite with new version textual
  • language menu

pyneng-cli

  • remove course options
  • translate
  • add lang selection for task/test/chapter update (add lang_repo_dict in __init__)

AdvPyNEng tasks

  • переделать тесты type annotations на запуск mypy с флагами?
  • 4.3 запись в yaml с идентификацией устройств. Явно написать что надо не только cli создать с click, но и написать код функций
  • 8.2 невнятно написано про вызов функции что будет ошибка до выполнения - она будет и после, только другая
  • улучшить описание ошибки в тесте 8.4/8.4a когда подключений меньше на 1
  • 10.1 не хватает тестов для str/repr
  • 18.2 написать что надо использовать async subprocess
  • тест 12.5 не проверяет что классы возвращаются
  • тест 12.3a не проверяет, что генерируется исключение KeyError для несуществующих ключей
  • Добавиь в раздел по pytest xfail

в 12.3a не учитывается один вариант работы со словарем:

In [3]: t1.topology
Out[3]:
{('R1', 'Eth0/0'): ('SW1', 'Eth0/1'),
 ('R2', 'Eth0/0'): ('SW1', 'Eth0/2'),
 ('R2', 'Eth0/1'): ('SW2', 'Eth0/11'),
 ('R3', 'Eth0/0'): ('SW1', 'Eth0/3'),
 ('R3', 'Eth0/1'): ('R4', 'Eth0/0'),
 ('R3', 'Eth0/2'): ('R5', 'Eth0/0')}

In [5]: t1[('SW1', 'Eth0/3')] = ("SW2", "Eth0/0")

In [6]: t1.topology
Out[6]:
{('R1', 'Eth0/0'): ('SW1', 'Eth0/1'),
 ('R2', 'Eth0/0'): ('SW1', 'Eth0/2'),
 ('R2', 'Eth0/1'): ('SW2', 'Eth0/11'),
 ('R3', 'Eth0/0'): ('SW1', 'Eth0/3'),
 ('R3', 'Eth0/1'): ('R4', 'Eth0/0'),
 ('R3', 'Eth0/2'): ('R5', 'Eth0/0'),
 ('SW1', 'Eth0/3'): ('SW2', 'Eth0/0')}