rupython 1.0.7__tar.gz → 1.0.9__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.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: rupython
3
- Version: 1.0.7
3
+ Version: 1.0.9
4
4
  Summary: Исполнитель кода Русского Питона
5
5
  Description-Content-Type: text/markdown
6
6
  License-File: LICENSE
@@ -23,11 +23,11 @@ ftype "Код на Русском Питоне"=py -m rupython "%%1" %%*
23
23
 
24
24
  Приложения на Русском Питоне могут использовать все возможности оригинального Python, включая всё богатство подключаемых пакетов и библиотек. Код может быть написан на обоих вариантах языка.
25
25
 
26
- ### Пример кода
26
+ ### Примеры кода
27
27
 
28
28
  ```
29
29
  Функция НОД(*числа):
30
- f = фун a, b: a если b == 0 иначе f(b, a % b)
30
+ f = фун a, b: a если b == 0 иначе f(b, a % b)
31
31
  Вернуть Свёртка(фун a, b: f(a, b), числа)
32
32
 
33
33
  Функция НОК(*числа):
@@ -38,13 +38,27 @@ ftype "Код на Русском Питоне"=py -m rupython "%%1" %%*
38
38
  Вернуть n
39
39
  ```
40
40
 
41
+ ```
42
+ Функция Дата_Пасхи(год, нов_ст = Пусто):
43
+ д = (год % 19 * 19 + 15) % 30
44
+ д += (год % 4 * 2 + год % 7 * 4 + 6 * д + 6) % 7
45
+ нов_ст = Да если нов_ст это Пусто и год >= 1918 иначе нов_ст
46
+ Если не нов_ст:
47
+ Если д > 9: Вернуть Строка(д - 9) + ' апреля'
48
+ Иначе: Вернуть Строка(22 + д) + ' марта'
49
+ Иначе:
50
+ п = год // 100 - год // 400 - 2
51
+ Если д > 39 - п: Вернуть Строка(д - 39 + п) + ' мая'
52
+ Иначе: Вернуть Строка(д - 9 + п) + ' апреля'
53
+ ```
54
+
41
55
  ### Обзор особенностей языка
42
56
 
43
57
  ##### Основные встроенные типы данных:
44
58
 
45
59
  * Числовые: ```Цел```, ```Вещ```, ```Компл```.
46
60
  * Логический: ```Логич``` – значения ```Да``` и ```Нет```.
47
- * Неопределённое значение: ```Ничего``` (пустое значение, или ничего).
61
+ * Неопределённое значение: ```Пусто``` (пустое значение, или ничего).
48
62
  * Строковый (текстовый): ```Строка```.
49
63
  * Последовательности: ```Список```, ```Кортеж```, ```Ряд``` (диапазон).
50
64
  * Ассоциативный массив: ```Словарь```.
@@ -1,10 +1,3 @@
1
- Metadata-Version: 2.1
2
- Name: rupython
3
- Version: 1.0.7
4
- Summary: Исполнитель кода Русского Питона
5
- Description-Content-Type: text/markdown
6
- License-File: LICENSE
7
-
8
1
  Русская версия языка Python, реализованная в виде транслятора кода в код Python. Транслятор устанавливается как пакет соответствующей командой:
9
2
 
10
3
  `pip install rupython`
@@ -23,11 +16,11 @@ ftype "Код на Русском Питоне"=py -m rupython "%%1" %%*
23
16
 
24
17
  Приложения на Русском Питоне могут использовать все возможности оригинального Python, включая всё богатство подключаемых пакетов и библиотек. Код может быть написан на обоих вариантах языка.
25
18
 
26
- ### Пример кода
19
+ ### Примеры кода
27
20
 
28
21
  ```
29
22
  Функция НОД(*числа):
30
- f = фун a, b: a если b == 0 иначе f(b, a % b)
23
+ f = фун a, b: a если b == 0 иначе f(b, a % b)
31
24
  Вернуть Свёртка(фун a, b: f(a, b), числа)
32
25
 
33
26
  Функция НОК(*числа):
@@ -38,13 +31,27 @@ ftype "Код на Русском Питоне"=py -m rupython "%%1" %%*
38
31
  Вернуть n
39
32
  ```
40
33
 
34
+ ```
35
+ Функция Дата_Пасхи(год, нов_ст = Пусто):
36
+ д = (год % 19 * 19 + 15) % 30
37
+ д += (год % 4 * 2 + год % 7 * 4 + 6 * д + 6) % 7
38
+ нов_ст = Да если нов_ст это Пусто и год >= 1918 иначе нов_ст
39
+ Если не нов_ст:
40
+ Если д > 9: Вернуть Строка(д - 9) + ' апреля'
41
+ Иначе: Вернуть Строка(22 + д) + ' марта'
42
+ Иначе:
43
+ п = год // 100 - год // 400 - 2
44
+ Если д > 39 - п: Вернуть Строка(д - 39 + п) + ' мая'
45
+ Иначе: Вернуть Строка(д - 9 + п) + ' апреля'
46
+ ```
47
+
41
48
  ### Обзор особенностей языка
42
49
 
43
50
  ##### Основные встроенные типы данных:
44
51
 
45
52
  * Числовые: ```Цел```, ```Вещ```, ```Компл```.
46
53
  * Логический: ```Логич``` – значения ```Да``` и ```Нет```.
47
- * Неопределённое значение: ```Ничего``` (пустое значение, или ничего).
54
+ * Неопределённое значение: ```Пусто``` (пустое значение, или ничего).
48
55
  * Строковый (текстовый): ```Строка```.
49
56
  * Последовательности: ```Список```, ```Кортеж```, ```Ряд``` (диапазон).
50
57
  * Ассоциативный массив: ```Словарь```.
@@ -8,7 +8,7 @@ import importlib as Импортование
8
8
  Служебные_слова = {
9
9
  'Да': 'True',
10
10
  'Нет': 'False',
11
- 'Ничего': 'None',
11
+ 'Пусто': 'None',
12
12
  'и': 'and',
13
13
  'или': 'or',
14
14
  'не': 'not',
@@ -432,10 +432,26 @@ def Обработать_импорт(импорт, путь_к_текущему
432
432
  файл.close()
433
433
  Временные_файлы.append(путь)
434
434
 
435
+ def Проверить_соответствие_слов(слова, путь_к_файлу):
436
+ def Вывести_исключение(инструкция):
437
+ искл = SyntaxError('Ошибка употребления инструкции "' + инструкция + '".')
438
+ Вывести_текст_исключения(искл, 'при разборе кода', путь_к_файлу)
439
+
440
+ for поз in [i for i, x in enumerate(слова) if x[1] == 'Вернуть']:
441
+ if поз == len(слова) - 1 or слова[поз + 1][1] == '\n':
442
+ Вывести_исключение('Вернуть'); return False
443
+
444
+ for поз in [i for i, x in enumerate(слова) if x[1] == 'Возврат']:
445
+ if поз != len(слова) - 1 and слова[поз + 1][1] != '\n':
446
+ Вывести_исключение('Возврат'); return False
447
+
448
+ return True
449
+
435
450
  Циклы_со_счётчиком = []
436
451
 
437
452
  def Преобразовать_код(путь_к_файлу):
438
453
  слова = list(Прочитать_слова(open(путь_к_файлу, encoding='utf-8').readline))
454
+ if not Проверить_соответствие_слов(слова, путь_к_файлу): return
439
455
 
440
456
  # обрабатываем импорты
441
457
  импорты = []
@@ -584,10 +600,10 @@ def Вывести_текст_исключения(исключение, заг
584
600
  exc_traceback=исключение.__traceback__,
585
601
  exc_value=исключение
586
602
  ).stack[-сч]
587
- except: break
603
+ except: сч = -1; break
588
604
  if искл.filename == назв_исп_ф: break
589
605
  сч += 1
590
- if искл and искл.filename == назв_исп_ф:
606
+ if сч != -1 and искл.filename == назв_исп_ф:
591
607
  номер_строки = искл.lineno - 2
592
608
  else:
593
609
  try: номер_строки = исключение.lineno - 2
@@ -1,3 +1,10 @@
1
+ Metadata-Version: 2.1
2
+ Name: rupython
3
+ Version: 1.0.9
4
+ Summary: Исполнитель кода Русского Питона
5
+ Description-Content-Type: text/markdown
6
+ License-File: LICENSE
7
+
1
8
  Русская версия языка Python, реализованная в виде транслятора кода в код Python. Транслятор устанавливается как пакет соответствующей командой:
2
9
 
3
10
  `pip install rupython`
@@ -16,11 +23,11 @@ ftype "Код на Русском Питоне"=py -m rupython "%%1" %%*
16
23
 
17
24
  Приложения на Русском Питоне могут использовать все возможности оригинального Python, включая всё богатство подключаемых пакетов и библиотек. Код может быть написан на обоих вариантах языка.
18
25
 
19
- ### Пример кода
26
+ ### Примеры кода
20
27
 
21
28
  ```
22
29
  Функция НОД(*числа):
23
- f = фун a, b: a если b == 0 иначе f(b, a % b)
30
+ f = фун a, b: a если b == 0 иначе f(b, a % b)
24
31
  Вернуть Свёртка(фун a, b: f(a, b), числа)
25
32
 
26
33
  Функция НОК(*числа):
@@ -31,13 +38,27 @@ ftype "Код на Русском Питоне"=py -m rupython "%%1" %%*
31
38
  Вернуть n
32
39
  ```
33
40
 
41
+ ```
42
+ Функция Дата_Пасхи(год, нов_ст = Пусто):
43
+ д = (год % 19 * 19 + 15) % 30
44
+ д += (год % 4 * 2 + год % 7 * 4 + 6 * д + 6) % 7
45
+ нов_ст = Да если нов_ст это Пусто и год >= 1918 иначе нов_ст
46
+ Если не нов_ст:
47
+ Если д > 9: Вернуть Строка(д - 9) + ' апреля'
48
+ Иначе: Вернуть Строка(22 + д) + ' марта'
49
+ Иначе:
50
+ п = год // 100 - год // 400 - 2
51
+ Если д > 39 - п: Вернуть Строка(д - 39 + п) + ' мая'
52
+ Иначе: Вернуть Строка(д - 9 + п) + ' апреля'
53
+ ```
54
+
34
55
  ### Обзор особенностей языка
35
56
 
36
57
  ##### Основные встроенные типы данных:
37
58
 
38
59
  * Числовые: ```Цел```, ```Вещ```, ```Компл```.
39
60
  * Логический: ```Логич``` – значения ```Да``` и ```Нет```.
40
- * Неопределённое значение: ```Ничего``` (пустое значение, или ничего).
61
+ * Неопределённое значение: ```Пусто``` (пустое значение, или ничего).
41
62
  * Строковый (текстовый): ```Строка```.
42
63
  * Последовательности: ```Список```, ```Кортеж```, ```Ряд``` (диапазон).
43
64
  * Ассоциативный массив: ```Словарь```.
@@ -3,7 +3,7 @@ from pathlib import Path as Путь
3
3
 
4
4
  Установить(
5
5
  name = 'rupython',
6
- version = '1.0.7',
6
+ version = '1.0.9',
7
7
  description = "Исполнитель кода Русского Питона",
8
8
  packages = [ 'rupython', 'rupython.Модули' ],
9
9
  long_description = (Путь(__file__).parent / "README.md").read_text("UTF-8"),
File without changes
File without changes
File without changes