Improve typing and implementation and make setup.py more modular

Signed-off-by: Ari Archer <ari.web.xyz@gmail.com>
This commit is contained in:
Ari Archer 2022-07-23 19:43:34 +03:00
parent a3988018f8
commit 04d877f7e7
Signed by untrusted user who does not match committer: ari
GPG key ID: A50D5B4B599AF8A2
4 changed files with 272 additions and 260 deletions

View file

@ -4,274 +4,272 @@
Source: https://guacamole.apache.org/doc/0.9.0/guacamole-common-js/symbols/src/src_main_webapp_modules_Keyboard.js.html""" Source: https://guacamole.apache.org/doc/0.9.0/guacamole-common-js/symbols/src/src_main_webapp_modules_Keyboard.js.html"""
from enum import IntEnum __version__: str = "0.0.5"
__author__: str = "Ari Archer"
__version__: str = "0.0.4" __author_email__: str = "ari.web.xyz@gmail.com"
__author__: str = "Ari Archer <ari.web.xyz@gmail.com>"
class UnshiftedKeyCodes(IntEnum): class UnshiftedKeyCodes:
"""Map of known JavaScript keycodes which do not map to typable characters """Map of known JavaScript keycodes which do not map to typable characters
to their unshifted X11 keysym equivalents. to their unshifted X11 keysym equivalents."""
"""
BACKSPACE = 0xFF08 BACKSPACE: int = 0xFF08
TAB = 0xFF09 TAB: int = 0xFF09
ENTER = 0xFF0D ENTER: int = 0xFF0D
SHIFT = 0xFFE1 SHIFT: int = 0xFFE1
CTRL = 0xFFE3 CTRL: int = 0xFFE3
ALT = 0xFFE9 ALT: int = 0xFFE9
PAUSE = 0xFF13 PAUSE: int = 0xFF13
CAPS_LOCK = 0xFFE5 CAPS_LOCK: int = 0xFFE5
ESCAPE = 0xFF1B ESCAPE: int = 0xFF1B
SPACE = 0x0020 SPACE: int = 0x0020
PAGE_UP = 0xFF55 PAGE_UP: int = 0xFF55
PAGE_DOWN = 0xFF56 PAGE_DOWN: int = 0xFF56
END = 0xFF57 END: int = 0xFF57
HOME = 0xFF50 HOME: int = 0xFF50
LEFT_ARROW = 0xFF51 LEFT_ARROW: int = 0xFF51
UP_ARROW = 0xFF52 UP_ARROW: int = 0xFF52
RIGHT_ARROW = 0xFF53 RIGHT_ARROW: int = 0xFF53
DOWN_ARROW = 0xFF54 DOWN_ARROW: int = 0xFF54
INSERT = 0xFF63 INSERT: int = 0xFF63
DELETE = 0xFFFF DELETE: int = 0xFFFF
LEFT_WINDOW_KEY = 0xFFEB LEFT_WINDOW_KEY: int = 0xFFEB
RIGHT_WINDOW_KEY = 0xFF67 RIGHT_WINDOW_KEY: int = 0xFF67
SELECT_KEY = 0x0 SELECT_KEY: int = 0x0
F1 = 0xFFBE F1: int = 0xFFBE
F2 = 0xFFBF F2: int = 0xFFBF
F3 = 0xFFC0 F3: int = 0xFFC0
F4 = 0xFFC1 F4: int = 0xFFC1
F5 = 0xFFC2 F5: int = 0xFFC2
F6 = 0xFFC3 F6: int = 0xFFC3
F7 = 0xFFC4 F7: int = 0xFFC4
F8 = 0xFFC5 F8: int = 0xFFC5
F9 = 0xFFC6 F9: int = 0xFFC6
F10 = 0xFFC7 F10: int = 0xFFC7
F11 = 0xFFC8 F11: int = 0xFFC8
F12 = 0xFFC9 F12: int = 0xFFC9
NUM_LOCK = 0xFF7F NUM_LOCK: int = 0xFF7F
SCROLL_LOCK = 0xFF14 SCROLL_LOCK: int = 0xFF14
class KeyIdentifiers(IntEnum): class KeyIdentifiers:
"""Map of known Python keyidentifiers which do not map to typable """Map of known Python keyidentifiers which do not map to typable
characters to their unshifted X11 keysym equivalents.""" characters to their unshifted X11 keysym equivalents."""
AGAIN = 0xFF66 AGAIN: int = 0xFF66
ALL_CANDIDATES = 0xFF3D ALL_CANDIDATES: int = 0xFF3D
ALPHANUMERIC = 0xFF30 ALPHANUMERIC: int = 0xFF30
ALT = 0xFFE9 ALT: int = 0xFFE9
ATTN = 0xFD0E ATTN: int = 0xFD0E
ALT_GRAPH = 0xFFEA ALT_GRAPH: int = 0xFFEA
ARROW_DOWN = 0xFF54 ARROW_DOWN: int = 0xFF54
ARROW_LEFT = 0xFF51 ARROW_LEFT: int = 0xFF51
ARROW_RIGHT = 0xFF53 ARROW_RIGHT: int = 0xFF53
ARROW_UP = 0xFF52 ARROW_UP: int = 0xFF52
BACKSPACE = 0xFF08 BACKSPACE: int = 0xFF08
CAPS_LOCK = 0xFFE5 CAPS_LOCK: int = 0xFFE5
CANCEL = 0xFF69 CANCEL: int = 0xFF69
CLEAR = 0xFF0B CLEAR: int = 0xFF0B
CONVERT = 0xFF21 CONVERT: int = 0xFF21
COPY = 0xFD15 COPY: int = 0xFD15
CRSEL = 0xFD1C CRSEL: int = 0xFD1C
CR_SEL = 0xFD1C CR_SEL: int = 0xFD1C
CODE_INPUT = 0xFF37 CODE_INPUT: int = 0xFF37
COMPOSE = 0xFF20 COMPOSE: int = 0xFF20
CONTROL = 0xFFE3 CONTROL: int = 0xFFE3
CONTEXT_MENU = 0xFF67 CONTEXT_MENU: int = 0xFF67
DELETE = 0xFFFF DELETE: int = 0xFFFF
DOWN = 0xFF54 DOWN: int = 0xFF54
END = 0xFF57 END: int = 0xFF57
ENTER = 0xFF0D ENTER: int = 0xFF0D
ERASE_EOF = 0xFD06 ERASE_EOF: int = 0xFD06
ESCAPE = 0xFF1B ESCAPE: int = 0xFF1B
EXECUTE = 0xFF62 EXECUTE: int = 0xFF62
EXSEL = 0xFD1D EXSEL: int = 0xFD1D
EX_SEL = 0xFD1D EX_SEL: int = 0xFD1D
F1 = 0xFFBE F1: int = 0xFFBE
F2 = 0xFFBF F2: int = 0xFFBF
F3 = 0xFFC0 F3: int = 0xFFC0
F4 = 0xFFC1 F4: int = 0xFFC1
F5 = 0xFFC2 F5: int = 0xFFC2
F6 = 0xFFC3 F6: int = 0xFFC3
F7 = 0xFFC4 F7: int = 0xFFC4
F8 = 0xFFC5 F8: int = 0xFFC5
F9 = 0xFFC6 F9: int = 0xFFC6
F10 = 0xFFC7 F10: int = 0xFFC7
F11 = 0xFFC8 F11: int = 0xFFC8
F12 = 0xFFC9 F12: int = 0xFFC9
F13 = 0xFFCA F13: int = 0xFFCA
F14 = 0xFFCB F14: int = 0xFFCB
F15 = 0xFFCC F15: int = 0xFFCC
F16 = 0xFFCD F16: int = 0xFFCD
F17 = 0xFFCE F17: int = 0xFFCE
F18 = 0xFFCF F18: int = 0xFFCF
F19 = 0xFFD0 F19: int = 0xFFD0
F20 = 0xFFD1 F20: int = 0xFFD1
F21 = 0xFFD2 F21: int = 0xFFD2
F22 = 0xFFD3 F22: int = 0xFFD3
F23 = 0xFFD4 F23: int = 0xFFD4
F24 = 0xFFD5 F24: int = 0xFFD5
FIND = 0xFF68 FIND: int = 0xFF68
GROUP_FIRST = 0xFE0C GROUP_FIRST: int = 0xFE0C
GROUP_LAST = 0xFE0E GROUP_LAST: int = 0xFE0E
GROUP_NEXT = 0xFE08 GROUP_NEXT: int = 0xFE08
GROUP_PREVIOUS = 0xFE0A GROUP_PREVIOUS: int = 0xFE0A
FULL_WIDTH = 0x0 FULL_WIDTH: int = 0x0
HALF_WIDTH = 0x0 HALF_WIDTH: int = 0x0
HANGUL_MODE = 0xFF31 HANGUL_MODE: int = 0xFF31
HANKAKU = 0xFF29 HANKAKU: int = 0xFF29
HANJA_MODE = 0xFF34 HANJA_MODE: int = 0xFF34
HELP = 0xFF6A HELP: int = 0xFF6A
HIRAGANA = 0xFF25 HIRAGANA: int = 0xFF25
HIRAGANA_KATAKANA = 0xFF27 HIRAGANA_KATAKANA: int = 0xFF27
HOME = 0xFF50 HOME: int = 0xFF50
HYPER = 0xFFED HYPER: int = 0xFFED
INSERT = 0xFF63 INSERT: int = 0xFF63
JAPANESE_HIRAGANA = 0xFF25 JAPANESE_HIRAGANA: int = 0xFF25
JAPANESE_KATAKANA = 0xFF26 JAPANESE_KATAKANA: int = 0xFF26
JAPANESE_ROMAJI = 0xFF24 JAPANESE_ROMAJI: int = 0xFF24
JUNJA_MODE = 0xFF38 JUNJA_MODE: int = 0xFF38
KANA_MODE = 0xFF2D KANA_MODE: int = 0xFF2D
KANJI_MODE = 0xFF21 KANJI_MODE: int = 0xFF21
KATAKANA = 0xFF26 KATAKANA: int = 0xFF26
LEFT = 0xFF51 LEFT: int = 0xFF51
META = 0xFFE7 META: int = 0xFFE7
MODE_CHANGE = 0xFF7E MODE_CHANGE: int = 0xFF7E
NUM_LOCK = 0xFF7F NUM_LOCK: int = 0xFF7F
PAGE_DOWN = 0xFF55 PAGE_DOWN: int = 0xFF55
PAGE_UP = 0xFF56 PAGE_UP: int = 0xFF56
PAUSE = 0xFF13 PAUSE: int = 0xFF13
PLAY = 0xFD16 PLAY: int = 0xFD16
PREVIOUS_CANDIDATE = 0xFF3E PREVIOUS_CANDIDATE: int = 0xFF3E
PRINT_SCREEN = 0xFD1D PRINT_SCREEN: int = 0xFD1D
REDO = 0xFF66 REDO: int = 0xFF66
RIGHT = 0xFF53 RIGHT: int = 0xFF53
ROMAN_CHARACTERS = 0x0 ROMAN_CHARACTERS: int = 0x0
SCROLL = 0xFF14 SCROLL: int = 0xFF14
SELECT = 0xFF60 SELECT: int = 0xFF60
SEPARATOR = 0xFFAC SEPARATOR: int = 0xFFAC
SHIFT = 0xFFE1 SHIFT: int = 0xFFE1
SINGLE_CANDIDATE = 0xFF3C SINGLE_CANDIDATE: int = 0xFF3C
SUPER = 0xFFEB SUPER: int = 0xFFEB
TAB = 0xFF09 TAB: int = 0xFF09
UP = 0xFF52 UP: int = 0xFF52
UNDO = 0xFF65 UNDO: int = 0xFF65
WIN = 0xFFEB WIN: int = 0xFFEB
ZENKAKU = 0xFF28 ZENKAKU: int = 0xFF28
ZENKAKU_HANKAKU = 0xFF2A ZENKAKU_HANKAKU: int = 0xFF2A
class ShiftedKeywords(IntEnum): class ShiftedKeywords:
"""Map of known Python keycodes which do not map to typable characters """Map of known Python keycodes which do not map to typable characters
to their shifted X11 keysym equivalents. Keycodes must only be listed to their shifted X11 keysym equivalents. Keycodes must only be listed
here if their shifted X11 keysym equivalents differ from their unshifted here if their shifted X11 keysym equivalents differ from their unshifted
equivalents.""" equivalents."""
ALT = 0xFFE7 ALT: int = 0xFFE7
class NoRepeat(IntEnum): class NoRepeat:
"""All keysyms which should not repeat when held down.""" """All keysyms which should not repeat when held down."""
LEFT_SHIFT = 0xFFE1 LEFT_SHIFT: int = 0xFFE1
RIGHT_SHIFT = 0xFFE2 RIGHT_SHIFT: int = 0xFFE2
LEFT_CTRL = 0xFFE3 LEFT_CTRL: int = 0xFFE3
RIGHT_CTRL = 0xFFE4 RIGHT_CTRL: int = 0xFFE4
LEFT_META = 0xFFE7 LEFT_META: int = 0xFFE7
RIGHT_META = 0xFFE8 RIGHT_META: int = 0xFFE8
LEFT_ALT = 0xFFE9 LEFT_ALT: int = 0xFFE9
RIGHT_ALT = 0xFFEA RIGHT_ALT: int = 0xFFEA
LEFT_HYPER = 0xFFEB LEFT_HYPER: int = 0xFFEB
RIGHT_HYPER = 0xFFEC RIGHT_HYPER: int = 0xFFEC
class AsciiKeys(IntEnum): class AsciiKeys:
"""Map of all X11 typable ASCII characters""" """Map of all X11 typable ASCII characters"""
KEY_SPACE = 0x20 KEY_SPACE: int = 0x20
KEY_LOWERCASE_A = 0x61 KEY_LOWERCASE_A: int = 0x61
KEY_LOWERCASE_B = 0x62 KEY_LOWERCASE_B: int = 0x62
KEY_LOWERCASE_C = 0x63 KEY_LOWERCASE_C: int = 0x63
KEY_LOWERCASE_D = 0x64 KEY_LOWERCASE_D: int = 0x64
KEY_LOWERCASE_E = 0x65 KEY_LOWERCASE_E: int = 0x65
KEY_LOWERCASE_F = 0x66 KEY_LOWERCASE_F: int = 0x66
KEY_LOWERCASE_G = 0x67 KEY_LOWERCASE_G: int = 0x67
KEY_LOWERCASE_H = 0x68 KEY_LOWERCASE_H: int = 0x68
KEY_LOWERCASE_I = 0x69 KEY_LOWERCASE_I: int = 0x69
KEY_LOWERCASE_J = 0x6A KEY_LOWERCASE_J: int = 0x6A
KEY_LOWERCASE_K = 0x6B KEY_LOWERCASE_K: int = 0x6B
KEY_LOWERCASE_L = 0x6C KEY_LOWERCASE_L: int = 0x6C
KEY_LOWERCASE_M = 0x6D KEY_LOWERCASE_M: int = 0x6D
KEY_LOWERCASE_N = 0x6E KEY_LOWERCASE_N: int = 0x6E
KEY_LOWERCASE_O = 0x6F KEY_LOWERCASE_O: int = 0x6F
KEY_LOWERCASE_P = 0x70 KEY_LOWERCASE_P: int = 0x70
KEY_LOWERCASE_Q = 0x71 KEY_LOWERCASE_Q: int = 0x71
KEY_LOWERCASE_R = 0x72 KEY_LOWERCASE_R: int = 0x72
KEY_LOWERCASE_S = 0x73 KEY_LOWERCASE_S: int = 0x73
KEY_LOWERCASE_T = 0x74 KEY_LOWERCASE_T: int = 0x74
KEY_LOWERCASE_U = 0x75 KEY_LOWERCASE_U: int = 0x75
KEY_LOWERCASE_V = 0x76 KEY_LOWERCASE_V: int = 0x76
KEY_LOWERCASE_W = 0x77 KEY_LOWERCASE_W: int = 0x77
KEY_LOWERCASE_X = 0x78 KEY_LOWERCASE_X: int = 0x78
KEY_LOWERCASE_Y = 0x79 KEY_LOWERCASE_Y: int = 0x79
KEY_LOWERCASE_Z = 0x7A KEY_LOWERCASE_Z: int = 0x7A
KEY_UPPERCASE_A = 0x41 KEY_UPPERCASE_A: int = 0x41
KEY_UPPERCASE_B = 0x42 KEY_UPPERCASE_B: int = 0x42
KEY_UPPERCASE_C = 0x43 KEY_UPPERCASE_C: int = 0x43
KEY_UPPERCASE_D = 0x44 KEY_UPPERCASE_D: int = 0x44
KEY_UPPERCASE_E = 0x45 KEY_UPPERCASE_E: int = 0x45
KEY_UPPERCASE_F = 0x46 KEY_UPPERCASE_F: int = 0x46
KEY_UPPERCASE_G = 0x47 KEY_UPPERCASE_G: int = 0x47
KEY_UPPERCASE_H = 0x48 KEY_UPPERCASE_H: int = 0x48
KEY_UPPERCASE_I = 0x49 KEY_UPPERCASE_I: int = 0x49
KEY_UPPERCASE_J = 0x4A KEY_UPPERCASE_J: int = 0x4A
KEY_UPPERCASE_K = 0x4B KEY_UPPERCASE_K: int = 0x4B
KEY_UPPERCASE_L = 0x4C KEY_UPPERCASE_L: int = 0x4C
KEY_UPPERCASE_M = 0x4D KEY_UPPERCASE_M: int = 0x4D
KEY_UPPERCASE_N = 0x4E KEY_UPPERCASE_N: int = 0x4E
KEY_UPPERCASE_O = 0x4F KEY_UPPERCASE_O: int = 0x4F
KEY_UPPERCASE_P = 0x50 KEY_UPPERCASE_P: int = 0x50
KEY_UPPERCASE_Q = 0x51 KEY_UPPERCASE_Q: int = 0x51
KEY_UPPERCASE_R = 0x52 KEY_UPPERCASE_R: int = 0x52
KEY_UPPERCASE_S = 0x53 KEY_UPPERCASE_S: int = 0x53
KEY_UPPERCASE_T = 0x54 KEY_UPPERCASE_T: int = 0x54
KEY_UPPERCASE_U = 0x55 KEY_UPPERCASE_U: int = 0x55
KEY_UPPERCASE_V = 0x56 KEY_UPPERCASE_V: int = 0x56
KEY_UPPERCASE_W = 0x57 KEY_UPPERCASE_W: int = 0x57
KEY_UPPERCASE_X = 0x58 KEY_UPPERCASE_X: int = 0x58
KEY_UPPERCASE_Y = 0x59 KEY_UPPERCASE_Y: int = 0x59
KEY_UPPERCASE_Z = 0x5A KEY_UPPERCASE_Z: int = 0x5A
SIGN_EXCLAMATION = 0x21 SIGN_EXCLAMATION: int = 0x21
SIGN_DOUBLE_QUOTE = 0x22 SIGN_DOUBLE_QUOTE: int = 0x22
SIGN_HASH = 0x23 SIGN_HASH: int = 0x23
SIGN_DOLLAR = 0x24 SIGN_DOLLAR: int = 0x24
SIGN_PERCENT = 0x25 SIGN_PERCENT: int = 0x25
SIGN_AMPERSAND = 0x26 SIGN_AMPERSAND: int = 0x26
SIGN_SINGLE_QUOTE = 0x27 SIGN_SINGLE_QUOTE: int = 0x27
SIGN_OPENING_BRACKET = 0x28 SIGN_OPENING_BRACKET: int = 0x28
SIGN_CLOSING_BRACKET = 0x29 SIGN_CLOSING_BRACKET: int = 0x29
SIGN_STAR = 0x2A SIGN_STAR: int = 0x2A
SIGN_PLUS = 0x2B SIGN_PLUS: int = 0x2B
SIGN_COMMA = 0x2C SIGN_COMMA: int = 0x2C
SIGN_MINUS = 0x2D SIGN_MINUS: int = 0x2D
SIGN_DOT = 0x2E SIGN_DOT: int = 0x2E
SIGN_SLASH = 0x2F SIGN_SLASH: int = 0x2F
SIGN_COLON = 0x3A SIGN_COLON: int = 0x3A
SIGN_SEMICOLON = 0x3B SIGN_SEMICOLON: int = 0x3B
SIGN_LESS_THAN = 0x3C SIGN_LESS_THAN: int = 0x3C
SIGN_EQUAL = 0x3D SIGN_EQUAL: int = 0x3D
SIGN_MORE_THAN = 0x3E SIGN_MORE_THAN: int = 0x3E
SIGN_QUESTION = 0x3F SIGN_QUESTION: int = 0x3F
SIGN_AT = 0x40 SIGN_AT: int = 0x40
SIGN_OPENING_SQUARE_BRACKET = 0x5B SIGN_OPENING_SQUARE_BRACKET: int = 0x5B
SIGN_BACKSLASH = 0x5C SIGN_BACKSLASH: int = 0x5C
SIGN_CLOSING_SQUARE_BRACKET = 0x5D SIGN_CLOSING_SQUARE_BRACKET: int = 0x5D
SIGN_CARET = 0x5E SIGN_CARET: int = 0x5E
SIGN_UNDERSCORE = 0x5F SIGN_UNDERSCORE: int = 0x5F
SIGN_BACKTICK = 0x60 SIGN_BACKTICK: int = 0x60
SIGN_OPENING_CURLY_BRACKET = 0x7B SIGN_OPENING_CURLY_BRACKET: int = 0x7B
SIGN_PIPE = 0x7C SIGN_PIPE: int = 0x7C
SIGN_CLOSING_CURLY_BRACKET = 0x7D SIGN_CLOSING_CURLY_BRACKET: int = 0x7D
SIGN_TILDE = 0x7E SIGN_TILDE: int = 0x7E

View file

@ -1,12 +1,14 @@
#!/usr/bin/env python3 #!/usr/bin/env python3
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
"""__init__.py library stub""" """guacamole_keysyms library stub"""
from enum import IntEnum __version__: str
__author__: str
__author_email__: str
class UnshiftedKeyCodes(IntEnum): class UnshiftedKeyCodes:
BACKSPACE: int BACKSPACE: int
TAB: int TAB: int
ENTER: int ENTER: int
@ -46,7 +48,7 @@ class UnshiftedKeyCodes(IntEnum):
SCROLL_LOCK: int SCROLL_LOCK: int
class KeyIdentifiers(IntEnum): class KeyIdentifiers:
AGAIN: int AGAIN: int
ALL_CANDIDATES: int ALL_CANDIDATES: int
ALPHANUMERIC: int ALPHANUMERIC: int
@ -152,11 +154,11 @@ class KeyIdentifiers(IntEnum):
ZENKAKU_HANKAKU: int ZENKAKU_HANKAKU: int
class ShiftedKeywords(IntEnum): class ShiftedKeywords:
ALT: int ALT: int
class NoRepeat(IntEnum): class NoRepeat:
LEFT_SHIFT: int LEFT_SHIFT: int
RIGHT_SHIFT: int RIGHT_SHIFT: int
LEFT_CTRL: int LEFT_CTRL: int
@ -169,7 +171,7 @@ class NoRepeat(IntEnum):
RIGHT_HYPER: int RIGHT_HYPER: int
class AsciiKeys(IntEnum): class AsciiKeys:
KEY_SPACE: int KEY_SPACE: int
KEY_LOWERCASE_A: int KEY_LOWERCASE_A: int
KEY_LOWERCASE_B: int KEY_LOWERCASE_B: int

View file

@ -1 +0,0 @@
enum

View file

@ -1,17 +1,23 @@
import setuptools # type: ignore import setuptools # type: ignore
__author__: str = "AriArcher"
__author_email__: str = "ari.web.xyz@gmail.com"
MODULE_NAME: str = "guacamole_keysyms"
SAFE_MODULE_NAME: str = MODULE_NAME.replace("_", "-")
with open("README.md", "r") as desc: with open("README.md", "r") as desc:
long_description: str = desc.read() long_description: str = desc.read()
setuptools.setup( setuptools.setup(
name="guacamole-keysyms", name=SAFE_MODULE_NAME,
version="0.0.4", version="0.0.5",
author="AriArcher", author=__author__,
author_email="ari.web.xyz@gmail.com", author_email=__author_email__,
description="Guacamole protocol key mappings for python", description="Guacamole protocol key mappings for python",
long_description=long_description, long_description=long_description,
long_description_content_type="text/markdown", long_description_content_type="text/markdown",
url="https://ari-web.xyz/gh/guacamole_keysyms", url=f"https://ari-web.xyz/gh/{SAFE_MODULE_NAME}",
packages=setuptools.find_packages(), packages=setuptools.find_packages(),
classifiers=[ classifiers=[
"Programming Language :: Python :: 3", "Programming Language :: Python :: 3",
@ -19,4 +25,11 @@ setuptools.setup(
"Operating System :: OS Independent", "Operating System :: OS Independent",
], ],
python_requires=">=3.8", python_requires=">=3.8",
package_data={
MODULE_NAME: [
f"{MODULE_NAME}/py.typed",
f"{MODULE_NAME}/__init__.pyi",
]
},
include_package_data=True,
) )