omlish 0.0.0.dev58__py3-none-any.whl → 0.0.0.dev60__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.
omlish/.manifests.json CHANGED
@@ -27,7 +27,7 @@
27
27
  "module": ".diag.pycharm",
28
28
  "attr": "_CLI_MODULE",
29
29
  "file": "omlish/diag/pycharm.py",
30
- "line": 138,
30
+ "line": 141,
31
31
  "value": {
32
32
  "$omdev.cli.types.CliModule": {
33
33
  "cmd_name": "pycharm",
omlish/__about__.py CHANGED
@@ -1,5 +1,5 @@
1
- __version__ = '0.0.0.dev58'
2
- __revision__ = 'aae9a0f7439a053a6e5c2105ff299991d37335ac'
1
+ __version__ = '0.0.0.dev60'
2
+ __revision__ = 'eb96b2408cdf5b153541f194ea5ab7bba1c2524b'
3
3
 
4
4
 
5
5
  #
omlish/diag/pycharm.py CHANGED
@@ -27,11 +27,11 @@ def is_pycharm_hosted() -> bool:
27
27
  ##
28
28
 
29
29
 
30
- PYCHARM_HOME = '/Applications/PyCharm.app'
30
+ DARWIN_PYCHARM_HOME = '/Applications/PyCharm.app'
31
31
 
32
32
 
33
- def read_pycharm_info_plist() -> ta.Mapping[str, ta.Any] | None:
34
- plist_file = os.path.join(PYCHARM_HOME, 'Contents', 'Info.plist')
33
+ def read_darwin_pycharm_info_plist() -> ta.Mapping[str, ta.Any] | None:
34
+ plist_file = os.path.join(DARWIN_PYCHARM_HOME, 'Contents', 'Info.plist')
35
35
  if not os.path.isfile(plist_file):
36
36
  return None
37
37
 
@@ -43,13 +43,17 @@ def read_pycharm_info_plist() -> ta.Mapping[str, ta.Any] | None:
43
43
 
44
44
  @lang.cached_function
45
45
  def get_pycharm_version() -> str | None:
46
- plist = read_pycharm_info_plist()
47
- if plist is None:
48
- return None
46
+ if sys.platform == 'darwin':
47
+ plist = read_darwin_pycharm_info_plist()
48
+ if plist is None:
49
+ return None
50
+
51
+ ver = check.non_empty_str(plist['CFBundleVersion'])
52
+ check.state(ver.startswith('PY-'))
53
+ return ver[3:]
49
54
 
50
- ver = check.non_empty_str(plist['CFBundleVersion'])
51
- check.state(ver.startswith('PY-'))
52
- return ver[3:]
55
+ else:
56
+ return None
53
57
 
54
58
 
55
59
  ##
@@ -108,10 +112,6 @@ def pycharm_remote_debugger_attach(
108
112
  *,
109
113
  version: str | None = None,
110
114
  ) -> None:
111
- # if version is None:
112
- # version = get_pycharm_version()
113
- # check.non_empty_str(version)
114
-
115
115
  if host is None:
116
116
  if (
117
117
  sys.platform == 'linux' and
@@ -122,6 +122,9 @@ def pycharm_remote_debugger_attach(
122
122
  else:
123
123
  host = 'localhost'
124
124
 
125
+ if version is None and host in ('localhost', '127.0.0.1'):
126
+ version = get_pycharm_version()
127
+
125
128
  if ta.TYPE_CHECKING:
126
129
  import pydevd_pycharm # noqa
127
130
  else:
@@ -2,6 +2,7 @@
2
2
  FIXME:
3
3
  - lol shutdown deadlocks
4
4
  - whole thing is just gross is this its own thread or what
5
+ - cli with client helper too
5
6
 
6
7
  TODO:
7
8
  - !!! ANYIO !!!
omlish/libc.py CHANGED
@@ -1,7 +1,4 @@
1
- # ruff: noqa: ANN201
2
- # ruff: noqa: N801
3
- # ruff: noqa: N802
4
-
1
+ # ruff: noqa: ANN201, N801, N802
5
2
  import ctypes as ct
6
3
  import errno
7
4
  import platform
@@ -213,7 +210,14 @@ class Mmap:
213
210
  return self._base
214
211
 
215
212
  def __enter__(self) -> 'Mmap':
216
- base = mmap(self._desired_base, self._length, self._prot, self._flags, self._fd, self._offset)
213
+ base = mmap(
214
+ self._desired_base,
215
+ self._length,
216
+ self._prot,
217
+ self._flags,
218
+ self._fd,
219
+ self._offset,
220
+ )
217
221
  if base == MAP_FAILED:
218
222
  err, msg = lasterr()
219
223
  raise OSError(err, 'mmap failed: ' + msg)
@@ -39,11 +39,6 @@ from .forbidden import ( # noqa
39
39
  ForbiddenTypeUnmarshalerFactory,
40
40
  )
41
41
 
42
- from .naming import ( # noqa
43
- Naming,
44
- translate_name,
45
- )
46
-
47
42
  from .global_ import ( # noqa
48
43
  GLOBAL_REGISTRY,
49
44
 
@@ -57,6 +52,16 @@ from .helpers import ( # noqa
57
52
  update_object_metadata,
58
53
  )
59
54
 
55
+ from .naming import ( # noqa
56
+ Naming,
57
+ translate_name,
58
+ )
59
+
60
+ from .nop import ( # noqa
61
+ NOP_MARSHALER_UNMARSHALER,
62
+ NopMarshalerUnmarshaler,
63
+ )
64
+
60
65
  from .objects import ( # noqa
61
66
  FieldInfo,
62
67
  FieldInfos,
omlish/marshal/nop.py ADDED
@@ -0,0 +1,18 @@
1
+ import typing as ta
2
+
3
+ from .base import MarshalContext
4
+ from .base import Marshaler
5
+ from .base import UnmarshalContext
6
+ from .base import Unmarshaler
7
+ from .values import Value
8
+
9
+
10
+ class NopMarshalerUnmarshaler(Marshaler, Unmarshaler):
11
+ def marshal(self, ctx: MarshalContext, o: ta.Any) -> Value:
12
+ return o # noqa
13
+
14
+ def unmarshal(self, ctx: UnmarshalContext, v: Value) -> ta.Any:
15
+ return v
16
+
17
+
18
+ NOP_MARSHALER_UNMARSHALER = NopMarshalerUnmarshaler()
@@ -1,5 +1,10 @@
1
+ """
2
+ TODO:
3
+ - field-configurable coercion
4
+ """
1
5
  import typing as ta
2
6
 
7
+ from .. import dataclasses as dc
3
8
  from .base import MarshalContext
4
9
  from .base import Marshaler
5
10
  from .base import TypeMapMarshalerFactory
@@ -25,24 +30,29 @@ PRIMITIVE_TYPES: tuple[type, ...] = (
25
30
  ##
26
31
 
27
32
 
33
+ @dc.dataclass(frozen=True)
28
34
  class PrimitiveMarshalerUnmarshaler(Marshaler, Unmarshaler):
35
+ ty: type
36
+
29
37
  def marshal(self, ctx: MarshalContext, o: ta.Any) -> Value:
30
- if isinstance(o, PRIMITIVE_TYPES):
38
+ if isinstance(o, self.ty):
31
39
  return o # type: ignore
40
+ if isinstance(o, PRIMITIVE_TYPES):
41
+ return self.ty(o)
32
42
  raise TypeError(o)
33
43
 
34
44
  def unmarshal(self, ctx: UnmarshalContext, v: Value) -> ta.Any:
35
- if isinstance(v, PRIMITIVE_TYPES):
45
+ if isinstance(v, self.ty):
36
46
  return v
47
+ if isinstance(v, PRIMITIVE_TYPES):
48
+ return self.ty(v)
37
49
  raise TypeError(v)
38
50
 
39
51
 
40
- PRIMITIVE_MARSHALER_UNMARSHALER = PrimitiveMarshalerUnmarshaler()
41
-
42
52
  PRIMITIVE_MARSHALER_FACTORY = TypeMapMarshalerFactory({ # noqa
43
- t: PRIMITIVE_MARSHALER_UNMARSHALER for t in PRIMITIVE_TYPES
53
+ t: PrimitiveMarshalerUnmarshaler(t) for t in PRIMITIVE_TYPES
44
54
  })
45
55
 
46
56
  PRIMITIVE_UNMARSHALER_FACTORY = TypeMapUnmarshalerFactory({ # noqa
47
- t: PRIMITIVE_MARSHALER_UNMARSHALER for t in PRIMITIVE_TYPES
57
+ t: PrimitiveMarshalerUnmarshaler(t) for t in PRIMITIVE_TYPES
48
58
  })
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: omlish
3
- Version: 0.0.0.dev58
3
+ Version: 0.0.0.dev60
4
4
  Summary: omlish
5
5
  Author: wrmsr
6
6
  License: BSD-3-Clause
@@ -1,5 +1,5 @@
1
- omlish/.manifests.json,sha256=wTGXwNmvtaKsDWtTwwj3Uib5Inaj8ZBn0MB69bE80X4,1419
2
- omlish/__about__.py,sha256=9Lm5v-nFcGeCoABbD4--4eapTUaI4C0188gIFKvfBzI,3420
1
+ omlish/.manifests.json,sha256=jvyoQ7x8UJ9lpRgkh7eElwJ8qnzyG5aUGameT9Yk8GM,1419
2
+ omlish/__about__.py,sha256=FBKxqP5dW_gNqz7t1xG_3WdV2AUAJW3mxH9f6_99dok,3420
3
3
  omlish/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
4
4
  omlish/argparse.py,sha256=Vr70_85EVLJLgEkRtwOr264tMRtqtlN7ncFfXRUk5aM,6914
5
5
  omlish/c3.py,sha256=4vogWgwPb8TbNS2KkZxpoWbwjj7MuHG2lQG-hdtkvjI,8062
@@ -12,7 +12,7 @@ omlish/fnpairs.py,sha256=Sl8CMFNyDS-1JYAjSWqnT5FmUm9Lj6o7FxSRo7g4jww,10875
12
12
  omlish/fnpipes.py,sha256=AJkgz9nvRRm7oqw7ZgYyz21klu276LWi54oYCLg-vOg,2196
13
13
  omlish/genmachine.py,sha256=LCMiqvK32dAWtrlB6lKw9tXdQFiXC8rRdk4TMQYIroU,1603
14
14
  omlish/iterators.py,sha256=GGLC7RIT86uXMjhIIIqnff_Iu5SI_b9rXYywYGFyzmo,7292
15
- omlish/libc.py,sha256=u0481imCiTFqP_e-v9g0pD-0WD249j5vYzhtn-fnNkY,15308
15
+ omlish/libc.py,sha256=QSqAauv4o77T_ttyC6I4M-q33VROHjbZtkN-lEWJ6RU,15364
16
16
  omlish/matchfns.py,sha256=I1IlQGfEyk_AcFSy6ulVS3utC-uwyZM2YfUXYHc9Bw0,6152
17
17
  omlish/multiprocessing.py,sha256=QZT4C7I-uThCAjaEY3xgUYb-5GagUlnE4etN01LDyU4,5186
18
18
  omlish/os.py,sha256=vO1sZCzAhVxo46tDFLrD52q2KuMFWQwu5MPJgSsnliI,3107
@@ -154,13 +154,13 @@ omlish/diag/asts.py,sha256=BveUUNUcaAm4Hg55f4ZxGSI313E4L8cCZ5XjHpEkKVI,3325
154
154
  omlish/diag/procfs.py,sha256=vBovaMvAUKdl7FbtFq3TNsSmdhs8DaYfhoEsKeWYta8,9704
155
155
  omlish/diag/procstats.py,sha256=UkqxREqfd-38xPYZ9T1SIJISz5ARQCEhTtOZrxtm2dE,777
156
156
  omlish/diag/ps.py,sha256=1JWxZen3fVG-20R6ZZ8BtO_gpzw_5bhHZiKdoHkgxoU,1004
157
- omlish/diag/pycharm.py,sha256=HoEYtBuz04RyQhCMRslSEqMwnMlDU49bjOTBwGeivMk,3181
157
+ omlish/diag/pycharm.py,sha256=d5-qwdewcEw-cUL1gbbNLJsdPYJWKu4vUmtXhkdP4-Q,3297
158
158
  omlish/diag/pydevd.py,sha256=Fsx9rfCOnwLD6RLBqH0uAdtq75rbNeBAQfiDvIBd3e0,7295
159
159
  omlish/diag/threads.py,sha256=1-x02VCDZ407gfbtXm1pWK-ubqhqfePm9PMqkHCVoqk,3642
160
160
  omlish/diag/replserver/__init__.py,sha256=uLo6V2aQ29v9z3IMELlPDSlG3_2iOT4-_X8VniF-EgE,235
161
161
  omlish/diag/replserver/__main__.py,sha256=LmU41lQ58bm1h4Mx7S8zhE_uEBSC6kPcp9mn5JRpulA,32
162
162
  omlish/diag/replserver/console.py,sha256=XzBDVhYlr8FY6ym4OwoaIHuFOHnGK3dTYlMDIOMUUlA,7410
163
- omlish/diag/replserver/server.py,sha256=5pRjBn-Vz8gtu45756ycdbJe58C_xrB9rElPytr6h5g,5345
163
+ omlish/diag/replserver/server.py,sha256=Hnfp-aFgUtkWGyVXjWJ33HhhBrrtZnJu5FZRV6MTKoI,5375
164
164
  omlish/dispatch/__init__.py,sha256=GsiGJ91NKiQptSROtnCSkrZExBkvfDwYvdoTu5dBqF0,117
165
165
  omlish/dispatch/_dispatch2.py,sha256=v3tCNyxGpOwY8qTwdp54TlM8mG6OVwtQoUZfYJ_griU,1756
166
166
  omlish/dispatch/_dispatch3.py,sha256=Vnu5DfoPWFJLodudBqoZBXGTi2wYk-Az56MXJgdQvwc,2608
@@ -286,7 +286,7 @@ omlish/logs/formatters.py,sha256=q79nMnR2mRIStPyGrydQHpYTXgC5HHptt8lH3W2Wwbs,671
286
286
  omlish/logs/handlers.py,sha256=nyuFgmO05By_Xwq7es58ClzS51-F53lJL7gD0x5IqAg,228
287
287
  omlish/logs/noisy.py,sha256=Ubc-eTH6ZbGYsLfUUi69JAotwuUwzb-SJBeGo_0dIZI,348
288
288
  omlish/logs/utils.py,sha256=MgGovbP0zUrZ3FGD3qYNQWn-l0jy0Y0bStcQvv5BOmQ,391
289
- omlish/marshal/__init__.py,sha256=Aiux91y66MpEy4NiecWgASK8RB8vGXpc4GZ4HgbdwCg,2049
289
+ omlish/marshal/__init__.py,sha256=G0MDeBStBjz9Njq-rt5C6WbuCik6c8st7cipwMVw668,2139
290
290
  omlish/marshal/any.py,sha256=e82OyYK3Emm1P1ClnsnxP7fIWC2iNVyW0H5nK4mLmWM,779
291
291
  omlish/marshal/base.py,sha256=I7IOzFGn_DFeBRFCH8F0ONBa-NzM4mmMDld6bmoW-rc,6501
292
292
  omlish/marshal/base64.py,sha256=F-3ogJdcFCtWINRgJgWT0rErqgx6f4qahhcg8OrkqhE,1089
@@ -302,11 +302,12 @@ omlish/marshal/iterables.py,sha256=6I_ZdJemLSQtJ4J5NrB9wi-eyxiJZS61HzHXp1yeiX8,2
302
302
  omlish/marshal/mappings.py,sha256=zhLtyot7tzQtBNj7C4RBxjMELxA5r2q2Mth8Br7xkFs,2803
303
303
  omlish/marshal/maybes.py,sha256=mgK3QsWHkXgRqo076KxYKH6elRxzJ_QDTodv93mgHR0,2198
304
304
  omlish/marshal/naming.py,sha256=lIklR_Od4x1ghltAgOzqcKhHs-leeSv2YmFhCHO7GIs,613
305
+ omlish/marshal/nop.py,sha256=2mWve_dicFAiUQ2Y5asKkUW-XGmEE9Qi2ClIasFad0c,461
305
306
  omlish/marshal/numbers.py,sha256=oY_yMNJEnJhjfLh89gpPXvKqeUyhQcaTcQB6ecyHiG8,1704
306
307
  omlish/marshal/objects.py,sha256=8-w4Vc222gGGmTiTnUIIZBe1XXdAy0yo9aa1ZUAi1b4,8435
307
308
  omlish/marshal/optionals.py,sha256=r0XB5rqfasvgZJNrKYd6Unq2U4nHt3JURi26j0dYHlw,1499
308
309
  omlish/marshal/polymorphism.py,sha256=doA8aLUhna6aco5b2Ok3jsem1V4NsF3rM5RTfJt0a7U,5708
309
- omlish/marshal/primitives.py,sha256=wcvcs5GH_TWVmzAszh3dvyKibJgBxnXke-AlAXiwrrI,1107
310
+ omlish/marshal/primitives.py,sha256=f_6m24Cb-FDGsZpYSas11nLt3xCCEUXugw3Hv4-aNhg,1291
310
311
  omlish/marshal/registries.py,sha256=FvC6qXHCizNB2QmU_N3orxW7iqfGYkiUXYYdTRWS6HA,2353
311
312
  omlish/marshal/standard.py,sha256=uQZIGiCwihmhB1tmhpKnZWZly0DDkdGjCnN0d41WHho,2985
312
313
  omlish/marshal/unions.py,sha256=ZWl0maHwh1V_cSnNmuCbbCQZzqlNtOModsTwnVTXNPA,2735
@@ -406,9 +407,9 @@ omlish/text/delimit.py,sha256=ubPXcXQmtbOVrUsNh5gH1mDq5H-n1y2R4cPL5_DQf68,4928
406
407
  omlish/text/glyphsplit.py,sha256=Ug-dPRO7x-OrNNr8g1y6DotSZ2KH0S-VcOmUobwa4B0,3296
407
408
  omlish/text/indent.py,sha256=6Jj6TFY9unaPa4xPzrnZemJ-fHsV53IamP93XGjSUHs,1274
408
409
  omlish/text/parts.py,sha256=7vPF1aTZdvLVYJ4EwBZVzRSy8XB3YqPd7JwEnNGGAOo,6495
409
- omlish-0.0.0.dev58.dist-info/LICENSE,sha256=B_hVtavaA8zCYDW99DYdcpDLKz1n3BBRjZrcbv8uG8c,1451
410
- omlish-0.0.0.dev58.dist-info/METADATA,sha256=-icqkrn-C-DS9CnevAt4nCKPYw1Jtihk9afU-2S7w3Q,4167
411
- omlish-0.0.0.dev58.dist-info/WHEEL,sha256=GV9aMThwP_4oNCtvEC2ec3qUYutgWeAzklro_0m4WJQ,91
412
- omlish-0.0.0.dev58.dist-info/entry_points.txt,sha256=Lt84WvRZJskWCAS7xnQGZIeVWksprtUHj0llrvVmod8,35
413
- omlish-0.0.0.dev58.dist-info/top_level.txt,sha256=pePsKdLu7DvtUiecdYXJ78iO80uDNmBlqe-8hOzOmfs,7
414
- omlish-0.0.0.dev58.dist-info/RECORD,,
410
+ omlish-0.0.0.dev60.dist-info/LICENSE,sha256=B_hVtavaA8zCYDW99DYdcpDLKz1n3BBRjZrcbv8uG8c,1451
411
+ omlish-0.0.0.dev60.dist-info/METADATA,sha256=ywbae2f6yzK7ZJn0W83KHW9L1sTuH-Y7h4sf8pAl95k,4167
412
+ omlish-0.0.0.dev60.dist-info/WHEEL,sha256=GV9aMThwP_4oNCtvEC2ec3qUYutgWeAzklro_0m4WJQ,91
413
+ omlish-0.0.0.dev60.dist-info/entry_points.txt,sha256=Lt84WvRZJskWCAS7xnQGZIeVWksprtUHj0llrvVmod8,35
414
+ omlish-0.0.0.dev60.dist-info/top_level.txt,sha256=pePsKdLu7DvtUiecdYXJ78iO80uDNmBlqe-8hOzOmfs,7
415
+ omlish-0.0.0.dev60.dist-info/RECORD,,