gitman 3.7__tar.gz → 3.8.1__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 (38) hide show
  1. {gitman-3.7 → gitman-3.8.1}/PKG-INFO +8 -7
  2. {gitman-3.7 → gitman-3.8.1}/README.md +2 -2
  3. {gitman-3.7 → gitman-3.8.1}/gitman/git.py +17 -1
  4. {gitman-3.7 → gitman-3.8.1}/gitman/models/source.py +7 -3
  5. {gitman-3.7 → gitman-3.8.1}/pyproject.toml +13 -12
  6. {gitman-3.7 → gitman-3.8.1}/LICENSE.md +0 -0
  7. {gitman-3.7 → gitman-3.8.1}/gitman/__init__.py +0 -0
  8. {gitman-3.7 → gitman-3.8.1}/gitman/__main__.py +0 -0
  9. {gitman-3.7 → gitman-3.8.1}/gitman/cli.py +0 -0
  10. {gitman-3.7 → gitman-3.8.1}/gitman/commands.py +0 -0
  11. {gitman-3.7 → gitman-3.8.1}/gitman/common.py +0 -0
  12. {gitman-3.7 → gitman-3.8.1}/gitman/decorators.py +0 -0
  13. {gitman-3.7 → gitman-3.8.1}/gitman/exceptions.py +0 -0
  14. {gitman-3.7 → gitman-3.8.1}/gitman/hook-gitman.py +0 -0
  15. {gitman-3.7 → gitman-3.8.1}/gitman/models/__init__.py +0 -0
  16. {gitman-3.7 → gitman-3.8.1}/gitman/models/config.py +0 -0
  17. {gitman-3.7 → gitman-3.8.1}/gitman/models/group.py +0 -0
  18. {gitman-3.7 → gitman-3.8.1}/gitman/plugin.py +0 -0
  19. {gitman-3.7 → gitman-3.8.1}/gitman/settings.py +0 -0
  20. {gitman-3.7 → gitman-3.8.1}/gitman/shell.py +0 -0
  21. {gitman-3.7 → gitman-3.8.1}/gitman/tests/__init__.py +0 -0
  22. {gitman-3.7 → gitman-3.8.1}/gitman/tests/conftest.py +0 -0
  23. {gitman-3.7 → gitman-3.8.1}/gitman/tests/files/gdm-custom.yml +0 -0
  24. {gitman-3.7 → gitman-3.8.1}/gitman/tests/files/gdm-default.yml +0 -0
  25. {gitman-3.7 → gitman-3.8.1}/gitman/tests/files/gitman.yml +0 -0
  26. {gitman-3.7 → gitman-3.8.1}/gitman/tests/files/subdir/gitman.yml +0 -0
  27. {gitman-3.7 → gitman-3.8.1}/gitman/tests/files/subdir/subsubdir/gitman.yml +0 -0
  28. {gitman-3.7 → gitman-3.8.1}/gitman/tests/files/subdir/subsubdir/skip/subsubsubsubdir/gitman.yml +0 -0
  29. {gitman-3.7 → gitman-3.8.1}/gitman/tests/test_cli.py +0 -0
  30. {gitman-3.7 → gitman-3.8.1}/gitman/tests/test_commands.py +0 -0
  31. {gitman-3.7 → gitman-3.8.1}/gitman/tests/test_common.py +0 -0
  32. {gitman-3.7 → gitman-3.8.1}/gitman/tests/test_git.py +0 -0
  33. {gitman-3.7 → gitman-3.8.1}/gitman/tests/test_models_config.py +0 -0
  34. {gitman-3.7 → gitman-3.8.1}/gitman/tests/test_models_group.py +0 -0
  35. {gitman-3.7 → gitman-3.8.1}/gitman/tests/test_models_source.py +0 -0
  36. {gitman-3.7 → gitman-3.8.1}/gitman/tests/test_plugin.py +0 -0
  37. {gitman-3.7 → gitman-3.8.1}/gitman/tests/test_shell.py +0 -0
  38. {gitman-3.7 → gitman-3.8.1}/gitman/tests/utils.py +0 -0
@@ -1,12 +1,13 @@
1
- Metadata-Version: 2.3
1
+ Metadata-Version: 2.4
2
2
  Name: gitman
3
- Version: 3.7
3
+ Version: 3.8.1
4
4
  Summary: A language-agnostic dependency manager using Git.
5
5
  License: MIT
6
+ License-File: LICENSE.md
6
7
  Keywords: git,version control,build systems,dependency management,submodules
7
8
  Author: Jace Browning
8
9
  Author-email: jacebrowning@gmail.com
9
- Requires-Python: >=3.9,<3.15
10
+ Requires-Python: >=3.10,<3.15
10
11
  Classifier: Development Status :: 5 - Production/Stable
11
12
  Classifier: Environment :: Console
12
13
  Classifier: Intended Audience :: Developers
@@ -15,18 +16,18 @@ Classifier: Natural Language :: English
15
16
  Classifier: Operating System :: OS Independent
16
17
  Classifier: Programming Language :: Python
17
18
  Classifier: Programming Language :: Python :: 3
18
- Classifier: Programming Language :: Python :: 3.9
19
19
  Classifier: Programming Language :: Python :: 3.10
20
20
  Classifier: Programming Language :: Python :: 3.11
21
21
  Classifier: Programming Language :: Python :: 3.12
22
22
  Classifier: Programming Language :: Python :: 3.13
23
+ Classifier: Programming Language :: Python :: 3.14
23
24
  Classifier: Topic :: Software Development
24
25
  Classifier: Topic :: Software Development :: Build Tools
25
26
  Classifier: Topic :: Software Development :: Version Control
26
27
  Classifier: Topic :: System :: Software Distribution
27
28
  Requires-Dist: datafiles (>=2.3.1,<3.0.0)
28
29
  Requires-Dist: minilog (>=2.3.1,<3.0.0)
29
- Requires-Dist: universal-startfile (>=0.2,<0.4)
30
+ Requires-Dist: universal-startfile (>=0.2,<0.5)
30
31
  Project-URL: Documentation, https://gitman.readthedocs.io
31
32
  Project-URL: Homepage, https://pypi.org/project/gitman
32
33
  Project-URL: Repository, https://github.com/jacebrowning/gitman
@@ -36,7 +37,7 @@ Description-Content-Type: text/markdown
36
37
 
37
38
  Gitman is a language-agnostic dependency manager using Git. It aims to serve as a submodules replacement and provides advanced options for managing versions of nested Git repositories.
38
39
 
39
- [![Demo](https://raw.githubusercontent.com/jacebrowning/gitman/main/docs/demo.gif)](https://asciinema.org/a/3DLos4HIU84P0AfFlZMYcgPus)
40
+ [![Demo](https://raw.githubusercontent.com/jacebrowning/gitman/main/docs/demo.gif)](https://asciinema.org/a/IyeLCRjDXZbsFETz)
40
41
 
41
42
  [![Linux Build](https://img.shields.io/github/actions/workflow/status/jacebrowning/gitman/main.yml?branch=main&label=linux)](https://github.com/jacebrowning/gitman/actions)
42
43
  [![Windows Build](https://img.shields.io/appveyor/ci/jacebrowning/gitman/main.svg?label=windows)](https://ci.appveyor.com/project/jacebrowning/gitman)
@@ -51,7 +52,7 @@ Gitman is a language-agnostic dependency manager using Git. It aims to serve as
51
52
 
52
53
  ### Requirements
53
54
 
54
- - Python 3.9+
55
+ - Python 3.10+
55
56
  - Git 2.8+ (with [stored credentials](http://gitman.readthedocs.io/en/latest/setup/git/))
56
57
 
57
58
  ### Installation
@@ -2,7 +2,7 @@
2
2
 
3
3
  Gitman is a language-agnostic dependency manager using Git. It aims to serve as a submodules replacement and provides advanced options for managing versions of nested Git repositories.
4
4
 
5
- [![Demo](https://raw.githubusercontent.com/jacebrowning/gitman/main/docs/demo.gif)](https://asciinema.org/a/3DLos4HIU84P0AfFlZMYcgPus)
5
+ [![Demo](https://raw.githubusercontent.com/jacebrowning/gitman/main/docs/demo.gif)](https://asciinema.org/a/IyeLCRjDXZbsFETz)
6
6
 
7
7
  [![Linux Build](https://img.shields.io/github/actions/workflow/status/jacebrowning/gitman/main.yml?branch=main&label=linux)](https://github.com/jacebrowning/gitman/actions)
8
8
  [![Windows Build](https://img.shields.io/appveyor/ci/jacebrowning/gitman/main.svg?label=windows)](https://ci.appveyor.com/project/jacebrowning/gitman)
@@ -17,7 +17,7 @@ Gitman is a language-agnostic dependency manager using Git. It aims to serve as
17
17
 
18
18
  ### Requirements
19
19
 
20
- - Python 3.9+
20
+ - Python 3.10+
21
21
  - Git 2.8+ (with [stored credentials](http://gitman.readthedocs.io/en/latest/setup/git/))
22
22
 
23
23
  ### Installation
@@ -12,6 +12,11 @@ from .exceptions import ShellError
12
12
  from .shell import call, pwd
13
13
 
14
14
 
15
+ def sanitize_sparse_paths(sparse_paths):
16
+ """Strip trailing glob patterns for cone mode (e.g. 'src/*' -> 'src')."""
17
+ return [p.rstrip("/*") if p.endswith("/*") else p for p in sparse_paths]
18
+
19
+
15
20
  def git(*args, **kwargs):
16
21
  return call("git", *args, **kwargs)
17
22
 
@@ -69,7 +74,13 @@ def clone(
69
74
  fd.write("%s/objects" % sparse_paths_repo)
70
75
 
71
76
  git("-C", normpath, "sparse-checkout", "init", "--cone")
72
- git("-C", normpath, "sparse-checkout", "set", *sparse_paths)
77
+ git(
78
+ "-C",
79
+ normpath,
80
+ "sparse-checkout",
81
+ "set",
82
+ *sanitize_sparse_paths(sparse_paths)
83
+ )
73
84
  git("-C", normpath, "fetch", "origin")
74
85
  git("-C", normpath, "checkout", rev)
75
86
  elif settings.CACHE_DISABLE:
@@ -245,6 +256,11 @@ def am(patch, _skip=False):
245
256
  raise ShellError from e
246
257
 
247
258
 
259
+ def apply_sparse_checkout(sparse_paths):
260
+ """Re-apply sparse-checkout paths to an existing working tree."""
261
+ git("sparse-checkout", "set", *sanitize_sparse_paths(sparse_paths))
262
+
263
+
248
264
  def update(
249
265
  type, repo, path, *, clean=True, fetch=False, rev=None
250
266
  ): # pylint: disable=redefined-outer-name,unused-argument
@@ -32,6 +32,8 @@ class Source:
32
32
  | `scripts` | Shell commands to run after checkout | No | `[]` |
33
33
  | `patches` | patches to be applied after checkout | No | `[]` |
34
34
 
35
+ <br>
36
+
35
37
  ### Params
36
38
 
37
39
  Params are passed directly to the `clone` command to modify behavior such as:
@@ -202,6 +204,10 @@ class Source:
202
204
  if fetch or git.is_fetch_required(self.type, self.rev):
203
205
  git.fetch(self.type, self.repo, self.name, rev=self.rev)
204
206
 
207
+ # Re-apply sparse-checkout paths in case they changed since initial clone
208
+ if self.sparse_paths and self.sparse_paths[0]:
209
+ git.apply_sparse_checkout(self.sparse_paths)
210
+
205
211
  # Update the working tree to the desired revision
206
212
  git.update(
207
213
  self.type, self.repo, self.name, fetch=fetch, clean=clean, rev=self.rev
@@ -384,9 +390,7 @@ class Source:
384
390
 
385
391
  Not a valid repository: {}
386
392
  During install you can rebuild a repo with a missing .git directory using the --force option
387
- """.format(
388
- path
389
- )
393
+ """.format(path)
390
394
  return exceptions.InvalidRepository(msg)
391
395
 
392
396
 
@@ -1,7 +1,7 @@
1
1
  [tool.poetry]
2
2
 
3
3
  name = "gitman"
4
- version = "3.7"
4
+ version = "3.8.1"
5
5
  description = "A language-agnostic dependency manager using Git."
6
6
 
7
7
  license = "MIT"
@@ -30,11 +30,11 @@ classifiers = [
30
30
  "Operating System :: OS Independent",
31
31
  "Programming Language :: Python",
32
32
  "Programming Language :: Python :: 3",
33
- "Programming Language :: Python :: 3.9",
34
33
  "Programming Language :: Python :: 3.10",
35
34
  "Programming Language :: Python :: 3.11",
36
35
  "Programming Language :: Python :: 3.12",
37
36
  "Programming Language :: Python :: 3.13",
37
+ "Programming Language :: Python :: 3.14",
38
38
  "Topic :: Software Development",
39
39
  "Topic :: Software Development :: Build Tools",
40
40
  "Topic :: Software Development :: Version Control",
@@ -43,46 +43,47 @@ classifiers = [
43
43
 
44
44
  [tool.poetry.dependencies]
45
45
 
46
- python = "^3.9,<3.15"
46
+ python = "^3.10,<3.15"
47
47
 
48
48
  datafiles = "^2.3.1"
49
49
  minilog = "^2.3.1"
50
- universal-startfile = ">=0.2,<0.4"
50
+ universal-startfile = ">=0.2,<0.5"
51
51
 
52
52
  [tool.poetry.group.dev.dependencies]
53
53
 
54
54
  # Formatters
55
- black = ">=24.8,<26.0"
56
- isort = ">=5.13,<7.0"
55
+ black = ">=24.8,<27.0"
56
+ isort = ">=5.13,<9.0"
57
57
 
58
58
  # Linters
59
59
  mypy = "^1.3"
60
60
  pydocstyle = "*"
61
- pylint = "~3.3"
61
+ pylint = ">=3.3,<4.1"
62
62
  types-freezegun = "*"
63
63
  types-setuptools = "*"
64
64
 
65
65
  # Testing
66
- pytest = "^8.3"
66
+ pytest = ">=8.3,<10.0"
67
67
  pytest-cov = ">=5,<8"
68
- pytest-describe = "^2.2"
68
+ pytest-describe = ">=2.2,<4.0"
69
69
  pytest-expecter = "^3.0"
70
70
  pytest-random = "*"
71
71
  freezegun = "*"
72
72
 
73
73
  # Reports
74
- coveragespace = "^6.1"
74
+ coveragespace = "^6.2"
75
75
 
76
76
  # Documentation
77
77
  mkdocs = "^1.2.3"
78
- mkdocstrings = ">=0.18.1,<0.31.0"
78
+ mkdocstrings = ">=0.18.1,<1.1.0"
79
+ mkdocstrings-python = "*"
79
80
  pygments = "^2.15.0"
80
81
  jinja2 = "~3.1.6"
81
82
 
82
83
  # Tooling
83
84
  pyinstaller = "^6.15"
84
85
  sniffer = "*"
85
- macfsevents = { version = "*", platform = "darwin" }
86
+ macfsevents = { version = "*", platform = "darwin", python = "<3.13" }
86
87
  pync = { version = "*", platform = "darwin" }
87
88
  rope = ">=0.14,<1.15"
88
89
 
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes