omdev 0.0.0.dev419__py3-none-any.whl → 0.0.0.dev421__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/cache/compute/storage.py +3 -1
- omdev/ci/cache.py +3 -2
- omdev/ci/docker/buildcaching.py +3 -1
- omdev/ci/docker/cache.py +2 -1
- omdev/ci/docker/cacheserved/manifests.py +2 -2
- omdev/ci/docker/imagepulling.py +2 -1
- omdev/ci/docker/repositories.py +2 -1
- omdev/ci/github/api/clients.py +4 -3
- omdev/clipboard/clipboard.py +1 -1
- omdev/cmake.py +2 -1
- omdev/dataserver/handlers.py +3 -2
- omdev/dataserver/targets.py +2 -2
- omdev/interp/providers/base.py +3 -2
- omdev/interp/pyenv/install.py +2 -1
- omdev/manifests/_dumping.py +427 -127
- omdev/oci/data.py +2 -2
- omdev/oci/datarefs.py +2 -2
- omdev/oci/media.py +2 -2
- omdev/oci/repositories.py +3 -2
- omdev/packaging/specifiers.py +37 -39
- omdev/packaging/wheelfile.py +2 -2
- omdev/pyproject/pkg.py +2 -1
- omdev/scripts/ci.py +3969 -3667
- omdev/scripts/interp.py +1036 -934
- omdev/scripts/pyproject.py +2420 -2123
- omdev/tools/git/messages.py +2 -2
- {omdev-0.0.0.dev419.dist-info → omdev-0.0.0.dev421.dist-info}/METADATA +2 -2
- {omdev-0.0.0.dev419.dist-info → omdev-0.0.0.dev421.dist-info}/RECORD +32 -32
- {omdev-0.0.0.dev419.dist-info → omdev-0.0.0.dev421.dist-info}/WHEEL +0 -0
- {omdev-0.0.0.dev419.dist-info → omdev-0.0.0.dev421.dist-info}/entry_points.txt +0 -0
- {omdev-0.0.0.dev419.dist-info → omdev-0.0.0.dev421.dist-info}/licenses/LICENSE +0 -0
- {omdev-0.0.0.dev419.dist-info → omdev-0.0.0.dev421.dist-info}/top_level.txt +0 -0
omdev/oci/data.py
CHANGED
@@ -1,10 +1,10 @@
|
|
1
1
|
# ruff: noqa: UP006 UP007 UP045
|
2
2
|
# @omlish-lite
|
3
|
-
import abc
|
4
3
|
import dataclasses as dc
|
5
4
|
import enum
|
6
5
|
import typing as ta
|
7
6
|
|
7
|
+
from omlish.lite.abstract import Abstract
|
8
8
|
from omlish.lite.check import check
|
9
9
|
from omlish.lite.marshal import OBJ_MARSHALER_FIELD_KEY
|
10
10
|
from omlish.lite.marshal import OBJ_MARSHALER_OMIT_IF_NONE
|
@@ -17,7 +17,7 @@ from .datarefs import OciDataRef
|
|
17
17
|
|
18
18
|
|
19
19
|
@dc.dataclass()
|
20
|
-
class OciDataclass(
|
20
|
+
class OciDataclass(Abstract):
|
21
21
|
pass
|
22
22
|
|
23
23
|
|
omdev/oci/datarefs.py
CHANGED
@@ -1,6 +1,5 @@
|
|
1
1
|
# ruff: noqa: UP006 UP007 UP045
|
2
2
|
# @omlish-lite
|
3
|
-
import abc
|
4
3
|
import dataclasses as dc
|
5
4
|
import functools
|
6
5
|
import hashlib
|
@@ -10,6 +9,7 @@ import shutil
|
|
10
9
|
import tarfile
|
11
10
|
import typing as ta
|
12
11
|
|
12
|
+
from omlish.lite.abstract import Abstract
|
13
13
|
from omlish.lite.cached import cached_nullary
|
14
14
|
from omlish.lite.check import check
|
15
15
|
|
@@ -18,7 +18,7 @@ from omlish.lite.check import check
|
|
18
18
|
|
19
19
|
|
20
20
|
@dc.dataclass(frozen=True)
|
21
|
-
class OciDataRef(
|
21
|
+
class OciDataRef(Abstract):
|
22
22
|
pass
|
23
23
|
|
24
24
|
|
omdev/oci/media.py
CHANGED
@@ -1,9 +1,9 @@
|
|
1
1
|
# ruff: noqa: UP006 UP007 UP045
|
2
2
|
# @omlish-lite
|
3
|
-
import abc
|
4
3
|
import dataclasses as dc
|
5
4
|
import typing as ta
|
6
5
|
|
6
|
+
from omlish.lite.abstract import Abstract
|
7
7
|
from omlish.lite.check import check
|
8
8
|
from omlish.lite.marshal import OBJ_MARSHALER_FIELD_KEY
|
9
9
|
from omlish.lite.marshal import OBJ_MARSHALER_OMIT_IF_NONE
|
@@ -23,7 +23,7 @@ OCI_MEDIA_FIELDS: ta.Collection[str] = frozenset([
|
|
23
23
|
|
24
24
|
|
25
25
|
@dc.dataclass()
|
26
|
-
class OciMediaDataclass(
|
26
|
+
class OciMediaDataclass(Abstract):
|
27
27
|
SCHEMA_VERSION: ta.ClassVar[int]
|
28
28
|
|
29
29
|
@property
|
omdev/oci/repositories.py
CHANGED
@@ -5,6 +5,7 @@ import os.path
|
|
5
5
|
import tarfile
|
6
6
|
import typing as ta
|
7
7
|
|
8
|
+
from omlish.lite.abstract import Abstract
|
8
9
|
from omlish.lite.check import check
|
9
10
|
from omlish.os.paths import is_path_in_dir
|
10
11
|
|
@@ -17,7 +18,7 @@ from .datarefs import TarFileOciDataRef
|
|
17
18
|
##
|
18
19
|
|
19
20
|
|
20
|
-
class OciRepository(
|
21
|
+
class OciRepository(Abstract):
|
21
22
|
@abc.abstractmethod
|
22
23
|
def contains_blob(self, digest: str) -> bool:
|
23
24
|
raise NotImplementedError
|
@@ -57,7 +58,7 @@ class OciRepository(abc.ABC):
|
|
57
58
|
raise TypeError(obj)
|
58
59
|
|
59
60
|
|
60
|
-
class FileOciRepository(OciRepository,
|
61
|
+
class FileOciRepository(OciRepository, Abstract):
|
61
62
|
@abc.abstractmethod
|
62
63
|
def read_file(self, path: str) -> bytes:
|
63
64
|
raise NotImplementedError
|
omdev/packaging/specifiers.py
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
# ruff: noqa: UP006 UP007 UP045
|
1
2
|
# @omlish-lite
|
2
3
|
# Copyright (c) Donald Stufft and individual contributors.
|
3
4
|
# All rights reserved.
|
@@ -20,8 +21,7 @@
|
|
20
21
|
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. This file is dual licensed under the terms of the
|
21
22
|
# Apache License, Version 2.0, and the BSD License. See the LICENSE file in the root of this repository for complete
|
22
23
|
# details.
|
23
|
-
# https://github.com/pypa/packaging/blob/
|
24
|
-
# ruff: noqa: UP006 UP007 UP045
|
24
|
+
# https://github.com/pypa/packaging/blob/48125006684bb2d7d28c50af48a03176da45942d/src/packaging/specifiers.py
|
25
25
|
import abc
|
26
26
|
import itertools
|
27
27
|
import re
|
@@ -181,7 +181,7 @@ class Specifier(BaseSpecifier):
|
|
181
181
|
) -> None:
|
182
182
|
match = self._regex.search(spec)
|
183
183
|
if not match:
|
184
|
-
raise InvalidSpecifier(f
|
184
|
+
raise InvalidSpecifier(f'Invalid specifier: {spec!r}')
|
185
185
|
|
186
186
|
self._spec: ta.Tuple[str, str] = (
|
187
187
|
match.group('operator').strip(),
|
@@ -196,7 +196,7 @@ class Specifier(BaseSpecifier):
|
|
196
196
|
return self._prereleases
|
197
197
|
|
198
198
|
operator, version = self._spec
|
199
|
-
if operator in ['==', '>=', '<=', '~=', '===']:
|
199
|
+
if operator in ['==', '>=', '<=', '~=', '===', '>', '<']:
|
200
200
|
if operator == '==' and version.endswith('.*'):
|
201
201
|
version = version[:-2]
|
202
202
|
|
@@ -322,40 +322,38 @@ class Specifier(BaseSpecifier):
|
|
322
322
|
return self.contains(item)
|
323
323
|
|
324
324
|
def contains(self, item: UnparsedVersion, prereleases: ta.Optional[bool] = None) -> bool:
|
325
|
-
|
326
|
-
prereleases = self.prereleases
|
327
|
-
|
328
|
-
normalized_item = _coerce_version(item)
|
329
|
-
|
330
|
-
if normalized_item.is_prerelease and not prereleases:
|
331
|
-
return False
|
332
|
-
|
333
|
-
operator_callable: CallableVersionOperator = self._get_operator(self.operator)
|
334
|
-
return operator_callable(normalized_item, self.version)
|
325
|
+
return bool(list(self.filter([item], prereleases=prereleases)))
|
335
326
|
|
336
327
|
def filter(
|
337
328
|
self,
|
338
329
|
iterable: ta.Iterable[UnparsedVersionVar],
|
339
330
|
prereleases: ta.Optional[bool] = None,
|
340
331
|
) -> ta.Iterator[UnparsedVersionVar]:
|
341
|
-
|
342
|
-
|
332
|
+
prereleases_versions = []
|
333
|
+
found_non_prereleases = False
|
334
|
+
|
335
|
+
include_prereleases = (
|
336
|
+
prereleases if prereleases is not None else self.prereleases
|
337
|
+
)
|
343
338
|
|
344
|
-
|
339
|
+
operator_callable = self._get_operator(self.operator)
|
345
340
|
|
346
341
|
for version in iterable:
|
347
342
|
parsed_version = _coerce_version(version)
|
348
343
|
|
349
|
-
if
|
350
|
-
if parsed_version.is_prerelease
|
351
|
-
|
352
|
-
else:
|
353
|
-
yielded = True
|
344
|
+
if operator_callable(parsed_version, self.version):
|
345
|
+
if not parsed_version.is_prerelease or include_prereleases:
|
346
|
+
found_non_prereleases = True
|
354
347
|
yield version
|
348
|
+
elif prereleases is None and self._prereleases is not False:
|
349
|
+
prereleases_versions.append(version)
|
355
350
|
|
356
|
-
if
|
357
|
-
|
358
|
-
|
351
|
+
if (
|
352
|
+
not found_non_prereleases and
|
353
|
+
prereleases is None and
|
354
|
+
self._prereleases is not False
|
355
|
+
):
|
356
|
+
yield from prereleases_versions
|
359
357
|
|
360
358
|
|
361
359
|
_version_prefix_regex = re.compile(r'^([0-9]+)((?:a|b|c|rc)[0-9]+)$')
|
@@ -406,12 +404,15 @@ def _pad_version(left: ta.List[str], right: ta.List[str]) -> ta.Tuple[ta.List[st
|
|
406
404
|
class SpecifierSet(BaseSpecifier):
|
407
405
|
def __init__(
|
408
406
|
self,
|
409
|
-
specifiers: str = '',
|
407
|
+
specifiers: ta.Union[str, ta.Iterable['Specifier']] = '',
|
410
408
|
prereleases: ta.Optional[bool] = None,
|
411
409
|
) -> None:
|
412
|
-
|
410
|
+
if isinstance(specifiers, str):
|
411
|
+
split_specifiers = [s.strip() for s in specifiers.split(',') if s.strip()]
|
412
|
+
self._specs = frozenset(map(Specifier, split_specifiers))
|
413
|
+
else:
|
414
|
+
self._specs = frozenset(specifiers)
|
413
415
|
|
414
|
-
self._specs = frozenset(map(Specifier, split_specifiers))
|
415
416
|
self._prereleases = prereleases
|
416
417
|
|
417
418
|
@property
|
@@ -422,7 +423,10 @@ class SpecifierSet(BaseSpecifier):
|
|
422
423
|
if not self._specs:
|
423
424
|
return None
|
424
425
|
|
425
|
-
|
426
|
+
if any(s.prereleases for s in self._specs):
|
427
|
+
return True
|
428
|
+
|
429
|
+
return None
|
426
430
|
|
427
431
|
@prereleases.setter
|
428
432
|
def prereleases(self, value: bool) -> None:
|
@@ -489,28 +493,22 @@ class SpecifierSet(BaseSpecifier):
|
|
489
493
|
if not isinstance(item, Version):
|
490
494
|
item = Version(item)
|
491
495
|
|
492
|
-
if prereleases is None:
|
493
|
-
prereleases = self.prereleases
|
494
|
-
|
495
|
-
if not prereleases and item.is_prerelease:
|
496
|
-
return False
|
497
|
-
|
498
496
|
if installed and item.is_prerelease:
|
499
|
-
|
497
|
+
prereleases = True
|
500
498
|
|
501
|
-
return
|
499
|
+
return bool(list(self.filter([item], prereleases=prereleases)))
|
502
500
|
|
503
501
|
def filter(
|
504
502
|
self,
|
505
503
|
iterable: ta.Iterable[UnparsedVersionVar],
|
506
504
|
prereleases: ta.Optional[bool] = None,
|
507
505
|
) -> ta.Iterator[UnparsedVersionVar]:
|
508
|
-
if prereleases is None:
|
506
|
+
if prereleases is None and self.prereleases is not None:
|
509
507
|
prereleases = self.prereleases
|
510
508
|
|
511
509
|
if self._specs:
|
512
510
|
for spec in self._specs:
|
513
|
-
iterable = spec.filter(iterable, prereleases=
|
511
|
+
iterable = spec.filter(iterable, prereleases=prereleases)
|
514
512
|
return iter(iterable)
|
515
513
|
|
516
514
|
else:
|
omdev/packaging/wheelfile.py
CHANGED
@@ -1,6 +1,5 @@
|
|
1
|
-
# @omlish-lite
|
2
1
|
# ruff: noqa: UP006 UP007 UP045
|
3
|
-
#
|
2
|
+
# @omlish-lite
|
4
3
|
# MIT License
|
5
4
|
#
|
6
5
|
# Copyright (c) 2012 Daniel Holth <dholth@fastmail.fm> and contributors
|
@@ -17,6 +16,7 @@
|
|
17
16
|
# WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
|
18
17
|
# COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
|
19
18
|
# OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
19
|
+
# https://github.com/pypa/wheel/blob/7bb46d7727e6e89fe56b3c78297b3af2672bbbe2/src/wheel/wheelfile.py
|
20
20
|
import base64
|
21
21
|
import csv
|
22
22
|
import hashlib
|
omdev/pyproject/pkg.py
CHANGED
@@ -36,6 +36,7 @@ import types
|
|
36
36
|
import typing as ta
|
37
37
|
|
38
38
|
from omlish.formats.toml.writer import TomlWriter
|
39
|
+
from omlish.lite.abstract import Abstract
|
39
40
|
from omlish.lite.cached import cached_nullary
|
40
41
|
from omlish.lite.logs import log
|
41
42
|
from omlish.subprocesses.sync import subprocesses
|
@@ -48,7 +49,7 @@ from ..packaging.revisions import GitRevisionAdder
|
|
48
49
|
##
|
49
50
|
|
50
51
|
|
51
|
-
class BasePyprojectPackageGenerator(
|
52
|
+
class BasePyprojectPackageGenerator(Abstract):
|
52
53
|
def __init__(
|
53
54
|
self,
|
54
55
|
dir_name: str,
|