omdev 0.0.0.dev74__tar.gz → 0.0.0.dev76__tar.gz

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.
Files changed (135) hide show
  1. {omdev-0.0.0.dev74/omdev.egg-info → omdev-0.0.0.dev76}/PKG-INFO +2 -2
  2. {omdev-0.0.0.dev74 → omdev-0.0.0.dev76}/omdev/.manifests.json +12 -0
  3. omdev-0.0.0.dev76/omdev/imgur.py +135 -0
  4. {omdev-0.0.0.dev74 → omdev-0.0.0.dev76}/omdev/tools/dockertools.py +5 -5
  5. {omdev-0.0.0.dev74 → omdev-0.0.0.dev76/omdev.egg-info}/PKG-INFO +2 -2
  6. {omdev-0.0.0.dev74 → omdev-0.0.0.dev76}/omdev.egg-info/SOURCES.txt +1 -0
  7. {omdev-0.0.0.dev74 → omdev-0.0.0.dev76}/omdev.egg-info/requires.txt +1 -1
  8. {omdev-0.0.0.dev74 → omdev-0.0.0.dev76}/pyproject.toml +2 -2
  9. {omdev-0.0.0.dev74 → omdev-0.0.0.dev76}/LICENSE +0 -0
  10. {omdev-0.0.0.dev74 → omdev-0.0.0.dev76}/MANIFEST.in +0 -0
  11. {omdev-0.0.0.dev74 → omdev-0.0.0.dev76}/README.rst +0 -0
  12. {omdev-0.0.0.dev74 → omdev-0.0.0.dev76}/omdev/__about__.py +0 -0
  13. {omdev-0.0.0.dev74 → omdev-0.0.0.dev76}/omdev/__init__.py +0 -0
  14. {omdev-0.0.0.dev74 → omdev-0.0.0.dev76}/omdev/amalg/__init__.py +0 -0
  15. {omdev-0.0.0.dev74 → omdev-0.0.0.dev76}/omdev/amalg/__main__.py +0 -0
  16. {omdev-0.0.0.dev74 → omdev-0.0.0.dev76}/omdev/amalg/amalg.py +0 -0
  17. {omdev-0.0.0.dev74 → omdev-0.0.0.dev76}/omdev/antlr/__init__.py +0 -0
  18. {omdev-0.0.0.dev74 → omdev-0.0.0.dev76}/omdev/antlr/_antlr/__init__.py +0 -0
  19. {omdev-0.0.0.dev74 → omdev-0.0.0.dev76}/omdev/antlr/consts.py +0 -0
  20. {omdev-0.0.0.dev74 → omdev-0.0.0.dev76}/omdev/antlr/gen.py +0 -0
  21. {omdev-0.0.0.dev74 → omdev-0.0.0.dev76}/omdev/bracepy.py +0 -0
  22. {omdev-0.0.0.dev74 → omdev-0.0.0.dev76}/omdev/cache/__init__.py +0 -0
  23. {omdev-0.0.0.dev74 → omdev-0.0.0.dev76}/omdev/cache/compute/__init__.py +0 -0
  24. {omdev-0.0.0.dev74 → omdev-0.0.0.dev76}/omdev/cache/compute/cache.py +0 -0
  25. {omdev-0.0.0.dev74 → omdev-0.0.0.dev76}/omdev/cache/compute/contexts.py +0 -0
  26. {omdev-0.0.0.dev74 → omdev-0.0.0.dev76}/omdev/cache/compute/currents.py +0 -0
  27. {omdev-0.0.0.dev74 → omdev-0.0.0.dev76}/omdev/cache/compute/fns.py +0 -0
  28. {omdev-0.0.0.dev74 → omdev-0.0.0.dev76}/omdev/cache/compute/resolvers.py +0 -0
  29. {omdev-0.0.0.dev74 → omdev-0.0.0.dev76}/omdev/cache/compute/storage.py +0 -0
  30. {omdev-0.0.0.dev74 → omdev-0.0.0.dev76}/omdev/cache/compute/types.py +0 -0
  31. {omdev-0.0.0.dev74 → omdev-0.0.0.dev76}/omdev/cache/data/__init__.py +0 -0
  32. {omdev-0.0.0.dev74 → omdev-0.0.0.dev76}/omdev/cache/data/actions.py +0 -0
  33. {omdev-0.0.0.dev74 → omdev-0.0.0.dev76}/omdev/cache/data/cache.py +0 -0
  34. {omdev-0.0.0.dev74 → omdev-0.0.0.dev76}/omdev/cache/data/consts.py +0 -0
  35. {omdev-0.0.0.dev74 → omdev-0.0.0.dev76}/omdev/cache/data/defaults.py +0 -0
  36. {omdev-0.0.0.dev74 → omdev-0.0.0.dev76}/omdev/cache/data/manifests.py +0 -0
  37. {omdev-0.0.0.dev74 → omdev-0.0.0.dev76}/omdev/cache/data/specs.py +0 -0
  38. {omdev-0.0.0.dev74 → omdev-0.0.0.dev76}/omdev/cexts/__init__.py +0 -0
  39. {omdev-0.0.0.dev74 → omdev-0.0.0.dev76}/omdev/cexts/_boilerplate.cc +0 -0
  40. {omdev-0.0.0.dev74 → omdev-0.0.0.dev76}/omdev/cexts/_distutils/LICENSE +0 -0
  41. {omdev-0.0.0.dev74 → omdev-0.0.0.dev76}/omdev/cexts/_distutils/__init__.py +0 -0
  42. {omdev-0.0.0.dev74 → omdev-0.0.0.dev76}/omdev/cexts/_distutils/build_ext.py +0 -0
  43. {omdev-0.0.0.dev74 → omdev-0.0.0.dev76}/omdev/cexts/_distutils/compilers/__init__.py +0 -0
  44. {omdev-0.0.0.dev74 → omdev-0.0.0.dev76}/omdev/cexts/_distutils/compilers/ccompiler.py +0 -0
  45. {omdev-0.0.0.dev74 → omdev-0.0.0.dev76}/omdev/cexts/_distutils/compilers/options.py +0 -0
  46. {omdev-0.0.0.dev74 → omdev-0.0.0.dev76}/omdev/cexts/_distutils/compilers/unixccompiler.py +0 -0
  47. {omdev-0.0.0.dev74 → omdev-0.0.0.dev76}/omdev/cexts/_distutils/dir_util.py +0 -0
  48. {omdev-0.0.0.dev74 → omdev-0.0.0.dev76}/omdev/cexts/_distutils/errors.py +0 -0
  49. {omdev-0.0.0.dev74 → omdev-0.0.0.dev76}/omdev/cexts/_distutils/extension.py +0 -0
  50. {omdev-0.0.0.dev74 → omdev-0.0.0.dev76}/omdev/cexts/_distutils/file_util.py +0 -0
  51. {omdev-0.0.0.dev74 → omdev-0.0.0.dev76}/omdev/cexts/_distutils/modified.py +0 -0
  52. {omdev-0.0.0.dev74 → omdev-0.0.0.dev76}/omdev/cexts/_distutils/spawn.py +0 -0
  53. {omdev-0.0.0.dev74 → omdev-0.0.0.dev76}/omdev/cexts/_distutils/sysconfig.py +0 -0
  54. {omdev-0.0.0.dev74 → omdev-0.0.0.dev76}/omdev/cexts/_distutils/util.py +0 -0
  55. {omdev-0.0.0.dev74 → omdev-0.0.0.dev76}/omdev/cexts/_distutils/version.py +0 -0
  56. {omdev-0.0.0.dev74 → omdev-0.0.0.dev76}/omdev/cexts/build.py +0 -0
  57. {omdev-0.0.0.dev74 → omdev-0.0.0.dev76}/omdev/cexts/cmake.py +0 -0
  58. {omdev-0.0.0.dev74 → omdev-0.0.0.dev76}/omdev/cexts/importhook.py +0 -0
  59. {omdev-0.0.0.dev74 → omdev-0.0.0.dev76}/omdev/cexts/magic.py +0 -0
  60. {omdev-0.0.0.dev74 → omdev-0.0.0.dev76}/omdev/cexts/scan.py +0 -0
  61. {omdev-0.0.0.dev74 → omdev-0.0.0.dev76}/omdev/classdot.py +0 -0
  62. {omdev-0.0.0.dev74 → omdev-0.0.0.dev76}/omdev/cli/__init__.py +0 -0
  63. {omdev-0.0.0.dev74 → omdev-0.0.0.dev76}/omdev/cli/__main__.py +0 -0
  64. {omdev-0.0.0.dev74 → omdev-0.0.0.dev76}/omdev/cli/_pathhack.py +0 -0
  65. {omdev-0.0.0.dev74 → omdev-0.0.0.dev76}/omdev/cli/clicli.py +0 -0
  66. {omdev-0.0.0.dev74 → omdev-0.0.0.dev76}/omdev/cli/install.py +0 -0
  67. {omdev-0.0.0.dev74 → omdev-0.0.0.dev76}/omdev/cli/main.py +0 -0
  68. {omdev-0.0.0.dev74 → omdev-0.0.0.dev76}/omdev/cli/managers.py +0 -0
  69. {omdev-0.0.0.dev74 → omdev-0.0.0.dev76}/omdev/cli/types.py +0 -0
  70. {omdev-0.0.0.dev74 → omdev-0.0.0.dev76}/omdev/cmake.py +0 -0
  71. {omdev-0.0.0.dev74 → omdev-0.0.0.dev76}/omdev/findimports.py +0 -0
  72. {omdev-0.0.0.dev74 → omdev-0.0.0.dev76}/omdev/findmagic.py +0 -0
  73. {omdev-0.0.0.dev74 → omdev-0.0.0.dev76}/omdev/git.py +0 -0
  74. {omdev-0.0.0.dev74 → omdev-0.0.0.dev76}/omdev/interp/__init__.py +0 -0
  75. {omdev-0.0.0.dev74 → omdev-0.0.0.dev76}/omdev/interp/__main__.py +0 -0
  76. {omdev-0.0.0.dev74 → omdev-0.0.0.dev76}/omdev/interp/cli.py +0 -0
  77. {omdev-0.0.0.dev74 → omdev-0.0.0.dev76}/omdev/interp/inspect.py +0 -0
  78. {omdev-0.0.0.dev74 → omdev-0.0.0.dev76}/omdev/interp/providers.py +0 -0
  79. {omdev-0.0.0.dev74 → omdev-0.0.0.dev76}/omdev/interp/pyenv.py +0 -0
  80. {omdev-0.0.0.dev74 → omdev-0.0.0.dev76}/omdev/interp/resolvers.py +0 -0
  81. {omdev-0.0.0.dev74 → omdev-0.0.0.dev76}/omdev/interp/standalone.py +0 -0
  82. {omdev-0.0.0.dev74 → omdev-0.0.0.dev76}/omdev/interp/system.py +0 -0
  83. {omdev-0.0.0.dev74 → omdev-0.0.0.dev76}/omdev/interp/types.py +0 -0
  84. {omdev-0.0.0.dev74 → omdev-0.0.0.dev76}/omdev/manifests/__init__.py +0 -0
  85. {omdev-0.0.0.dev74 → omdev-0.0.0.dev76}/omdev/manifests/build.py +0 -0
  86. {omdev-0.0.0.dev74 → omdev-0.0.0.dev76}/omdev/manifests/load.py +0 -0
  87. {omdev-0.0.0.dev74 → omdev-0.0.0.dev76}/omdev/manifests/types.py +0 -0
  88. {omdev-0.0.0.dev74 → omdev-0.0.0.dev76}/omdev/mypy/__init__.py +0 -0
  89. {omdev-0.0.0.dev74 → omdev-0.0.0.dev76}/omdev/mypy/debug.py +0 -0
  90. {omdev-0.0.0.dev74 → omdev-0.0.0.dev76}/omdev/packaging/__init__.py +0 -0
  91. {omdev-0.0.0.dev74 → omdev-0.0.0.dev76}/omdev/packaging/names.py +0 -0
  92. {omdev-0.0.0.dev74 → omdev-0.0.0.dev76}/omdev/packaging/requires.py +0 -0
  93. {omdev-0.0.0.dev74 → omdev-0.0.0.dev76}/omdev/packaging/specifiers.py +0 -0
  94. {omdev-0.0.0.dev74 → omdev-0.0.0.dev76}/omdev/packaging/versions.py +0 -0
  95. {omdev-0.0.0.dev74 → omdev-0.0.0.dev76}/omdev/precheck/__init__.py +0 -0
  96. {omdev-0.0.0.dev74 → omdev-0.0.0.dev76}/omdev/precheck/__main__.py +0 -0
  97. {omdev-0.0.0.dev74 → omdev-0.0.0.dev76}/omdev/precheck/base.py +0 -0
  98. {omdev-0.0.0.dev74 → omdev-0.0.0.dev76}/omdev/precheck/git.py +0 -0
  99. {omdev-0.0.0.dev74 → omdev-0.0.0.dev76}/omdev/precheck/lite.py +0 -0
  100. {omdev-0.0.0.dev74 → omdev-0.0.0.dev76}/omdev/precheck/precheck.py +0 -0
  101. {omdev-0.0.0.dev74 → omdev-0.0.0.dev76}/omdev/precheck/scripts.py +0 -0
  102. {omdev-0.0.0.dev74 → omdev-0.0.0.dev76}/omdev/pyproject/__init__.py +0 -0
  103. {omdev-0.0.0.dev74 → omdev-0.0.0.dev76}/omdev/pyproject/__main__.py +0 -0
  104. {omdev-0.0.0.dev74 → omdev-0.0.0.dev76}/omdev/pyproject/cexts.py +0 -0
  105. {omdev-0.0.0.dev74 → omdev-0.0.0.dev76}/omdev/pyproject/cli.py +0 -0
  106. {omdev-0.0.0.dev74 → omdev-0.0.0.dev76}/omdev/pyproject/configs.py +0 -0
  107. {omdev-0.0.0.dev74 → omdev-0.0.0.dev76}/omdev/pyproject/pkg.py +0 -0
  108. {omdev-0.0.0.dev74 → omdev-0.0.0.dev76}/omdev/pyproject/reqs.py +0 -0
  109. {omdev-0.0.0.dev74 → omdev-0.0.0.dev76}/omdev/revisions.py +0 -0
  110. {omdev-0.0.0.dev74 → omdev-0.0.0.dev76}/omdev/scripts/__init__.py +0 -0
  111. {omdev-0.0.0.dev74 → omdev-0.0.0.dev76}/omdev/scripts/bumpversion.py +0 -0
  112. {omdev-0.0.0.dev74 → omdev-0.0.0.dev76}/omdev/scripts/execrss.py +0 -0
  113. {omdev-0.0.0.dev74 → omdev-0.0.0.dev76}/omdev/scripts/exectime.py +0 -0
  114. {omdev-0.0.0.dev74 → omdev-0.0.0.dev76}/omdev/scripts/importtrace.py +0 -0
  115. {omdev-0.0.0.dev74 → omdev-0.0.0.dev76}/omdev/scripts/interp.py +0 -0
  116. {omdev-0.0.0.dev74 → omdev-0.0.0.dev76}/omdev/scripts/pyproject.py +0 -0
  117. {omdev-0.0.0.dev74 → omdev-0.0.0.dev76}/omdev/secrets.py +0 -0
  118. {omdev-0.0.0.dev74 → omdev-0.0.0.dev76}/omdev/tokens.py +0 -0
  119. {omdev-0.0.0.dev74 → omdev-0.0.0.dev76}/omdev/toml/__init__.py +0 -0
  120. {omdev-0.0.0.dev74 → omdev-0.0.0.dev76}/omdev/toml/parser.py +0 -0
  121. {omdev-0.0.0.dev74 → omdev-0.0.0.dev76}/omdev/toml/writer.py +0 -0
  122. {omdev-0.0.0.dev74 → omdev-0.0.0.dev76}/omdev/tools/__init__.py +0 -0
  123. {omdev-0.0.0.dev74 → omdev-0.0.0.dev76}/omdev/tools/gittools.py +0 -0
  124. {omdev-0.0.0.dev74 → omdev-0.0.0.dev76}/omdev/tools/importscan.py +0 -0
  125. {omdev-0.0.0.dev74 → omdev-0.0.0.dev76}/omdev/tools/mkrelimp.py +0 -0
  126. {omdev-0.0.0.dev74 → omdev-0.0.0.dev76}/omdev/tools/nbtools.py +0 -0
  127. {omdev-0.0.0.dev74 → omdev-0.0.0.dev76}/omdev/tools/piptools.py +0 -0
  128. {omdev-0.0.0.dev74 → omdev-0.0.0.dev76}/omdev/tools/proftools.py +0 -0
  129. {omdev-0.0.0.dev74 → omdev-0.0.0.dev76}/omdev/tools/rsttool.py +0 -0
  130. {omdev-0.0.0.dev74 → omdev-0.0.0.dev76}/omdev/tools/sqlrepl.py +0 -0
  131. {omdev-0.0.0.dev74 → omdev-0.0.0.dev76}/omdev/wheelfile.py +0 -0
  132. {omdev-0.0.0.dev74 → omdev-0.0.0.dev76}/omdev.egg-info/dependency_links.txt +0 -0
  133. {omdev-0.0.0.dev74 → omdev-0.0.0.dev76}/omdev.egg-info/entry_points.txt +0 -0
  134. {omdev-0.0.0.dev74 → omdev-0.0.0.dev76}/omdev.egg-info/top_level.txt +0 -0
  135. {omdev-0.0.0.dev74 → omdev-0.0.0.dev76}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: omdev
3
- Version: 0.0.0.dev74
3
+ Version: 0.0.0.dev76
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.dev74
15
+ Requires-Dist: omlish==0.0.0.dev76
16
16
  Provides-Extra: all
17
17
  Requires-Dist: black~=24.10; extra == "all"
18
18
  Requires-Dist: pycparser~=2.22; extra == "all"
@@ -47,6 +47,18 @@
47
47
  }
48
48
  }
49
49
  },
50
+ {
51
+ "module": ".imgur",
52
+ "attr": "_FOO_CLI_MODULE",
53
+ "file": "omdev/imgur.py",
54
+ "line": 130,
55
+ "value": {
56
+ "$.cli.types.CliModule": {
57
+ "cmd_name": "imgur",
58
+ "mod_name": "omdev.imgur"
59
+ }
60
+ }
61
+ },
50
62
  {
51
63
  "module": ".interp.__main__",
52
64
  "attr": "_CLI_MODULE",
@@ -0,0 +1,135 @@
1
+ """
2
+ TODO:
3
+ - auth cmd
4
+
5
+ ==
6
+
7
+ https://planspace.org/2013/01/13/upload-images-to-your-imgur-account/
8
+
9
+ https://api.imgur.com/oauth2/authorize?client_id=YOUR_CLIENT_ID&response_type=pin
10
+
11
+ curl \
12
+ -X POST \
13
+ -F "client_id=YOUR_CLIENT_ID" \
14
+ -F "client_secret=YOUR_CLIENT_SECRET" \
15
+ -F "grant_type=pin" \
16
+ -F "pin=YOUR_PIN" \
17
+ https://api.imgur.com/oauth2/token
18
+
19
+ curl \
20
+ -X POST \
21
+ -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
22
+ -F "image=@PATH_TO_YOUR_IMAGE_FILE" \
23
+ https://api.imgur.com/3/upload
24
+ """
25
+ import dataclasses as dc
26
+ import os.path
27
+ import typing as ta
28
+
29
+ from omlish import check
30
+ from omlish import http as hu
31
+ from omlish import marshal as msh
32
+ from omlish.formats import json
33
+ from omlish.secrets import Secret
34
+
35
+ from .cli import CliModule
36
+ from .secrets import load_secrets
37
+
38
+
39
+ @dc.dataclass(frozen=True)
40
+ @msh.update_object_metadata(unknown_field='x')
41
+ class ImageUploadData:
42
+ id: str
43
+ deletehash: str # noqa
44
+ account_id: int
45
+ account_url: str
46
+ title: str
47
+ description: str
48
+ name: str
49
+ type: str
50
+ width: int
51
+ height: int
52
+ size: int
53
+ views: int
54
+ animated: bool
55
+ has_sound: bool
56
+ link: str
57
+ tags: ta.Sequence[str]
58
+ datetime: int
59
+ mp4: str
60
+ hls: str
61
+
62
+ x: ta.Mapping[str, ta.Any] | None = None
63
+
64
+
65
+ @dc.dataclass(frozen=True)
66
+ class ImageUploadResponse:
67
+ status: int
68
+ success: bool
69
+ data: ImageUploadData
70
+
71
+
72
+ DEFAULT_UPLOAD_IMAGE_URL = 'https://api.imgur.com/3/upload'
73
+
74
+
75
+ def upload_image(
76
+ file_name: str,
77
+ file_data: bytes,
78
+ auth_key: Secret | str,
79
+ *,
80
+ url: str = DEFAULT_UPLOAD_IMAGE_URL,
81
+ client: hu.HttpClient | None = None,
82
+ ) -> ImageUploadResponse:
83
+ me = hu.MultipartEncoder([
84
+ hu.MultipartField(
85
+ file_data,
86
+ b'image',
87
+ file_name.encode(),
88
+ headers=[(hu.consts.HEADER_CONTENT_TYPE, hu.consts.CONTENT_TYPE_BYTES)],
89
+ ),
90
+ ])
91
+
92
+ resp = hu.request(
93
+ url,
94
+ headers={
95
+ hu.consts.HEADER_AUTH: hu.consts.format_bearer_auth_header(Secret.of(auth_key).reveal()),
96
+ hu.consts.HEADER_CONTENT_TYPE: me.content_type().decode(),
97
+ },
98
+ data=me.content(),
99
+ check=True,
100
+ client=client,
101
+ )
102
+
103
+ return msh.unmarshal(json.loads(check.not_none(resp.data).decode('utf-8')), ImageUploadResponse)
104
+
105
+
106
+ def _main() -> None:
107
+ from omlish import argparse as ap
108
+
109
+ class Cli(ap.Cli):
110
+ @ap.command(
111
+ ap.arg('file'),
112
+ )
113
+ def upload(self) -> None:
114
+ file = self.args.file
115
+ file_name = os.path.basename(file)
116
+ with open(file, 'rb') as f:
117
+ file_data = f.read()
118
+
119
+ resp = upload_image(
120
+ file_name,
121
+ file_data,
122
+ load_secrets().get('imgur_client_access_token'),
123
+ )
124
+
125
+ print(resp.data.link)
126
+
127
+ Cli().call_and_exit()
128
+
129
+
130
+ # @omlish-manifest
131
+ _FOO_CLI_MODULE = CliModule('imgur', __name__)
132
+
133
+
134
+ if __name__ == '__main__':
135
+ _main()
@@ -123,17 +123,17 @@ class Cli(ap.Cli):
123
123
 
124
124
  services = check.isinstance(
125
125
  check.single(
126
- v.value # type: ignore
126
+ v.value
127
127
  for k, v in root.items()
128
- if k.value == 'services' # type: ignore
128
+ if k.value == 'services'
129
129
  ),
130
130
  ta.Mapping,
131
131
  )
132
132
  for name_w, cfg_w in services.items():
133
- name = check.isinstance(name_w.value, str) # type: ignore
134
- cfg = check.isinstance(cfg_w.value, ta.Mapping) # type: ignore
133
+ name = check.isinstance(name_w.value, str)
134
+ cfg = check.isinstance(cfg_w.value, ta.Mapping)
135
135
 
136
- ports = check.opt_single(v.value for k, v in cfg.items() if k.value == 'ports') # type: ignore
136
+ ports = check.opt_single(v.value for k, v in cfg.items() if k.value == 'ports')
137
137
  if not ports:
138
138
  continue
139
139
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: omdev
3
- Version: 0.0.0.dev74
3
+ Version: 0.0.0.dev76
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.dev74
15
+ Requires-Dist: omlish==0.0.0.dev76
16
16
  Provides-Extra: all
17
17
  Requires-Dist: black~=24.10; extra == "all"
18
18
  Requires-Dist: pycparser~=2.22; extra == "all"
@@ -11,6 +11,7 @@ omdev/cmake.py
11
11
  omdev/findimports.py
12
12
  omdev/findmagic.py
13
13
  omdev/git.py
14
+ omdev/imgur.py
14
15
  omdev/revisions.py
15
16
  omdev/secrets.py
16
17
  omdev/tokens.py
@@ -1,4 +1,4 @@
1
- omlish==0.0.0.dev74
1
+ omlish==0.0.0.dev76
2
2
 
3
3
  [all]
4
4
  black~=24.10
@@ -12,7 +12,7 @@ authors = [
12
12
  urls = {source = 'https://github.com/wrmsr/omlish'}
13
13
  license = {text = 'BSD-3-Clause'}
14
14
  requires-python = '~=3.12'
15
- version = '0.0.0.dev74'
15
+ version = '0.0.0.dev76'
16
16
  classifiers = [
17
17
  'License :: OSI Approved :: BSD License',
18
18
  'Development Status :: 2 - Pre-Alpha',
@@ -22,7 +22,7 @@ classifiers = [
22
22
  ]
23
23
  description = 'omdev'
24
24
  dependencies = [
25
- 'omlish == 0.0.0.dev74',
25
+ 'omlish == 0.0.0.dev76',
26
26
  ]
27
27
 
28
28
  [project.optional-dependencies]
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes