nice
This commit is contained in:
parent
38ba6664b2
commit
9534700189
Binary file not shown.
4
DR.py
4
DR.py
@ -44,14 +44,14 @@ if __name__ == '__main__':
|
|||||||
from Difficult_Rocket.crash import crash
|
from Difficult_Rocket.crash import crash
|
||||||
from Difficult_Rocket import DR_option
|
from Difficult_Rocket import DR_option
|
||||||
try:
|
try:
|
||||||
from libs import pyglet # 导入pyglet
|
import pyglet # 导入pyglet
|
||||||
pyglet.resource.path = ['/textures/']
|
pyglet.resource.path = ['/textures/']
|
||||||
pyglet.resource.reindex()
|
pyglet.resource.reindex()
|
||||||
|
|
||||||
from Difficult_Rocket import main, DR_runtime
|
from Difficult_Rocket import main, DR_runtime
|
||||||
DR_runtime.start_time_ns = start_time_ns
|
DR_runtime.start_time_ns = start_time_ns
|
||||||
|
|
||||||
from libs.pyglet.gl import glClearColor # 调整背景颜色
|
from pyglet.gl import glClearColor # 调整背景颜色
|
||||||
glClearColor(0.5, 0.5, 0.5, 0)
|
glClearColor(0.5, 0.5, 0.5, 0)
|
||||||
|
|
||||||
game = main.Game() # 实例化一个游戏
|
game = main.Game() # 实例化一个游戏
|
||||||
|
@ -12,58 +12,19 @@ gitee: @shenjackyuanjie
|
|||||||
"""
|
"""
|
||||||
|
|
||||||
# system function
|
# system function
|
||||||
|
import ctypes
|
||||||
|
|
||||||
# Difficult_Rocket function
|
# Difficult_Rocket function
|
||||||
|
|
||||||
# libs function
|
# libs function
|
||||||
from MCDR.serializer import Serializable
|
# from MCDR.serializer import Serializable
|
||||||
|
|
||||||
"""
|
"""
|
||||||
DR 内部数据传输格式类型
|
DR 内部数据传输格式类型
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
|
||||||
# 一艘船的数据格式
|
class datas(ctypes.Structure):
|
||||||
class Ship(Serializable):
|
_fields_: list = [("name", ctypes.c_char_p),
|
||||||
data: dict
|
("uuid", ctypes.c_char_p),
|
||||||
|
]
|
||||||
def __init__(self, **kwargs):
|
|
||||||
super().__init__(**kwargs)
|
|
||||||
|
|
||||||
|
|
||||||
# 蓝图部件的数据格式
|
|
||||||
class Blueprint(Serializable):
|
|
||||||
data: dict
|
|
||||||
|
|
||||||
def __init__(self, **kwargs):
|
|
||||||
super().__init__(**kwargs)
|
|
||||||
|
|
||||||
|
|
||||||
# 飞船上的单个部件的数据格式
|
|
||||||
class Part(Serializable):
|
|
||||||
data: dict
|
|
||||||
|
|
||||||
def __init__(self, part_type: str, **kwargs):
|
|
||||||
super().__init__()
|
|
||||||
self.type = part_type
|
|
||||||
self.name = kwargs.get('name')
|
|
||||||
|
|
||||||
|
|
||||||
# 整个存档的数据格式
|
|
||||||
class Save(Serializable):
|
|
||||||
data: dict
|
|
||||||
|
|
||||||
def __init__(self, **kwargs):
|
|
||||||
super().__init__(**kwargs)
|
|
||||||
|
|
||||||
|
|
||||||
class PartType(Serializable):
|
|
||||||
data: dict # 输出的数据格式
|
|
||||||
|
|
||||||
|
|
||||||
# 所有部件的格式的存储
|
|
||||||
class PartTypes(Serializable):
|
|
||||||
data: dict = {} # 所有部件的格式
|
|
||||||
|
|
||||||
def add_part(self, part_type: str, **kwargs):
|
|
||||||
self.data[part_type] = Part(part_type, **kwargs)
|
|
||||||
|
@ -32,10 +32,10 @@ from Difficult_Rocket.utils import tools, translate
|
|||||||
from Difficult_Rocket.client.fps.fps_log import FpsLogger
|
from Difficult_Rocket.client.fps.fps_log import FpsLogger
|
||||||
from Difficult_Rocket.exception.command import CommandError
|
from Difficult_Rocket.exception.command import CommandError
|
||||||
|
|
||||||
from libs import pyglet
|
import tomlkit
|
||||||
from libs.pyglet.window import Window
|
import pyglet
|
||||||
from libs.pyglet.window import key, mouse
|
from pyglet.window import Window
|
||||||
from libs import toml
|
from pyglet.window import key, mouse
|
||||||
|
|
||||||
|
|
||||||
class Client:
|
class Client:
|
||||||
@ -186,7 +186,7 @@ class ClientWindow(Window):
|
|||||||
config_file = tools.load_file('./configs/main.toml')
|
config_file = tools.load_file('./configs/main.toml')
|
||||||
config_file['window']['width'] = self.width
|
config_file['window']['width'] = self.width
|
||||||
config_file['window']['height'] = self.height
|
config_file['window']['height'] = self.height
|
||||||
toml.dump(config_file, open('./configs/main.toml', 'w'))
|
tomlkit.dump(config_file, open('./configs/main.toml', 'w'))
|
||||||
self.logger.info('save_info end')
|
self.logger.info('save_info end')
|
||||||
|
|
||||||
"""
|
"""
|
||||||
@ -194,14 +194,6 @@ class ClientWindow(Window):
|
|||||||
"""
|
"""
|
||||||
|
|
||||||
def draw_update(self, tick: float):
|
def draw_update(self, tick: float):
|
||||||
# self.count += 1
|
|
||||||
# if self.count >= 100:
|
|
||||||
# try:
|
|
||||||
# self.count = 0
|
|
||||||
# self.logger.debug(tick)
|
|
||||||
# self.logger.debug('update! {} {}'.format(tick, pyglet.clock.get_frequency()))
|
|
||||||
# except ZeroDivisionError:
|
|
||||||
# pass
|
|
||||||
decimal_tick = Decimal(str(tick)[:10])
|
decimal_tick = Decimal(str(tick)[:10])
|
||||||
self.FPS_update(decimal_tick)
|
self.FPS_update(decimal_tick)
|
||||||
|
|
||||||
|
@ -11,7 +11,7 @@ github: @shenjackyuanjie
|
|||||||
gitee: @shenjackyuanjie
|
gitee: @shenjackyuanjie
|
||||||
"""
|
"""
|
||||||
|
|
||||||
from libs.pyglet.text import DocumentLabel
|
from pyglet.text import DocumentLabel
|
||||||
|
|
||||||
|
|
||||||
class FontsLabel(DocumentLabel):
|
class FontsLabel(DocumentLabel):
|
||||||
|
@ -16,16 +16,16 @@ from Difficult_Rocket.client.guis.format import html
|
|||||||
from Difficult_Rocket import DR_option
|
from Difficult_Rocket import DR_option
|
||||||
|
|
||||||
# from libs import pyglet
|
# from libs import pyglet
|
||||||
from libs.pyglet import font
|
from pyglet import font
|
||||||
from libs.pyglet.text import Label, HTMLLabel
|
from pyglet.text import Label, HTMLLabel
|
||||||
from libs.pyglet.window import key
|
from pyglet.window import key
|
||||||
from libs.pyglet.gui import widgets
|
from pyglet.gui import widgets
|
||||||
from libs.pyglet.sprite import Sprite
|
from pyglet.sprite import Sprite
|
||||||
from libs.pyglet.shapes import Rectangle
|
from pyglet.shapes import Rectangle
|
||||||
from libs.pyglet.image import AbstractImage
|
from pyglet.image import AbstractImage
|
||||||
from libs.pyglet.graphics import Batch, Group
|
from pyglet.graphics import Batch, Group
|
||||||
from libs.pyglet.text.document import FormattedDocument
|
from pyglet.text.document import FormattedDocument
|
||||||
from libs.pyglet.text.layout import IncrementalTextLayout
|
from pyglet.text.layout import IncrementalTextLayout
|
||||||
# from libs import pyperclip
|
# from libs import pyperclip
|
||||||
from libs.pyperclip import paste
|
from libs.pyperclip import paste
|
||||||
|
|
||||||
|
@ -21,12 +21,12 @@ from decimal import Decimal
|
|||||||
from Difficult_Rocket.command.api import CommandText
|
from Difficult_Rocket.command.api import CommandText
|
||||||
from Difficult_Rocket.utils import new_thread, translate
|
from Difficult_Rocket.utils import new_thread, translate
|
||||||
|
|
||||||
# from libs.pyglet
|
# from pyglet
|
||||||
from libs import pyglet
|
import pyglet
|
||||||
from libs.pyglet.text import Label
|
from pyglet.text import Label
|
||||||
from libs.pyglet.window import key
|
from pyglet.window import key
|
||||||
from libs.pyglet.gui import widgets
|
from pyglet.gui import widgets
|
||||||
from libs.pyglet.graphics import Batch, Group
|
from pyglet.graphics import Batch, Group
|
||||||
|
|
||||||
|
|
||||||
class CommandLine(widgets.WidgetBase):
|
class CommandLine(widgets.WidgetBase):
|
||||||
|
20
README.md
20
README.md
@ -18,7 +18,7 @@
|
|||||||
|
|
||||||
[![Generic badge](https://img.shields.io/badge/Release-0.6.1-blue.svg)](https://github.com/shenjackyuanjie/Difficult-Rocket/releases)
|
[![Generic badge](https://img.shields.io/badge/Release-0.6.1-blue.svg)](https://github.com/shenjackyuanjie/Difficult-Rocket/releases)
|
||||||
[![Generic badge](https://img.shields.io/badge/Pre_Release-0.6.1-blue.svg)](https://github.com/shenjackyuanjie/Difficult-Rocket/releases)
|
[![Generic badge](https://img.shields.io/badge/Pre_Release-0.6.1-blue.svg)](https://github.com/shenjackyuanjie/Difficult-Rocket/releases)
|
||||||
[![Generic badge](https://img.shields.io/badge/Devloping-0.6.2-blue.svg)](https://github.com/shenjackyuanjie/Difficult-Rocket/releases)
|
[![Generic badge](https://img.shields.io/badge/Devloping-0.6.3-blue.svg)](https://github.com/shenjackyuanjie/Difficult-Rocket/releases)
|
||||||
|
|
||||||
## English README please look [here](../README.md)
|
## English README please look [here](../README.md)
|
||||||
|
|
||||||
@ -28,23 +28,23 @@
|
|||||||
|
|
||||||
> 相对于原版SR比较“轻量化”
|
> 相对于原版SR比较“轻量化”
|
||||||
|
|
||||||
## [计划特性列表](./plan_features)
|
## [计划特性列表](/docs/plan_features)
|
||||||
|
|
||||||
- [microsoft TODO](https://to-do.microsoft.com/sharing?InvitationToken=Q6SN1kdtitK8cwFktFl71gSnsRMNmrH7CC7kHY_Tq6ReMRwHgInP4_q5ie2IwrHx8)
|
- [microsoft TODO](https://to-do.microsoft.com/sharing?InvitationToken=Q6SN1kdtitK8cwFktFl71gSnsRMNmrH7CC7kHY_Tq6ReMRwHgInP4_q5ie2IwrHx8)
|
||||||
|
|
||||||
## [更新日志](./update_logs.md)
|
## [更新日志](/docs/update_logs.md)
|
||||||
|
|
||||||
## 环境需求 (测试过的 / 开发平台)
|
## 环境需求 (测试过的 / 开发平台)
|
||||||
|
|
||||||
- `开发平台 1 - Windows 10`
|
- `开发平台 1 - Windows 10`
|
||||||
- `Python 3.8.10`
|
- `Python 3.8.10`
|
||||||
- `Windows10 x64`
|
- `Windows10 x64`
|
||||||
- `json5 0.9.6`
|
- `json5 0.9.9`
|
||||||
- `pillow 8.1.0`
|
- `pillow 9.2.0`
|
||||||
- `pyperclip 1.8.2`
|
- `pyperclip 1.8.2`
|
||||||
- `pyglet 2.0.dev23`
|
- `pyglet 2.0b2`
|
||||||
- `xmltodict 0.12.0`
|
- `xmltodict 0.12.0`
|
||||||
- `toml 0.10.2`
|
- `tomlkit 0.11.5`
|
||||||
- `AMD R5 5600X`
|
- `AMD R5 5600X`
|
||||||
- `AMD RX 550 4G`
|
- `AMD RX 550 4G`
|
||||||
- `开发平台 2 - macOS Big Sur`
|
- `开发平台 2 - macOS Big Sur`
|
||||||
@ -58,8 +58,8 @@
|
|||||||
## 需要的Python模块
|
## 需要的Python模块
|
||||||
|
|
||||||
- `json5` (已经内置 V0.9.6 路径:`./libs/json5`)
|
- `json5` (已经内置 V0.9.6 路径:`./libs/json5`)
|
||||||
- `toml` (已经内置 V0.10.2 路径:`./libs/toml`)
|
- `tomlkit`
|
||||||
- `pyglet` (已经内置 V2.0.dev18 路径:`./libs/pyglet`)
|
- `pyglet` (已经内置 V2.0b2 路径:`./libs/pyglet`)
|
||||||
- `xmltodict` (已经内置 V0.12.0 路径:`./libs/xmltodict`)
|
- `xmltodict` (已经内置 V0.12.0 路径:`./libs/xmltodict`)
|
||||||
- `pyperclip` (已经内置 V1.8.2 路径: `./libs/pyperclip`)
|
- `pyperclip` (已经内置 V1.8.2 路径: `./libs/pyperclip`)
|
||||||
- `pillow`
|
- `pillow`
|
||||||
@ -69,7 +69,7 @@
|
|||||||
|
|
||||||
- [pyglet](https://github.com/pyglet/pyglet) : GUI 和画面渲染
|
- [pyglet](https://github.com/pyglet/pyglet) : GUI 和画面渲染
|
||||||
- `json5`: json5 解析器
|
- `json5`: json5 解析器
|
||||||
- `toml`: toml 解析器
|
- `tomlkit`: toml 解析器
|
||||||
- `xmltodict`: xml 与 dict 转换器
|
- `xmltodict`: xml 与 dict 转换器
|
||||||
- `pyperclip`: 剪贴板!
|
- `pyperclip`: 剪贴板!
|
||||||
- [@Rayawa](https://github.com/Rayawa) : 文档矫正 & 翻译部分 lang
|
- [@Rayawa](https://github.com/Rayawa) : 文档矫正 & 翻译部分 lang
|
||||||
|
@ -39,12 +39,12 @@
|
|||||||
- `Develop platform 1 - Windows 10`
|
- `Develop platform 1 - Windows 10`
|
||||||
- `Python 3.8.10`
|
- `Python 3.8.10`
|
||||||
- `Windows10 x64`
|
- `Windows10 x64`
|
||||||
- `json5 0.9.6`
|
- `json5 0.9.9`
|
||||||
- `pillow 8.1.0`
|
- `pillow 9.2.0`
|
||||||
- `pyperclip 1.8.2`
|
- `pyperclip 1.8.2`
|
||||||
- `pyglet 2.0.dev23`
|
- `pyglet 2.0b2`
|
||||||
- `xmltodict 0.12.0`
|
- `xmltodict 0.12.0`
|
||||||
- `toml 0.10.2`
|
- `tomlkit 0.11.5`
|
||||||
- `AMD R5 5600X`
|
- `AMD R5 5600X`
|
||||||
- `AMD RX 550 4G`
|
- `AMD RX 550 4G`
|
||||||
- `Develop platform 2 - macOS Big Sur`
|
- `Develop platform 2 - macOS Big Sur`
|
||||||
@ -58,8 +58,8 @@
|
|||||||
## Required python modules
|
## Required python modules
|
||||||
|
|
||||||
- `json5` (pre-installed V0.9.6 path:`./libs/json5`)
|
- `json5` (pre-installed V0.9.6 path:`./libs/json5`)
|
||||||
- `toml` (pre-installed V0.10.2 path:`./libs/toml`)
|
- `tomlkit`
|
||||||
- `pyglet` (pre-installed V2.0.dev18 path:`./libs/pyglet`)
|
- `pyglet` (pre-installed V2.0b2 path:`./libs/pyglet`)
|
||||||
- `xmltodict` (pre-installed V0.12.0 path:`./libs/xmltodict`)
|
- `xmltodict` (pre-installed V0.12.0 path:`./libs/xmltodict`)
|
||||||
- `pyperclip` (pre-installed V1.8.2 path: `./libs/pyperclip`)
|
- `pyperclip` (pre-installed V1.8.2 path: `./libs/pyperclip`)
|
||||||
- `pillow`
|
- `pillow`
|
||||||
@ -69,7 +69,7 @@
|
|||||||
|
|
||||||
- [pyglet](https://github.com/pyglet/pyglet): GUI and graphics
|
- [pyglet](https://github.com/pyglet/pyglet): GUI and graphics
|
||||||
- `json5`: json5 parser
|
- `json5`: json5 parser
|
||||||
- `toml` toml parser
|
- `tomlkit` toml parser
|
||||||
- `xmltodict`: translate data between xml and dict
|
- `xmltodict`: translate data between xml and dict
|
||||||
- `pyperclip`: paste board!
|
- `pyperclip`: paste board!
|
||||||
- [@Rayawa](https://github.com/Rayawa) : check mistake in docs & some translates
|
- [@Rayawa](https://github.com/Rayawa) : check mistake in docs & some translates
|
||||||
|
@ -1,27 +0,0 @@
|
|||||||
The MIT License
|
|
||||||
|
|
||||||
Copyright 2013-2019 William Pearson
|
|
||||||
Copyright 2015-2016 Julien Enselme
|
|
||||||
Copyright 2016 Google Inc.
|
|
||||||
Copyright 2017 Samuel Vasko
|
|
||||||
Copyright 2017 Nate Prewitt
|
|
||||||
Copyright 2017 Jack Evans
|
|
||||||
Copyright 2019 Filippo Broggini
|
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
|
||||||
in the Software without restriction, including without limitation the rights
|
|
||||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
||||||
copies of the Software, and to permit persons to whom the Software is
|
|
||||||
furnished to do so, subject to the following conditions:
|
|
||||||
|
|
||||||
The above copyright notice and this permission notice shall be included in
|
|
||||||
all copies or substantial portions of the Software.
|
|
||||||
|
|
||||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
||||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
||||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
||||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
||||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
||||||
THE SOFTWARE.
|
|
@ -1,25 +0,0 @@
|
|||||||
"""Python module which parses and emits TOML.
|
|
||||||
|
|
||||||
Released under the MIT license.
|
|
||||||
"""
|
|
||||||
|
|
||||||
from toml import encoder
|
|
||||||
from toml import decoder
|
|
||||||
|
|
||||||
__version__ = "0.10.2"
|
|
||||||
_spec_ = "0.5.0"
|
|
||||||
|
|
||||||
load = decoder.load
|
|
||||||
loads = decoder.loads
|
|
||||||
TomlDecoder = decoder.TomlDecoder
|
|
||||||
TomlDecodeError = decoder.TomlDecodeError
|
|
||||||
TomlPreserveCommentDecoder = decoder.TomlPreserveCommentDecoder
|
|
||||||
|
|
||||||
dump = encoder.dump
|
|
||||||
dumps = encoder.dumps
|
|
||||||
TomlEncoder = encoder.TomlEncoder
|
|
||||||
TomlArraySeparatorEncoder = encoder.TomlArraySeparatorEncoder
|
|
||||||
TomlPreserveInlineDictEncoder = encoder.TomlPreserveInlineDictEncoder
|
|
||||||
TomlNumpyEncoder = encoder.TomlNumpyEncoder
|
|
||||||
TomlPreserveCommentEncoder = encoder.TomlPreserveCommentEncoder
|
|
||||||
TomlPathlibEncoder = encoder.TomlPathlibEncoder
|
|
1057
libs/toml/decoder.py
1057
libs/toml/decoder.py
File diff suppressed because it is too large
Load Diff
@ -1,304 +0,0 @@
|
|||||||
import datetime
|
|
||||||
import re
|
|
||||||
import sys
|
|
||||||
from decimal import Decimal
|
|
||||||
|
|
||||||
from toml.decoder import InlineTableDict
|
|
||||||
|
|
||||||
if sys.version_info >= (3,):
|
|
||||||
unicode = str
|
|
||||||
|
|
||||||
|
|
||||||
def dump(o, f, encoder=None):
|
|
||||||
"""Writes out dict as toml to a file
|
|
||||||
|
|
||||||
Args:
|
|
||||||
o: Object to dump into toml
|
|
||||||
f: File descriptor where the toml should be stored
|
|
||||||
encoder: The ``TomlEncoder`` to use for constructing the output string
|
|
||||||
|
|
||||||
Returns:
|
|
||||||
String containing the toml corresponding to dictionary
|
|
||||||
|
|
||||||
Raises:
|
|
||||||
TypeError: When anything other than file descriptor is passed
|
|
||||||
"""
|
|
||||||
|
|
||||||
if not f.write:
|
|
||||||
raise TypeError("You can only dump an object to a file descriptor")
|
|
||||||
d = dumps(o, encoder=encoder)
|
|
||||||
f.write(d)
|
|
||||||
return d
|
|
||||||
|
|
||||||
|
|
||||||
def dumps(o, encoder=None):
|
|
||||||
"""Stringifies input dict as toml
|
|
||||||
|
|
||||||
Args:
|
|
||||||
o: Object to dump into toml
|
|
||||||
encoder: The ``TomlEncoder`` to use for constructing the output string
|
|
||||||
|
|
||||||
Returns:
|
|
||||||
String containing the toml corresponding to dict
|
|
||||||
|
|
||||||
Examples:
|
|
||||||
```python
|
|
||||||
>>> import toml
|
|
||||||
>>> output = {
|
|
||||||
... 'a': "I'm a string",
|
|
||||||
... 'b': ["I'm", "a", "list"],
|
|
||||||
... 'c': 2400
|
|
||||||
... }
|
|
||||||
>>> toml.dumps(output)
|
|
||||||
'a = "I\'m a string"\nb = [ "I\'m", "a", "list",]\nc = 2400\n'
|
|
||||||
```
|
|
||||||
"""
|
|
||||||
|
|
||||||
retval = ""
|
|
||||||
if encoder is None:
|
|
||||||
encoder = TomlEncoder(o.__class__)
|
|
||||||
addtoretval, sections = encoder.dump_sections(o, "")
|
|
||||||
retval += addtoretval
|
|
||||||
outer_objs = [id(o)]
|
|
||||||
while sections:
|
|
||||||
section_ids = [id(section) for section in sections.values()]
|
|
||||||
for outer_obj in outer_objs:
|
|
||||||
if outer_obj in section_ids:
|
|
||||||
raise ValueError("Circular reference detected")
|
|
||||||
outer_objs += section_ids
|
|
||||||
newsections = encoder.get_empty_table()
|
|
||||||
for section in sections:
|
|
||||||
addtoretval, addtosections = encoder.dump_sections(
|
|
||||||
sections[section], section)
|
|
||||||
|
|
||||||
if addtoretval or (not addtoretval and not addtosections):
|
|
||||||
if retval and retval[-2:] != "\n\n":
|
|
||||||
retval += "\n"
|
|
||||||
retval += "[" + section + "]\n"
|
|
||||||
if addtoretval:
|
|
||||||
retval += addtoretval
|
|
||||||
for s in addtosections:
|
|
||||||
newsections[section + "." + s] = addtosections[s]
|
|
||||||
sections = newsections
|
|
||||||
return retval
|
|
||||||
|
|
||||||
|
|
||||||
def _dump_str(v):
|
|
||||||
if sys.version_info < (3,) and hasattr(v, 'decode') and isinstance(v, str):
|
|
||||||
v = v.decode('utf-8')
|
|
||||||
v = "%r" % v
|
|
||||||
if v[0] == 'u':
|
|
||||||
v = v[1:]
|
|
||||||
singlequote = v.startswith("'")
|
|
||||||
if singlequote or v.startswith('"'):
|
|
||||||
v = v[1:-1]
|
|
||||||
if singlequote:
|
|
||||||
v = v.replace("\\'", "'")
|
|
||||||
v = v.replace('"', '\\"')
|
|
||||||
v = v.split("\\x")
|
|
||||||
while len(v) > 1:
|
|
||||||
i = -1
|
|
||||||
if not v[0]:
|
|
||||||
v = v[1:]
|
|
||||||
v[0] = v[0].replace("\\\\", "\\")
|
|
||||||
# No, I don't know why != works and == breaks
|
|
||||||
joinx = v[0][i] != "\\"
|
|
||||||
while v[0][:i] and v[0][i] == "\\":
|
|
||||||
joinx = not joinx
|
|
||||||
i -= 1
|
|
||||||
if joinx:
|
|
||||||
joiner = "x"
|
|
||||||
else:
|
|
||||||
joiner = "u00"
|
|
||||||
v = [v[0] + joiner + v[1]] + v[2:]
|
|
||||||
return unicode('"' + v[0] + '"')
|
|
||||||
|
|
||||||
|
|
||||||
def _dump_float(v):
|
|
||||||
return "{}".format(v).replace("e+0", "e+").replace("e-0", "e-")
|
|
||||||
|
|
||||||
|
|
||||||
def _dump_time(v):
|
|
||||||
utcoffset = v.utcoffset()
|
|
||||||
if utcoffset is None:
|
|
||||||
return v.isoformat()
|
|
||||||
# The TOML norm specifies that it's local time thus we drop the offset
|
|
||||||
return v.isoformat()[:-6]
|
|
||||||
|
|
||||||
|
|
||||||
class TomlEncoder(object):
|
|
||||||
|
|
||||||
def __init__(self, _dict=dict, preserve=False):
|
|
||||||
self._dict = _dict
|
|
||||||
self.preserve = preserve
|
|
||||||
self.dump_funcs = {
|
|
||||||
str: _dump_str,
|
|
||||||
unicode: _dump_str,
|
|
||||||
list: self.dump_list,
|
|
||||||
bool: lambda v: unicode(v).lower(),
|
|
||||||
int: lambda v: v,
|
|
||||||
float: _dump_float,
|
|
||||||
Decimal: _dump_float,
|
|
||||||
datetime.datetime: lambda v: v.isoformat().replace('+00:00', 'Z'),
|
|
||||||
datetime.time: _dump_time,
|
|
||||||
datetime.date: lambda v: v.isoformat()
|
|
||||||
}
|
|
||||||
|
|
||||||
def get_empty_table(self):
|
|
||||||
return self._dict()
|
|
||||||
|
|
||||||
def dump_list(self, v):
|
|
||||||
retval = "["
|
|
||||||
for u in v:
|
|
||||||
retval += " " + unicode(self.dump_value(u)) + ","
|
|
||||||
retval += "]"
|
|
||||||
return retval
|
|
||||||
|
|
||||||
def dump_inline_table(self, section):
|
|
||||||
"""Preserve inline table in its compact syntax instead of expanding
|
|
||||||
into subsection.
|
|
||||||
|
|
||||||
https://github.com/toml-lang/toml#user-content-inline-table
|
|
||||||
"""
|
|
||||||
retval = ""
|
|
||||||
if isinstance(section, dict):
|
|
||||||
val_list = []
|
|
||||||
for k, v in section.items():
|
|
||||||
val = self.dump_inline_table(v)
|
|
||||||
val_list.append(k + " = " + val)
|
|
||||||
retval += "{ " + ", ".join(val_list) + " }\n"
|
|
||||||
return retval
|
|
||||||
else:
|
|
||||||
return unicode(self.dump_value(section))
|
|
||||||
|
|
||||||
def dump_value(self, v):
|
|
||||||
# Lookup function corresponding to v's type
|
|
||||||
dump_fn = self.dump_funcs.get(type(v))
|
|
||||||
if dump_fn is None and hasattr(v, '__iter__'):
|
|
||||||
dump_fn = self.dump_funcs[list]
|
|
||||||
# Evaluate function (if it exists) else return v
|
|
||||||
return dump_fn(v) if dump_fn is not None else self.dump_funcs[str](v)
|
|
||||||
|
|
||||||
def dump_sections(self, o, sup):
|
|
||||||
retstr = ""
|
|
||||||
if sup != "" and sup[-1] != ".":
|
|
||||||
sup += '.'
|
|
||||||
retdict = self._dict()
|
|
||||||
arraystr = ""
|
|
||||||
for section in o:
|
|
||||||
section = unicode(section)
|
|
||||||
qsection = section
|
|
||||||
if not re.match(r'^[A-Za-z0-9_-]+$', section):
|
|
||||||
qsection = _dump_str(section)
|
|
||||||
if not isinstance(o[section], dict):
|
|
||||||
arrayoftables = False
|
|
||||||
if isinstance(o[section], list):
|
|
||||||
for a in o[section]:
|
|
||||||
if isinstance(a, dict):
|
|
||||||
arrayoftables = True
|
|
||||||
if arrayoftables:
|
|
||||||
for a in o[section]:
|
|
||||||
arraytabstr = "\n"
|
|
||||||
arraystr += "[[" + sup + qsection + "]]\n"
|
|
||||||
s, d = self.dump_sections(a, sup + qsection)
|
|
||||||
if s:
|
|
||||||
if s[0] == "[":
|
|
||||||
arraytabstr += s
|
|
||||||
else:
|
|
||||||
arraystr += s
|
|
||||||
while d:
|
|
||||||
newd = self._dict()
|
|
||||||
for dsec in d:
|
|
||||||
s1, d1 = self.dump_sections(d[dsec], sup +
|
|
||||||
qsection + "." +
|
|
||||||
dsec)
|
|
||||||
if s1:
|
|
||||||
arraytabstr += ("[" + sup + qsection +
|
|
||||||
"." + dsec + "]\n")
|
|
||||||
arraytabstr += s1
|
|
||||||
for s1 in d1:
|
|
||||||
newd[dsec + "." + s1] = d1[s1]
|
|
||||||
d = newd
|
|
||||||
arraystr += arraytabstr
|
|
||||||
else:
|
|
||||||
if o[section] is not None:
|
|
||||||
retstr += (qsection + " = " +
|
|
||||||
unicode(self.dump_value(o[section])) + '\n')
|
|
||||||
elif self.preserve and isinstance(o[section], InlineTableDict):
|
|
||||||
retstr += (qsection + " = " +
|
|
||||||
self.dump_inline_table(o[section]))
|
|
||||||
else:
|
|
||||||
retdict[qsection] = o[section]
|
|
||||||
retstr += arraystr
|
|
||||||
return (retstr, retdict)
|
|
||||||
|
|
||||||
|
|
||||||
class TomlPreserveInlineDictEncoder(TomlEncoder):
|
|
||||||
|
|
||||||
def __init__(self, _dict=dict):
|
|
||||||
super(TomlPreserveInlineDictEncoder, self).__init__(_dict, True)
|
|
||||||
|
|
||||||
|
|
||||||
class TomlArraySeparatorEncoder(TomlEncoder):
|
|
||||||
|
|
||||||
def __init__(self, _dict=dict, preserve=False, separator=","):
|
|
||||||
super(TomlArraySeparatorEncoder, self).__init__(_dict, preserve)
|
|
||||||
if separator.strip() == "":
|
|
||||||
separator = "," + separator
|
|
||||||
elif separator.strip(' \t\n\r,'):
|
|
||||||
raise ValueError("Invalid separator for arrays")
|
|
||||||
self.separator = separator
|
|
||||||
|
|
||||||
def dump_list(self, v):
|
|
||||||
t = []
|
|
||||||
retval = "["
|
|
||||||
for u in v:
|
|
||||||
t.append(self.dump_value(u))
|
|
||||||
while t != []:
|
|
||||||
s = []
|
|
||||||
for u in t:
|
|
||||||
if isinstance(u, list):
|
|
||||||
for r in u:
|
|
||||||
s.append(r)
|
|
||||||
else:
|
|
||||||
retval += " " + unicode(u) + self.separator
|
|
||||||
t = s
|
|
||||||
retval += "]"
|
|
||||||
return retval
|
|
||||||
|
|
||||||
|
|
||||||
class TomlNumpyEncoder(TomlEncoder):
|
|
||||||
|
|
||||||
def __init__(self, _dict=dict, preserve=False):
|
|
||||||
import numpy as np
|
|
||||||
super(TomlNumpyEncoder, self).__init__(_dict, preserve)
|
|
||||||
self.dump_funcs[np.float16] = _dump_float
|
|
||||||
self.dump_funcs[np.float32] = _dump_float
|
|
||||||
self.dump_funcs[np.float64] = _dump_float
|
|
||||||
self.dump_funcs[np.int16] = self._dump_int
|
|
||||||
self.dump_funcs[np.int32] = self._dump_int
|
|
||||||
self.dump_funcs[np.int64] = self._dump_int
|
|
||||||
|
|
||||||
def _dump_int(self, v):
|
|
||||||
return "{}".format(int(v))
|
|
||||||
|
|
||||||
|
|
||||||
class TomlPreserveCommentEncoder(TomlEncoder):
|
|
||||||
|
|
||||||
def __init__(self, _dict=dict, preserve=False):
|
|
||||||
from toml.decoder import CommentValue
|
|
||||||
super(TomlPreserveCommentEncoder, self).__init__(_dict, preserve)
|
|
||||||
self.dump_funcs[CommentValue] = lambda v: v.dump(self.dump_value)
|
|
||||||
|
|
||||||
|
|
||||||
class TomlPathlibEncoder(TomlEncoder):
|
|
||||||
|
|
||||||
def _dump_pathlib_path(self, v):
|
|
||||||
return _dump_str(str(v))
|
|
||||||
|
|
||||||
def dump_value(self, v):
|
|
||||||
if (3, 4) <= sys.version_info:
|
|
||||||
import pathlib
|
|
||||||
if isinstance(v, pathlib.PurePath):
|
|
||||||
v = str(v)
|
|
||||||
return super(TomlPathlibEncoder, self).dump_value(v)
|
|
@ -1,15 +0,0 @@
|
|||||||
from collections import OrderedDict
|
|
||||||
from toml import TomlEncoder
|
|
||||||
from toml import TomlDecoder
|
|
||||||
|
|
||||||
|
|
||||||
class TomlOrderedDecoder(TomlDecoder):
|
|
||||||
|
|
||||||
def __init__(self):
|
|
||||||
super(self.__class__, self).__init__(_dict=OrderedDict)
|
|
||||||
|
|
||||||
|
|
||||||
class TomlOrderedEncoder(TomlEncoder):
|
|
||||||
|
|
||||||
def __init__(self):
|
|
||||||
super(self.__class__, self).__init__(_dict=OrderedDict)
|
|
@ -1,24 +0,0 @@
|
|||||||
from datetime import tzinfo, timedelta
|
|
||||||
|
|
||||||
|
|
||||||
class TomlTz(tzinfo):
|
|
||||||
def __init__(self, toml_offset):
|
|
||||||
if toml_offset == "Z":
|
|
||||||
self._raw_offset = "+00:00"
|
|
||||||
else:
|
|
||||||
self._raw_offset = toml_offset
|
|
||||||
self._sign = -1 if self._raw_offset[0] == '-' else 1
|
|
||||||
self._hours = int(self._raw_offset[1:3])
|
|
||||||
self._minutes = int(self._raw_offset[4:6])
|
|
||||||
|
|
||||||
def __deepcopy__(self, memo):
|
|
||||||
return self.__class__(self._raw_offset)
|
|
||||||
|
|
||||||
def tzname(self, dt):
|
|
||||||
return "UTC" + self._raw_offset
|
|
||||||
|
|
||||||
def utcoffset(self, dt):
|
|
||||||
return self._sign * timedelta(hours=self._hours, minutes=self._minutes)
|
|
||||||
|
|
||||||
def dst(self, dt):
|
|
||||||
return timedelta(0)
|
|
@ -15,10 +15,12 @@ import atexit
|
|||||||
import inspect
|
import inspect
|
||||||
import threading
|
import threading
|
||||||
|
|
||||||
|
from queue import SimpleQueue
|
||||||
from time import strftime
|
from time import strftime
|
||||||
from logging import NOTSET, DEBUG, INFO, WARNING, ERROR, FATAL
|
from logging import NOTSET, DEBUG, INFO, WARNING, ERROR, FATAL
|
||||||
from types import FrameType
|
from types import FrameType
|
||||||
from typing import Optional, Union, Dict, Iterable, Any, List
|
from typing import Optional, Union, Dict, Iterable, Any, List
|
||||||
|
import ctypes
|
||||||
|
|
||||||
os.system('')
|
os.system('')
|
||||||
# print(os.path.abspath(os.curdir))
|
# print(os.path.abspath(os.curdir))
|
||||||
@ -42,6 +44,8 @@ color_reset_suffix = "\033[0m"
|
|||||||
re_find_color_code = r'\033\[[^\f\n\r\t\vm]*m'
|
re_find_color_code = r'\033\[[^\f\n\r\t\vm]*m'
|
||||||
re_color_code = re.compile(re_find_color_code)
|
re_color_code = re.compile(re_find_color_code)
|
||||||
|
|
||||||
|
re_find_level_code = r'[INFO]||'
|
||||||
|
|
||||||
"""
|
"""
|
||||||
OFF > FATAL > ERROR > WARN > INFO > FINE > FINER > DEBUG > TRACE > ALL
|
OFF > FATAL > ERROR > WARN > INFO > FINE > FINER > DEBUG > TRACE > ALL
|
||||||
logging.py
|
logging.py
|
||||||
@ -59,7 +63,7 @@ TRACE = 5
|
|||||||
ALL = NOTSET
|
ALL = NOTSET
|
||||||
|
|
||||||
|
|
||||||
class LoggingLevel(enum.IntEnum):
|
class LoggingLevel:
|
||||||
"""定义LoggingLevel属性(即是变量) """
|
"""定义LoggingLevel属性(即是变量) """
|
||||||
CRITICAL = 50
|
CRITICAL = 50
|
||||||
FATAL = CRITICAL
|
FATAL = CRITICAL
|
||||||
@ -73,12 +77,15 @@ class LoggingLevel(enum.IntEnum):
|
|||||||
NOTSET = 0
|
NOTSET = 0
|
||||||
ALL = NOTSET
|
ALL = NOTSET
|
||||||
|
|
||||||
@property
|
@staticmethod
|
||||||
def type(self) -> type(int):
|
def type() -> type(int):
|
||||||
return int
|
return int
|
||||||
|
|
||||||
|
|
||||||
level_name_map = {
|
logging_level_type = int
|
||||||
|
|
||||||
|
|
||||||
|
level_name_map: Dict[logging_level_type, str] = {
|
||||||
LoggingLevel.ALL: 'ALL', # NOTSET
|
LoggingLevel.ALL: 'ALL', # NOTSET
|
||||||
LoggingLevel.TRACE: 'TRACE',
|
LoggingLevel.TRACE: 'TRACE',
|
||||||
LoggingLevel.FINE: 'FINE',
|
LoggingLevel.FINE: 'FINE',
|
||||||
@ -89,7 +96,7 @@ level_name_map = {
|
|||||||
LoggingLevel.FATAL: 'FATAL'
|
LoggingLevel.FATAL: 'FATAL'
|
||||||
}
|
}
|
||||||
|
|
||||||
name_level_map = {
|
name_level_map: Dict[str, logging_level_type] = {
|
||||||
'NOTSET': LoggingLevel.ALL,
|
'NOTSET': LoggingLevel.ALL,
|
||||||
'ALL': LoggingLevel.ALL,
|
'ALL': LoggingLevel.ALL,
|
||||||
'TRACE': LoggingLevel.TRACE,
|
'TRACE': LoggingLevel.TRACE,
|
||||||
@ -103,27 +110,27 @@ name_level_map = {
|
|||||||
'FATAL': LoggingLevel.FATAL
|
'FATAL': LoggingLevel.FATAL
|
||||||
}
|
}
|
||||||
|
|
||||||
# class LoggerConfig(enum.Enum):
|
|
||||||
# loggers = {}
|
def get_level_by_name(name: str) -> logging_level_type:
|
||||||
# colors = {}
|
return name_level_map[name.upper()]
|
||||||
# files = {}
|
|
||||||
# formatters = {}
|
|
||||||
|
|
||||||
|
|
||||||
logger_configs = {
|
logger_configs = {
|
||||||
'Logger': {
|
'Logger': {
|
||||||
'root': {
|
'root': {
|
||||||
'level': LoggingLevel.DEBUG,
|
'level': DEBUG,
|
||||||
'color': 'main_color',
|
'color': 'main_color',
|
||||||
'file': 'main_log_file',
|
'file': 'main_log_file',
|
||||||
},
|
},
|
||||||
'client': {
|
'client': {
|
||||||
'level': LoggingLevel.TRACE,
|
'level': TRACE,
|
||||||
'color': 'main_color',
|
'color': 'main_color',
|
||||||
'file': 'main_log_file',
|
'file': 'main_log_file',
|
||||||
},
|
},
|
||||||
'server': {
|
'server': {
|
||||||
'level': LoggingLevel.TRACE,
|
'level': TRACE,
|
||||||
'color': 'DiGua_color',
|
'color': 'DiGua_color',
|
||||||
'file': 'main_log_file',
|
'file': 'main_log_file',
|
||||||
},
|
},
|
||||||
@ -134,14 +141,31 @@ logger_configs = {
|
|||||||
'main_time': '\033[38;2;201;222;56m',
|
'main_time': '\033[38;2;201;222;56m',
|
||||||
'file_name': '\033[38;2;0;255;180m',
|
'file_name': '\033[38;2;0;255;180m',
|
||||||
'code_line': '\033[38;2;0;255;180m',
|
'code_line': '\033[38;2;0;255;180m',
|
||||||
|
'info': '\033[0m',
|
||||||
|
'message': '\033[0m',
|
||||||
'logger': '\033[0m',
|
'logger': '\033[0m',
|
||||||
LoggingLevel.TRACE: {'info': '\033[38;2;138;173;244m', 'message': '\033[38;2;138;173;244m'},
|
TRACE: {'info': '\033[38;2;138;173;244m'},
|
||||||
LoggingLevel.FINE: {'info': '\033[35;48;2;44;44;54m', 'message': '\033[35m'},
|
FINE: {'info': '\033[35;48;2;44;44;54m'},
|
||||||
LoggingLevel.DEBUG: {'info': '\033[38;2;133;138;149m', 'message': '\033[38;2;133;138;149m'},
|
DEBUG: {'info': '\033[38;2;133;138;149m'},
|
||||||
LoggingLevel.INFO: {'info': '\033[0m', 'message': '\033[0m'},
|
INFO: {'info': '\033[0m'},
|
||||||
LoggingLevel.WARNING: {'info': '\033[33m', 'message': '\033[33m'},
|
WARNING: {'info': '\033[33m'},
|
||||||
LoggingLevel.ERROR: {'info': '\033[31m', 'message': '\033[31m'},
|
ERROR: {'info': '\033[31m'},
|
||||||
LoggingLevel.FATAL: {'info': '\033[38;2;255;255;0;48;2;120;10;10m', 'message': '\033[38;2;255;255;0;48;2;120;10;10m', 'logger': '\033[38;2;245;189;230m'}
|
FATAL: {'info': '\033[38;2;255;255;0;48;2;120;10;10m', 'logger': '\033[38;2;245;189;230m'}
|
||||||
|
},
|
||||||
|
'fancy_main_color': {
|
||||||
|
'file_time': '\033[38;2;201;222;56m',
|
||||||
|
'main_time': '\033[38;2;201;222;56m',
|
||||||
|
'file_name': '\033[38;2;0;255;180m',
|
||||||
|
'code_line': '\033[38;2;0;255;180m',
|
||||||
|
'logger': '\033[0m',
|
||||||
|
'message': '\033[0m',
|
||||||
|
TRACE: {'info': '\033[38;2;138;173;244m', 'message': '\033[38;2;138;173;244m'},
|
||||||
|
FINE: {'info': '\033[35;48;2;44;44;54m', 'message': '\033[35m'},
|
||||||
|
DEBUG: {'info': '\033[38;2;133;138;149m', 'message': '\033[38;2;133;138;149m'},
|
||||||
|
INFO: {'info': '\033[0m', 'message': '\033[0m'},
|
||||||
|
WARNING: {'info': '\033[33m', 'message': '\033[33m'},
|
||||||
|
ERROR: {'info': '\033[31m', 'message': '\033[31m'},
|
||||||
|
FATAL: {'info': '\033[38;2;255;255;0;48;2;120;10;10m', 'message': '\033[38;2;255;255;0;48;2;120;10;10m', 'logger': '\033[38;2;245;189;230m'}
|
||||||
},
|
},
|
||||||
'DiGua_color': {
|
'DiGua_color': {
|
||||||
# catppuccin Macchiato
|
# catppuccin Macchiato
|
||||||
@ -150,20 +174,21 @@ logger_configs = {
|
|||||||
'file_name': '\033[38;2;139;213;202m',
|
'file_name': '\033[38;2;139;213;202m',
|
||||||
'code_line': '\033[38;2;166;218;149m',
|
'code_line': '\033[38;2;166;218;149m',
|
||||||
'logger': '\033[0m',
|
'logger': '\033[0m',
|
||||||
LoggingLevel.TRACE: {'info': '\033[38;2;138;173;244m', 'message': '\033[38;2;138;173;244m'},
|
'message': '\033[0m',
|
||||||
LoggingLevel.FINE: {'info': '\033[38;2;198;160;246m', 'message': '\033[38;2;198;160;246m'},
|
TRACE: {'info': '\033[38;2;138;173;244m', 'message': '\033[38;2;138;173;244m'},
|
||||||
LoggingLevel.DEBUG: {'info': '\033[38;2;133;138;149m', 'message': '\033[38;2;133;138;149m'},
|
FINE: {'info': '\033[38;2;198;160;246m', 'message': '\033[38;2;198;160;246m'},
|
||||||
LoggingLevel.INFO: {'info': '\033[0m', 'message': '\033[0m'},
|
DEBUG: {'info': '\033[38;2;133;138;149m', 'message': '\033[38;2;133;138;149m'},
|
||||||
LoggingLevel.WARNING: {'info': '\033[38;2;245;169;127m', 'message': '\033[38;2;245;169;127m'},
|
INFO: {'info': '\033[0m', 'message': '\033[0m'},
|
||||||
LoggingLevel.ERROR: {'info': '\033[38;2;237;135;150m', 'message': '\033[38;2;237;135;150m'},
|
WARNING: {'info': '\033[38;2;245;169;127m', 'message': '\033[38;2;245;169;127m'},
|
||||||
LoggingLevel.FATAL: {'info': '\033[38;2;255;255;0;48;2;120;10;10m', 'message': '\033[38;2;255;255;0;48;2;120;10;10m', 'logger': '\033[38;2;245;189;230m'}
|
ERROR: {'info': '\033[38;2;237;135;150m', 'message': '\033[38;2;237;135;150m'},
|
||||||
|
FATAL: {'info': '\033[38;2;255;255;0;48;2;120;10;10m', 'message': '\033[38;2;255;255;0;48;2;120;10;10m', 'logger': '\033[38;2;245;189;230m'}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
'File': {
|
'File': {
|
||||||
'main_log_file': {
|
'main_log_file': {
|
||||||
'mode': 'a',
|
'mode': 'a',
|
||||||
'encoding': 'utf-8',
|
'encoding': 'utf-8',
|
||||||
'level': LoggingLevel.TRACE,
|
'level': TRACE,
|
||||||
'file_name': './logs/{file_time}_logs.md',
|
'file_name': './logs/{file_time}_logs.md',
|
||||||
'cache_len': 10,
|
'cache_len': 10,
|
||||||
'cache_time': 1
|
'cache_time': 1
|
||||||
@ -182,6 +207,22 @@ logger_configs = {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
class LogFileConf:
|
||||||
|
def __init__(self, file_name: str,
|
||||||
|
file_mode: str = 'a',
|
||||||
|
file_encoding: str = 'utf-8',
|
||||||
|
file_level: LoggingLevel.type() = LoggingLevel.DEBUG,
|
||||||
|
file_cache_len: int = 20,
|
||||||
|
file_cache_time: Union[float, int] = 1):
|
||||||
|
self.file_name: str = file_name
|
||||||
|
self.file_mode: str = file_mode
|
||||||
|
self.file_encoding: str = file_encoding
|
||||||
|
self.file_level: LoggingLevel.type() = file_level
|
||||||
|
self.file_cache_len: int = file_cache_len
|
||||||
|
self.file_cache_time: Union[int, float] = file_cache_time
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
class ThreadLock:
|
class ThreadLock:
|
||||||
"""一个用来 with 的线程锁"""
|
"""一个用来 with 的线程锁"""
|
||||||
|
|
||||||
@ -371,13 +412,14 @@ class CachedFileHandler(StreamHandlerTemplate):
|
|||||||
""" 缓存文件的处理器 """
|
""" 缓存文件的处理器 """
|
||||||
name = 'cached file handler'
|
name = 'cached file handler'
|
||||||
|
|
||||||
def __init__(self, level: int, formatter: Formatter = None, file_name: str = ''):
|
def __init__(self, level: int, formatter: Formatter = None, file_conf: Union[dict, LogFileConf] = None):
|
||||||
"""
|
"""
|
||||||
:param level:
|
:param level:
|
||||||
:param formatter:
|
:param formatter:
|
||||||
:param file_name: 文件名称
|
:param file_conf: 文件配置
|
||||||
"""
|
"""
|
||||||
super().__init__(level=level, formatter=formatter)
|
super().__init__(level=level, formatter=formatter)
|
||||||
|
self.file_conf = file_conf if type(file_conf) is LogFileConf else LogFileConf()
|
||||||
# self.quene = queue
|
# self.quene = queue
|
||||||
|
|
||||||
def write(self, message: str, flush: Optional[bool]) -> bool:
|
def write(self, message: str, flush: Optional[bool]) -> bool:
|
||||||
@ -474,7 +516,7 @@ class LogFileCache:
|
|||||||
|
|
||||||
|
|
||||||
class Logger:
|
class Logger:
|
||||||
"""shenjack logger"""
|
"""shenjackのlogger"""
|
||||||
|
|
||||||
def __init__(self,
|
def __init__(self,
|
||||||
name: str = 'root',
|
name: str = 'root',
|
||||||
@ -516,11 +558,7 @@ class Logger:
|
|||||||
self.streams.append(stream)
|
self.streams.append(stream)
|
||||||
return True
|
return True
|
||||||
|
|
||||||
# def add_file(self, handler: LogFileCache):
|
def enabled_for(self, level: LoggingLevel.type()) -> bool:
|
||||||
# self.file_cache.append(handler)
|
|
||||||
# self.min_level = min(*[file.level for file in self.file_cache], self.level)
|
|
||||||
|
|
||||||
def enabled_for(self, level: LoggingLevel.type) -> bool:
|
|
||||||
if not self.enable:
|
if not self.enable:
|
||||||
return False
|
return False
|
||||||
|
|
||||||
@ -536,7 +574,8 @@ class Logger:
|
|||||||
if (frame := inspect.currentframe()) is not None:
|
if (frame := inspect.currentframe()) is not None:
|
||||||
frame = frame if frame.f_back is None else frame.f_back if frame.f_back.f_back is None else frame.f_back.f_back
|
frame = frame if frame.f_back is None else frame.f_back if frame.f_back.f_back is None else frame.f_back.f_back
|
||||||
# text = sep.join(i if type(i) is str else str(i) for i in values)
|
# text = sep.join(i if type(i) is str else str(i) for i in values)
|
||||||
text = f"{self.colors[level]['message']}{sep.join(i if type(i) is str else str(i) for i in values)}{color_reset_suffix}"
|
message_color = self.colors[level]['message'] if 'message' in self.colors[level] else self.colors['message']
|
||||||
|
text = f"{message_color}{sep.join(i if type(i) is str else str(i) for i in values)}{color_reset_suffix}"
|
||||||
# print('abc', 'abc', marker='123')
|
# print('abc', 'abc', marker='123')
|
||||||
print_text = self.format_text(level=level, text=text, frame=frame)
|
print_text = self.format_text(level=level, text=text, frame=frame)
|
||||||
if level >= self.level:
|
if level >= self.level:
|
||||||
@ -624,19 +663,23 @@ class Logger:
|
|||||||
return self.make_log(*values, level=LoggingLevel.FATAL, marker=marker, sep=sep, end=end, flush=flush, frame=frame)
|
return self.make_log(*values, level=LoggingLevel.FATAL, marker=marker, sep=sep, end=end, flush=flush, frame=frame)
|
||||||
|
|
||||||
|
|
||||||
_loggerClass = Logger
|
_logger_class = Logger
|
||||||
|
|
||||||
|
|
||||||
class RootLogger(Logger):
|
class RootLogger(Logger):
|
||||||
""" 默认的 logger """
|
""" 默认的 logger """
|
||||||
|
|
||||||
def __init__(self, level: int = LoggingLevel.WARNING, *args, **kwargs):
|
def __init__(self, level: int = LoggingLevel.WARNING, *args, **kwargs):
|
||||||
super().__init__(level=level, *args, **kwargs)
|
super().__init__(level=level, *args, **kwargs)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
root_logger = RootLogger()
|
root_logger = RootLogger()
|
||||||
|
|
||||||
|
|
||||||
|
def basic_config() -> None:
|
||||||
|
...
|
||||||
|
|
||||||
|
|
||||||
def trace(*values: object,
|
def trace(*values: object,
|
||||||
marker: Optional[str] = None,
|
marker: Optional[str] = None,
|
||||||
sep: Optional[str] = ' ',
|
sep: Optional[str] = ' ',
|
||||||
@ -806,10 +849,11 @@ def get_logger(name: str = 'root') -> Logger:
|
|||||||
file_handler = None
|
file_handler = None
|
||||||
if 'file' in the_config:
|
if 'file' in the_config:
|
||||||
file_handler = [LogFileCache(logger_configs['File'][the_config['file']])]
|
file_handler = [LogFileCache(logger_configs['File'][the_config['file']])]
|
||||||
|
color = the_config['color'] if 'color' in the_config else 'main_color'
|
||||||
return Logger(name=name,
|
return Logger(name=name,
|
||||||
level=the_config['level'],
|
level=the_config['level'],
|
||||||
file_conf=file_handler,
|
file_conf=file_handler,
|
||||||
colors=logger_configs['Color'][get_key_from_dict(the_config, 'color', 'main_color')],
|
colors=logger_configs['Color'][color],
|
||||||
formats=logger_configs['Formatter'].copy())
|
formats=logger_configs['Formatter'].copy())
|
||||||
|
|
||||||
|
|
||||||
@ -841,3 +885,5 @@ if __name__ == "__main__":
|
|||||||
for x in range(5):
|
for x in range(5):
|
||||||
test_logger(logger)
|
test_logger(logger)
|
||||||
test_logger(a_logger)
|
test_logger(a_logger)
|
||||||
|
import tomlkit
|
||||||
|
parse_config = tomlkit.dumps(logger_configs)
|
||||||
|
@ -1 +1 @@
|
|||||||
python3.8.exe -m nuitka --mingw64 --show-memory --show-progress --output-dir=build/nuitka --enable-plugin=numpy --nofollow-import-to=objprint,numpy,http,urllib,ssl,socket,html,email,pyglet --standalone .\DR.py
|
python3.8.exe -m nuitka --jobs=24 --mingw64 --show-memory --show-progress --output-dir=build/nuitka --enable-plugin=numpy --nofollow-import-to=objprint,numpy,http,urllib,ssl,socket,html,email,pyglet --standalone .\DR.py
|
||||||
|
1
nuitka2-complie.ps1
Normal file
1
nuitka2-complie.ps1
Normal file
@ -0,0 +1 @@
|
|||||||
|
python3.8.exe -m nuitka --mingw64 --jobs=12 --show-memory --show-progress --output-dir=build/nuitka1 --enable-plugin=numpy --nofollow-import-to=objprint,numpy,http,urllib,ssl,socket,html,email,pyglet --standalone .\DR.py
|
287
poetry.lock
generated
Normal file
287
poetry.lock
generated
Normal file
@ -0,0 +1,287 @@
|
|||||||
|
[[package]]
|
||||||
|
name = "cython"
|
||||||
|
version = "0.29.32"
|
||||||
|
description = "The Cython compiler for writing C extensions for the Python language."
|
||||||
|
category = "main"
|
||||||
|
optional = false
|
||||||
|
python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "objprint"
|
||||||
|
version = "0.2.2"
|
||||||
|
description = "A library that can print Python objects in human readable format"
|
||||||
|
category = "main"
|
||||||
|
optional = false
|
||||||
|
python-versions = ">=3.6"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "pillow"
|
||||||
|
version = "9.2.0"
|
||||||
|
description = "Python Imaging Library (Fork)"
|
||||||
|
category = "main"
|
||||||
|
optional = false
|
||||||
|
python-versions = ">=3.7"
|
||||||
|
|
||||||
|
[package.extras]
|
||||||
|
docs = ["furo", "olefile", "sphinx (>=2.4)", "sphinx-copybutton", "sphinx-issues (>=3.0.1)", "sphinx-removed-in", "sphinxext-opengraph"]
|
||||||
|
tests = ["check-manifest", "coverage", "defusedxml", "markdown2", "olefile", "packaging", "pyroma", "pytest", "pytest-cov", "pytest-timeout"]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "psutil"
|
||||||
|
version = "5.9.3"
|
||||||
|
description = "Cross-platform lib for process and system monitoring in Python."
|
||||||
|
category = "main"
|
||||||
|
optional = false
|
||||||
|
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
|
||||||
|
|
||||||
|
[package.extras]
|
||||||
|
test = ["enum34", "ipaddress", "mock", "pywin32", "wmi"]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "setuptools"
|
||||||
|
version = "65.5.0"
|
||||||
|
description = "Easily download, build, install, upgrade, and uninstall Python packages"
|
||||||
|
category = "main"
|
||||||
|
optional = false
|
||||||
|
python-versions = ">=3.7"
|
||||||
|
|
||||||
|
[package.extras]
|
||||||
|
docs = ["furo", "jaraco.packaging (>=9)", "jaraco.tidelift (>=1.4)", "pygments-github-lexers (==0.0.5)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-favicon", "sphinx-hoverxref (<2)", "sphinx-inline-tabs", "sphinx-notfound-page (==0.8.3)", "sphinx-reredirects", "sphinxcontrib-towncrier"]
|
||||||
|
testing = ["build[virtualenv]", "filelock (>=3.4.0)", "flake8 (<5)", "flake8-2020", "ini2toml[lite] (>=0.9)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "mock", "pip (>=19.1)", "pip-run (>=8.8)", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=1.3)", "pytest-flake8", "pytest-mypy (>=0.9.1)", "pytest-perf", "pytest-xdist", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel"]
|
||||||
|
testing-integration = ["build[virtualenv]", "filelock (>=3.4.0)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "pytest", "pytest-enabler", "pytest-xdist", "tomli", "virtualenv (>=13.0.0)", "wheel"]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "tomlkit"
|
||||||
|
version = "0.11.6"
|
||||||
|
description = "Style preserving TOML library"
|
||||||
|
category = "main"
|
||||||
|
optional = false
|
||||||
|
python-versions = ">=3.6"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "vizplugins"
|
||||||
|
version = "0.1.2"
|
||||||
|
description = "official plugins for viztracer"
|
||||||
|
category = "main"
|
||||||
|
optional = false
|
||||||
|
python-versions = ">=3.6"
|
||||||
|
|
||||||
|
[package.dependencies]
|
||||||
|
psutil = "*"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "viztracer"
|
||||||
|
version = "0.15.4"
|
||||||
|
description = "A debugging and profiling tool that can trace and visualize python code execution"
|
||||||
|
category = "main"
|
||||||
|
optional = false
|
||||||
|
python-versions = ">=3.6"
|
||||||
|
|
||||||
|
[package.dependencies]
|
||||||
|
objprint = ">=0.1.3"
|
||||||
|
|
||||||
|
[package.extras]
|
||||||
|
full = ["orjson", "rich"]
|
||||||
|
|
||||||
|
[metadata]
|
||||||
|
lock-version = "1.1"
|
||||||
|
python-versions = ">=3.8"
|
||||||
|
content-hash = "139956c437c1088cb571b61e140222f957843f4748d0802deee6dcf9f6558d97"
|
||||||
|
|
||||||
|
[metadata.files]
|
||||||
|
cython = [
|
||||||
|
{file = "Cython-0.29.32-cp27-cp27m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:39afb4679b8c6bf7ccb15b24025568f4f9b4d7f9bf3cbd981021f542acecd75b"},
|
||||||
|
{file = "Cython-0.29.32-cp27-cp27m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:dbee03b8d42dca924e6aa057b836a064c769ddfd2a4c2919e65da2c8a362d528"},
|
||||||
|
{file = "Cython-0.29.32-cp27-cp27mu-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:5ba622326f2862f9c1f99ca8d47ade49871241920a352c917e16861e25b0e5c3"},
|
||||||
|
{file = "Cython-0.29.32-cp27-cp27mu-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:e6ffa08aa1c111a1ebcbd1cf4afaaec120bc0bbdec3f2545f8bb7d3e8e77a1cd"},
|
||||||
|
{file = "Cython-0.29.32-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl", hash = "sha256:97335b2cd4acebf30d14e2855d882de83ad838491a09be2011745579ac975833"},
|
||||||
|
{file = "Cython-0.29.32-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:06be83490c906b6429b4389e13487a26254ccaad2eef6f3d4ee21d8d3a4aaa2b"},
|
||||||
|
{file = "Cython-0.29.32-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_24_i686.whl", hash = "sha256:eefd2b9a5f38ded8d859fe96cc28d7d06e098dc3f677e7adbafda4dcdd4a461c"},
|
||||||
|
{file = "Cython-0.29.32-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:5514f3b4122cb22317122a48e175a7194e18e1803ca555c4c959d7dfe68eaf98"},
|
||||||
|
{file = "Cython-0.29.32-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl", hash = "sha256:656dc5ff1d269de4d11ee8542f2ffd15ab466c447c1f10e5b8aba6f561967276"},
|
||||||
|
{file = "Cython-0.29.32-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:cdf10af3e2e3279dc09fdc5f95deaa624850a53913f30350ceee824dc14fc1a6"},
|
||||||
|
{file = "Cython-0.29.32-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_24_i686.whl", hash = "sha256:3875c2b2ea752816a4d7ae59d45bb546e7c4c79093c83e3ba7f4d9051dd02928"},
|
||||||
|
{file = "Cython-0.29.32-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:79e3bab19cf1b021b613567c22eb18b76c0c547b9bc3903881a07bfd9e7e64cf"},
|
||||||
|
{file = "Cython-0.29.32-cp35-cp35m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:b0595aee62809ba353cebc5c7978e0e443760c3e882e2c7672c73ffe46383673"},
|
||||||
|
{file = "Cython-0.29.32-cp35-cp35m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:0ea8267fc373a2c5064ad77d8ff7bf0ea8b88f7407098ff51829381f8ec1d5d9"},
|
||||||
|
{file = "Cython-0.29.32-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl", hash = "sha256:c8e8025f496b5acb6ba95da2fb3e9dacffc97d9a92711aacfdd42f9c5927e094"},
|
||||||
|
{file = "Cython-0.29.32-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:afbce249133a830f121b917f8c9404a44f2950e0e4f5d1e68f043da4c2e9f457"},
|
||||||
|
{file = "Cython-0.29.32-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_24_i686.whl", hash = "sha256:513e9707407608ac0d306c8b09d55a28be23ea4152cbd356ceaec0f32ef08d65"},
|
||||||
|
{file = "Cython-0.29.32-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:e83228e0994497900af954adcac27f64c9a57cd70a9ec768ab0cb2c01fd15cf1"},
|
||||||
|
{file = "Cython-0.29.32-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:ea1dcc07bfb37367b639415333cfbfe4a93c3be340edf1db10964bc27d42ed64"},
|
||||||
|
{file = "Cython-0.29.32-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:8669cadeb26d9a58a5e6b8ce34d2c8986cc3b5c0bfa77eda6ceb471596cb2ec3"},
|
||||||
|
{file = "Cython-0.29.32-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl", hash = "sha256:ed087eeb88a8cf96c60fb76c5c3b5fb87188adee5e179f89ec9ad9a43c0c54b3"},
|
||||||
|
{file = "Cython-0.29.32-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:3f85eb2343d20d91a4ea9cf14e5748092b376a64b7e07fc224e85b2753e9070b"},
|
||||||
|
{file = "Cython-0.29.32-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_24_i686.whl", hash = "sha256:63b79d9e1f7c4d1f498ab1322156a0d7dc1b6004bf981a8abda3f66800e140cd"},
|
||||||
|
{file = "Cython-0.29.32-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:e1958e0227a4a6a2c06fd6e35b7469de50adf174102454db397cec6e1403cce3"},
|
||||||
|
{file = "Cython-0.29.32-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:856d2fec682b3f31583719cb6925c6cdbb9aa30f03122bcc45c65c8b6f515754"},
|
||||||
|
{file = "Cython-0.29.32-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:479690d2892ca56d34812fe6ab8f58e4b2e0129140f3d94518f15993c40553da"},
|
||||||
|
{file = "Cython-0.29.32-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl", hash = "sha256:67fdd2f652f8d4840042e2d2d91e15636ba2bcdcd92e7e5ffbc68e6ef633a754"},
|
||||||
|
{file = "Cython-0.29.32-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:4a4b03ab483271f69221c3210f7cde0dcc456749ecf8243b95bc7a701e5677e0"},
|
||||||
|
{file = "Cython-0.29.32-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_24_i686.whl", hash = "sha256:40eff7aa26e91cf108fd740ffd4daf49f39b2fdffadabc7292b4b7dc5df879f0"},
|
||||||
|
{file = "Cython-0.29.32-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:0bbc27abdf6aebfa1bce34cd92bd403070356f28b0ecb3198ff8a182791d58b9"},
|
||||||
|
{file = "Cython-0.29.32-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:cddc47ec746a08603037731f5d10aebf770ced08666100bd2cdcaf06a85d4d1b"},
|
||||||
|
{file = "Cython-0.29.32-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:eca3065a1279456e81c615211d025ea11bfe4e19f0c5650b859868ca04b3fcbd"},
|
||||||
|
{file = "Cython-0.29.32-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl", hash = "sha256:d968ffc403d92addf20b68924d95428d523436adfd25cf505d427ed7ba3bee8b"},
|
||||||
|
{file = "Cython-0.29.32-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:f3fd44cc362eee8ae569025f070d56208908916794b6ab21e139cea56470a2b3"},
|
||||||
|
{file = "Cython-0.29.32-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_24_i686.whl", hash = "sha256:b6da3063c5c476f5311fd76854abae6c315f1513ef7d7904deed2e774623bbb9"},
|
||||||
|
{file = "Cython-0.29.32-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:061e25151c38f2361bc790d3bcf7f9d9828a0b6a4d5afa56fbed3bd33fb2373a"},
|
||||||
|
{file = "Cython-0.29.32-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:f9944013588a3543fca795fffb0a070a31a243aa4f2d212f118aa95e69485831"},
|
||||||
|
{file = "Cython-0.29.32-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:07d173d3289415bb496e72cb0ddd609961be08fe2968c39094d5712ffb78672b"},
|
||||||
|
{file = "Cython-0.29.32-py2.py3-none-any.whl", hash = "sha256:eeb475eb6f0ccf6c039035eb4f0f928eb53ead88777e0a760eccb140ad90930b"},
|
||||||
|
{file = "Cython-0.29.32.tar.gz", hash = "sha256:8733cf4758b79304f2a4e39ebfac5e92341bce47bcceb26c1254398b2f8c1af7"},
|
||||||
|
]
|
||||||
|
objprint = [
|
||||||
|
{file = "objprint-0.2.2-py3-none-any.whl", hash = "sha256:9f50bb3b7cbe95b6d22c79e4f08a5273e3f7e5ff5ce35e146f6e7854abd276a0"},
|
||||||
|
{file = "objprint-0.2.2.tar.gz", hash = "sha256:90f2f3c19dfda1b5eb50d87d82ccbc20511ca4f02c4878553c56edc711e39689"},
|
||||||
|
]
|
||||||
|
pillow = [
|
||||||
|
{file = "Pillow-9.2.0-cp310-cp310-macosx_10_10_x86_64.whl", hash = "sha256:a9c9bc489f8ab30906d7a85afac4b4944a572a7432e00698a7239f44a44e6efb"},
|
||||||
|
{file = "Pillow-9.2.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:510cef4a3f401c246cfd8227b300828715dd055463cdca6176c2e4036df8bd4f"},
|
||||||
|
{file = "Pillow-9.2.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7888310f6214f19ab2b6df90f3f06afa3df7ef7355fc025e78a3044737fab1f5"},
|
||||||
|
{file = "Pillow-9.2.0-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:831e648102c82f152e14c1a0938689dbb22480c548c8d4b8b248b3e50967b88c"},
|
||||||
|
{file = "Pillow-9.2.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1cc1d2451e8a3b4bfdb9caf745b58e6c7a77d2e469159b0d527a4554d73694d1"},
|
||||||
|
{file = "Pillow-9.2.0-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:136659638f61a251e8ed3b331fc6ccd124590eeff539de57c5f80ef3a9594e58"},
|
||||||
|
{file = "Pillow-9.2.0-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:6e8c66f70fb539301e064f6478d7453e820d8a2c631da948a23384865cd95544"},
|
||||||
|
{file = "Pillow-9.2.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:37ff6b522a26d0538b753f0b4e8e164fdada12db6c6f00f62145d732d8a3152e"},
|
||||||
|
{file = "Pillow-9.2.0-cp310-cp310-win32.whl", hash = "sha256:c79698d4cd9318d9481d89a77e2d3fcaeff5486be641e60a4b49f3d2ecca4e28"},
|
||||||
|
{file = "Pillow-9.2.0-cp310-cp310-win_amd64.whl", hash = "sha256:254164c57bab4b459f14c64e93df11eff5ded575192c294a0c49270f22c5d93d"},
|
||||||
|
{file = "Pillow-9.2.0-cp311-cp311-macosx_10_10_x86_64.whl", hash = "sha256:adabc0bce035467fb537ef3e5e74f2847c8af217ee0be0455d4fec8adc0462fc"},
|
||||||
|
{file = "Pillow-9.2.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:336b9036127eab855beec9662ac3ea13a4544a523ae273cbf108b228ecac8437"},
|
||||||
|
{file = "Pillow-9.2.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:50dff9cc21826d2977ef2d2a205504034e3a4563ca6f5db739b0d1026658e004"},
|
||||||
|
{file = "Pillow-9.2.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:cb6259196a589123d755380b65127ddc60f4c64b21fc3bb46ce3a6ea663659b0"},
|
||||||
|
{file = "Pillow-9.2.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7b0554af24df2bf96618dac71ddada02420f946be943b181108cac55a7a2dcd4"},
|
||||||
|
{file = "Pillow-9.2.0-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:15928f824870535c85dbf949c09d6ae7d3d6ac2d6efec80f3227f73eefba741c"},
|
||||||
|
{file = "Pillow-9.2.0-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:bdd0de2d64688ecae88dd8935012c4a72681e5df632af903a1dca8c5e7aa871a"},
|
||||||
|
{file = "Pillow-9.2.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:d5b87da55a08acb586bad5c3aa3b86505f559b84f39035b233d5bf844b0834b1"},
|
||||||
|
{file = "Pillow-9.2.0-cp311-cp311-win32.whl", hash = "sha256:b6d5e92df2b77665e07ddb2e4dbd6d644b78e4c0d2e9272a852627cdba0d75cf"},
|
||||||
|
{file = "Pillow-9.2.0-cp311-cp311-win_amd64.whl", hash = "sha256:6bf088c1ce160f50ea40764f825ec9b72ed9da25346216b91361eef8ad1b8f8c"},
|
||||||
|
{file = "Pillow-9.2.0-cp37-cp37m-macosx_10_10_x86_64.whl", hash = "sha256:2c58b24e3a63efd22554c676d81b0e57f80e0a7d3a5874a7e14ce90ec40d3069"},
|
||||||
|
{file = "Pillow-9.2.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:eef7592281f7c174d3d6cbfbb7ee5984a671fcd77e3fc78e973d492e9bf0eb3f"},
|
||||||
|
{file = "Pillow-9.2.0-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:dcd7b9c7139dc8258d164b55696ecd16c04607f1cc33ba7af86613881ffe4ac8"},
|
||||||
|
{file = "Pillow-9.2.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a138441e95562b3c078746a22f8fca8ff1c22c014f856278bdbdd89ca36cff1b"},
|
||||||
|
{file = "Pillow-9.2.0-cp37-cp37m-manylinux_2_28_aarch64.whl", hash = "sha256:93689632949aff41199090eff5474f3990b6823404e45d66a5d44304e9cdc467"},
|
||||||
|
{file = "Pillow-9.2.0-cp37-cp37m-manylinux_2_28_x86_64.whl", hash = "sha256:f3fac744f9b540148fa7715a435d2283b71f68bfb6d4aae24482a890aed18b59"},
|
||||||
|
{file = "Pillow-9.2.0-cp37-cp37m-win32.whl", hash = "sha256:fa768eff5f9f958270b081bb33581b4b569faabf8774726b283edb06617101dc"},
|
||||||
|
{file = "Pillow-9.2.0-cp37-cp37m-win_amd64.whl", hash = "sha256:69bd1a15d7ba3694631e00df8de65a8cb031911ca11f44929c97fe05eb9b6c1d"},
|
||||||
|
{file = "Pillow-9.2.0-cp38-cp38-macosx_10_10_x86_64.whl", hash = "sha256:030e3460861488e249731c3e7ab59b07c7853838ff3b8e16aac9561bb345da14"},
|
||||||
|
{file = "Pillow-9.2.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:74a04183e6e64930b667d321524e3c5361094bb4af9083db5c301db64cd341f3"},
|
||||||
|
{file = "Pillow-9.2.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2d33a11f601213dcd5718109c09a52c2a1c893e7461f0be2d6febc2879ec2402"},
|
||||||
|
{file = "Pillow-9.2.0-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1fd6f5e3c0e4697fa7eb45b6e93996299f3feee73a3175fa451f49a74d092b9f"},
|
||||||
|
{file = "Pillow-9.2.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a647c0d4478b995c5e54615a2e5360ccedd2f85e70ab57fbe817ca613d5e63b8"},
|
||||||
|
{file = "Pillow-9.2.0-cp38-cp38-manylinux_2_28_aarch64.whl", hash = "sha256:4134d3f1ba5f15027ff5c04296f13328fecd46921424084516bdb1b2548e66ff"},
|
||||||
|
{file = "Pillow-9.2.0-cp38-cp38-manylinux_2_28_x86_64.whl", hash = "sha256:bc431b065722a5ad1dfb4df354fb9333b7a582a5ee39a90e6ffff688d72f27a1"},
|
||||||
|
{file = "Pillow-9.2.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:1536ad017a9f789430fb6b8be8bf99d2f214c76502becc196c6f2d9a75b01b76"},
|
||||||
|
{file = "Pillow-9.2.0-cp38-cp38-win32.whl", hash = "sha256:2ad0d4df0f5ef2247e27fc790d5c9b5a0af8ade9ba340db4a73bb1a4a3e5fb4f"},
|
||||||
|
{file = "Pillow-9.2.0-cp38-cp38-win_amd64.whl", hash = "sha256:ec52c351b35ca269cb1f8069d610fc45c5bd38c3e91f9ab4cbbf0aebc136d9c8"},
|
||||||
|
{file = "Pillow-9.2.0-cp39-cp39-macosx_10_10_x86_64.whl", hash = "sha256:0ed2c4ef2451de908c90436d6e8092e13a43992f1860275b4d8082667fbb2ffc"},
|
||||||
|
{file = "Pillow-9.2.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:4ad2f835e0ad81d1689f1b7e3fbac7b01bb8777d5a985c8962bedee0cc6d43da"},
|
||||||
|
{file = "Pillow-9.2.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ea98f633d45f7e815db648fd7ff0f19e328302ac36427343e4432c84432e7ff4"},
|
||||||
|
{file = "Pillow-9.2.0-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7761afe0126d046974a01e030ae7529ed0ca6a196de3ec6937c11df0df1bc91c"},
|
||||||
|
{file = "Pillow-9.2.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9a54614049a18a2d6fe156e68e188da02a046a4a93cf24f373bffd977e943421"},
|
||||||
|
{file = "Pillow-9.2.0-cp39-cp39-manylinux_2_28_aarch64.whl", hash = "sha256:5aed7dde98403cd91d86a1115c78d8145c83078e864c1de1064f52e6feb61b20"},
|
||||||
|
{file = "Pillow-9.2.0-cp39-cp39-manylinux_2_28_x86_64.whl", hash = "sha256:13b725463f32df1bfeacbf3dd197fb358ae8ebcd8c5548faa75126ea425ccb60"},
|
||||||
|
{file = "Pillow-9.2.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:808add66ea764ed97d44dda1ac4f2cfec4c1867d9efb16a33d158be79f32b8a4"},
|
||||||
|
{file = "Pillow-9.2.0-cp39-cp39-win32.whl", hash = "sha256:337a74fd2f291c607d220c793a8135273c4c2ab001b03e601c36766005f36885"},
|
||||||
|
{file = "Pillow-9.2.0-cp39-cp39-win_amd64.whl", hash = "sha256:fac2d65901fb0fdf20363fbd345c01958a742f2dc62a8dd4495af66e3ff502a4"},
|
||||||
|
{file = "Pillow-9.2.0-pp37-pypy37_pp73-macosx_10_10_x86_64.whl", hash = "sha256:ad2277b185ebce47a63f4dc6302e30f05762b688f8dc3de55dbae4651872cdf3"},
|
||||||
|
{file = "Pillow-9.2.0-pp37-pypy37_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7c7b502bc34f6e32ba022b4a209638f9e097d7a9098104ae420eb8186217ebbb"},
|
||||||
|
{file = "Pillow-9.2.0-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3d1f14f5f691f55e1b47f824ca4fdcb4b19b4323fe43cc7bb105988cad7496be"},
|
||||||
|
{file = "Pillow-9.2.0-pp37-pypy37_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:dfe4c1fedfde4e2fbc009d5ad420647f7730d719786388b7de0999bf32c0d9fd"},
|
||||||
|
{file = "Pillow-9.2.0-pp38-pypy38_pp73-macosx_10_10_x86_64.whl", hash = "sha256:f07f1f00e22b231dd3d9b9208692042e29792d6bd4f6639415d2f23158a80013"},
|
||||||
|
{file = "Pillow-9.2.0-pp38-pypy38_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1802f34298f5ba11d55e5bb09c31997dc0c6aed919658dfdf0198a2fe75d5490"},
|
||||||
|
{file = "Pillow-9.2.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:17d4cafe22f050b46d983b71c707162d63d796a1235cdf8b9d7a112e97b15bac"},
|
||||||
|
{file = "Pillow-9.2.0-pp38-pypy38_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:96b5e6874431df16aee0c1ba237574cb6dff1dcb173798faa6a9d8b399a05d0e"},
|
||||||
|
{file = "Pillow-9.2.0-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:0030fdbd926fb85844b8b92e2f9449ba89607231d3dd597a21ae72dc7fe26927"},
|
||||||
|
{file = "Pillow-9.2.0.tar.gz", hash = "sha256:75e636fd3e0fb872693f23ccb8a5ff2cd578801251f3a4f6854c6a5d437d3c04"},
|
||||||
|
]
|
||||||
|
psutil = [
|
||||||
|
{file = "psutil-5.9.3-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:b4a247cd3feaae39bb6085fcebf35b3b8ecd9b022db796d89c8f05067ca28e71"},
|
||||||
|
{file = "psutil-5.9.3-cp27-cp27m-manylinux2010_i686.whl", hash = "sha256:5fa88e3d5d0b480602553d362c4b33a63e0c40bfea7312a7bf78799e01e0810b"},
|
||||||
|
{file = "psutil-5.9.3-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:767ef4fa33acda16703725c0473a91e1832d296c37c63896c7153ba81698f1ab"},
|
||||||
|
{file = "psutil-5.9.3-cp27-cp27m-win32.whl", hash = "sha256:9a4af6ed1094f867834f5f07acd1250605a0874169a5fcadbcec864aec2496a6"},
|
||||||
|
{file = "psutil-5.9.3-cp27-cp27m-win_amd64.whl", hash = "sha256:fa5e32c7d9b60b2528108ade2929b115167fe98d59f89555574715054f50fa31"},
|
||||||
|
{file = "psutil-5.9.3-cp27-cp27mu-manylinux2010_i686.whl", hash = "sha256:fe79b4ad4836e3da6c4650cb85a663b3a51aef22e1a829c384e18fae87e5e727"},
|
||||||
|
{file = "psutil-5.9.3-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:db8e62016add2235cc87fb7ea000ede9e4ca0aa1f221b40cef049d02d5d2593d"},
|
||||||
|
{file = "psutil-5.9.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:941a6c2c591da455d760121b44097781bc970be40e0e43081b9139da485ad5b7"},
|
||||||
|
{file = "psutil-5.9.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:71b1206e7909792d16933a0d2c1c7f04ae196186c51ba8567abae1d041f06dcb"},
|
||||||
|
{file = "psutil-5.9.3-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f57d63a2b5beaf797b87024d018772439f9d3103a395627b77d17a8d72009543"},
|
||||||
|
{file = "psutil-5.9.3-cp310-cp310-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e7507f6c7b0262d3e7b0eeda15045bf5881f4ada70473b87bc7b7c93b992a7d7"},
|
||||||
|
{file = "psutil-5.9.3-cp310-cp310-win32.whl", hash = "sha256:1b540599481c73408f6b392cdffef5b01e8ff7a2ac8caae0a91b8222e88e8f1e"},
|
||||||
|
{file = "psutil-5.9.3-cp310-cp310-win_amd64.whl", hash = "sha256:547ebb02031fdada635452250ff39942db8310b5c4a8102dfe9384ee5791e650"},
|
||||||
|
{file = "psutil-5.9.3-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:d8c3cc6bb76492133474e130a12351a325336c01c96a24aae731abf5a47fe088"},
|
||||||
|
{file = "psutil-5.9.3-cp36-cp36m-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:07d880053c6461c9b89cd5d4808f3b8336665fa3acdefd6777662c5ed73a851a"},
|
||||||
|
{file = "psutil-5.9.3-cp36-cp36m-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5e8b50241dd3c2ed498507f87a6602825073c07f3b7e9560c58411c14fe1e1c9"},
|
||||||
|
{file = "psutil-5.9.3-cp36-cp36m-win32.whl", hash = "sha256:828c9dc9478b34ab96be75c81942d8df0c2bb49edbb481f597314d92b6441d89"},
|
||||||
|
{file = "psutil-5.9.3-cp36-cp36m-win_amd64.whl", hash = "sha256:ed15edb14f52925869250b1375f0ff58ca5c4fa8adefe4883cfb0737d32f5c02"},
|
||||||
|
{file = "psutil-5.9.3-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:d266cd05bd4a95ca1c2b9b5aac50d249cf7c94a542f47e0b22928ddf8b80d1ef"},
|
||||||
|
{file = "psutil-5.9.3-cp37-cp37m-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7e4939ff75149b67aef77980409f156f0082fa36accc475d45c705bb00c6c16a"},
|
||||||
|
{file = "psutil-5.9.3-cp37-cp37m-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:68fa227c32240c52982cb931801c5707a7f96dd8927f9102d6c7771ea1ff5698"},
|
||||||
|
{file = "psutil-5.9.3-cp37-cp37m-win32.whl", hash = "sha256:beb57d8a1ca0ae0eb3d08ccaceb77e1a6d93606f0e1754f0d60a6ebd5c288837"},
|
||||||
|
{file = "psutil-5.9.3-cp37-cp37m-win_amd64.whl", hash = "sha256:12500d761ac091f2426567f19f95fd3f15a197d96befb44a5c1e3cbe6db5752c"},
|
||||||
|
{file = "psutil-5.9.3-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:ba38cf9984d5462b506e239cf4bc24e84ead4b1d71a3be35e66dad0d13ded7c1"},
|
||||||
|
{file = "psutil-5.9.3-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:46907fa62acaac364fff0b8a9da7b360265d217e4fdeaca0a2397a6883dffba2"},
|
||||||
|
{file = "psutil-5.9.3-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a04a1836894c8279e5e0a0127c0db8e198ca133d28be8a2a72b4db16f6cf99c1"},
|
||||||
|
{file = "psutil-5.9.3-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8a4e07611997acf178ad13b842377e3d8e9d0a5bac43ece9bfc22a96735d9a4f"},
|
||||||
|
{file = "psutil-5.9.3-cp38-cp38-win32.whl", hash = "sha256:6ced1ad823ecfa7d3ce26fe8aa4996e2e53fb49b7fed8ad81c80958501ec0619"},
|
||||||
|
{file = "psutil-5.9.3-cp38-cp38-win_amd64.whl", hash = "sha256:35feafe232d1aaf35d51bd42790cbccb882456f9f18cdc411532902370d660df"},
|
||||||
|
{file = "psutil-5.9.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:538fcf6ae856b5e12d13d7da25ad67f02113c96f5989e6ad44422cb5994ca7fc"},
|
||||||
|
{file = "psutil-5.9.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:a3d81165b8474087bb90ec4f333a638ccfd1d69d34a9b4a1a7eaac06648f9fbe"},
|
||||||
|
{file = "psutil-5.9.3-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3a7826e68b0cf4ce2c1ee385d64eab7d70e3133171376cac53d7c1790357ec8f"},
|
||||||
|
{file = "psutil-5.9.3-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9ec296f565191f89c48f33d9544d8d82b0d2af7dd7d2d4e6319f27a818f8d1cc"},
|
||||||
|
{file = "psutil-5.9.3-cp39-cp39-win32.whl", hash = "sha256:9ec95df684583b5596c82bb380c53a603bb051cf019d5c849c47e117c5064395"},
|
||||||
|
{file = "psutil-5.9.3-cp39-cp39-win_amd64.whl", hash = "sha256:4bd4854f0c83aa84a5a40d3b5d0eb1f3c128f4146371e03baed4589fe4f3c931"},
|
||||||
|
{file = "psutil-5.9.3.tar.gz", hash = "sha256:7ccfcdfea4fc4b0a02ca2c31de7fcd186beb9cff8207800e14ab66f79c773af6"},
|
||||||
|
]
|
||||||
|
setuptools = [
|
||||||
|
{file = "setuptools-65.5.0-py3-none-any.whl", hash = "sha256:f62ea9da9ed6289bfe868cd6845968a2c854d1427f8548d52cae02a42b4f0356"},
|
||||||
|
{file = "setuptools-65.5.0.tar.gz", hash = "sha256:512e5536220e38146176efb833d4a62aa726b7bbff82cfbc8ba9eaa3996e0b17"},
|
||||||
|
]
|
||||||
|
tomlkit = [
|
||||||
|
{file = "tomlkit-0.11.6-py3-none-any.whl", hash = "sha256:07de26b0d8cfc18f871aec595fda24d95b08fef89d147caa861939f37230bf4b"},
|
||||||
|
{file = "tomlkit-0.11.6.tar.gz", hash = "sha256:71b952e5721688937fb02cf9d354dbcf0785066149d2855e44531ebdd2b65d73"},
|
||||||
|
]
|
||||||
|
vizplugins = [
|
||||||
|
{file = "vizplugins-0.1.2-py3-none-any.whl", hash = "sha256:58043ee533f982fddd489ca8ce846067e5d91dcc1bb5c7578b3e3371ce33726d"},
|
||||||
|
{file = "vizplugins-0.1.2.tar.gz", hash = "sha256:907790eff06db8299135de218840e19094a46cca98eba8b79c992abced25e66d"},
|
||||||
|
]
|
||||||
|
viztracer = [
|
||||||
|
{file = "viztracer-0.15.4-cp310-cp310-macosx_10_15_x86_64.whl", hash = "sha256:94b916d893b15c065f504292b1e0016af32b4c9588f29522e15a6fdabd12dbbf"},
|
||||||
|
{file = "viztracer-0.15.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7e2cff8443f05b983265f7391118070fee27b586295b6df83575d7c811b51057"},
|
||||||
|
{file = "viztracer-0.15.4-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.manylinux_2_24_i686.whl", hash = "sha256:7fab9a97256c0fda692ceef4ccfc678c2acbd07cae2a946e0b760ae5b52fd501"},
|
||||||
|
{file = "viztracer-0.15.4-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9b25ee86e22649e38e37ba0857387986ebfed0f613a607a5cd1f54f7fd317132"},
|
||||||
|
{file = "viztracer-0.15.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:880375b2192227daef5a71d60eb4d8158d27d9e7548fbd76baf9870e65082749"},
|
||||||
|
{file = "viztracer-0.15.4-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:0bd97d1621093297d8c94c227dd1fc3d5b2de748ea14751603552a17ca6ca025"},
|
||||||
|
{file = "viztracer-0.15.4-cp310-cp310-win32.whl", hash = "sha256:d1ba7762b974fb82359d618fbcc425da0db896952657129e374c61fd1e86310e"},
|
||||||
|
{file = "viztracer-0.15.4-cp310-cp310-win_amd64.whl", hash = "sha256:ef4ef2fa4ad5a434633c4a0cae45dfbc6c187bef0d31b482385a101bedc80054"},
|
||||||
|
{file = "viztracer-0.15.4-cp36-cp36m-macosx_10_15_x86_64.whl", hash = "sha256:3c5bd1c944ddfc6ce059f294dd25f7d0a850967f5b118566a7147ac24f7a3c4c"},
|
||||||
|
{file = "viztracer-0.15.4-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4cc8c06ea7e8cfb0dc390c03b9d95c772e85eb73d7e14a3a7e4e95d1961fdced"},
|
||||||
|
{file = "viztracer-0.15.4-cp36-cp36m-manylinux_2_17_i686.manylinux2014_i686.manylinux_2_24_i686.whl", hash = "sha256:dea4664ff25bb09454d3723f17e57eaa1e384a1917648b73db55e801f8ca59db"},
|
||||||
|
{file = "viztracer-0.15.4-cp36-cp36m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c4fbaf8aa710aa0655db35e14ec97a90390fb6559c68d3d72408ecaa8b9f1eef"},
|
||||||
|
{file = "viztracer-0.15.4-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:44fad4f8029585bad6d4ef6c90e3aec91c678ec34865d32136501d71ea0351cc"},
|
||||||
|
{file = "viztracer-0.15.4-cp36-cp36m-win32.whl", hash = "sha256:5ab1b10ebc30faf6ecd4bccc4cb020919a3b0aedd8e371e8cb99d438f21a822e"},
|
||||||
|
{file = "viztracer-0.15.4-cp36-cp36m-win_amd64.whl", hash = "sha256:4bc92e1b2f289e472999d68366314c5c87ed38dbe5f947d2f2ddea81df0bb32f"},
|
||||||
|
{file = "viztracer-0.15.4-cp37-cp37m-macosx_10_15_x86_64.whl", hash = "sha256:a0c467fc21e69cc1ec30b3c830d2c6a35586db39e95b46f2f51b1c215113e742"},
|
||||||
|
{file = "viztracer-0.15.4-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5db8a5607d91f6f7ca54440d2e6faeac3d15da4c28ff4a547e11fccb6deb695a"},
|
||||||
|
{file = "viztracer-0.15.4-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.manylinux_2_24_i686.whl", hash = "sha256:2d78c189464fb9338fdef67223c0217f6370d3bcfcfb66f2f3dc947aa5615c88"},
|
||||||
|
{file = "viztracer-0.15.4-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d3889a18b4ad4eafceed6e78269a41764e3755d1a338391baebb93ab3450e62e"},
|
||||||
|
{file = "viztracer-0.15.4-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:40cf6e6315e7894f2ec17113f626590d0bf4685f46a5e86fd85eba38fe6e9d29"},
|
||||||
|
{file = "viztracer-0.15.4-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:2182f2aa599e57914ce496da5e609b5f411aba5e3cdbc992993c3af5cafad5d8"},
|
||||||
|
{file = "viztracer-0.15.4-cp37-cp37m-win32.whl", hash = "sha256:09063442836a1b171558637b50c76fa45e31c102724b5de448986c3899cf3225"},
|
||||||
|
{file = "viztracer-0.15.4-cp37-cp37m-win_amd64.whl", hash = "sha256:32eb9160d7fdac84934e581c54cfb25a2f0a3f5a58bc76f1e8b05d3dc3e1ec26"},
|
||||||
|
{file = "viztracer-0.15.4-cp38-cp38-macosx_10_15_x86_64.whl", hash = "sha256:731b3245a8a8f6fe0cf2da7ab78648f0fe9c8c46058dabc8c8f0d59ef5a21112"},
|
||||||
|
{file = "viztracer-0.15.4-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9d43aca3e67cb54861731efe35a50e1a75999e6b173d7464e0ff7456be6ba59a"},
|
||||||
|
{file = "viztracer-0.15.4-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.manylinux_2_24_i686.whl", hash = "sha256:00c2338f04d1bf6b2c2b003f10a154eafb902584a0204572f47d9efc1d0202f1"},
|
||||||
|
{file = "viztracer-0.15.4-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:524c7957213352232ee1aa7081d2b390c1f3c2d38cd5b70fa70fadf76a57cf0f"},
|
||||||
|
{file = "viztracer-0.15.4-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2667097770cde8ee1af0bf77d470cf3e6b27a01c84565ec1f516a8a309910e5c"},
|
||||||
|
{file = "viztracer-0.15.4-cp38-cp38-win32.whl", hash = "sha256:757e473622a2b95f72763b8267455e9554d2290d8fac8d6311239ce639aa9034"},
|
||||||
|
{file = "viztracer-0.15.4-cp38-cp38-win_amd64.whl", hash = "sha256:7a0e53ae02dc1a0e10a24849de498353e6221f326973ff33ff4734f5999b173c"},
|
||||||
|
{file = "viztracer-0.15.4-cp39-cp39-macosx_10_15_x86_64.whl", hash = "sha256:d6ab0d24e93ddc3f623219ba13d9ddff3bac2f81890e6de13055c41965112083"},
|
||||||
|
{file = "viztracer-0.15.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a93afcb7d2fc3adac3706e6cc409f5df3992381b98b899947be6032e9b825d38"},
|
||||||
|
{file = "viztracer-0.15.4-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.manylinux_2_24_i686.whl", hash = "sha256:35d948a34c6d14cac388f59a66f7f57c9c78973d035ff350ce6c0382430dfdf7"},
|
||||||
|
{file = "viztracer-0.15.4-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9110feb65a47e95dfdfa66a0f3cd87f06c3d44d18f1291b920dd0eda234ec176"},
|
||||||
|
{file = "viztracer-0.15.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:be7dee1190a5ef7642d162e1772d72ba395a820d828ac006a863f45cfdd7db32"},
|
||||||
|
{file = "viztracer-0.15.4-cp39-cp39-win32.whl", hash = "sha256:a97887c2c34985990e67e287da42b176eaa8c411482b09a4ba252f2cbd9b11f1"},
|
||||||
|
{file = "viztracer-0.15.4-cp39-cp39-win_amd64.whl", hash = "sha256:6a5ba827ad201fecee5f1647cc32c2f59476ec2881395d82e4bea56fa7599dc8"},
|
||||||
|
{file = "viztracer-0.15.4.tar.gz", hash = "sha256:df18692a0f765e29e70ad1c5c74429be54968f16fca8a6db8dd0dc52cd87fb8b"},
|
||||||
|
]
|
24
pyproject.toml
Normal file
24
pyproject.toml
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
[tool.poetry]
|
||||||
|
name = "difficult-rocket"
|
||||||
|
version = "0.6.3"
|
||||||
|
description = "A rocket game"
|
||||||
|
authors = ["shenjackyuanjie <3695888@qq.com>"]
|
||||||
|
license = "CC-BY-NA-SA 4.0"
|
||||||
|
readme = "README.md"
|
||||||
|
packages = [{include = "difficult_rocket"}]
|
||||||
|
|
||||||
|
[tool.poetry.dependencies]
|
||||||
|
python = ">=3.8"
|
||||||
|
psutil = "^5.9.3"
|
||||||
|
objprint = "^0.2.2"
|
||||||
|
Pillow = "^9.2.0"
|
||||||
|
tomlkit = "^0.11.6"
|
||||||
|
setuptools = "^65.5.0"
|
||||||
|
viztracer = "^0.15.4"
|
||||||
|
vizplugins = "^0.1.2"
|
||||||
|
Cython = "^0.29.32"
|
||||||
|
|
||||||
|
|
||||||
|
[build-system]
|
||||||
|
requires = ["poetry-core"]
|
||||||
|
build-backend = "poetry.core.masonry.api"
|
@ -3,7 +3,7 @@ pillow
|
|||||||
objprint
|
objprint
|
||||||
# selenium
|
# selenium
|
||||||
|
|
||||||
toml
|
tomlkit
|
||||||
setuptools
|
setuptools
|
||||||
Cython
|
Cython
|
||||||
colorama
|
colorama
|
||||||
|
Loading…
Reference in New Issue
Block a user