omdev 0.0.0.dev303__py3-none-any.whl → 0.0.0.dev304__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.
omdev/git/status.py CHANGED
@@ -10,58 +10,61 @@ from omlish.lite.check import check
10
10
  from omlish.subprocesses.wrap import subprocess_maybe_shell_wrap_exec
11
11
 
12
12
 
13
- _GIT_STATUS_LINE_ESCAPE_CODES: ta.Mapping[str, str] = {
14
- '\\': '\\',
15
- '"': '"',
16
- 'n': '\n',
17
- 't': '\t',
13
+ _GIT_STATUS_LINE_ESCAPE_CODES: ta.Mapping[int, bytes] = {
14
+ ord('\\'): b'\\',
15
+ ord('"'): b'"',
16
+ ord('n'): b'\n',
17
+ ord('t'): b'\t',
18
18
  }
19
19
 
20
20
 
21
- def yield_git_status_line_fields(l: str) -> ta.Iterator[str]:
22
- def find_any(chars: str, start: int = 0) -> int:
23
- ret = -1
24
- for c in chars:
25
- if (found := l.find(c, start)) >= 0 and (ret < 0 or ret > found):
26
- ret = found
27
- return ret
21
+ def yield_git_status_line_fields(l_: str) -> ta.Iterator[str]:
22
+ l = l_.encode('utf-8')
23
+
24
+ def find_any(chars: ta.Iterable[int], start: int = 0) -> int:
25
+ return min([f for c in chars if (f := l.find(c, start)) >= 0], default=-1)
28
26
 
29
27
  p = 0
30
28
  while True:
31
- if l[p] == '"':
29
+ if l[p] == ord('"'):
32
30
  p += 1
33
- s = []
34
- while (n := find_any('\\"', p)) > 0:
35
- if (c := l[n]) == '\\':
31
+ s: list[bytes] = []
32
+ while (n := find_any(b'\\"', p)) > 0:
33
+ if (c := l[n]) == ord('\\'):
36
34
  s.append(l[p:n])
37
- s.append(_GIT_STATUS_LINE_ESCAPE_CODES[l[n + 1]])
38
- p = n + 2
39
- elif c == '"':
35
+ if ord('0') <= (x := l[n + 1]) <= ord('9'):
36
+ check.state(n + 4 <= len(l))
37
+ s.append(bytes([int(l[n + 1:n + 4].decode('ascii'), 8)]))
38
+ p = n + 4
39
+ else:
40
+ s.append(_GIT_STATUS_LINE_ESCAPE_CODES[x])
41
+ p = n + 2
42
+ elif c == ord('"'):
40
43
  s.append(l[p:n])
41
44
  p = n
42
45
  break
43
46
  else:
44
47
  raise ValueError(l)
45
48
 
46
- if l[p] != '"':
49
+ if l[p] != ord('"'):
47
50
  raise ValueError(l)
48
51
 
49
- yield ''.join(s)
52
+ yield b''.join(s).decode('utf-8')
50
53
 
51
54
  p += 1
52
55
  if p == len(l):
53
56
  return
54
- elif l[p] != ' ':
57
+ elif l[p] != ord(' '):
55
58
  raise ValueError(l)
56
59
 
57
60
  p += 1
58
61
 
59
62
  else:
60
- if (e := l.find(' ', p)) < 0:
61
- yield l[p:]
63
+ if (e := l.find(b' ', p)) < 0:
64
+ yield l[p:].decode('utf-8')
62
65
  return
63
66
 
64
- yield l[p:e]
67
+ yield l[p:e].decode('utf-8')
65
68
  p = e + 1
66
69
 
67
70
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: omdev
3
- Version: 0.0.0.dev303
3
+ Version: 0.0.0.dev304
4
4
  Summary: omdev
5
5
  Author: wrmsr
6
6
  License: BSD-3-Clause
@@ -12,7 +12,7 @@ Classifier: Operating System :: OS Independent
12
12
  Classifier: Operating System :: POSIX
13
13
  Requires-Python: >=3.12
14
14
  License-File: LICENSE
15
- Requires-Dist: omlish==0.0.0.dev303
15
+ Requires-Dist: omlish==0.0.0.dev304
16
16
  Provides-Extra: all
17
17
  Requires-Dist: black~=25.1; extra == "all"
18
18
  Requires-Dist: pycparser~=2.22; extra == "all"
@@ -124,7 +124,7 @@ omdev/git/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
124
124
  omdev/git/magic.py,sha256=dbc58vEdN5oyfU-KjfkYsT-RKuTaoFUTwGSFK__q5TE,120
125
125
  omdev/git/revisions.py,sha256=XJDs4LAnSuETSUpV6Nv_4iDFqdzMHSixWgrH8UiP09w,1171
126
126
  omdev/git/shallow.py,sha256=pu2Dro9P7oUa-cpFkcscbay1bM6jLFfV5mevICzbjcE,2530
127
- omdev/git/status.py,sha256=7KKiNSgEa93TsLp54xshwEuVO-3hRiUItBEBnen-8Gg,8111
127
+ omdev/git/status.py,sha256=Yh3q9NGwLYwOQDQkR20B2g_Y0iJj5gCoiVoxo9cT7FA,8445
128
128
  omdev/home/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
129
129
  omdev/home/paths.py,sha256=zFplXTmdTs1PLe_tvZhDkkApHEpSRg-JKxZ0WVgb6P8,1325
130
130
  omdev/home/secrets.py,sha256=AOua0JKRA55_xThah2IG1e4Soo8FCXK85eH2-_kzNV0,870
@@ -277,9 +277,9 @@ omdev/tools/json/rendering.py,sha256=tMcjOW5edfozcMSTxxvF7WVTsbYLoe9bCKFh50qyaGw
277
277
  omdev/tools/pawk/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
278
278
  omdev/tools/pawk/__main__.py,sha256=VCqeRVnqT1RPEoIrqHFSu4PXVMg4YEgF4qCQm90-eRI,66
279
279
  omdev/tools/pawk/pawk.py,sha256=zsEkfQX0jF5bn712uqPAyBSdJt2dno1LH2oeSMNfXQI,11424
280
- omdev-0.0.0.dev303.dist-info/licenses/LICENSE,sha256=B_hVtavaA8zCYDW99DYdcpDLKz1n3BBRjZrcbv8uG8c,1451
281
- omdev-0.0.0.dev303.dist-info/METADATA,sha256=5Qxt8xQF6kFNIueAJ2yNy2GJSRYqhBl4_MKLadV-KzQ,1674
282
- omdev-0.0.0.dev303.dist-info/WHEEL,sha256=ck4Vq1_RXyvS4Jt6SI0Vz6fyVs4GWg7AINwpsaGEgPE,91
283
- omdev-0.0.0.dev303.dist-info/entry_points.txt,sha256=dHLXFmq5D9B8qUyhRtFqTGWGxlbx3t5ejedjrnXNYLU,33
284
- omdev-0.0.0.dev303.dist-info/top_level.txt,sha256=1nr7j30fEWgLYHW3lGR9pkdHkb7knv1U1ES1XRNVQ6k,6
285
- omdev-0.0.0.dev303.dist-info/RECORD,,
280
+ omdev-0.0.0.dev304.dist-info/licenses/LICENSE,sha256=B_hVtavaA8zCYDW99DYdcpDLKz1n3BBRjZrcbv8uG8c,1451
281
+ omdev-0.0.0.dev304.dist-info/METADATA,sha256=Tfy9B1Bcz3B8nZMMlKBOeb1m8UkjDKH1se2iXymdTaA,1674
282
+ omdev-0.0.0.dev304.dist-info/WHEEL,sha256=wXxTzcEDnjrTwFYjLPcsW_7_XihufBwmpiBeiXNBGEA,91
283
+ omdev-0.0.0.dev304.dist-info/entry_points.txt,sha256=dHLXFmq5D9B8qUyhRtFqTGWGxlbx3t5ejedjrnXNYLU,33
284
+ omdev-0.0.0.dev304.dist-info/top_level.txt,sha256=1nr7j30fEWgLYHW3lGR9pkdHkb7knv1U1ES1XRNVQ6k,6
285
+ omdev-0.0.0.dev304.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (80.0.0)
2
+ Generator: setuptools (80.1.0)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5