omlish 0.0.0.dev423__py3-none-any.whl → 0.0.0.dev484__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of omlish might be problematic. Click here for more details.
- omlish/{.manifests.json → .omlish-manifests.json} +12 -0
- omlish/__about__.py +21 -18
- omlish/argparse/all.py +17 -9
- omlish/argparse/cli.py +16 -3
- omlish/argparse/utils.py +21 -0
- omlish/asyncs/all.py +0 -13
- omlish/asyncs/asyncio/rlock.py +110 -0
- omlish/asyncs/asyncio/subprocesses.py +2 -2
- omlish/asyncs/asyncio/sync.py +43 -0
- omlish/asyncs/asyncio/utils.py +2 -0
- omlish/asyncs/ioproxy/proxy.py +1 -1
- omlish/asyncs/sync.py +25 -0
- omlish/bootstrap/_marshal.py +1 -1
- omlish/bootstrap/diag.py +12 -21
- omlish/bootstrap/main.py +2 -5
- omlish/bootstrap/sys.py +27 -28
- omlish/c3.py +4 -1
- omlish/cexts/include/omlish/omlish.hh +1 -0
- omlish/collections/__init__.py +13 -1
- omlish/collections/attrregistry.py +210 -0
- omlish/collections/cache/impl.py +3 -2
- omlish/collections/identity.py +1 -0
- omlish/collections/mappings.py +28 -0
- omlish/collections/trie.py +5 -1
- omlish/collections/utils.py +77 -0
- omlish/concurrent/__init__.py +0 -11
- omlish/concurrent/all.py +18 -0
- omlish/concurrent/futures.py +25 -0
- omlish/concurrent/threadlets.py +1 -1
- omlish/configs/processing/flattening.py +1 -1
- omlish/configs/processing/merging.py +8 -6
- omlish/configs/types.py +1 -1
- omlish/daemons/__init__.py +70 -0
- omlish/daemons/daemon.py +2 -2
- omlish/daemons/launching.py +2 -2
- omlish/daemons/reparent.py +2 -3
- omlish/daemons/spawning.py +2 -3
- omlish/dataclasses/__init__.py +5 -5
- omlish/dataclasses/errors.py +1 -1
- omlish/dataclasses/impl/api/classes/decorator.py +3 -0
- omlish/dataclasses/impl/api/classes/make.py +4 -1
- omlish/dataclasses/impl/concerns/doc.py +1 -1
- omlish/dataclasses/impl/concerns/repr.py +15 -2
- omlish/dataclasses/impl/configs.py +97 -36
- omlish/dataclasses/impl/generation/compilation.py +21 -19
- omlish/dataclasses/impl/generation/globals.py +1 -0
- omlish/dataclasses/impl/generation/ops.py +1 -0
- omlish/dataclasses/impl/generation/processor.py +105 -24
- omlish/dataclasses/impl/processing/base.py +8 -0
- omlish/dataclasses/impl/processing/driving.py +8 -8
- omlish/dataclasses/specs.py +34 -2
- omlish/dataclasses/tools/as_.py +0 -12
- omlish/dataclasses/tools/modifiers.py +5 -0
- omlish/dataclasses/tools/static.py +1 -1
- omlish/diag/_pycharm/runhack.py +1 -1
- omlish/diag/{lslocks.py → cmds/lslocks.py} +6 -6
- omlish/diag/{lsof.py → cmds/lsof.py} +6 -6
- omlish/diag/{ps.py → cmds/ps.py} +6 -6
- omlish/diag/procfs.py +4 -4
- omlish/diag/pycharm.py +16 -2
- omlish/diag/pydevd.py +58 -40
- omlish/diag/replserver/console.py +3 -3
- omlish/diag/replserver/server.py +2 -2
- omlish/dispatch/__init__.py +18 -12
- omlish/dispatch/methods.py +50 -140
- omlish/dom/rendering.py +1 -1
- omlish/formats/dotenv.py +8 -8
- omlish/formats/json/stream/__init__.py +18 -3
- omlish/formats/json/stream/building.py +2 -2
- omlish/formats/json/stream/lexing.py +401 -67
- omlish/formats/json/stream/parsing.py +32 -10
- omlish/formats/json/stream/rendering.py +6 -6
- omlish/formats/json/stream/utils.py +132 -30
- omlish/formats/json5/literals.py +7 -4
- omlish/formats/json5/parsing.py +33 -79
- omlish/formats/json5/stream.py +77 -0
- omlish/formats/logfmt.py +8 -2
- omlish/funcs/genmachine.py +2 -2
- omlish/funcs/guard.py +225 -0
- omlish/graphs/dot/rendering.py +1 -1
- omlish/http/all.py +122 -53
- omlish/http/asgi.py +2 -2
- omlish/http/clients/__init__.py +0 -34
- omlish/http/clients/asyncs.py +153 -0
- omlish/http/clients/base.py +63 -122
- omlish/http/clients/coro/sync.py +171 -0
- omlish/http/clients/default.py +209 -30
- omlish/http/clients/executor.py +56 -0
- omlish/http/clients/httpx.py +78 -13
- omlish/http/clients/middleware.py +181 -0
- omlish/http/clients/sync.py +151 -0
- omlish/http/clients/syncasync.py +49 -0
- omlish/http/clients/urllib.py +8 -5
- omlish/http/coro/client/{client.py → connection.py} +43 -37
- omlish/http/coro/client/headers.py +5 -5
- omlish/http/coro/client/response.py +37 -38
- omlish/http/coro/client/status.py +4 -4
- omlish/http/coro/{client/io.py → io.py} +19 -2
- omlish/http/coro/server/fdio.py +10 -9
- omlish/http/coro/server/server.py +14 -41
- omlish/http/coro/server/sockets.py +7 -6
- omlish/http/flasky/__init__.py +40 -0
- omlish/http/flasky/_compat.py +2 -0
- omlish/http/flasky/api.py +82 -0
- omlish/http/flasky/app.py +203 -0
- omlish/http/flasky/cvs.py +59 -0
- omlish/http/flasky/requests.py +20 -0
- omlish/http/flasky/responses.py +23 -0
- omlish/http/flasky/routes.py +23 -0
- omlish/http/flasky/types.py +15 -0
- omlish/http/handlers.py +3 -2
- omlish/http/headers.py +69 -35
- omlish/http/sse.py +1 -1
- omlish/http/urls.py +67 -0
- omlish/inject/__init__.py +173 -126
- omlish/inject/_dataclasses.py +4986 -0
- omlish/inject/binder.py +10 -49
- omlish/inject/elements.py +27 -0
- omlish/inject/{utils.py → helpers/constfn.py} +3 -3
- omlish/inject/{tags.py → helpers/id.py} +2 -2
- omlish/inject/helpers/multis.py +143 -0
- omlish/inject/helpers/wrappers.py +54 -0
- omlish/inject/impl/elements.py +52 -22
- omlish/inject/impl/injector.py +76 -49
- omlish/inject/impl/inspect.py +11 -1
- omlish/inject/impl/maysync.py +43 -0
- omlish/inject/impl/multis.py +10 -7
- omlish/inject/impl/privates.py +8 -8
- omlish/inject/impl/providers.py +23 -34
- omlish/inject/impl/providersmap.py +43 -0
- omlish/inject/impl/proxy.py +0 -2
- omlish/inject/impl/scopes.py +19 -23
- omlish/inject/impl/sync.py +41 -0
- omlish/inject/injector.py +37 -8
- omlish/inject/inspect.py +35 -0
- omlish/inject/listeners.py +4 -4
- omlish/inject/managed.py +54 -18
- omlish/inject/maysync.py +27 -0
- omlish/inject/multis.py +8 -0
- omlish/inject/overrides.py +3 -3
- omlish/inject/privates.py +6 -0
- omlish/inject/providers.py +8 -1
- omlish/inject/scopes.py +40 -12
- omlish/inject/sync.py +49 -0
- omlish/io/buffers.py +119 -1
- omlish/io/readers.py +29 -0
- omlish/iterators/__init__.py +28 -20
- omlish/iterators/transforms.py +204 -0
- omlish/lang/__init__.py +240 -129
- omlish/lang/_asyncs.cc +186 -0
- omlish/lang/asyncs.py +67 -43
- omlish/lang/{attrs.py → attrstorage.py} +15 -15
- omlish/lang/cached/property.py +2 -2
- omlish/lang/casing.py +11 -0
- omlish/lang/classes/bindable.py +2 -3
- omlish/lang/classes/restrict.py +8 -0
- omlish/lang/classes/simple.py +26 -4
- omlish/lang/collections.py +1 -1
- omlish/lang/contextmanagers.py +59 -9
- omlish/lang/functions.py +31 -33
- omlish/lang/imports/_capture.cc +103 -0
- omlish/lang/imports/capture.py +902 -0
- omlish/lang/imports/lazy.py +0 -25
- omlish/lang/imports/proxy.py +559 -0
- omlish/lang/iterables.py +2 -2
- omlish/lang/lazyglobals.py +49 -14
- omlish/lang/maybes.py +2 -1
- omlish/lang/maysync.py +2 -2
- omlish/lang/params.py +17 -0
- omlish/lang/recursion.py +0 -1
- omlish/lang/resources.py +1 -1
- omlish/lang/sequences.py +124 -0
- omlish/lifecycles/contextmanagers.py +1 -2
- omlish/lifecycles/controller.py +1 -2
- omlish/lite/abstract.py +54 -24
- omlish/lite/asyncs.py +146 -0
- omlish/lite/attrops.py +415 -0
- omlish/lite/cached.py +57 -1
- omlish/lite/contextmanagers.py +4 -4
- omlish/lite/dataclasses.py +55 -0
- omlish/lite/inject.py +5 -4
- omlish/lite/marshal.py +1 -0
- omlish/lite/maybes.py +10 -2
- omlish/lite/maysync.py +22 -5
- omlish/lite/pycharm.py +1 -1
- omlish/lite/strings.py +0 -7
- omlish/lite/timing.py +6 -3
- omlish/lite/typing.py +6 -0
- omlish/logs/_amalg.py +8 -0
- omlish/logs/all.py +59 -31
- omlish/logs/base.py +204 -0
- omlish/logs/contexts.py +171 -0
- omlish/logs/formatters.py +13 -0
- omlish/logs/infos.py +377 -0
- omlish/logs/levels.py +97 -0
- omlish/logs/modules.py +13 -0
- omlish/logs/protocols.py +32 -0
- omlish/logs/standard.py +20 -15
- omlish/logs/std/configs.py +29 -0
- omlish/logs/{filters.py → std/filters.py} +1 -1
- omlish/logs/std/formatters.py +25 -0
- omlish/logs/std/handlers.py +19 -0
- omlish/logs/{json.py → std/json.py} +2 -2
- omlish/logs/std/loggers.py +48 -0
- omlish/logs/{proxy.py → std/proxy.py} +3 -3
- omlish/logs/std/records.py +671 -0
- omlish/logs/typed/bindings.py +108 -37
- omlish/logs/typed/types.py +17 -1
- omlish/logs/typed/values.py +2 -2
- omlish/logs/utils.py +60 -4
- omlish/logs/warnings.py +8 -0
- omlish/manifests/loading.py +8 -1
- omlish/marshal/__init__.py +54 -22
- omlish/marshal/_dataclasses.py +2774 -0
- omlish/marshal/base/configs.py +12 -0
- omlish/marshal/base/contexts.py +36 -21
- omlish/marshal/base/funcs.py +8 -11
- omlish/marshal/base/options.py +8 -0
- omlish/marshal/base/registries.py +146 -44
- omlish/marshal/base/types.py +40 -16
- omlish/marshal/composite/iterables.py +33 -20
- omlish/marshal/composite/literals.py +20 -18
- omlish/marshal/composite/mappings.py +36 -23
- omlish/marshal/composite/maybes.py +29 -19
- omlish/marshal/composite/newtypes.py +16 -16
- omlish/marshal/composite/optionals.py +14 -14
- omlish/marshal/composite/special.py +15 -15
- omlish/marshal/composite/unions/literals.py +93 -0
- omlish/marshal/composite/unions/primitives.py +103 -0
- omlish/marshal/factories/invalidate.py +18 -68
- omlish/marshal/factories/method.py +26 -0
- omlish/marshal/factories/moduleimport/factories.py +22 -65
- omlish/marshal/factories/multi.py +13 -25
- omlish/marshal/factories/recursive.py +42 -56
- omlish/marshal/factories/typecache.py +29 -74
- omlish/marshal/factories/typemap.py +42 -43
- omlish/marshal/objects/dataclasses.py +129 -106
- omlish/marshal/objects/marshal.py +18 -14
- omlish/marshal/objects/namedtuples.py +48 -42
- omlish/marshal/objects/unmarshal.py +19 -15
- omlish/marshal/polymorphism/marshal.py +9 -11
- omlish/marshal/polymorphism/metadata.py +16 -5
- omlish/marshal/polymorphism/standard.py +13 -1
- omlish/marshal/polymorphism/unions.py +15 -105
- omlish/marshal/polymorphism/unmarshal.py +9 -10
- omlish/marshal/singular/enums.py +14 -18
- omlish/marshal/standard.py +10 -6
- omlish/marshal/trivial/any.py +1 -1
- omlish/marshal/trivial/forbidden.py +21 -26
- omlish/math/fixed.py +2 -2
- omlish/metadata.py +23 -1
- omlish/os/atomics.py +2 -2
- omlish/os/forkhooks.py +4 -0
- omlish/os/journald.py +3 -3
- omlish/os/pidfiles/pinning.py +2 -2
- omlish/reflect/ops.py +9 -0
- omlish/reflect/types.py +44 -8
- omlish/secrets/marshal.py +1 -1
- omlish/secrets/secrets.py +6 -3
- omlish/sockets/addresses.py +1 -1
- omlish/sockets/server/handlers.py +2 -2
- omlish/sockets/server/server.py +4 -3
- omlish/sockets/server/ssl.py +2 -2
- omlish/specs/jmespath/__init__.py +12 -3
- omlish/specs/jmespath/_dataclasses.py +2893 -0
- omlish/specs/jmespath/ast.py +1 -1
- omlish/specs/jsonrpc/__init__.py +13 -0
- omlish/specs/jsonrpc/_marshal.py +32 -23
- omlish/specs/jsonrpc/conns.py +10 -7
- omlish/specs/jsonschema/_marshal.py +1 -1
- omlish/specs/jsonschema/keywords/__init__.py +7 -0
- omlish/specs/jsonschema/keywords/_dataclasses.py +1644 -0
- omlish/specs/openapi/_marshal.py +31 -22
- omlish/sql/__init__.py +15 -20
- omlish/sql/{tabledefs/alchemy.py → alchemy/tabledefs.py} +2 -2
- omlish/sql/queries/_marshal.py +3 -3
- omlish/sql/queries/params.py +1 -1
- omlish/sql/queries/rendering.py +1 -1
- omlish/sql/tabledefs/_marshal.py +1 -1
- omlish/subprocesses/all.py +135 -0
- omlish/subprocesses/base.py +8 -3
- omlish/subprocesses/editor.py +1 -1
- omlish/sync.py +181 -20
- omlish/term/alt.py +60 -0
- omlish/term/confirm.py +8 -8
- omlish/term/pager.py +235 -0
- omlish/term/terminfo.py +935 -0
- omlish/term/termstate.py +67 -0
- omlish/term/vt100/terminal.py +0 -3
- omlish/testing/pytest/plugins/asyncs/fixtures.py +4 -1
- omlish/testing/pytest/plugins/skips.py +2 -5
- omlish/testing/unittest/main.py +3 -3
- omlish/text/docwrap/__init__.py +3 -0
- omlish/text/docwrap/__main__.py +11 -0
- omlish/text/docwrap/api.py +83 -0
- omlish/text/docwrap/cli.py +86 -0
- omlish/text/docwrap/groups.py +84 -0
- omlish/text/docwrap/lists.py +167 -0
- omlish/text/docwrap/parts.py +146 -0
- omlish/text/docwrap/reflowing.py +106 -0
- omlish/text/docwrap/rendering.py +151 -0
- omlish/text/docwrap/utils.py +11 -0
- omlish/text/docwrap/wrapping.py +59 -0
- omlish/text/filecache.py +2 -2
- omlish/text/lorem.py +6 -0
- omlish/text/parts.py +2 -2
- omlish/text/textwrap.py +51 -0
- omlish/typedvalues/__init__.py +1 -1
- omlish/typedvalues/marshal.py +85 -59
- omlish/typedvalues/values.py +2 -1
- {omlish-0.0.0.dev423.dist-info → omlish-0.0.0.dev484.dist-info}/METADATA +36 -38
- {omlish-0.0.0.dev423.dist-info → omlish-0.0.0.dev484.dist-info}/RECORD +323 -385
- omlish/asyncs/bluelet/LICENSE +0 -6
- omlish/asyncs/bluelet/all.py +0 -67
- omlish/asyncs/bluelet/api.py +0 -23
- omlish/asyncs/bluelet/core.py +0 -178
- omlish/asyncs/bluelet/events.py +0 -79
- omlish/asyncs/bluelet/files.py +0 -80
- omlish/asyncs/bluelet/runner.py +0 -417
- omlish/asyncs/bluelet/sockets.py +0 -216
- omlish/asyncs/bridge.py +0 -359
- omlish/asyncs/utils.py +0 -18
- omlish/dataclasses/impl/generation/mangling.py +0 -18
- omlish/defs.py +0 -216
- omlish/dispatch/_dispatch2.py +0 -69
- omlish/dispatch/_dispatch3.py +0 -108
- omlish/dynamic.py +0 -219
- omlish/formats/json/Json.g4 +0 -77
- omlish/formats/json/_antlr/JsonLexer.py +0 -109
- omlish/formats/json/_antlr/JsonListener.py +0 -61
- omlish/formats/json/_antlr/JsonParser.py +0 -457
- omlish/formats/json/_antlr/JsonVisitor.py +0 -42
- omlish/formats/json5/Json5.g4 +0 -168
- omlish/formats/json5/_antlr/Json5Lexer.py +0 -354
- omlish/formats/json5/_antlr/Json5Listener.py +0 -79
- omlish/formats/json5/_antlr/Json5Parser.py +0 -617
- omlish/formats/json5/_antlr/Json5Visitor.py +0 -52
- omlish/funcs/match.py +0 -227
- omlish/io/trampoline.py +0 -289
- omlish/lang/imports/proxyinit.py +0 -665
- omlish/lite/logs.py +0 -4
- omlish/lite/reprs.py +0 -85
- omlish/logs/abc.py +0 -319
- omlish/logs/callers.py +0 -67
- omlish/logs/color.py +0 -27
- omlish/logs/configs.py +0 -29
- omlish/logs/handlers.py +0 -17
- omlish/logs/protocol.py +0 -218
- omlish/logs/timing.py +0 -58
- omlish/marshal/factories/match.py +0 -34
- omlish/marshal/factories/simple.py +0 -28
- omlish/specs/irc/messages/base.py +0 -49
- omlish/specs/irc/messages/formats.py +0 -92
- omlish/specs/irc/messages/messages.py +0 -774
- omlish/specs/irc/messages/parsing.py +0 -98
- omlish/specs/irc/numerics/formats.py +0 -97
- omlish/specs/irc/numerics/numerics.py +0 -865
- omlish/specs/irc/numerics/types.py +0 -59
- omlish/specs/irc/protocol/LICENSE +0 -11
- omlish/specs/irc/protocol/__init__.py +0 -61
- omlish/specs/irc/protocol/consts.py +0 -6
- omlish/specs/irc/protocol/errors.py +0 -30
- omlish/specs/irc/protocol/message.py +0 -21
- omlish/specs/irc/protocol/nuh.py +0 -55
- omlish/specs/irc/protocol/parsing.py +0 -158
- omlish/specs/irc/protocol/rendering.py +0 -153
- omlish/specs/irc/protocol/tags.py +0 -102
- omlish/specs/irc/protocol/utils.py +0 -30
- omlish/specs/proto/Protobuf3.g4 +0 -396
- omlish/specs/proto/__init__.py +0 -0
- omlish/specs/proto/_antlr/Protobuf3Lexer.py +0 -340
- omlish/specs/proto/_antlr/Protobuf3Listener.py +0 -448
- omlish/specs/proto/_antlr/Protobuf3Parser.py +0 -3909
- omlish/specs/proto/_antlr/Protobuf3Visitor.py +0 -257
- omlish/specs/proto/_antlr/__init__.py +0 -0
- omlish/specs/proto/nodes.py +0 -54
- omlish/specs/proto/parsing.py +0 -97
- omlish/sql/parsing/Minisql.g4 +0 -292
- omlish/sql/parsing/__init__.py +0 -0
- omlish/sql/parsing/_antlr/MinisqlLexer.py +0 -322
- omlish/sql/parsing/_antlr/MinisqlListener.py +0 -511
- omlish/sql/parsing/_antlr/MinisqlParser.py +0 -3763
- omlish/sql/parsing/_antlr/MinisqlVisitor.py +0 -292
- omlish/sql/parsing/_antlr/__init__.py +0 -0
- omlish/sql/parsing/parsing.py +0 -119
- omlish/text/antlr/__init__.py +0 -3
- omlish/text/antlr/_runtime/BufferedTokenStream.py +0 -305
- omlish/text/antlr/_runtime/CommonTokenFactory.py +0 -64
- omlish/text/antlr/_runtime/CommonTokenStream.py +0 -90
- omlish/text/antlr/_runtime/FileStream.py +0 -30
- omlish/text/antlr/_runtime/InputStream.py +0 -90
- omlish/text/antlr/_runtime/IntervalSet.py +0 -183
- omlish/text/antlr/_runtime/LICENSE.txt +0 -28
- omlish/text/antlr/_runtime/LL1Analyzer.py +0 -176
- omlish/text/antlr/_runtime/Lexer.py +0 -332
- omlish/text/antlr/_runtime/ListTokenSource.py +0 -147
- omlish/text/antlr/_runtime/Parser.py +0 -583
- omlish/text/antlr/_runtime/ParserInterpreter.py +0 -173
- omlish/text/antlr/_runtime/ParserRuleContext.py +0 -189
- omlish/text/antlr/_runtime/PredictionContext.py +0 -632
- omlish/text/antlr/_runtime/Recognizer.py +0 -150
- omlish/text/antlr/_runtime/RuleContext.py +0 -230
- omlish/text/antlr/_runtime/StdinStream.py +0 -14
- omlish/text/antlr/_runtime/Token.py +0 -158
- omlish/text/antlr/_runtime/TokenStreamRewriter.py +0 -258
- omlish/text/antlr/_runtime/Utils.py +0 -36
- omlish/text/antlr/_runtime/__init__.py +0 -2
- omlish/text/antlr/_runtime/_all.py +0 -24
- omlish/text/antlr/_runtime/_pygrun.py +0 -174
- omlish/text/antlr/_runtime/atn/ATN.py +0 -135
- omlish/text/antlr/_runtime/atn/ATNConfig.py +0 -162
- omlish/text/antlr/_runtime/atn/ATNConfigSet.py +0 -215
- omlish/text/antlr/_runtime/atn/ATNDeserializationOptions.py +0 -27
- omlish/text/antlr/_runtime/atn/ATNDeserializer.py +0 -449
- omlish/text/antlr/_runtime/atn/ATNSimulator.py +0 -50
- omlish/text/antlr/_runtime/atn/ATNState.py +0 -267
- omlish/text/antlr/_runtime/atn/ATNType.py +0 -20
- omlish/text/antlr/_runtime/atn/LexerATNSimulator.py +0 -573
- omlish/text/antlr/_runtime/atn/LexerAction.py +0 -301
- omlish/text/antlr/_runtime/atn/LexerActionExecutor.py +0 -146
- omlish/text/antlr/_runtime/atn/ParserATNSimulator.py +0 -1664
- omlish/text/antlr/_runtime/atn/PredictionMode.py +0 -502
- omlish/text/antlr/_runtime/atn/SemanticContext.py +0 -333
- omlish/text/antlr/_runtime/atn/Transition.py +0 -271
- omlish/text/antlr/_runtime/atn/__init__.py +0 -4
- omlish/text/antlr/_runtime/dfa/DFA.py +0 -136
- omlish/text/antlr/_runtime/dfa/DFASerializer.py +0 -76
- omlish/text/antlr/_runtime/dfa/DFAState.py +0 -129
- omlish/text/antlr/_runtime/dfa/__init__.py +0 -4
- omlish/text/antlr/_runtime/error/DiagnosticErrorListener.py +0 -111
- omlish/text/antlr/_runtime/error/ErrorListener.py +0 -75
- omlish/text/antlr/_runtime/error/ErrorStrategy.py +0 -712
- omlish/text/antlr/_runtime/error/Errors.py +0 -176
- omlish/text/antlr/_runtime/error/__init__.py +0 -4
- omlish/text/antlr/_runtime/tree/Chunk.py +0 -33
- omlish/text/antlr/_runtime/tree/ParseTreeMatch.py +0 -121
- omlish/text/antlr/_runtime/tree/ParseTreePattern.py +0 -75
- omlish/text/antlr/_runtime/tree/ParseTreePatternMatcher.py +0 -377
- omlish/text/antlr/_runtime/tree/RuleTagToken.py +0 -53
- omlish/text/antlr/_runtime/tree/TokenTagToken.py +0 -50
- omlish/text/antlr/_runtime/tree/Tree.py +0 -194
- omlish/text/antlr/_runtime/tree/Trees.py +0 -114
- omlish/text/antlr/_runtime/tree/__init__.py +0 -2
- omlish/text/antlr/_runtime/xpath/XPath.py +0 -278
- omlish/text/antlr/_runtime/xpath/XPathLexer.py +0 -98
- omlish/text/antlr/_runtime/xpath/__init__.py +0 -4
- omlish/text/antlr/delimit.py +0 -109
- omlish/text/antlr/dot.py +0 -41
- omlish/text/antlr/errors.py +0 -14
- omlish/text/antlr/input.py +0 -96
- omlish/text/antlr/parsing.py +0 -54
- omlish/text/antlr/runtime.py +0 -102
- omlish/text/antlr/utils.py +0 -38
- /omlish/{asyncs/bluelet → cexts}/__init__.py +0 -0
- /omlish/{formats/json/_antlr → diag/cmds}/__init__.py +0 -0
- /omlish/{formats/json5/_antlr → http/clients/coro}/__init__.py +0 -0
- /omlish/{specs/irc → inject/helpers}/__init__.py +0 -0
- /omlish/{specs/irc/messages → logs/std}/__init__.py +0 -0
- /omlish/logs/{noisy.py → std/noisy.py} +0 -0
- /omlish/{specs/irc/numerics → marshal/composite/unions}/__init__.py +0 -0
- {omlish-0.0.0.dev423.dist-info → omlish-0.0.0.dev484.dist-info}/WHEEL +0 -0
- {omlish-0.0.0.dev423.dist-info → omlish-0.0.0.dev484.dist-info}/entry_points.txt +0 -0
- {omlish-0.0.0.dev423.dist-info → omlish-0.0.0.dev484.dist-info}/licenses/LICENSE +0 -0
- {omlish-0.0.0.dev423.dist-info → omlish-0.0.0.dev484.dist-info}/top_level.txt +0 -0
omlish/lite/reprs.py
DELETED
|
@@ -1,85 +0,0 @@
|
|
|
1
|
-
# ruff: noqa: UP007 UP045
|
|
2
|
-
import dataclasses as dc
|
|
3
|
-
import typing as ta
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
##
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
@dc.dataclass(frozen=True)
|
|
10
|
-
class AttrRepr:
|
|
11
|
-
attrs: ta.Sequence[str]
|
|
12
|
-
|
|
13
|
-
# _: dc.KW_ONLY
|
|
14
|
-
|
|
15
|
-
with_module: bool = False
|
|
16
|
-
use_qualname: bool = False
|
|
17
|
-
with_id: bool = False
|
|
18
|
-
value_filter: ta.Optional[ta.Callable[[ta.Any], bool]] = None
|
|
19
|
-
recursive: bool = False
|
|
20
|
-
|
|
21
|
-
@classmethod
|
|
22
|
-
def of(cls, *attrs: str, **kwargs: ta.Any) -> 'AttrRepr':
|
|
23
|
-
return cls(attrs, **kwargs)
|
|
24
|
-
|
|
25
|
-
#
|
|
26
|
-
|
|
27
|
-
def _build_(self, obj: ta.Any) -> str:
|
|
28
|
-
vs = ', '.join(
|
|
29
|
-
f'{attr}={v!r}'
|
|
30
|
-
for attr in self.attrs
|
|
31
|
-
for v in [getattr(obj, attr)]
|
|
32
|
-
if self.value_filter is None or self.value_filter(v)
|
|
33
|
-
)
|
|
34
|
-
|
|
35
|
-
return (
|
|
36
|
-
f'{obj.__class__.__module__ + "." if self.with_module else ""}'
|
|
37
|
-
f'{obj.__class__.__qualname__ if self.use_qualname else obj.__class__.__name__}'
|
|
38
|
-
f'{("@" + hex(id(obj))[2:]) if self.with_id else ""}'
|
|
39
|
-
f'({vs})'
|
|
40
|
-
)
|
|
41
|
-
|
|
42
|
-
_build: ta.ClassVar[ta.Callable[[ta.Any], str]]
|
|
43
|
-
|
|
44
|
-
def __call__(self, obj: ta.Any) -> str:
|
|
45
|
-
try:
|
|
46
|
-
build: ta.Any = self._build
|
|
47
|
-
|
|
48
|
-
except AttributeError:
|
|
49
|
-
build = self._build_
|
|
50
|
-
if self.recursive:
|
|
51
|
-
build = self._reprlib().recursive_repr()(build)
|
|
52
|
-
object.__setattr__(self, '_build', build)
|
|
53
|
-
|
|
54
|
-
return build(obj)
|
|
55
|
-
|
|
56
|
-
#
|
|
57
|
-
|
|
58
|
-
def __get__(self, instance, owner):
|
|
59
|
-
if instance is None:
|
|
60
|
-
return self
|
|
61
|
-
|
|
62
|
-
def __repr__(other): # noqa
|
|
63
|
-
return self(other)
|
|
64
|
-
|
|
65
|
-
return __repr__.__get__(instance, owner)
|
|
66
|
-
|
|
67
|
-
#
|
|
68
|
-
|
|
69
|
-
_reprlib_: ta.ClassVar[ta.Any]
|
|
70
|
-
|
|
71
|
-
@classmethod
|
|
72
|
-
def _reprlib(cls) -> ta.Any:
|
|
73
|
-
try:
|
|
74
|
-
return cls._reprlib_
|
|
75
|
-
except AttributeError:
|
|
76
|
-
pass
|
|
77
|
-
|
|
78
|
-
import reprlib # noqa
|
|
79
|
-
|
|
80
|
-
cls._reprlib_ = reprlib
|
|
81
|
-
return reprlib
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
def attr_repr(obj: ta.Any, *attrs: str, **kwargs: ta.Any) -> str:
|
|
85
|
-
return AttrRepr(attrs, **kwargs)(obj)
|
omlish/logs/abc.py
DELETED
|
@@ -1,319 +0,0 @@
|
|
|
1
|
-
# ruff: noqa: A002 N802 N815
|
|
2
|
-
import types
|
|
3
|
-
import typing as ta
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
##
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
Level: ta.TypeAlias = int
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
ExceptionInfo: ta.TypeAlias = tuple[type[BaseException], BaseException, types.TracebackType]
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
class LogRecord:
|
|
16
|
-
"""https://docs.python.org/3/library/logging.html#logrecord-attributes"""
|
|
17
|
-
|
|
18
|
-
# Name of the logger used to log the call.
|
|
19
|
-
name: str
|
|
20
|
-
|
|
21
|
-
# Human-readable time when the LogRecord was created. By default this is of the form '2003-07-08 16:49:45,896' (the
|
|
22
|
-
# numbers after the comma are millisecond portion of the time).
|
|
23
|
-
asctime: str
|
|
24
|
-
|
|
25
|
-
# The logged message, computed as msg % args. This is set when Formatter.format() is invoked.
|
|
26
|
-
message: str
|
|
27
|
-
|
|
28
|
-
# The format string passed in the original logging call. Merged with args to produce message, or an arbitrary object
|
|
29
|
-
# (see Using arbitrary objects as messages).
|
|
30
|
-
msg: str
|
|
31
|
-
|
|
32
|
-
# The tuple of arguments merged into msg to produce message, or a dict whose values are used for the merge (when
|
|
33
|
-
# there is only one argument, and it is a dictionary).
|
|
34
|
-
args: tuple
|
|
35
|
-
|
|
36
|
-
# Text logging level for the message ('DEBUG', 'INFO', 'WARNING', 'ERROR', 'CRITICAL').
|
|
37
|
-
levelname: str
|
|
38
|
-
|
|
39
|
-
# # Numeric logging level for the message (DEBUG, INFO, WARNING, ERROR, CRITICAL).
|
|
40
|
-
levelno: Level
|
|
41
|
-
|
|
42
|
-
# Full pathname of the source file where the logging call was issued (if available).
|
|
43
|
-
pathname: str
|
|
44
|
-
|
|
45
|
-
# Filename portion of pathname.
|
|
46
|
-
filename: str
|
|
47
|
-
|
|
48
|
-
# Module (name portion of filename).
|
|
49
|
-
module: str
|
|
50
|
-
|
|
51
|
-
# Exception tuple (à la sys.exc_info) or, if no exception has occurred, None.
|
|
52
|
-
exc_info: ExceptionInfo | None
|
|
53
|
-
|
|
54
|
-
exc_text: str | None
|
|
55
|
-
|
|
56
|
-
# Stack frame information (where available) from the bottom of the stack in the current thread, up to and including
|
|
57
|
-
# the stack frame of the logging call which resulted in the creation of this record.
|
|
58
|
-
stack_info: str | None
|
|
59
|
-
|
|
60
|
-
# Source line number where the logging call was issued (if available).
|
|
61
|
-
lineno: int
|
|
62
|
-
|
|
63
|
-
# Name of function containing the logging call.
|
|
64
|
-
funcName: str
|
|
65
|
-
|
|
66
|
-
# Time when the LogRecord was created (as returned by time.time_ns() / 1e9).
|
|
67
|
-
created: float
|
|
68
|
-
|
|
69
|
-
# Millisecond portion of the time when the LogRecord was created.
|
|
70
|
-
msecs: float
|
|
71
|
-
|
|
72
|
-
# Time in milliseconds when the LogRecord was created, relative to the time the logging module was loaded.
|
|
73
|
-
relativeCreated: float
|
|
74
|
-
|
|
75
|
-
# Thread ID (if available).
|
|
76
|
-
thread: int
|
|
77
|
-
|
|
78
|
-
# Thread name (if available).
|
|
79
|
-
threadName: str
|
|
80
|
-
|
|
81
|
-
# Process name (if available).
|
|
82
|
-
processName: str
|
|
83
|
-
|
|
84
|
-
# Process ID (if available).
|
|
85
|
-
process: int
|
|
86
|
-
|
|
87
|
-
# asyncio.Task name (if available).
|
|
88
|
-
taskName: str
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
##
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
class Formatter(ta.Protocol):
|
|
95
|
-
"""https://docs.python.org/3/library/logging.html#formatter-objects"""
|
|
96
|
-
|
|
97
|
-
default_time_format: ta.ClassVar[str]
|
|
98
|
-
default_msec_format: ta.ClassVar[str]
|
|
99
|
-
|
|
100
|
-
def formatTime(self, record: LogRecord, datefmt: str | None = None) -> str: ...
|
|
101
|
-
|
|
102
|
-
def formatException(self, ei: ExceptionInfo) -> str: ...
|
|
103
|
-
|
|
104
|
-
def usesTime(self) -> bool: ...
|
|
105
|
-
|
|
106
|
-
def formatMessage(self, record: LogRecord) -> str: ...
|
|
107
|
-
|
|
108
|
-
def formatStack(self, stack_info: str) -> str: ...
|
|
109
|
-
|
|
110
|
-
def format(self, record: LogRecord) -> str: ...
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
class BufferingFormatter(ta.Protocol):
|
|
114
|
-
"""https://docs.python.org/3/library/logging.html#logging.BufferingFormatter"""
|
|
115
|
-
|
|
116
|
-
def formatHeader(self, records: ta.Sequence[LogRecord]) -> str: ...
|
|
117
|
-
|
|
118
|
-
def formatFooter(self, records: ta.Sequence[LogRecord]) -> str: ...
|
|
119
|
-
|
|
120
|
-
def format(self, records: ta.Sequence[LogRecord]) -> str: ...
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
##
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
class Filter(ta.Protocol):
|
|
127
|
-
"""https://docs.python.org/3/library/logging.html#filter-objects"""
|
|
128
|
-
|
|
129
|
-
def filter(self, record: LogRecord) -> bool: ...
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
class Filterer(ta.Protocol):
|
|
133
|
-
"""A base class for loggers and handlers which allows them to share common code."""
|
|
134
|
-
|
|
135
|
-
def addFilter(self, filter: Filter) -> None: ...
|
|
136
|
-
|
|
137
|
-
def removeFilter(self, filter: Filter) -> None: ...
|
|
138
|
-
|
|
139
|
-
def filter(self, record: LogRecord) -> bool: ...
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
##
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
class Handler(Filterer, ta.Protocol):
|
|
146
|
-
"""https://docs.python.org/3/library/logging.html#handler-objects"""
|
|
147
|
-
|
|
148
|
-
level: Level
|
|
149
|
-
|
|
150
|
-
def get_name(self) -> str: ...
|
|
151
|
-
|
|
152
|
-
def set_name(self, name: str) -> None: ...
|
|
153
|
-
|
|
154
|
-
name: str
|
|
155
|
-
|
|
156
|
-
def createLock(self) -> None: ...
|
|
157
|
-
|
|
158
|
-
def acquire(self) -> None: ...
|
|
159
|
-
|
|
160
|
-
def release(self) -> None: ...
|
|
161
|
-
|
|
162
|
-
def setLevel(self, level: Level) -> None: ...
|
|
163
|
-
|
|
164
|
-
def format(self, record: LogRecord) -> str: ...
|
|
165
|
-
|
|
166
|
-
def emit(self, record: LogRecord) -> None: ...
|
|
167
|
-
|
|
168
|
-
def handle(self, record: LogRecord) -> bool: ...
|
|
169
|
-
|
|
170
|
-
def setFormatter(self, fmt: Formatter) -> None: ...
|
|
171
|
-
|
|
172
|
-
def flush(self) -> None: ...
|
|
173
|
-
|
|
174
|
-
def close(self) -> None: ...
|
|
175
|
-
|
|
176
|
-
def handleError(self, record: LogRecord) -> None: ...
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
class Stream(ta.Protocol):
|
|
180
|
-
def write(self, s: str) -> None: ...
|
|
181
|
-
|
|
182
|
-
def flush(self) -> None: ... # OPTIONAL METHOD
|
|
183
|
-
|
|
184
|
-
def close(self) -> None: ... # OPTIONAL METHOD
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
class StreamHandler(Handler, ta.Protocol):
|
|
188
|
-
"""https://docs.python.org/3/library/logging.handlers.html#logging.StreamHandler"""
|
|
189
|
-
|
|
190
|
-
terminator: ta.ClassVar[str]
|
|
191
|
-
|
|
192
|
-
stream: Stream
|
|
193
|
-
|
|
194
|
-
def flush(self) -> None: ...
|
|
195
|
-
|
|
196
|
-
def emit(self, record: LogRecord) -> None: ...
|
|
197
|
-
|
|
198
|
-
def setStream(self, stream: Stream) -> None: ...
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
##
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
class Manager(ta.Protocol):
|
|
205
|
-
"""There is [under normal circumstances] just one Manager instance, which holds the hierarchy of loggers."""
|
|
206
|
-
|
|
207
|
-
root: 'Logger'
|
|
208
|
-
|
|
209
|
-
disable: Level
|
|
210
|
-
|
|
211
|
-
def getLogger(self, name: str) -> 'Logger': ...
|
|
212
|
-
|
|
213
|
-
def setLoggerClass(self, klass: type['Logger']) -> None: ...
|
|
214
|
-
|
|
215
|
-
def setLogRecordFactory(self, factory: ta.Callable[..., LogRecord]) -> None: ... # UNREFERENCED?
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
##
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
Caller: ta.TypeAlias = tuple[
|
|
222
|
-
str, # filename
|
|
223
|
-
int, # lineno
|
|
224
|
-
str, # name
|
|
225
|
-
str, # formatted
|
|
226
|
-
]
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
class Logger(Filterer, ta.Protocol):
|
|
230
|
-
"""https://docs.python.org/3/library/logging.html#logger-objects"""
|
|
231
|
-
|
|
232
|
-
name: str
|
|
233
|
-
level: Level
|
|
234
|
-
parent: ta.Optional['Logger']
|
|
235
|
-
propagate: bool
|
|
236
|
-
handlers: list[Handler]
|
|
237
|
-
disabled: bool
|
|
238
|
-
|
|
239
|
-
manager: Manager
|
|
240
|
-
|
|
241
|
-
def setLevel(self, level: Level) -> None: ...
|
|
242
|
-
|
|
243
|
-
def debug(self, msg: str, *args: ta.Any, **kwargs: ta.Any) -> None: ...
|
|
244
|
-
def info(self, msg: str, *args: ta.Any, **kwargs: ta.Any) -> None: ...
|
|
245
|
-
def warning(self, msg: str, *args: ta.Any, **kwargs: ta.Any) -> None: ...
|
|
246
|
-
def warn(self, msg: str, *args: ta.Any, **kwargs: ta.Any) -> None: ...
|
|
247
|
-
def error(self, msg: str, *args: ta.Any, **kwargs: ta.Any) -> None: ...
|
|
248
|
-
def exception(self, msg: str, *args: ta.Any, **kwargs: ta.Any) -> None: ...
|
|
249
|
-
def critical(self, msg: str, *args: ta.Any, **kwargs: ta.Any) -> None: ...
|
|
250
|
-
def fatal(self, msg: str, *args: ta.Any, **kwargs: ta.Any) -> None: ...
|
|
251
|
-
|
|
252
|
-
def log(self, level: Level, msg: str, *args: ta.Any, **kwargs: ta.Any) -> None: ...
|
|
253
|
-
|
|
254
|
-
def findCaller(self, stack_info: bool = False, stacklevel: int = 1) -> Caller: ...
|
|
255
|
-
|
|
256
|
-
def makeRecord(
|
|
257
|
-
self,
|
|
258
|
-
name,
|
|
259
|
-
level,
|
|
260
|
-
fn,
|
|
261
|
-
lno,
|
|
262
|
-
msg,
|
|
263
|
-
args,
|
|
264
|
-
exc_info,
|
|
265
|
-
func: str | None = None,
|
|
266
|
-
extra: ta.Mapping[str, ta.Any] | None = None,
|
|
267
|
-
sinfo: str | None = None,
|
|
268
|
-
) -> LogRecord: ...
|
|
269
|
-
|
|
270
|
-
def handle(self, record: LogRecord) -> None: ...
|
|
271
|
-
|
|
272
|
-
def addHandler(self, hdlr: Handler) -> None: ...
|
|
273
|
-
|
|
274
|
-
def removeHandler(self, hdlr: Handler) -> None: ...
|
|
275
|
-
|
|
276
|
-
def hasHandlers(self) -> bool: ...
|
|
277
|
-
|
|
278
|
-
def callHandlers(self, record: LogRecord) -> None: ...
|
|
279
|
-
|
|
280
|
-
def getEffectiveLevel(self) -> Level: ...
|
|
281
|
-
|
|
282
|
-
def isEnabledFor(self, level: Level) -> bool: ...
|
|
283
|
-
|
|
284
|
-
def getChild(self, suffix: str) -> 'Logger': ...
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
##
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
class LoggerAdapter(ta.Protocol):
|
|
291
|
-
"""https://docs.python.org/3/library/logging.html#loggeradapter-objects"""
|
|
292
|
-
|
|
293
|
-
logger: Logger
|
|
294
|
-
extra: ta.Mapping[str, ta.Any]
|
|
295
|
-
|
|
296
|
-
def process(self, msg: str, kwargs: dict[str, ta.Any]) -> tuple[str, dict[str, ta.Any]]: ...
|
|
297
|
-
|
|
298
|
-
def debug(self, msg: str, *args: ta.Any, **kwargs: ta.Any) -> None: ...
|
|
299
|
-
def info(self, msg: str, *args: ta.Any, **kwargs: ta.Any) -> None: ...
|
|
300
|
-
def warning(self, msg: str, *args: ta.Any, **kwargs: ta.Any) -> None: ...
|
|
301
|
-
def warn(self, msg: str, *args: ta.Any, **kwargs: ta.Any) -> None: ...
|
|
302
|
-
def error(self, msg: str, *args: ta.Any, **kwargs: ta.Any) -> None: ...
|
|
303
|
-
def exception(self, msg: str, *args: ta.Any, **kwargs: ta.Any) -> None: ...
|
|
304
|
-
def critical(self, msg: str, *args: ta.Any, **kwargs: ta.Any) -> None: ...
|
|
305
|
-
def fatal(self, msg: str, *args: ta.Any, **kwargs: ta.Any) -> None: ...
|
|
306
|
-
|
|
307
|
-
def log(self, level: Level, msg: str, *args: ta.Any, **kwargs: ta.Any) -> None: ...
|
|
308
|
-
|
|
309
|
-
def isEnabledFor(self, level: Level) -> bool: ...
|
|
310
|
-
|
|
311
|
-
def setLevel(self, level: Level) -> None: ...
|
|
312
|
-
|
|
313
|
-
def getEffectiveLevel(self) -> Level: ...
|
|
314
|
-
|
|
315
|
-
def hasHandlers(self) -> bool: ...
|
|
316
|
-
|
|
317
|
-
manager: Manager
|
|
318
|
-
|
|
319
|
-
name: str
|
omlish/logs/callers.py
DELETED
|
@@ -1,67 +0,0 @@
|
|
|
1
|
-
# ruff: noqa: UP006 UP007 UP045
|
|
2
|
-
# @omlish-lite
|
|
3
|
-
import io
|
|
4
|
-
import os.path
|
|
5
|
-
import sys
|
|
6
|
-
import traceback
|
|
7
|
-
import types
|
|
8
|
-
import typing as ta
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
##
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
class LoggingCaller(ta.NamedTuple):
|
|
15
|
-
filename: str
|
|
16
|
-
lineno: int
|
|
17
|
-
func: str
|
|
18
|
-
sinfo: ta.Optional[str]
|
|
19
|
-
|
|
20
|
-
@classmethod
|
|
21
|
-
def is_internal_frame(cls, frame: types.FrameType) -> bool:
|
|
22
|
-
filename = os.path.normcase(frame.f_code.co_filename)
|
|
23
|
-
|
|
24
|
-
# https://github.com/python/cpython/commit/5ca6d7469be53960843df39bb900e9c3359f127f
|
|
25
|
-
if 'importlib' in filename and '_bootstrap' in filename:
|
|
26
|
-
return True
|
|
27
|
-
|
|
28
|
-
return False
|
|
29
|
-
|
|
30
|
-
@classmethod
|
|
31
|
-
def find_frame(cls, ofs: int = 0) -> types.FrameType:
|
|
32
|
-
f: ta.Optional[types.FrameType] = sys._getframe(2 + ofs) # noqa
|
|
33
|
-
|
|
34
|
-
while f is not None and hasattr(f, 'f_code'):
|
|
35
|
-
if f.f_code.co_filename != __file__:
|
|
36
|
-
return f
|
|
37
|
-
|
|
38
|
-
f = f.f_back
|
|
39
|
-
|
|
40
|
-
raise RuntimeError
|
|
41
|
-
|
|
42
|
-
@classmethod
|
|
43
|
-
def find(
|
|
44
|
-
cls,
|
|
45
|
-
ofs: int = 0,
|
|
46
|
-
*,
|
|
47
|
-
stack_info: bool = False,
|
|
48
|
-
) -> 'LoggingCaller':
|
|
49
|
-
f = cls.find_frame(ofs + 1)
|
|
50
|
-
# TODO: ('(unknown file)', 0, '(unknown function)', None) ?
|
|
51
|
-
|
|
52
|
-
sinfo = None
|
|
53
|
-
if stack_info:
|
|
54
|
-
sio = io.StringIO()
|
|
55
|
-
sio.write('Stack (most recent call last):\n')
|
|
56
|
-
traceback.print_stack(f, file=sio)
|
|
57
|
-
sinfo = sio.getvalue()
|
|
58
|
-
sio.close()
|
|
59
|
-
if sinfo[-1] == '\n':
|
|
60
|
-
sinfo = sinfo[:-1]
|
|
61
|
-
|
|
62
|
-
return cls(
|
|
63
|
-
f.f_code.co_filename,
|
|
64
|
-
f.f_lineno,
|
|
65
|
-
f.f_code.co_name,
|
|
66
|
-
sinfo,
|
|
67
|
-
)
|
omlish/logs/color.py
DELETED
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
# ruff: noqa: ANN201 N802
|
|
2
|
-
import logging
|
|
3
|
-
import typing as ta
|
|
4
|
-
|
|
5
|
-
from ..term import codes as tc
|
|
6
|
-
from .standard import StandardLogFormatter
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
##
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
class ColorLogFormatter(StandardLogFormatter):
|
|
13
|
-
LEVEL_COLORS: ta.Mapping[int, tc.SGRs.FG] = {
|
|
14
|
-
logging.WARNING: tc.SGRs.FG.BRIGHT_YELLOW,
|
|
15
|
-
logging.ERROR: tc.SGRs.FG.BRIGHT_RED,
|
|
16
|
-
logging.CRITICAL: tc.SGRs.FG.BRIGHT_RED,
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
def formatMessage(self, record):
|
|
20
|
-
buf = super().formatMessage(record)
|
|
21
|
-
try:
|
|
22
|
-
c = self.LEVEL_COLORS[record.levelno]
|
|
23
|
-
except KeyError:
|
|
24
|
-
pass
|
|
25
|
-
else:
|
|
26
|
-
buf = tc.SGR(c) + buf + tc.SGR(tc.SGRs.RESET)
|
|
27
|
-
return buf
|
omlish/logs/configs.py
DELETED
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
# ruff: noqa: UP006 UP045
|
|
2
|
-
# @omlish-lite
|
|
3
|
-
"""
|
|
4
|
-
https://docs.python.org/3/howto/logging.html#configuring-logging
|
|
5
|
-
https://docs.python.org/3/library/logging.config.html#logging-config-dictschema
|
|
6
|
-
"""
|
|
7
|
-
import dataclasses as dc
|
|
8
|
-
import typing as ta
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
FilterConfig = ta.Dict[str, ta.Any] # ta.TypeAlias
|
|
12
|
-
FormatterConfig = ta.Dict[str, ta.Any] # ta.TypeAlias
|
|
13
|
-
HandlerConfig = ta.Dict[str, ta.Any] # ta.TypeAlias
|
|
14
|
-
LoggerConfig = ta.Dict[str, ta.Any] # ta.TypeAlias
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
##
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
@dc.dataclass()
|
|
21
|
-
class DictConfig:
|
|
22
|
-
version: int = 1
|
|
23
|
-
incremental: bool = False
|
|
24
|
-
disable_existing_loggers: bool = False
|
|
25
|
-
filters: ta.Dict[str, FilterConfig] = dc.field(default_factory=dict)
|
|
26
|
-
formatters: ta.Dict[str, FormatterConfig] = dc.field(default_factory=dict)
|
|
27
|
-
handlers: ta.Dict[str, HandlerConfig] = dc.field(default_factory=dict)
|
|
28
|
-
loggers: ta.Dict[str, LoggerConfig] = dc.field(default_factory=dict)
|
|
29
|
-
root: ta.Optional[LoggerConfig] = None
|
omlish/logs/handlers.py
DELETED
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
# ruff: noqa: UP006 UP007 UP045
|
|
2
|
-
# @omlish-lite
|
|
3
|
-
import logging
|
|
4
|
-
import typing as ta
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
##
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
class ListHandler(logging.Handler):
|
|
11
|
-
def __init__(self) -> None:
|
|
12
|
-
super().__init__()
|
|
13
|
-
|
|
14
|
-
self.records: ta.List[logging.LogRecord] = []
|
|
15
|
-
|
|
16
|
-
def emit(self, record: logging.LogRecord) -> None:
|
|
17
|
-
self.records.append(record)
|