omdev 0.0.0.dev317__py3-none-any.whl → 0.0.0.dev319__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
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: omdev
3
- Version: 0.0.0.dev317
3
+ Version: 0.0.0.dev319
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.dev317
15
+ Requires-Dist: omlish==0.0.0.dev319
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
@@ -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.dev317.dist-info/licenses/LICENSE,sha256=B_hVtavaA8zCYDW99DYdcpDLKz1n3BBRjZrcbv8uG8c,1451
298
- omdev-0.0.0.dev317.dist-info/METADATA,sha256=b1BUgoKYpwixeg-HAJ7G-LNQn-N5rf4Y0gK77ere6yc,1674
299
- omdev-0.0.0.dev317.dist-info/WHEEL,sha256=zaaOINJESkSfm_4HQVc5ssNzHCPXhJm0kEUakpsEHaU,91
300
- omdev-0.0.0.dev317.dist-info/entry_points.txt,sha256=dHLXFmq5D9B8qUyhRtFqTGWGxlbx3t5ejedjrnXNYLU,33
301
- omdev-0.0.0.dev317.dist-info/top_level.txt,sha256=1nr7j30fEWgLYHW3lGR9pkdHkb7knv1U1ES1XRNVQ6k,6
302
- omdev-0.0.0.dev317.dist-info/RECORD,,
297
+ omdev-0.0.0.dev319.dist-info/licenses/LICENSE,sha256=B_hVtavaA8zCYDW99DYdcpDLKz1n3BBRjZrcbv8uG8c,1451
298
+ omdev-0.0.0.dev319.dist-info/METADATA,sha256=fltMdBsErmbrd8j2zUuluSfyxz6pLkH91YxUrufiVKs,1674
299
+ omdev-0.0.0.dev319.dist-info/WHEEL,sha256=zaaOINJESkSfm_4HQVc5ssNzHCPXhJm0kEUakpsEHaU,91
300
+ omdev-0.0.0.dev319.dist-info/entry_points.txt,sha256=dHLXFmq5D9B8qUyhRtFqTGWGxlbx3t5ejedjrnXNYLU,33
301
+ omdev-0.0.0.dev319.dist-info/top_level.txt,sha256=1nr7j30fEWgLYHW3lGR9pkdHkb7knv1U1ES1XRNVQ6k,6
302
+ omdev-0.0.0.dev319.dist-info/RECORD,,