omlish 0.0.0.dev444__py3-none-any.whl → 0.0.0.dev446__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/__about__.py +4 -2
- omlish/formats/json/stream/lexing.py +45 -23
- omlish/lang/imports/_capture.cc +101 -0
- omlish/lang/imports/capture.py +63 -56
- {omlish-0.0.0.dev444.dist-info → omlish-0.0.0.dev446.dist-info}/METADATA +1 -1
- {omlish-0.0.0.dev444.dist-info → omlish-0.0.0.dev446.dist-info}/RECORD +10 -9
- {omlish-0.0.0.dev444.dist-info → omlish-0.0.0.dev446.dist-info}/WHEEL +0 -0
- {omlish-0.0.0.dev444.dist-info → omlish-0.0.0.dev446.dist-info}/entry_points.txt +0 -0
- {omlish-0.0.0.dev444.dist-info → omlish-0.0.0.dev446.dist-info}/licenses/LICENSE +0 -0
- {omlish-0.0.0.dev444.dist-info → omlish-0.0.0.dev446.dist-info}/top_level.txt +0 -0
omlish/__about__.py
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
__version__ = '0.0.0.
|
|
2
|
-
__revision__ = '
|
|
1
|
+
__version__ = '0.0.0.dev446'
|
|
2
|
+
__revision__ = 'eb6b4d97a54d35bfe1b12d84ba99cae32c516e4e'
|
|
3
3
|
|
|
4
4
|
|
|
5
5
|
#
|
|
@@ -185,6 +185,8 @@ class SetuptoolsBase:
|
|
|
185
185
|
|
|
186
186
|
|
|
187
187
|
class Setuptools(SetuptoolsBase):
|
|
188
|
+
cexts = True
|
|
189
|
+
|
|
188
190
|
find_packages = {
|
|
189
191
|
'include': [Project.name, f'{Project.name}.*'],
|
|
190
192
|
'exclude': [*SetuptoolsBase.find_packages['exclude']],
|
|
@@ -3,7 +3,6 @@ TODO:
|
|
|
3
3
|
- max buf size
|
|
4
4
|
- max recursion depth
|
|
5
5
|
- mark start pos of tokens, currently returning end
|
|
6
|
-
- _do_string inner loop optimization somehow
|
|
7
6
|
"""
|
|
8
7
|
import dataclasses as dc
|
|
9
8
|
import io
|
|
@@ -343,33 +342,56 @@ class JsonStreamLexer(GenMachine[str, Token]):
|
|
|
343
342
|
while True:
|
|
344
343
|
c: str | None = None
|
|
345
344
|
|
|
346
|
-
|
|
347
|
-
if
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
345
|
+
while True:
|
|
346
|
+
if char_in_str is not None:
|
|
347
|
+
if char_in_str_pos >= char_in_str_len:
|
|
348
|
+
char_in_str = None
|
|
349
|
+
continue
|
|
350
|
+
|
|
351
|
+
skip_to = char_in_str_len
|
|
352
|
+
if (qp := char_in_str.find(q, char_in_str_pos)) >= 0 and qp < skip_to:
|
|
353
|
+
skip_to = qp
|
|
354
|
+
if (sp := char_in_str.find('\\', char_in_str_pos)) >= 0 and sp < skip_to:
|
|
355
|
+
skip_to = sp
|
|
356
|
+
|
|
357
|
+
if skip_to != char_in_str_pos:
|
|
358
|
+
ofs += skip_to - char_in_str_pos
|
|
359
|
+
if (np := char_in_str.rfind('\n', char_in_str_pos, skip_to)) >= 0:
|
|
360
|
+
line += char_in_str.count('\n', char_in_str_pos, skip_to)
|
|
361
|
+
col = np - char_in_str_pos
|
|
362
|
+
else:
|
|
363
|
+
col += skip_to - char_in_str_pos
|
|
364
|
+
buf.write(char_in_str[char_in_str_pos:skip_to])
|
|
365
|
+
|
|
366
|
+
if skip_to >= char_in_str_len:
|
|
367
|
+
char_in_str = None
|
|
368
|
+
continue
|
|
369
|
+
char_in_str_pos = skip_to
|
|
370
|
+
|
|
353
371
|
c = char_in_str[char_in_str_pos]
|
|
354
372
|
char_in_str_pos += 1
|
|
355
|
-
else:
|
|
356
|
-
char_in_str = None
|
|
357
373
|
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
374
|
+
if c is None:
|
|
375
|
+
try:
|
|
376
|
+
c = (yield None)
|
|
377
|
+
except GeneratorExit:
|
|
378
|
+
restore_state()
|
|
379
|
+
self._raise('Unexpected end of input')
|
|
380
|
+
|
|
381
|
+
if len(c) > 1:
|
|
382
|
+
char_in_str = c
|
|
383
|
+
char_in_str_len = len(char_in_str)
|
|
384
|
+
char_in_str_pos = 0
|
|
385
|
+
c = None
|
|
386
|
+
continue
|
|
364
387
|
|
|
365
|
-
if
|
|
366
|
-
|
|
367
|
-
char_in_str_len = len(char_in_str)
|
|
368
|
-
char_in_str_pos = 1
|
|
369
|
-
c = c[0]
|
|
388
|
+
if c is None:
|
|
389
|
+
raise JsonStreamError
|
|
370
390
|
|
|
371
|
-
|
|
372
|
-
|
|
391
|
+
if c and len(c) != 1:
|
|
392
|
+
raise JsonStreamError(c)
|
|
393
|
+
|
|
394
|
+
break
|
|
373
395
|
|
|
374
396
|
ofs += 1
|
|
375
397
|
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
// @omlish-cext
|
|
2
|
+
#include <atomic>
|
|
3
|
+
|
|
4
|
+
#define PY_SSIZE_T_CLEAN
|
|
5
|
+
#define Py_BUILD_CORE 1
|
|
6
|
+
#include "Python.h"
|
|
7
|
+
#include "internal/pycore_frame.h"
|
|
8
|
+
#undef Py_BUILD_CORE
|
|
9
|
+
|
|
10
|
+
#if PY_VERSION_HEX < 0x030D0000
|
|
11
|
+
# error "This extension requires CPython 3.13+"
|
|
12
|
+
#endif
|
|
13
|
+
|
|
14
|
+
//
|
|
15
|
+
|
|
16
|
+
#define _MODULE_NAME "_capture"
|
|
17
|
+
#define _PACKAGE_NAME "omlish.lang.imports"
|
|
18
|
+
#define _MODULE_FULL_NAME _PACKAGE_NAME "." _MODULE_NAME
|
|
19
|
+
|
|
20
|
+
//
|
|
21
|
+
|
|
22
|
+
static PyObject *
|
|
23
|
+
_set_frame_builtins(PyObject *self, PyObject *args)
|
|
24
|
+
{
|
|
25
|
+
PyObject *frame_obj;
|
|
26
|
+
PyObject *old_builtins;
|
|
27
|
+
PyObject *new_builtins;
|
|
28
|
+
|
|
29
|
+
if (!PyArg_ParseTuple(
|
|
30
|
+
args, "OO!O!",
|
|
31
|
+
&frame_obj,
|
|
32
|
+
&PyDict_Type, &old_builtins,
|
|
33
|
+
&PyDict_Type, &new_builtins
|
|
34
|
+
)) {
|
|
35
|
+
return NULL;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
if (!PyFrame_Check(frame_obj)) {
|
|
39
|
+
PyErr_SetString(PyExc_TypeError, "first argument must be a frame object");
|
|
40
|
+
return NULL;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
PyFrameObject *frame = (PyFrameObject *)frame_obj;
|
|
44
|
+
_PyInterpreterFrame *iframe = frame->f_frame;
|
|
45
|
+
|
|
46
|
+
if (!iframe) {
|
|
47
|
+
PyErr_SetString(PyExc_ValueError, "frame has no underlying interpreter frame");
|
|
48
|
+
return NULL;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
std::atomic_ref<PyObject*> builtins_ref(iframe->f_builtins);
|
|
52
|
+
PyObject* expected = old_builtins;
|
|
53
|
+
bool success = builtins_ref.compare_exchange_strong(
|
|
54
|
+
expected,
|
|
55
|
+
new_builtins,
|
|
56
|
+
std::memory_order_acq_rel,
|
|
57
|
+
std::memory_order_acquire
|
|
58
|
+
);
|
|
59
|
+
|
|
60
|
+
if (success) {
|
|
61
|
+
Py_RETURN_TRUE;
|
|
62
|
+
} else {
|
|
63
|
+
Py_RETURN_FALSE;
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
//
|
|
68
|
+
|
|
69
|
+
PyDoc_STRVAR(capture_doc, _MODULE_NAME);
|
|
70
|
+
|
|
71
|
+
static PyMethodDef capture_methods[] = {
|
|
72
|
+
{"_set_frame_builtins", _set_frame_builtins, METH_VARARGS, "_set_frame_builtins"},
|
|
73
|
+
{NULL, NULL, 0, NULL}
|
|
74
|
+
};
|
|
75
|
+
|
|
76
|
+
static struct PyModuleDef_Slot capture_slots[] = {
|
|
77
|
+
{Py_mod_gil, Py_MOD_GIL_NOT_USED},
|
|
78
|
+
{Py_mod_multiple_interpreters, Py_MOD_MULTIPLE_INTERPRETERS_SUPPORTED},
|
|
79
|
+
{0, NULL}
|
|
80
|
+
};
|
|
81
|
+
|
|
82
|
+
static struct PyModuleDef capture_module = {
|
|
83
|
+
.m_base = PyModuleDef_HEAD_INIT,
|
|
84
|
+
.m_name = _MODULE_NAME,
|
|
85
|
+
.m_doc = capture_doc,
|
|
86
|
+
.m_size = 0,
|
|
87
|
+
.m_methods = capture_methods,
|
|
88
|
+
.m_slots = capture_slots,
|
|
89
|
+
.m_traverse = NULL,
|
|
90
|
+
.m_clear = NULL,
|
|
91
|
+
.m_free = NULL,
|
|
92
|
+
};
|
|
93
|
+
|
|
94
|
+
extern "C" {
|
|
95
|
+
|
|
96
|
+
PyMODINIT_FUNC PyInit__capture(void)
|
|
97
|
+
{
|
|
98
|
+
return PyModuleDef_Init(&capture_module);
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
}
|
omlish/lang/imports/capture.py
CHANGED
|
@@ -235,10 +235,31 @@ class _ImportCaptureHook:
|
|
|
235
235
|
|
|
236
236
|
return module.module_obj
|
|
237
237
|
|
|
238
|
-
|
|
238
|
+
@ta.final
|
|
239
|
+
@contextlib.contextmanager
|
|
239
240
|
def hook_context(
|
|
240
241
|
self,
|
|
241
242
|
mod_globals: ta.MutableMapping[str, ta.Any], # noqa
|
|
243
|
+
) -> ta.Iterator[None]:
|
|
244
|
+
if self._MOD_SELF_ATTR in mod_globals:
|
|
245
|
+
raise ImportCaptureErrors.HookError
|
|
246
|
+
|
|
247
|
+
mod_globals[self._MOD_SELF_ATTR] = self
|
|
248
|
+
|
|
249
|
+
try:
|
|
250
|
+
with self._hook_context(mod_globals):
|
|
251
|
+
yield
|
|
252
|
+
|
|
253
|
+
finally:
|
|
254
|
+
if mod_globals[self._MOD_SELF_ATTR] is not self:
|
|
255
|
+
raise ImportCaptureErrors.HookError
|
|
256
|
+
|
|
257
|
+
del mod_globals[self._MOD_SELF_ATTR]
|
|
258
|
+
|
|
259
|
+
# @abc.abstractmethod
|
|
260
|
+
def _hook_context(
|
|
261
|
+
self,
|
|
262
|
+
mod_globals: ta.MutableMapping[str, ta.Any], # noqa
|
|
242
263
|
) -> ta.ContextManager[None]:
|
|
243
264
|
raise NotImplementedError
|
|
244
265
|
|
|
@@ -333,7 +354,10 @@ class _ImportCaptureHook:
|
|
|
333
354
|
)
|
|
334
355
|
|
|
335
356
|
|
|
336
|
-
|
|
357
|
+
#
|
|
358
|
+
|
|
359
|
+
|
|
360
|
+
class _AbstractBuiltinsImportCaptureHook(_ImportCaptureHook):
|
|
337
361
|
def _new_import(
|
|
338
362
|
self,
|
|
339
363
|
old_import,
|
|
@@ -366,38 +390,31 @@ class _AbstractBuiltinImportCaptureHook(_ImportCaptureHook):
|
|
|
366
390
|
)
|
|
367
391
|
|
|
368
392
|
|
|
369
|
-
|
|
393
|
+
#
|
|
394
|
+
|
|
395
|
+
|
|
396
|
+
class _UnsafeGlobalBuiltinsImportCaptureHook(_AbstractBuiltinsImportCaptureHook):
|
|
370
397
|
@contextlib.contextmanager
|
|
371
|
-
def
|
|
398
|
+
def _hook_context(
|
|
372
399
|
self,
|
|
373
400
|
mod_globals: ta.MutableMapping[str, ta.Any], # noqa
|
|
374
401
|
) -> ta.Iterator[None]:
|
|
375
|
-
if self._MOD_SELF_ATTR in mod_globals:
|
|
376
|
-
raise ImportCaptureErrors.HookError
|
|
377
|
-
|
|
378
|
-
#
|
|
379
|
-
|
|
380
402
|
old_import = builtins.__import__
|
|
381
403
|
new_import = functools.partial(self._new_import, old_import)
|
|
382
404
|
|
|
383
|
-
mod_globals[self._MOD_SELF_ATTR] = self
|
|
384
405
|
builtins.__import__ = new_import
|
|
385
406
|
|
|
386
407
|
try:
|
|
387
408
|
yield
|
|
388
409
|
|
|
389
410
|
finally:
|
|
390
|
-
if not
|
|
391
|
-
mod_globals[self._MOD_SELF_ATTR] is self and
|
|
392
|
-
builtins.__import__ is new_import
|
|
393
|
-
):
|
|
411
|
+
if builtins.__import__ is not new_import:
|
|
394
412
|
raise ImportCaptureErrors.HookError
|
|
395
413
|
|
|
396
|
-
del mod_globals[self._MOD_SELF_ATTR]
|
|
397
414
|
builtins.__import__ = old_import
|
|
398
415
|
|
|
399
416
|
|
|
400
|
-
class
|
|
417
|
+
class _SomewhatThreadSafeGlobalBuiltinsImportCaptureHook(_AbstractBuiltinsImportCaptureHook):
|
|
401
418
|
class _AlreadyPatchedError(Exception):
|
|
402
419
|
pass
|
|
403
420
|
|
|
@@ -411,23 +428,23 @@ class _SomewhatThreadSafeGlobalBuiltinImportCaptureHook(_AbstractBuiltinImportCa
|
|
|
411
428
|
self.__uninstalled = False
|
|
412
429
|
|
|
413
430
|
@classmethod
|
|
414
|
-
def _add_hook(cls, mod_globals, new_import) -> '
|
|
431
|
+
def _add_hook(cls, mod_globals, new_import) -> '_SomewhatThreadSafeGlobalBuiltinsImportCaptureHook._Patch':
|
|
415
432
|
gi = id(mod_globals)
|
|
416
433
|
for _ in range(1_000):
|
|
417
434
|
try:
|
|
418
435
|
with cls.__lock:
|
|
419
436
|
x: ta.Any = builtins.__import__
|
|
420
|
-
p:
|
|
437
|
+
p: _SomewhatThreadSafeGlobalBuiltinsImportCaptureHook._Patch
|
|
421
438
|
if x.__class__ is cls:
|
|
422
439
|
p = x
|
|
423
440
|
if p.__uninstalled: # noqa
|
|
424
|
-
raise
|
|
441
|
+
raise _SomewhatThreadSafeGlobalBuiltinsImportCaptureHook._AlreadyPatchedError # noqa
|
|
425
442
|
else:
|
|
426
443
|
p = cls(x)
|
|
427
444
|
builtins.__import__ = p
|
|
428
445
|
p.__hooks[gi] = (mod_globals, new_import)
|
|
429
446
|
return p
|
|
430
|
-
except
|
|
447
|
+
except _SomewhatThreadSafeGlobalBuiltinsImportCaptureHook._AlreadyPatchedError:
|
|
431
448
|
pass
|
|
432
449
|
raise ImportCaptureErrors.HookError('Failed to install builtins hook')
|
|
433
450
|
|
|
@@ -480,17 +497,11 @@ class _SomewhatThreadSafeGlobalBuiltinImportCaptureHook(_AbstractBuiltinImportCa
|
|
|
480
497
|
)
|
|
481
498
|
|
|
482
499
|
@contextlib.contextmanager
|
|
483
|
-
def
|
|
500
|
+
def _hook_context(
|
|
484
501
|
self,
|
|
485
502
|
mod_globals: ta.MutableMapping[str, ta.Any], # noqa
|
|
486
503
|
) -> ta.Iterator[None]:
|
|
487
|
-
|
|
488
|
-
raise ImportCaptureErrors.HookError
|
|
489
|
-
|
|
490
|
-
#
|
|
491
|
-
|
|
492
|
-
mod_globals[self._MOD_SELF_ATTR] = self
|
|
493
|
-
patch = _SomewhatThreadSafeGlobalBuiltinImportCaptureHook._Patch._add_hook(mod_globals, self._new_import) # noqa
|
|
504
|
+
patch = _SomewhatThreadSafeGlobalBuiltinsImportCaptureHook._Patch._add_hook(mod_globals, self._new_import) # noqa
|
|
494
505
|
|
|
495
506
|
try:
|
|
496
507
|
yield
|
|
@@ -498,12 +509,18 @@ class _SomewhatThreadSafeGlobalBuiltinImportCaptureHook(_AbstractBuiltinImportCa
|
|
|
498
509
|
finally:
|
|
499
510
|
patch._remove_hook(mod_globals) # noqa
|
|
500
511
|
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
512
|
+
|
|
513
|
+
#
|
|
514
|
+
|
|
515
|
+
|
|
516
|
+
_capture: ta.Any = None
|
|
517
|
+
try:
|
|
518
|
+
from . import _capture # type: ignore
|
|
519
|
+
except ImportError:
|
|
520
|
+
pass
|
|
504
521
|
|
|
505
522
|
|
|
506
|
-
class
|
|
523
|
+
class _FrameBuiltinsImportCaptureHook(_AbstractBuiltinsImportCaptureHook):
|
|
507
524
|
def __init__(
|
|
508
525
|
self,
|
|
509
526
|
*,
|
|
@@ -519,41 +536,35 @@ class _FrameBuiltinImportCaptureHook(_AbstractBuiltinImportCaptureHook):
|
|
|
519
536
|
cls,
|
|
520
537
|
frame: types.FrameType,
|
|
521
538
|
new_builtins: dict[str, ta.Any],
|
|
522
|
-
) ->
|
|
523
|
-
#
|
|
524
|
-
frame.f_builtins = new_builtins # type: ignore[misc] # noqa
|
|
539
|
+
) -> bool:
|
|
540
|
+
return _capture._set_frame_builtins(frame, frame.f_builtins, new_builtins) # noqa
|
|
525
541
|
|
|
526
542
|
@contextlib.contextmanager
|
|
527
|
-
def
|
|
543
|
+
def _hook_context(
|
|
528
544
|
self,
|
|
529
545
|
mod_globals: ta.MutableMapping[str, ta.Any], # noqa
|
|
530
546
|
) -> ta.Iterator[None]:
|
|
531
|
-
if self._MOD_SELF_ATTR in mod_globals:
|
|
532
|
-
raise ImportCaptureErrors.HookError
|
|
533
|
-
|
|
534
|
-
#
|
|
535
|
-
|
|
536
547
|
old_builtins = self._frame.f_builtins
|
|
537
548
|
old_import = old_builtins['__import__']
|
|
538
549
|
new_import = functools.partial(self._new_import, old_import)
|
|
539
550
|
|
|
540
|
-
mod_globals[self._MOD_SELF_ATTR] = self
|
|
541
551
|
new_builtins = dict(old_builtins)
|
|
542
552
|
new_builtins['__import__'] = new_import
|
|
543
|
-
self._set_frame_builtins(self._frame, new_builtins)
|
|
553
|
+
if not self._set_frame_builtins(self._frame, new_builtins):
|
|
554
|
+
raise ImportCaptureErrors.HookError
|
|
544
555
|
|
|
545
556
|
try:
|
|
546
557
|
yield
|
|
547
558
|
|
|
548
559
|
finally:
|
|
549
|
-
if not
|
|
550
|
-
mod_globals[self._MOD_SELF_ATTR] is self and
|
|
551
|
-
self._frame.f_builtins is new_builtins
|
|
552
|
-
):
|
|
560
|
+
if self._frame.f_builtins is not new_builtins:
|
|
553
561
|
raise ImportCaptureErrors.HookError
|
|
554
562
|
|
|
555
|
-
|
|
556
|
-
|
|
563
|
+
if not self._set_frame_builtins(self._frame, old_builtins):
|
|
564
|
+
raise ImportCaptureErrors.HookError
|
|
565
|
+
|
|
566
|
+
|
|
567
|
+
#
|
|
557
568
|
|
|
558
569
|
|
|
559
570
|
def _new_import_capture_hook(
|
|
@@ -566,14 +577,10 @@ def _new_import_capture_hook(
|
|
|
566
577
|
if frame is None or frame.f_globals is not mod_globals:
|
|
567
578
|
raise ImportCaptureError("Can't find importing frame")
|
|
568
579
|
|
|
569
|
-
|
|
570
|
-
|
|
571
|
-
# **kwargs,
|
|
572
|
-
# )
|
|
573
|
-
|
|
574
|
-
# return _UnsafeGlobalBuiltinImportCaptureHook(**kwargs)
|
|
580
|
+
if _capture is not None:
|
|
581
|
+
return _FrameBuiltinsImportCaptureHook(_frame=frame, **kwargs)
|
|
575
582
|
|
|
576
|
-
return
|
|
583
|
+
return _SomewhatThreadSafeGlobalBuiltinsImportCaptureHook(**kwargs)
|
|
577
584
|
|
|
578
585
|
|
|
579
586
|
##
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
omlish/.omlish-manifests.json,sha256=FLw7xkPiSXuImZgqSP8BwrEib2R1doSzUPLUkc-QUIA,8410
|
|
2
|
-
omlish/__about__.py,sha256=
|
|
2
|
+
omlish/__about__.py,sha256=8r90y0nduA_a3W7mllnllThp_MJ9YW_OIny1z_qo-PE,3613
|
|
3
3
|
omlish/__init__.py,sha256=SsyiITTuK0v74XpKV8dqNaCmjOlan1JZKrHQv5rWKPA,253
|
|
4
4
|
omlish/c3.py,sha256=ZNIMl1kwg3qdei4DiUrJPQe5M81S1e76N-GuNSwLBAE,8683
|
|
5
5
|
omlish/cached.py,sha256=MLap_p0rdGoDIMVhXVHm1tsbcWobJF0OanoodV03Ju8,542
|
|
@@ -267,7 +267,7 @@ omlish/formats/json/backends/ujson.py,sha256=U3iOlAURfiCdXbiNlXfIjDdtJDbDaLZsSuZ
|
|
|
267
267
|
omlish/formats/json/stream/__init__.py,sha256=LoYSkdUX3lkQ4g9JB_F6YOeexlOEporKW8bW8tv3YXg,859
|
|
268
268
|
omlish/formats/json/stream/building.py,sha256=QAQaTyXuw9vkfhvzWIh_DSlypD1-HgzO855Dgz3_wFM,2517
|
|
269
269
|
omlish/formats/json/stream/errors.py,sha256=c8M8UAYmIZ-vWZLeKD2jMj4EDCJbr9QR8Jq_DyHjujQ,43
|
|
270
|
-
omlish/formats/json/stream/lexing.py,sha256=
|
|
270
|
+
omlish/formats/json/stream/lexing.py,sha256=FeO7sjCQ6HHBj7VJIwkSxMPUneG1KqDyN-zuACdE_rw,17384
|
|
271
271
|
omlish/formats/json/stream/parsing.py,sha256=bnTaYcCMRh0i_mByQgq4qtVf53zJnmjPvUDwJ7-zL64,7154
|
|
272
272
|
omlish/formats/json/stream/rendering.py,sha256=E5SXMGcbBtgtUYYznTPZFHD4tmV_X7K3MK50V11ESRk,3611
|
|
273
273
|
omlish/formats/json/stream/utils.py,sha256=vX69i90DVCjAAAohpiLgsT3ZinFS_cYUfneTvx-3dxU,4959
|
|
@@ -447,7 +447,8 @@ omlish/lang/classes/restrict.py,sha256=xHLIK20MQ_jJPQ7JVzMNhyN4Xc4eLBgrcxqDnTbeK
|
|
|
447
447
|
omlish/lang/classes/simple.py,sha256=3AJSs-plVg2flq4SC6I39LxP0nBaB241puv3D5YCP5I,2973
|
|
448
448
|
omlish/lang/classes/virtual.py,sha256=J4y-uiv1RaP2rfFeptXqQ1a4MRek0TMlAFFraO_lzhs,3397
|
|
449
449
|
omlish/lang/imports/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
450
|
-
omlish/lang/imports/
|
|
450
|
+
omlish/lang/imports/_capture.cc,sha256=jAKW9pOV3ER4Vzd-aywmAeOxbv-b_jNdaxAaVdxfueg,2261
|
|
451
|
+
omlish/lang/imports/capture.py,sha256=0uud2HvBPig3rWqjhLXtSK30vXtKggxFTYDDD9Ab0Gg,21710
|
|
451
452
|
omlish/lang/imports/conditional.py,sha256=R-E47QD95mMonPImWlrde3rnJrFKCCkYz71c94W05sc,1006
|
|
452
453
|
omlish/lang/imports/lazy.py,sha256=Eefs9hkj5surMdwgxX_Q3BOqPcox10v0sKT5rKIQknc,808
|
|
453
454
|
omlish/lang/imports/proxy.py,sha256=wlXJrl1GiXQ-t5cO_aJLqp1mr_Erl4oMk4uySkkK7bg,6516
|
|
@@ -819,9 +820,9 @@ omlish/typedvalues/marshal.py,sha256=AtBz7Jq-BfW8vwM7HSxSpR85JAXmxK2T0xDblmm1HI0
|
|
|
819
820
|
omlish/typedvalues/of_.py,sha256=UXkxSj504WI2UrFlqdZJbu2hyDwBhL7XVrc2qdR02GQ,1309
|
|
820
821
|
omlish/typedvalues/reflect.py,sha256=PAvKW6T4cW7u--iX80w3HWwZUS3SmIZ2_lQjT65uAyk,1026
|
|
821
822
|
omlish/typedvalues/values.py,sha256=ym46I-q2QJ_6l4UlERqv3yj87R-kp8nCKMRph0xQ3UA,1307
|
|
822
|
-
omlish-0.0.0.
|
|
823
|
-
omlish-0.0.0.
|
|
824
|
-
omlish-0.0.0.
|
|
825
|
-
omlish-0.0.0.
|
|
826
|
-
omlish-0.0.0.
|
|
827
|
-
omlish-0.0.0.
|
|
823
|
+
omlish-0.0.0.dev446.dist-info/licenses/LICENSE,sha256=B_hVtavaA8zCYDW99DYdcpDLKz1n3BBRjZrcbv8uG8c,1451
|
|
824
|
+
omlish-0.0.0.dev446.dist-info/METADATA,sha256=Zhu90LCm4EDjA39rcv3L-_QPuvZB_pBFlTzdQVJ8UuE,19003
|
|
825
|
+
omlish-0.0.0.dev446.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
826
|
+
omlish-0.0.0.dev446.dist-info/entry_points.txt,sha256=Lt84WvRZJskWCAS7xnQGZIeVWksprtUHj0llrvVmod8,35
|
|
827
|
+
omlish-0.0.0.dev446.dist-info/top_level.txt,sha256=pePsKdLu7DvtUiecdYXJ78iO80uDNmBlqe-8hOzOmfs,7
|
|
828
|
+
omlish-0.0.0.dev446.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|