egekit-study 1.2.1__tar.gz → 1.2.2__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {egekit_study-1.2.1 → egekit_study-1.2.2}/GUIDE.html +7 -5
- {egekit_study-1.2.1 → egekit_study-1.2.2}/GUIDE.md +6 -4
- {egekit_study-1.2.1 → egekit_study-1.2.2}/PKG-INFO +8 -7
- {egekit_study-1.2.1 → egekit_study-1.2.2}/README.md +7 -6
- {egekit_study-1.2.1 → egekit_study-1.2.2}/RUSSIAN_NAMES.md +1 -1
- {egekit_study-1.2.1 → egekit_study-1.2.2}/VALIDATION.md +8 -1
- {egekit_study-1.2.1 → egekit_study-1.2.2}/build_docs.py +2 -2
- {egekit_study-1.2.1 → egekit_study-1.2.2}/egekit.py +7 -5
- {egekit_study-1.2.1 → egekit_study-1.2.2}/egekit_study.egg-info/PKG-INFO +8 -7
- {egekit_study-1.2.1 → egekit_study-1.2.2}/pyproject.toml +1 -1
- {egekit_study-1.2.1 → egekit_study-1.2.2}/tests/test_manual.py +8 -1
- {egekit_study-1.2.1 → egekit_study-1.2.2}/LICENSE +0 -0
- {egekit_study-1.2.1 → egekit_study-1.2.2}/MANIFEST.in +0 -0
- {egekit_study-1.2.1 → egekit_study-1.2.2}/egekit_study.egg-info/SOURCES.txt +0 -0
- {egekit_study-1.2.1 → egekit_study-1.2.2}/egekit_study.egg-info/dependency_links.txt +0 -0
- {egekit_study-1.2.1 → egekit_study-1.2.2}/egekit_study.egg-info/top_level.txt +0 -0
- {egekit_study-1.2.1 → egekit_study-1.2.2}/examples.py +0 -0
- {egekit_study-1.2.1 → egekit_study-1.2.2}/examples_man.py +0 -0
- {egekit_study-1.2.1 → egekit_study-1.2.2}/examples_ru.py +0 -0
- {egekit_study-1.2.1 → egekit_study-1.2.2}/setup.cfg +0 -0
- {egekit_study-1.2.1 → egekit_study-1.2.2}/tests/test_egekit.py +0 -0
- {egekit_study-1.2.1 → egekit_study-1.2.2}/tests/test_russian_names.py +0 -0
- {egekit_study-1.2.1 → egekit_study-1.2.2}/verify_official.py +0 -0
- {egekit_study-1.2.1 → egekit_study-1.2.2}//320/265/320/263/321/215.py" +0 -0
|
@@ -4,14 +4,14 @@
|
|
|
4
4
|
:root{color-scheme:light;--ink:#172a3a;--blue:#075c80;--line:#dbe5ea;--pale:#edf5f8}
|
|
5
5
|
*{box-sizing:border-box}body{margin:0;background:#f5f7f9;color:var(--ink);font:16px/1.65 system-ui,sans-serif}header{background:#122d40;color:white;padding:48px max(24px,calc((100vw - 1100px)/2))}header p{max-width:870px;color:#d4e7ef}h1{font-size:clamp(30px,5vw,48px);line-height:1.15;margin:8px 0 24px}h2{font-size:26px;margin:44px 0 18px}h3{margin:0;color:var(--blue);font-size:21px;overflow-wrap:anywhere}.eyebrow{letter-spacing:2px;font-size:12px;text-transform:uppercase}.wrap{max-width:1150px;margin:auto;padding:0 24px 64px}a{color:var(--blue)}header a{color:#bfe5f8}.intro,article{background:white;border:1px solid var(--line);padding:24px;border-radius:12px;margin:14px 0}pre{white-space:pre-wrap;overflow-wrap:anywhere;background:#eef3f6;border-radius:8px;padding:16px;font-size:14px;line-height:1.6}code{font-family:ui-monospace,Consolas,monospace}table{width:100%;border-collapse:collapse;font-size:14px}th,td{text-align:left;border-bottom:1px solid var(--line);padding:12px;vertical-align:top}th{background:var(--pale)}.tablewrap{overflow-x:auto}td:first-child{font-weight:bold;min-width:40px}td code{overflow-wrap:anywhere}.controls{position:sticky;top:0;background:#f5f7f9f2;border-bottom:1px solid var(--line);padding:18px 0;z-index:1;display:flex;flex-wrap:wrap;gap:12px;align-items:end}.control{display:flex;flex-direction:column;font-size:13px;font-weight:600}.search{flex:1;min-width:220px}input,select{font:inherit;background:white;border:1px solid #9cb5c3;border-radius:6px;padding:10px;color:var(--ink);max-width:100%}input:focus,select:focus{outline:3px solid #a0d9ee}.tags{font-size:13px;color:#49687b;margin:6px 0 14px}.example{border-left:3px solid #1c8cad;padding-left:14px}li{margin:12px 0}.muted{color:#587081;font-size:14px}article[hidden]{display:none}.count{min-width:120px;font-size:13px;align-self:center}details{background:white;border:1px solid var(--line);padding:18px;border-radius:10px}summary{cursor:pointer;font-weight:600}@media print{.controls{display:none}body{background:white}header{padding:20px;color:#172a3a;background:white}header p{color:#172a3a}article{break-inside:avoid}details>*{display:block}}@media(max-width:600px){.wrap{padding:0 14px 40px}header{padding:30px 20px}article{padding:16px}td,th{padding:8px}}
|
|
6
6
|
</style>
|
|
7
|
-
<header><div class="eyebrow">Python 3.10+ · версия 1.2.
|
|
7
|
+
<header><div class="eyebrow">Python 3.10+ · версия 1.2.2 · без зависимостей</div><h1>EGEKit<br>112 функций для подготовки к ЕГЭ</h1><p>Учебная библиотека Python 3.10+ без внешних зависимостей. 112 функций для тем всех 27 номеров. Это инструменты и шаблоны: условие, диапазон и критерий проверки переносите из конкретной задачи. Автоматического решения любой формулировки и гарантии всех будущих подтипов здесь нет. Все функции доступны под понятными русскими именами; английские варианты также работают.</p><a href="#catalog">Перейти к справочнику ↓</a></header>
|
|
8
8
|
<main class="wrap"><section class="intro"><h2 style="margin-top:0">Начало работы</h2><p>Положите <code>egekit.py</code> и <code>егэ.py</code> рядом со своим <code>solution.py</code> либо установите пакет egekit-study версии 1.2.0 и новее. Установка не нужна. Запустите <code>python solution.py</code> в терминале этой папки. Полная инструкция — в README.md.</p><pre><code>from егэ import *
|
|
9
9
|
|
|
10
10
|
print(делители(120))
|
|
11
11
|
print(перевести_в_систему(125, 3))
|
|
12
12
|
man(делители) # Назначение, параметры и пример
|
|
13
13
|
man(17) # Функции для задания 17
|
|
14
|
-
man(по_заданиям=
|
|
14
|
+
man(по_заданиям=False) # При необходимости — алфавитный список
|
|
15
15
|
man(поиск='простые') # Поиск в справочнике
|
|
16
16
|
</code></pre><p>Примеры по всем номерам: <code>python examples_ru.py</code>. Отдельный номер: <code>python examples_ru.py --year 2027 23</code>.</p></section>
|
|
17
17
|
<h2>Номера и основные функции</h2><p>Базовая нумерация — 2026. В правом столбце тем указаны изменения проекта ФИПИ 2027.</p><div class="tablewrap"><table><thead><tr><th>№</th><th>Тема 2026</th><th>Проект 2027</th><th>С чего начать</th></tr></thead><tbody><tr><td>1</td><td>Графы и соответствие вершин</td><td>—</td><td><code>сопоставить_вершины_графов, кратчайшие_расстояния</code></td></tr><tr><td>2</td><td>Логика и таблицы истинности</td><td>—</td><td><code>таблица_истинности, определить_столбцы_таблицы, следование</code></td></tr><tr><td>3</td><td>Таблицы и базы данных</td><td>—</td><td><code>прочитать_xlsx, прочитать_ods, соединить_таблицы, сгруппировать_и_вычислить, запрос_к_базе</code></td></tr><tr><td>4</td><td>Коды и условие Фано</td><td>—</td><td><code>проверка_условия_Фано, допустимые_кодовые_слова, коды_Хаффмана, длина_кодированного_сообщения</code></td></tr><tr><td>5</td><td>Алгоритмы преобразования чисел</td><td>—</td><td><code>преобразовать_двоичную_запись, перевести_в_систему, найти_значения</code></td></tr><tr><td>6</td><td>Черепаха и геометрия</td><td>—</td><td><code>вершины_черепахи, внутренние_точки_по_Пику, целые_точки_в_фигурах</code></td></tr><tr><td>7</td><td>Изображения, звук и передача данных</td><td>—</td><td><code>объём_изображения_в_битах, объём_звука_в_битах, время_передачи</code></td></tr><tr><td>8</td><td>Комбинаторика и порядок слов</td><td>—</td><td><code>количество_слов, номер_слова, слово_по_номеру, различные_перестановки</code></td></tr><tr><td>9</td><td>Обработка строк таблицы</td><td>—</td><td><code>характеристики_строки, отобрать_строки</code></td></tr><tr><td>10</td><td>Поиск в текстовом документе</td><td>IPv4 и маски сетей</td><td><code>текст_из_docx, количество_вхождений</code></td></tr><tr><td>11</td><td>Объём хранения идентификаторов</td><td>—</td><td><code>бит_на_символ, объём_хранения_в_байтах</code></td></tr><tr><td>12</td><td>Редактор и машина Тьюринга</td><td>—</td><td><code>редактор_строк, машина_Тьюринга</code></td></tr><tr><td>13</td><td>IPv4 и маски сетей</td><td>Исполнители и количество программ</td><td><code>сведения_о_сети, количество_ip_по_условию, распределение_ip_по_единицам</code></td></tr><tr><td>14</td><td>Системы счисления</td><td>—</td><td><code>перевести_в_систему, перевести_из_системы, цифры_числа</code></td></tr><tr><td>15</td><td>Логические условия и параметры</td><td>—</td><td><code>следование, допустимые_параметры, принадлежит_интервалу</code></td></tr><tr><td>16</td><td>Рекурсия и рекуррентные формулы</td><td>—</td><td><code>вычислить_рекуррентную_функцию, рекурсивная_функция</code></td></tr><tr><td>17</td><td>Последовательности, пары и тройки</td><td>—</td><td><code>прочитать_числа, соседние_группы, статистика_соседних_групп</code></td></tr><tr><td>18</td><td>Робот и пути по таблице</td><td>—</td><td><code>суммы_путей_робота</code></td></tr><tr><td>19</td><td>Игры: первый ход</td><td>—</td><td><code>анализатор_игры</code></td></tr><tr><td>20</td><td>Игры: стратегия победы</td><td>—</td><td><code>анализатор_игры</code></td></tr><tr><td>21</td><td>Игры: неизбежное поражение</td><td>—</td><td><code>анализатор_игры</code></td></tr><tr><td>22</td><td>Параллельные процессы и зависимости</td><td>—</td><td><code>процессы_из_таблицы, расписание_процессов, активные_процессы, максимум_одновременных_интервалов</code></td></tr><tr><td>23</td><td>Исполнители и количество программ</td><td>Пути в ориентированном графе</td><td><code>количество_программ, количество_программ_через_точки</code></td></tr><tr><td>24</td><td>Строки, подстроки и выражения</td><td>—</td><td><code>подстрока_не_более, подстрока_ровно, подстрока_не_менее, найти_по_регулярному_выражению</code></td></tr><tr><td>25</td><td>Делители, простые числа и маски</td><td>—</td><td><code>делители, разложить_на_простые, решето_простых, кратные_по_маске</code></td></tr><tr><td>26</td><td>Сортировка, выбор и моделирование</td><td>—</td><td><code>выбрать_файлы_для_архива, выбрать_непересекающиеся_интервалы, вложенные_коробки, свободные_места, очередь_обслуживания, журнал_резервных_копий</code></td></tr><tr><td>27</td><td>Кластеризация и алгоритмы анализа данных</td><td>Анализ данных: точки, признаки и энергия частиц</td><td><code>кластеры_по_расстоянию, центр_по_сумме_расстояний, кластеры_по_размаху_признака, центр_по_медиане_признака; дополнительно — префиксы, остатки, динамика</code></td></tr></tbody></table></div>
|
|
@@ -404,13 +404,14 @@ man(поиск='простые') # Поиск в справ
|
|
|
404
404
|
<p class="example"><strong>Пример:</strong> соседние_группы([1,2,3],2,lambda w:sum(w)>3). В отличие от всех пар берёт только соседние элементы.</p></article>
|
|
405
405
|
<article id="man" data-name="man" data-y26='[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27]' data-y27='[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27]'>
|
|
406
406
|
<h3>справка</h3><p class="muted">Английское имя: <code>man</code></p><div class="tags" data-tags></div>
|
|
407
|
-
<pre><code>справка(функция=None, *, задание=None, год=2026, поиск=None, листать=False, по_заданиям=
|
|
407
|
+
<pre><code>справка(функция=None, *, задание=None, год=2026, поиск=None, листать=False, по_заданиям=True)</code></pre><p>Справочник EGEKit в терминале: назначение, сигнатура, параметры, пример и номера заданий.
|
|
408
408
|
|
|
409
409
|
функция — объект функции либо её русское/английское имя строкой.
|
|
410
410
|
Без функции выводится список с краткими описаниями. Целое число первым
|
|
411
411
|
аргументом означает номер задания. задание и год фильтруют список;
|
|
412
412
|
поиск ищет текст в именах и описаниях; по_заданиям=True группирует список
|
|
413
|
-
по номерам 1–27 с названиями
|
|
413
|
+
по номерам 1–27 с названиями тем (режим по умолчанию).
|
|
414
|
+
по_заданиям=False включает алфавитный список. Каждый пункт показывает номера
|
|
414
415
|
заданий для выбранного года; листать=True открывает системный
|
|
415
416
|
просмотрщик через pydoc.pager (выход обычно клавишей q).
|
|
416
417
|
По умолчанию справка просто печатается, не требует действий и возвращает None.
|
|
@@ -418,7 +419,8 @@ man(поиск='простые') # Поиск в справ
|
|
|
418
419
|
|
|
419
420
|
</p>
|
|
420
421
|
<p class="example"><strong>Пример:</strong>
|
|
421
|
-
справка() #
|
|
422
|
+
справка() # Функции по заданиям от №1 до №27
|
|
423
|
+
справка(по_заданиям=False) # Алфавитный список
|
|
422
424
|
справка(по_заданиям=True) # Группы по заданиям 1–27
|
|
423
425
|
справка(делители) # Подробная справка о функции
|
|
424
426
|
справка('делители') # То же по строковому имени
|
|
@@ -13,7 +13,7 @@ print(делители(120))
|
|
|
13
13
|
print(перевести_в_систему(125, 3))
|
|
14
14
|
man(делители) # Назначение, параметры и пример
|
|
15
15
|
man(17) # Функции для задания 17
|
|
16
|
-
man(по_заданиям=
|
|
16
|
+
man(по_заданиям=False) # При необходимости — алфавитный список
|
|
17
17
|
man(поиск='простые') # Поиск в справочнике
|
|
18
18
|
|
|
19
19
|
```
|
|
@@ -1225,7 +1225,7 @@ FCFS-очередь к одинаковым серверам. arrivals — (пр
|
|
|
1225
1225
|
### справка
|
|
1226
1226
|
|
|
1227
1227
|
```python
|
|
1228
|
-
справка(функция=None, *, задание=None, год=2026, поиск=None, листать=False, по_заданиям=
|
|
1228
|
+
справка(функция=None, *, задание=None, год=2026, поиск=None, листать=False, по_заданиям=True)
|
|
1229
1229
|
```
|
|
1230
1230
|
|
|
1231
1231
|
Английское имя: `man`.
|
|
@@ -1238,14 +1238,16 @@ FCFS-очередь к одинаковым серверам. arrivals — (пр
|
|
|
1238
1238
|
Без функции выводится список с краткими описаниями. Целое число первым
|
|
1239
1239
|
аргументом означает номер задания. задание и год фильтруют список;
|
|
1240
1240
|
поиск ищет текст в именах и описаниях; по_заданиям=True группирует список
|
|
1241
|
-
по номерам 1–27 с названиями
|
|
1241
|
+
по номерам 1–27 с названиями тем (режим по умолчанию).
|
|
1242
|
+
по_заданиям=False включает алфавитный список. Каждый пункт показывает номера
|
|
1242
1243
|
заданий для выбранного года; листать=True открывает системный
|
|
1243
1244
|
просмотрщик через pydoc.pager (выход обычно клавишей q).
|
|
1244
1245
|
По умолчанию справка просто печатается, не требует действий и возвращает None.
|
|
1245
1246
|
Ничего не выполняет из переданной строки: имена берутся только из каталога.
|
|
1246
1247
|
|
|
1247
1248
|
Пример:
|
|
1248
|
-
справка() #
|
|
1249
|
+
справка() # Функции по заданиям от №1 до №27
|
|
1250
|
+
справка(по_заданиям=False) # Алфавитный список
|
|
1249
1251
|
справка(по_заданиям=True) # Группы по заданиям 1–27
|
|
1250
1252
|
справка(делители) # Подробная справка о функции
|
|
1251
1253
|
справка('делители') # То же по строковому имени
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: egekit-study
|
|
3
|
-
Version: 1.2.
|
|
3
|
+
Version: 1.2.2
|
|
4
4
|
Summary: Алгоритмические инструменты для подготовки к ЕГЭ по информатике
|
|
5
5
|
License-Expression: MIT
|
|
6
6
|
Requires-Python: >=3.10
|
|
@@ -10,7 +10,7 @@ Dynamic: license-file
|
|
|
10
10
|
|
|
11
11
|
# EGEKit — библиотека для подготовки к ЕГЭ по информатике
|
|
12
12
|
|
|
13
|
-
Версия 1.2.
|
|
13
|
+
Версия 1.2.2 · Python 3.10+ · 112 функций · внешние зависимости не нужны.
|
|
14
14
|
|
|
15
15
|
Библиотека охватывает темы всех 27 номеров: логика, базы данных, кодирование,
|
|
16
16
|
исполнители, комбинаторика, геометрия, сети, рекурсия, игры, строки,
|
|
@@ -181,22 +181,23 @@ python -m unittest discover -s tests -v
|
|
|
181
181
|
старых архивов. После публикации пользователи обновляют пакет через
|
|
182
182
|
`python -m pip install --upgrade ИМЯ_ВАШЕГО_ПАКЕТА`.
|
|
183
183
|
|
|
184
|
-
Готовые файлы для публикации версии 1.2.
|
|
184
|
+
Готовые файлы для публикации версии 1.2.2 находятся в папке dist. После
|
|
185
185
|
проверки `python -m twine check dist/*` их можно загрузить командой
|
|
186
186
|
`python -m twine upload dist/*`. Если меняете код, пересоберите пакет.
|
|
187
187
|
После публикации обновите установленный пакет:
|
|
188
188
|
`python -m pip install --upgrade egekit-study`.
|
|
189
189
|
|
|
190
|
-
## Номера заданий в справке: версия 1.2.
|
|
190
|
+
## Номера заданий в справке: версия 1.2.2
|
|
191
191
|
|
|
192
|
-
`man()`
|
|
192
|
+
`man()` по умолчанию группирует функции по номерам от №1 до №27 и подписывает у каждой функции номера заданий выбранного года. Для алфавитного списка: `man(по_заданиям=False)`.
|
|
193
193
|
`man(по_заданиям=True)` выводит группы с заголовками «ЗАДАНИЕ №1», «ЗАДАНИЕ
|
|
194
194
|
№2» и так далее. Общие инструменты вынесены в отдельный раздел. Функция,
|
|
195
195
|
подходящая нескольким номерам, появляется в каждой соответствующей группе.
|
|
196
196
|
|
|
197
197
|
```python
|
|
198
198
|
from егэ import *
|
|
199
|
-
man() #
|
|
199
|
+
man() # Разделы от задания №1 до №27
|
|
200
|
+
man(по_заданиям=False) # Алфавитный список с номерами
|
|
200
201
|
man(по_заданиям=True) # Группы по заданиям
|
|
201
202
|
man(17) # Только функции для №17
|
|
202
203
|
man(по_заданиям=True, год=2027) # Нумерация проекта 2027
|
|
@@ -204,4 +205,4 @@ man(по_заданиям=True, год=2027) # Нумерация проект
|
|
|
204
205
|
|
|
205
206
|
На установленной версии 1.2.0 эти новые параметры ещё не работают.
|
|
206
207
|
Для установки без ожидания обновления индекса PyPI можно установить
|
|
207
|
-
готовый файл dist/egekit_study-1.2.
|
|
208
|
+
готовый файл dist/egekit_study-1.2.2-py3-none-any.whl из этого архива.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# EGEKit — библиотека для подготовки к ЕГЭ по информатике
|
|
2
2
|
|
|
3
|
-
Версия 1.2.
|
|
3
|
+
Версия 1.2.2 · Python 3.10+ · 112 функций · внешние зависимости не нужны.
|
|
4
4
|
|
|
5
5
|
Библиотека охватывает темы всех 27 номеров: логика, базы данных, кодирование,
|
|
6
6
|
исполнители, комбинаторика, геометрия, сети, рекурсия, игры, строки,
|
|
@@ -171,22 +171,23 @@ python -m unittest discover -s tests -v
|
|
|
171
171
|
старых архивов. После публикации пользователи обновляют пакет через
|
|
172
172
|
`python -m pip install --upgrade ИМЯ_ВАШЕГО_ПАКЕТА`.
|
|
173
173
|
|
|
174
|
-
Готовые файлы для публикации версии 1.2.
|
|
174
|
+
Готовые файлы для публикации версии 1.2.2 находятся в папке dist. После
|
|
175
175
|
проверки `python -m twine check dist/*` их можно загрузить командой
|
|
176
176
|
`python -m twine upload dist/*`. Если меняете код, пересоберите пакет.
|
|
177
177
|
После публикации обновите установленный пакет:
|
|
178
178
|
`python -m pip install --upgrade egekit-study`.
|
|
179
179
|
|
|
180
|
-
## Номера заданий в справке: версия 1.2.
|
|
180
|
+
## Номера заданий в справке: версия 1.2.2
|
|
181
181
|
|
|
182
|
-
`man()`
|
|
182
|
+
`man()` по умолчанию группирует функции по номерам от №1 до №27 и подписывает у каждой функции номера заданий выбранного года. Для алфавитного списка: `man(по_заданиям=False)`.
|
|
183
183
|
`man(по_заданиям=True)` выводит группы с заголовками «ЗАДАНИЕ №1», «ЗАДАНИЕ
|
|
184
184
|
№2» и так далее. Общие инструменты вынесены в отдельный раздел. Функция,
|
|
185
185
|
подходящая нескольким номерам, появляется в каждой соответствующей группе.
|
|
186
186
|
|
|
187
187
|
```python
|
|
188
188
|
from егэ import *
|
|
189
|
-
man() #
|
|
189
|
+
man() # Разделы от задания №1 до №27
|
|
190
|
+
man(по_заданиям=False) # Алфавитный список с номерами
|
|
190
191
|
man(по_заданиям=True) # Группы по заданиям
|
|
191
192
|
man(17) # Только функции для №17
|
|
192
193
|
man(по_заданиям=True, год=2027) # Нумерация проекта 2027
|
|
@@ -194,4 +195,4 @@ man(по_заданиям=True, год=2027) # Нумерация проект
|
|
|
194
195
|
|
|
195
196
|
На установленной версии 1.2.0 эти новые параметры ещё не работают.
|
|
196
197
|
Для установки без ожидания обновления индекса PyPI можно установить
|
|
197
|
-
готовый файл dist/egekit_study-1.2.
|
|
198
|
+
готовый файл dist/egekit_study-1.2.2-py3-none-any.whl из этого архива.
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# Проверка EGEKit 1.2.
|
|
1
|
+
# Проверка EGEKit 1.2.2
|
|
2
2
|
|
|
3
3
|
Дата: 18 октября 2026 года. Среда проверки: Python 3.12.14, Linux.
|
|
4
4
|
Минимальная заявленная версия Python — 3.10 (отдельный запуск под 3.10 не выполнялся).
|
|
@@ -96,3 +96,10 @@ wheel установлен в отдельное чистое окружение
|
|
|
96
96
|
Два новых тестовых метода проверяют подписи у функций для обоих годов,
|
|
97
97
|
все 27 групп, отдельный раздел общих инструментов, фильтрацию по номеру,
|
|
98
98
|
поиск и пустую выдачу. Всего 24 тестовых метода проходят.
|
|
99
|
+
|
|
100
|
+
## Сортировка по умолчанию, версия 1.2.2
|
|
101
|
+
|
|
102
|
+
man() теперь эквивалентен man(по_заданиям=True). Тест проверяет числовой
|
|
103
|
+
порядок заголовков №1–27 и алфавитный порядок альтернативного режима
|
|
104
|
+
man(по_заданиям=False). Все 24 тестовых метода проходят. Алгоритмы задач
|
|
105
|
+
не менялись.
|
|
@@ -69,7 +69,7 @@ print(делители(120))
|
|
|
69
69
|
print(перевести_в_систему(125, 3))
|
|
70
70
|
man(делители) # Назначение, параметры и пример
|
|
71
71
|
man(17) # Функции для задания 17
|
|
72
|
-
man(по_заданиям=
|
|
72
|
+
man(по_заданиям=False) # При необходимости — алфавитный список
|
|
73
73
|
man(поиск='простые') # Поиск в справочнике
|
|
74
74
|
"""
|
|
75
75
|
notes.insert(0, 'Новый модуль: from егэ import *. После импорта используйте функции без префикса. man() показывает список, man(делители) или man("делители") — подробную справку, man(17) — функции задания 17. Синоним man — справка. Для постраничного просмотра: man(листать=True), выход обычно q.')
|
|
@@ -115,7 +115,7 @@ page='''<!doctype html><html lang="ru"><meta charset="utf-8"><meta name="viewpor
|
|
|
115
115
|
:root{color-scheme:light;--ink:#172a3a;--blue:#075c80;--line:#dbe5ea;--pale:#edf5f8}
|
|
116
116
|
*{box-sizing:border-box}body{margin:0;background:#f5f7f9;color:var(--ink);font:16px/1.65 system-ui,sans-serif}header{background:#122d40;color:white;padding:48px max(24px,calc((100vw - 1100px)/2))}header p{max-width:870px;color:#d4e7ef}h1{font-size:clamp(30px,5vw,48px);line-height:1.15;margin:8px 0 24px}h2{font-size:26px;margin:44px 0 18px}h3{margin:0;color:var(--blue);font-size:21px;overflow-wrap:anywhere}.eyebrow{letter-spacing:2px;font-size:12px;text-transform:uppercase}.wrap{max-width:1150px;margin:auto;padding:0 24px 64px}a{color:var(--blue)}header a{color:#bfe5f8}.intro,article{background:white;border:1px solid var(--line);padding:24px;border-radius:12px;margin:14px 0}pre{white-space:pre-wrap;overflow-wrap:anywhere;background:#eef3f6;border-radius:8px;padding:16px;font-size:14px;line-height:1.6}code{font-family:ui-monospace,Consolas,monospace}table{width:100%;border-collapse:collapse;font-size:14px}th,td{text-align:left;border-bottom:1px solid var(--line);padding:12px;vertical-align:top}th{background:var(--pale)}.tablewrap{overflow-x:auto}td:first-child{font-weight:bold;min-width:40px}td code{overflow-wrap:anywhere}.controls{position:sticky;top:0;background:#f5f7f9f2;border-bottom:1px solid var(--line);padding:18px 0;z-index:1;display:flex;flex-wrap:wrap;gap:12px;align-items:end}.control{display:flex;flex-direction:column;font-size:13px;font-weight:600}.search{flex:1;min-width:220px}input,select{font:inherit;background:white;border:1px solid #9cb5c3;border-radius:6px;padding:10px;color:var(--ink);max-width:100%}input:focus,select:focus{outline:3px solid #a0d9ee}.tags{font-size:13px;color:#49687b;margin:6px 0 14px}.example{border-left:3px solid #1c8cad;padding-left:14px}li{margin:12px 0}.muted{color:#587081;font-size:14px}article[hidden]{display:none}.count{min-width:120px;font-size:13px;align-self:center}details{background:white;border:1px solid var(--line);padding:18px;border-radius:10px}summary{cursor:pointer;font-weight:600}@media print{.controls{display:none}body{background:white}header{padding:20px;color:#172a3a;background:white}header p{color:#172a3a}article{break-inside:avoid}details>*{display:block}}@media(max-width:600px){.wrap{padding:0 14px 40px}header{padding:30px 20px}article{padding:16px}td,th{padding:8px}}
|
|
117
117
|
</style>
|
|
118
|
-
<header><div class="eyebrow">Python 3.10+ · версия 1.2.
|
|
118
|
+
<header><div class="eyebrow">Python 3.10+ · версия 1.2.2 · без зависимостей</div><h1>EGEKit<br>112 функций для подготовки к ЕГЭ</h1><p>INTRO</p><a href="#catalog">Перейти к справочнику ↓</a></header>
|
|
119
119
|
<main class="wrap"><section class="intro"><h2 style="margin-top:0">Начало работы</h2><p>Положите <code>egekit.py</code> и <code>егэ.py</code> рядом со своим <code>solution.py</code> либо установите пакет egekit-study версии 1.2.0 и новее. Установка не нужна. Запустите <code>python solution.py</code> в терминале этой папки. Полная инструкция — в README.md.</p><pre><code>QUICK</code></pre><p>Примеры по всем номерам: <code>python examples_ru.py</code>. Отдельный номер: <code>python examples_ru.py --year 2027 23</code>.</p></section>
|
|
120
120
|
<h2>Номера и основные функции</h2><p>Базовая нумерация — 2026. В правом столбце тем указаны изменения проекта ФИПИ 2027.</p><div class="tablewrap"><table><thead><tr><th>№</th><th>Тема 2026</th><th>Проект 2027</th><th>С чего начать</th></tr></thead><tbody>ROWS</tbody></table></div>
|
|
121
121
|
<h2>Как применять функции</h2><details><summary>Правила, ограничения и частые ошибки</summary><ul>NOTES</ul></details>
|
|
@@ -17,7 +17,7 @@ import sqlite3
|
|
|
17
17
|
import zipfile
|
|
18
18
|
import xml.etree.ElementTree as ET
|
|
19
19
|
|
|
20
|
-
__version__ = '1.2.
|
|
20
|
+
__version__ = '1.2.2'
|
|
21
21
|
CATALOG = {}
|
|
22
22
|
|
|
23
23
|
def _task(*numbers):
|
|
@@ -1291,21 +1291,23 @@ __all__ = ['CATALOG', 'CATALOG_2027', 'РУССКИЕ_ИМЕНА', '__version__'
|
|
|
1291
1291
|
|
|
1292
1292
|
|
|
1293
1293
|
@_task(*range(1, 28))
|
|
1294
|
-
def man(функция=None, *, задание=None, год=2026, поиск=None, листать=False, по_заданиям=
|
|
1294
|
+
def man(функция=None, *, задание=None, год=2026, поиск=None, листать=False, по_заданиям=True):
|
|
1295
1295
|
"""Справочник EGEKit в терминале: назначение, сигнатура, параметры, пример и номера заданий.
|
|
1296
1296
|
|
|
1297
1297
|
функция — объект функции либо её русское/английское имя строкой.
|
|
1298
1298
|
Без функции выводится список с краткими описаниями. Целое число первым
|
|
1299
1299
|
аргументом означает номер задания. задание и год фильтруют список;
|
|
1300
1300
|
поиск ищет текст в именах и описаниях; по_заданиям=True группирует список
|
|
1301
|
-
по номерам 1–27 с названиями
|
|
1301
|
+
по номерам 1–27 с названиями тем (режим по умолчанию).
|
|
1302
|
+
по_заданиям=False включает алфавитный список. Каждый пункт показывает номера
|
|
1302
1303
|
заданий для выбранного года; листать=True открывает системный
|
|
1303
1304
|
просмотрщик через pydoc.pager (выход обычно клавишей q).
|
|
1304
1305
|
По умолчанию справка просто печатается, не требует действий и возвращает None.
|
|
1305
1306
|
Ничего не выполняет из переданной строки: имена берутся только из каталога.
|
|
1306
1307
|
|
|
1307
1308
|
Пример:
|
|
1308
|
-
man() #
|
|
1309
|
+
man() # Функции по заданиям от №1 до №27
|
|
1310
|
+
man(по_заданиям=False) # Алфавитный список
|
|
1309
1311
|
man(по_заданиям=True) # Группы по заданиям 1–27
|
|
1310
1312
|
man(делители) # Подробная справка о функции
|
|
1311
1313
|
man('делители') # То же по строковому имени
|
|
@@ -1440,7 +1442,7 @@ def man(функция=None, *, задание=None, год=2026, поиск=Non
|
|
|
1440
1442
|
add_entry(name)
|
|
1441
1443
|
lines.extend(['', 'Подробнее: man(делители) или man("делители")',
|
|
1442
1444
|
'Поиск: man(поиск="строк") | По заданию: man(17)',
|
|
1443
|
-
'
|
|
1445
|
+
'Алфавитный список: man(по_заданиям=False)',
|
|
1444
1446
|
'Постраничный просмотр: man(листать=True)',
|
|
1445
1447
|
'Номера включают смежные и вспомогательные инструменты, а не только готовые решения.'])
|
|
1446
1448
|
text = '\n'.join(lines)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: egekit-study
|
|
3
|
-
Version: 1.2.
|
|
3
|
+
Version: 1.2.2
|
|
4
4
|
Summary: Алгоритмические инструменты для подготовки к ЕГЭ по информатике
|
|
5
5
|
License-Expression: MIT
|
|
6
6
|
Requires-Python: >=3.10
|
|
@@ -10,7 +10,7 @@ Dynamic: license-file
|
|
|
10
10
|
|
|
11
11
|
# EGEKit — библиотека для подготовки к ЕГЭ по информатике
|
|
12
12
|
|
|
13
|
-
Версия 1.2.
|
|
13
|
+
Версия 1.2.2 · Python 3.10+ · 112 функций · внешние зависимости не нужны.
|
|
14
14
|
|
|
15
15
|
Библиотека охватывает темы всех 27 номеров: логика, базы данных, кодирование,
|
|
16
16
|
исполнители, комбинаторика, геометрия, сети, рекурсия, игры, строки,
|
|
@@ -181,22 +181,23 @@ python -m unittest discover -s tests -v
|
|
|
181
181
|
старых архивов. После публикации пользователи обновляют пакет через
|
|
182
182
|
`python -m pip install --upgrade ИМЯ_ВАШЕГО_ПАКЕТА`.
|
|
183
183
|
|
|
184
|
-
Готовые файлы для публикации версии 1.2.
|
|
184
|
+
Готовые файлы для публикации версии 1.2.2 находятся в папке dist. После
|
|
185
185
|
проверки `python -m twine check dist/*` их можно загрузить командой
|
|
186
186
|
`python -m twine upload dist/*`. Если меняете код, пересоберите пакет.
|
|
187
187
|
После публикации обновите установленный пакет:
|
|
188
188
|
`python -m pip install --upgrade egekit-study`.
|
|
189
189
|
|
|
190
|
-
## Номера заданий в справке: версия 1.2.
|
|
190
|
+
## Номера заданий в справке: версия 1.2.2
|
|
191
191
|
|
|
192
|
-
`man()`
|
|
192
|
+
`man()` по умолчанию группирует функции по номерам от №1 до №27 и подписывает у каждой функции номера заданий выбранного года. Для алфавитного списка: `man(по_заданиям=False)`.
|
|
193
193
|
`man(по_заданиям=True)` выводит группы с заголовками «ЗАДАНИЕ №1», «ЗАДАНИЕ
|
|
194
194
|
№2» и так далее. Общие инструменты вынесены в отдельный раздел. Функция,
|
|
195
195
|
подходящая нескольким номерам, появляется в каждой соответствующей группе.
|
|
196
196
|
|
|
197
197
|
```python
|
|
198
198
|
from егэ import *
|
|
199
|
-
man() #
|
|
199
|
+
man() # Разделы от задания №1 до №27
|
|
200
|
+
man(по_заданиям=False) # Алфавитный список с номерами
|
|
200
201
|
man(по_заданиям=True) # Группы по заданиям
|
|
201
202
|
man(17) # Только функции для №17
|
|
202
203
|
man(по_заданиям=True, год=2027) # Нумерация проекта 2027
|
|
@@ -204,4 +205,4 @@ man(по_заданиям=True, год=2027) # Нумерация проект
|
|
|
204
205
|
|
|
205
206
|
На установленной версии 1.2.0 эти новые параметры ещё не работают.
|
|
206
207
|
Для установки без ожидания обновления индекса PyPI можно установить
|
|
207
|
-
готовый файл dist/egekit_study-1.2.
|
|
208
|
+
готовый файл dist/egekit_study-1.2.2-py3-none-any.whl из этого архива.
|
|
@@ -52,6 +52,13 @@ class ManualTests(unittest.TestCase):
|
|
|
52
52
|
|
|
53
53
|
def test_grouped_catalog_and_filters(self):
|
|
54
54
|
text=self.output(по_заданиям=True)
|
|
55
|
+
self.assertEqual(text,self.output())
|
|
56
|
+
positions=[text.index(f"ЗАДАНИЕ №{n} —") for n in range(1,28)]
|
|
57
|
+
self.assertEqual(positions,sorted(positions))
|
|
58
|
+
alphabetical=self.output(по_заданиям=False)
|
|
59
|
+
self.assertNotIn("ЗАДАНИЕ №1 —",alphabetical)
|
|
60
|
+
entries=[line for line in alphabetical.splitlines() if line.startswith(" ") and not line.startswith(" ")]
|
|
61
|
+
self.assertEqual(entries,sorted(entries))
|
|
55
62
|
for n in range(1,28): self.assertIn(f'ЗАДАНИЕ №{n} —',text)
|
|
56
63
|
self.assertEqual(text.count('справка [man]'),1)
|
|
57
64
|
selected=self.output(17,по_заданиям=True)
|
|
@@ -68,7 +75,7 @@ class ManualTests(unittest.TestCase):
|
|
|
68
75
|
self.assertEqual(ns['число'],'11122')
|
|
69
76
|
self.assertIs(ns['man'],e.man)
|
|
70
77
|
self.assertIs(ns['справка'],e.man)
|
|
71
|
-
self.assertEqual(егэ.__version__,'1.2.
|
|
78
|
+
self.assertEqual(егэ.__version__,'1.2.2')
|
|
72
79
|
for name in e.__all__: self.assertIs(getattr(егэ,name),getattr(e,name))
|
|
73
80
|
|
|
74
81
|
if __name__=='__main__': unittest.main()
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|