omdev 0.0.0.dev316__py3-none-any.whl → 0.0.0.dev318__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/.manifests.json CHANGED
@@ -63,7 +63,7 @@
63
63
  "module": ".imgur",
64
64
  "attr": "_FOO_CLI_MODULE",
65
65
  "file": "omdev/imgur.py",
66
- "line": 133,
66
+ "line": 136,
67
67
  "value": {
68
68
  "$.cli.types.CliModule": {
69
69
  "cmd_name": "imgur",
omdev/home/secrets.py CHANGED
@@ -39,3 +39,52 @@ def load_secrets() -> sec.Secrets:
39
39
  except FileNotFoundError:
40
40
  pass
41
41
  return sec.MappingSecrets(dct)
42
+
43
+
44
+ ##
45
+
46
+
47
+ def install_env_secrets(
48
+ *keys: str | tuple[str, str],
49
+ secrets: sec.Secrets | None = None,
50
+ environ: ta.MutableMapping[str, str] | None = None,
51
+ non_strict: bool = False,
52
+ ) -> None:
53
+ """This should not be used outside of being forced to interact with external code."""
54
+
55
+ if not keys:
56
+ raise ValueError('Must specify keys')
57
+
58
+ sk_ek_tups: list[tuple[str, str]] = []
59
+ for k in keys:
60
+ if isinstance(k, tuple):
61
+ sk, ek = k
62
+
63
+ elif isinstance(k, str):
64
+ if k.lower() == k:
65
+ sk, ek = k, k.upper()
66
+ elif k.upper() == k:
67
+ sk, ek = k.lower(), k
68
+ else:
69
+ raise ValueError(k)
70
+
71
+ else:
72
+ raise TypeError(k)
73
+
74
+ sk_ek_tups.append((sk, ek))
75
+
76
+ if secrets is None:
77
+ secrets = load_secrets()
78
+
79
+ if environ is None:
80
+ environ = os.environ
81
+
82
+ for sk, ek in sk_ek_tups:
83
+ try:
84
+ sv = secrets.get(sk)
85
+ except KeyError:
86
+ if non_strict:
87
+ continue
88
+ raise
89
+
90
+ environ[ek] = sv.reveal()
omdev/imgur.py CHANGED
@@ -66,11 +66,14 @@ class ImageUploadData:
66
66
 
67
67
 
68
68
  @dc.dataclass(frozen=True)
69
+ @msh.update_object_metadata(unknown_field='x')
69
70
  class ImageUploadResponse:
70
71
  status: int
71
72
  success: bool
72
73
  data: ImageUploadData
73
74
 
75
+ x: ta.Mapping[str, ta.Any] | None = None
76
+
74
77
 
75
78
  DEFAULT_UPLOAD_IMAGE_URL = 'https://api.imgur.com/3/upload'
76
79
 
omdev/scripts/ci.py CHANGED
@@ -1303,9 +1303,11 @@ class _JustMaybe(_Maybe[T]):
1303
1303
  def __repr__(self) -> str:
1304
1304
  return f'just({self._v!r})'
1305
1305
 
1306
+ _hash: int
1307
+
1306
1308
  def __hash__(self) -> int:
1307
1309
  try:
1308
- return self._hash # type: ignore[has-type]
1310
+ return self._hash
1309
1311
  except AttributeError:
1310
1312
  pass
1311
1313
  h = self._hash = hash((_JustMaybe, self._v))
omdev/scripts/interp.py CHANGED
@@ -1245,9 +1245,11 @@ class _JustMaybe(_Maybe[T]):
1245
1245
  def __repr__(self) -> str:
1246
1246
  return f'just({self._v!r})'
1247
1247
 
1248
+ _hash: int
1249
+
1248
1250
  def __hash__(self) -> int:
1249
1251
  try:
1250
- return self._hash # type: ignore[has-type]
1252
+ return self._hash
1251
1253
  except AttributeError:
1252
1254
  pass
1253
1255
  h = self._hash = hash((_JustMaybe, self._v))
@@ -2661,9 +2661,11 @@ class _JustMaybe(_Maybe[T]):
2661
2661
  def __repr__(self) -> str:
2662
2662
  return f'just({self._v!r})'
2663
2663
 
2664
+ _hash: int
2665
+
2664
2666
  def __hash__(self) -> int:
2665
2667
  try:
2666
- return self._hash # type: ignore[has-type]
2668
+ return self._hash
2667
2669
  except AttributeError:
2668
2670
  pass
2669
2671
  h = self._hash = hash((_JustMaybe, self._v))
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: omdev
3
- Version: 0.0.0.dev316
3
+ Version: 0.0.0.dev318
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.dev316
15
+ Requires-Dist: omlish==0.0.0.dev318
16
16
  Provides-Extra: all
17
17
  Requires-Dist: black~=25.1; extra == "all"
18
18
  Requires-Dist: pycparser~=2.22; extra == "all"
@@ -1,8 +1,8 @@
1
- omdev/.manifests.json,sha256=pEXT6FCnyLgdPT99HXjkC_wBlUTe-KbJHFmAiNUwiBo,11257
1
+ omdev/.manifests.json,sha256=7rHwJQCTz0jmkxij_rlIAw0D1A38Rb3QqcmJNiRIhOM,11257
2
2
  omdev/__about__.py,sha256=16xa_1BdZanTpZbkjAOQ11_x5kJcb1m1tKdvb06J7VI,1202
3
3
  omdev/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
4
4
  omdev/cmake.py,sha256=9rfSvFHPmKDj9ngvfDB2vK8O-xO_ZwUm7hMKLWA-yOw,4578
5
- omdev/imgur.py,sha256=TkjK_M4nDarEmbP-FhVkt_VzSY2jHkZnKGnhnZ1zJAs,3010
5
+ omdev/imgur.py,sha256=4XolajBnAJ1U2zvT6Y0fiUyBi_a8G9arXffvPxf3w-M,3103
6
6
  omdev/pip.py,sha256=PqzAWDO_CbiZvXzJAZcCkFqWynUDls1jIgBWlrswQyA,2012
7
7
  omdev/tagstrings.py,sha256=zIP7nzcsZf5te0lphu6k36ND_cOvNFRg00neoTcoCs8,5484
8
8
  omdev/amalg/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -129,7 +129,7 @@ omdev/git/shallow.py,sha256=pu2Dro9P7oUa-cpFkcscbay1bM6jLFfV5mevICzbjcE,2530
129
129
  omdev/git/status.py,sha256=Yh3q9NGwLYwOQDQkR20B2g_Y0iJj5gCoiVoxo9cT7FA,8445
130
130
  omdev/home/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
131
131
  omdev/home/paths.py,sha256=zFplXTmdTs1PLe_tvZhDkkApHEpSRg-JKxZ0WVgb6P8,1325
132
- omdev/home/secrets.py,sha256=AOua0JKRA55_xThah2IG1e4Soo8FCXK85eH2-_kzNV0,870
132
+ omdev/home/secrets.py,sha256=XarB-uhwjRc3dpT5ZF-9yoRPDr7kpyr4Hgs0I4kKL4I,1992
133
133
  omdev/home/shadow.py,sha256=6mGDJV70IExa-nzd7mOUW4R3OZIXO0fBwmOUU9T9f4M,295
134
134
  omdev/interp/__init__.py,sha256=Y3l4WY4JRi2uLG6kgbGp93fuGfkxkKwZDvhsa0Rwgtk,15
135
135
  omdev/interp/__main__.py,sha256=GMCqeGYltgt5dlJzHxY9gqisa8cRkrPfmZYuZnjg4WI,162
@@ -250,9 +250,9 @@ omdev/pyproject/resources/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJW
250
250
  omdev/pyproject/resources/docker-dev.sh,sha256=DHkz5D18jok_oDolfg2mqrvGRWFoCe9GQo04dR1czcc,838
251
251
  omdev/pyproject/resources/python.sh,sha256=rFaN4SiJ9hdLDXXsDTwugI6zsw6EPkgYMmtacZeTbvw,749
252
252
  omdev/scripts/__init__.py,sha256=MKCvUAEQwsIvwLixwtPlpBqmkMXLCnjjXyAXvVpDwVk,91
253
- omdev/scripts/ci.py,sha256=HCkgcJND22CGrB7Tw4c3EZI5RsZlHAeQQtW7rG1Fiuo,357053
254
- omdev/scripts/interp.py,sha256=zNOZAz7DbD7vMdNhNRMt5XtkF-gjCApU5stKX0j_AOM,155600
255
- omdev/scripts/pyproject.py,sha256=E5Xx_EhvGspwjqGecd1KCLk1I1bOkKPgjtxbT1zjYJQ,265081
253
+ omdev/scripts/ci.py,sha256=1IeNGWCyHtonK1PHaKETW7IqCyXMkIkMafXUVlFCtQo,357043
254
+ omdev/scripts/interp.py,sha256=ByjO0DdnYF8VDYu04v6oIops4CknA8bUTOmcbjmlXGk,155590
255
+ omdev/scripts/pyproject.py,sha256=psPWxTp0FAPrRTMEoLTvHOsbv15fkIf_Lh8LBl3pYZE,265071
256
256
  omdev/scripts/slowcat.py,sha256=lssv4yrgJHiWfOiHkUut2p8E8Tq32zB-ujXESQxFFHY,2728
257
257
  omdev/scripts/tmpexec.py,sha256=WTYcf56Tj2qjYV14AWmV8SfT0u6Y8eIU6cKgQRvEK3c,1442
258
258
  omdev/tokens/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -294,9 +294,9 @@ omdev/tools/json/rendering.py,sha256=3HhdlKSetS6iK1tjF2aILzsl8Mb3D8wW92vYwGpRdVA
294
294
  omdev/tools/pawk/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
295
295
  omdev/tools/pawk/__main__.py,sha256=VCqeRVnqT1RPEoIrqHFSu4PXVMg4YEgF4qCQm90-eRI,66
296
296
  omdev/tools/pawk/pawk.py,sha256=zsEkfQX0jF5bn712uqPAyBSdJt2dno1LH2oeSMNfXQI,11424
297
- omdev-0.0.0.dev316.dist-info/licenses/LICENSE,sha256=B_hVtavaA8zCYDW99DYdcpDLKz1n3BBRjZrcbv8uG8c,1451
298
- omdev-0.0.0.dev316.dist-info/METADATA,sha256=2aNPDE5Nt1HuXUTI29IIM3PZYcTNS6UQvV9QOqyc1tw,1674
299
- omdev-0.0.0.dev316.dist-info/WHEEL,sha256=Nw36Djuh_5VDukK0H78QzOX-_FQEo6V37m3nkm96gtU,91
300
- omdev-0.0.0.dev316.dist-info/entry_points.txt,sha256=dHLXFmq5D9B8qUyhRtFqTGWGxlbx3t5ejedjrnXNYLU,33
301
- omdev-0.0.0.dev316.dist-info/top_level.txt,sha256=1nr7j30fEWgLYHW3lGR9pkdHkb7knv1U1ES1XRNVQ6k,6
302
- omdev-0.0.0.dev316.dist-info/RECORD,,
297
+ omdev-0.0.0.dev318.dist-info/licenses/LICENSE,sha256=B_hVtavaA8zCYDW99DYdcpDLKz1n3BBRjZrcbv8uG8c,1451
298
+ omdev-0.0.0.dev318.dist-info/METADATA,sha256=awBTNUcW9bms_VEuJZKZdFQziCsMQ1UB9dU4zSfh9jQ,1674
299
+ omdev-0.0.0.dev318.dist-info/WHEEL,sha256=zaaOINJESkSfm_4HQVc5ssNzHCPXhJm0kEUakpsEHaU,91
300
+ omdev-0.0.0.dev318.dist-info/entry_points.txt,sha256=dHLXFmq5D9B8qUyhRtFqTGWGxlbx3t5ejedjrnXNYLU,33
301
+ omdev-0.0.0.dev318.dist-info/top_level.txt,sha256=1nr7j30fEWgLYHW3lGR9pkdHkb7knv1U1ES1XRNVQ6k,6
302
+ omdev-0.0.0.dev318.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (80.7.1)
2
+ Generator: setuptools (80.8.0)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5