各种Python实用函数
项目描述
Boxine - bx_py_utils
各种Python实用函数
快速入门
pip install bx_py_utils
现有内容
这里只列出了现有工具的简单列表。请查看源代码和测试以获取更多信息。
bx_py_utils.anonymize
anonymize()
- 对给定的字符串进行匿名化处理,特别处理电子邮件地址,并提供截断输出的可能性。anonymize_dict()
- 返回一个新的字典,其中包含包含给定关键字之一的键的匿名化值。
bx_py_utils.auto_doc
FnmatchExclude()
- auto docexclude_func
的辅助器,通过 fnmatch 模式排除文件。assert_readme()
- 检查并更新 README 文件,使用 generate_modules_doc() 生成模块文档。assert_readme_block()
- 检查并更新 README 文件:确保 "text_block" 在标记之间。generate_modules_doc()
- 通过 pdoc 生成函数/类信息列表。get_code_location()
- 通过 inspect 返回对象的起始和结束行号。
bx_py_utils.aws.client_side_cert_manager
ClientSideCertManager()
- 通过 AWS Secrets Manager 管理客户端 TLS 证书的辅助器。
bx_py_utils.aws.secret_manager
SecretsManager()
- 访问 AWS Secrets Manager 的值。
bx_py_utils.compat
removeprefix()
- 从 PEP-616 (Python 3.9+) 迁移removeprefix
。removesuffix()
- 从 PEP-616 (Python 3.9+) 迁移removesuffix
。
bx_py_utils.dict_utils
dict_get()
- 嵌套字典的get()
。dict_list2markdown()
- 将字典列表转换为 markdown 表格。pluck()
- 从字典中提取值,如果存在则提取。
bx_py_utils.doc_write
文档写入,见:https://github.com/boxine/bx_py_utils/blob/master/bx_py_utils/doc_write/README.md
bx_py_utils.environ
OverrideEnviron()
- 上下文管理器,用于临时更改 'os.environ'。cgroup_memory_usage()
- 返回 Python 解释器运行的 cgroup 的内存使用情况。
bx_py_utils.error_handling
print_exc_plus()
- 打印带有每个框架中所有局部变量列表的跟踪信息。
bx_py_utils.file_utils
EmptyFileError()
- 如果找到 0 字节的文件,则从 get_and_assert_file_size() 中引发。FileError()
- 所有 'file_utils' 异常的基础错误类。FileHasher()
- 在处理文件时,生成不同哈希值的上下文管理器。FileSizeError()
- 文件大小与预期大小不符。NamedTemporaryFile2()
- 使用给定的文件名生成一个临时文件,且不带任何随机名称序列。OverlongFilenameError()
- cut_filename() 错误:文件名无法缩短,因为后缀太短。TempFileHasher()
- 将 NamedTemporaryFile2 和 FileHasher 结合起来的文件类上下文管理器。cut_filename()
- 缩短文件名(并保留最后一个后缀)。如果无法适应,则引发 OverlongFilenameError。get_and_assert_file_size()
- 检查给定文件对象的文件大小。对于空文件引发 EmptyFileError,或返回大小。safe_filename()
- 将任意输入转换为适合用作文件名的形式。
bx_py_utils.filename_matcher
filename_matcher()
- 增强 fnmatch,接受一个模式列表。
bx_py_utils.graphql_introspection
introspection_query()
- 生成具有嵌套深度的变量 GraphQL 内省查询。
bx_py_utils.hash_utils
url_safe_encode()
- 将字节编码为 URL 安全字符串。url_safe_hash()
- 从给定的字符串/字节生成具有max_size
的 URL 安全哈希。
bx_py_utils.html_utils
ElementsNotFoundError()
- 如果请求的 HTML 元素无法找到,则发生。InvalidHtml()
- XMLSyntaxError,具有更好的错误信息:用于 validate_html()。get_html_elements()
- 返回选定的 HTML 元素字符串。pretty_format_html()
- 使用 BeautifulSoup 美化格式化给定的 HTML 文档(需要 'beautifulsoup4' 包)。validate_html()
- 通过 XMLParser 验证 HTML 文档(需要 'lxml' 包)。
bx_py_utils.humanize.pformat
pformat()
- 格式化给定的对象:首先尝试 JSON,然后回退到 pformat()。
bx_py_utils.humanize.time
human_timedelta()
- 将时间持续时间转换为友好的文本表示。
bx_py_utils.import_utils
import_string()
- 导入点模块路径,并返回路径中最后一个名称指定的属性/类。
bx_py_utils.iteration
chunk_iterable()
- 返回一个生成器,该生成器产生具有给定chunk_size
的可迭代对象切片。
bx_py_utils.path
ChangeCurrentWorkDir()
- 上下文管理器将 "CWD" 更改为另一个目录。MockCurrentWorkDir()
- 上下文管理器将 "CWD" 移动到临时目录。assert_is_dir()
- 检查给定的路径是否为目录。assert_is_file()
- 检查给定路径是否为文件
bx_py_utils.processify
processify()
- 将函数作为进程运行的装饰器。
bx_py_utils.pyproject_toml
get_pyproject_config()
- 从 "pyproject.toml" 获取配置部分。路径可以省略指定。
bx_py_utils.rison
rison_dumps()
- 将数据编码为 RISON,一种 URL 安全的编码格式。
bx_py_utils.stack_info
FrameNotFound()
- 查找错误的基类。last_frame_outside_path()
- 返回给定 "file_path" 的直接后续堆栈帧。
bx_py_utils.string_utils
compare_sentences()
- 计算文本1和文本2之间的 Levenshtein 距离。具有过滤功能。ensure_lf()
- 将换行符替换为 Unix 风格。get_words()
- 从文本中提取单词。具有过滤功能。is_uuid()
- 如果文本是有效的 UUID(https://www.rfc-editor.org/rfc/rfc9562#name-uuid-format),则返回 True。levenshtein_distance()
- 计算两个字符串之间的 Levenshtein 距离。startswith_prefixes()
- >>> startswith_prefixes('foobar', prefixes=('foo','bar'))truncate()
- 将给定字符串截断到指定长度。uuid_from_text()
- 从给定文本生成一个 UUID 实例,通过 SHA224 哈希提供确定性。
bx_py_utils.test_utils.assertion
assert_equal()
- 检查两个对象是否相同。使用pformat()
显示一个漂亮的差异。assert_text_equal()
- 检查两个文本字符串是否相同。显示一个带有差异的错误消息。pformat_ndiff()
- 使用pformat()
从两个对象生成一个ndiff
。pformat_unified_diff()
- 使用pformat()
从两个对象生成一个统一差异。text_ndiff()
- 从两个文本字符串生成一个ndiff
。text_unified_diff()
- 从两个文本字符串生成一个统一差异。
bx_py_utils.test_utils.context_managers
MassContextManager()
- 一个上下文管理器/装饰器,用于进入/退出一组模拟。
bx_py_utils.test_utils.datetime
parse_dt()
- 通过字符串轻松生成datetime
实例的帮助程序。
bx_py_utils.test_utils.deny_requests
DenyAnyRealRequestContextManager()
- 通过 docket/urllib3 拒绝任何请求的上下文管理器。将引发 DenyCallError。deny_any_real_request()
- 通过 docket/urllib3 拒绝任何请求。对于测试很有用,因为它们应该模拟所有请求。
bx_py_utils.test_utils.filesystem_utils
FileWatcher()
- 记录已创建的新文件的辅助工具。
bx_py_utils.test_utils.log_utils
NoLogs()
- 用于抑制所有日志输出的上下文管理器。RaiseLogUsage()
- 在每次日志输出时引发错误的日志处理程序。
bx_py_utils.test_utils.mock_aws_secret_manager
SecretsManagerMock()
- 对bx_py_utils.aws.secret_manager.SecretsManager()
的模拟。
bx_py_utils.test_utils.mock_boto3session
MockedBoto3Session()
- 对boto3.session.Session()
的模拟。
bx_py_utils.test_utils.mock_uuid
MockUUIDGenerator()
- 用于模拟uuid.uuid4()
以获得可重复结果的辅助工具(例如,用于快照测试)。
bx_py_utils.test_utils.mocks3
Boto3 S3模块的简单模拟。
PseudoS3Client()
- 在测试中模拟 boto3 S3 客户端对象。
bx_py_utils.test_utils.redirect
RedirectOut()
- 将标准输出和标准错误重定向到缓冲区(可选地剥离输出)。
bx_py_utils.test_utils.requests_mock_assertion
assert_json_requests_mock()
- 检查请求模拟历史。在这种情况下,所有请求都必须是 JSON 格式。assert_json_requests_mock_snapshot()
- 通过快照检查请求模拟历史。仅接受 JSON 请求。assert_requests_mock()
- 检查请求模拟历史。接受混合的 "text" 和 "JSON"。assert_requests_mock_snapshot()
- 通过快照检查请求模拟历史。接受混合的 "text" 和 "JSON"。
bx_py_utils.test_utils.snapshot
通过自动更新的快照文件和漂亮的差异错误消息断言复杂输出。
SnapshotChanged()
- 断言失败。assert_binary_snapshot()
- 通过快照文件断言二进制数据。assert_html_snapshot()
- 通过快照文件断言 "html" 字符串,并进行验证和格式化。assert_py_snapshot()
- 通过 PrettyPrinter() 快照文件断言复杂的 Python 对象。assert_snapshot()
- 断言给定数据序列化为 JSON 快照文件。assert_text_snapshot()
- 通过快照文件断言 "text" 字符串。get_snapshot_file()
- 生成文件路径,使用堆栈信息填充未提供的路径组件。
bx_py_utils.test_utils.time
MockTimeMonotonicGenerator()
- 用于在测试中模拟time.monotonic()
的辅助工具。
bx_py_utils.test_utils.unittest_utils
BaseDocTests()
- 用于在单元测试中包含所有 doctests 的辅助工具,无需更改单元测试设置。只需添加一个普通的 TestCase。assert_no_flat_tests_functions()
- 检查是否存在普通测试函数(这些函数不会由正常的单元测试执行)。
bx_py_utils.test_utils.xlsx
FreezeXlsxTimes()
- 用于冻结xlsx文件创建时间的上下文管理器/装饰器,例如:openpyxl。generate_xlsx_md_snapshot()
- 生成一个XLSX的Markdown快照:显示ZIP信息和工作表内容作为Markdown。xlsx2dict()
- 将XLSX文件内容转换为字典:每个工作表是一个键,值是一个字典列表。xlsx2markdown()
- 将XLSX的所有工作表转换为Markdown表格。
bx_py_utils.test_utils.zip_file_utils
FreezeZipFileDatetime()
- 用于冻结写入ZIP文件中的文件修改时间的上下文管理器/装饰器。zip_info()
- 生成类似于unzip -v
的信息:为ZIP文件中的每个文件产生ZipFileInfo。zip_info_markdown()
- 生成ZIP文件内容的Markdown表示。类似于unzip -v
的输出。
bx_py_utils.text_tools
cutout()
- 使用行号+列和周围的上下文行标记长文本中的一个点。
关于快照的说明
关于快照的快速提示。如果你在项目中有很多快照,并且需要通过代码更改更改很多,那么你可以通过在环境中设置RAISE_SNAPSHOT_ERRORS=0
来运行测试,而不会因为快照更改导致错误。
例如。
RAISE_SNAPSHOT_ERRORS=0 python3 -m unittest
使用以下方法更新所有快照文件
make update-test-snapshot-files
不兼容的更改
v36 -> v37 - 外包Django内容
我们拆分了bx_py_utils
,并将所有与Django相关的实用工具移动到了单独的项目中
因此,bx_py_utils
在非Django项目中更具可用性,因为Django将不会作为“bx_py_utils”的合适部分安装
开发
要开始开发,例如。
~$ git clone https://github.com/boxine/bx_py_utils.git
~$ cd bx_py_utils
~/bx_py_utils$ make
help List all commands
install-base-req Install needed base packages via apt
install Install the project in a Python virtualenv
update-requirements Update requirements
lint Run code formatters and linter
fix-code-style Fix code formatting
tox-listenvs List all tox test environments
tox Run tests via tox with all environments
test Run tests
coverage Run tests with coverage
update-test-snapshot-files Update all snapshot files (by remove and recreate all snapshot files)
mypy Run mypy
safety Run https://github.com/pyupio/safety
publish Release new version to PyPi
clean Remove created files from the test project
创建一个版本
- 在
bx_py_utils/__init__.py
中增加版本号 - 创建pull request
- 合并后,调用:
make publish
许可证
MIT. 欢迎补丁!
关于我们
我们一直在重新思考孩子的听觉体验,并创建了一个通过智能技术(Toniebox)结合触觉和听觉体验的生态系统。
我们一直在寻找工程师加入我们团队的各个领域。如果您有兴趣为我们的平台做出贡献,请查看:https://tonies.com/jobs/
链接
项目详情
下载文件
下载适合您平台的文件。如果您不确定选择哪个,请了解更多关于 安装包 的信息。
源分发
bx_py_utils-104.tar.gz (190.9 kB 查看哈希值)
构建分发
bx_py_utils-104-py3-none-any.whl (175.5 kB 查看哈希值)