gitman 3.4.1b2__tar.gz → 3.5.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.4.1b2 → gitman-3.5.1}/PKG-INFO +9 -8
  2. {gitman-3.4.1b2 → gitman-3.5.1}/README.md +6 -5
  3. {gitman-3.4.1b2 → gitman-3.5.1}/gitman/commands.py +1 -0
  4. {gitman-3.4.1b2 → gitman-3.5.1}/gitman/git.py +6 -2
  5. {gitman-3.4.1b2 → gitman-3.5.1}/gitman/models/config.py +8 -8
  6. {gitman-3.4.1b2 → gitman-3.5.1}/gitman/shell.py +10 -8
  7. {gitman-3.4.1b2 → gitman-3.5.1}/gitman/tests/test_cli.py +1 -1
  8. {gitman-3.4.1b2 → gitman-3.5.1}/gitman/tests/test_git.py +0 -2
  9. {gitman-3.4.1b2 → gitman-3.5.1}/gitman/tests/test_models_config.py +1 -1
  10. {gitman-3.4.1b2 → gitman-3.5.1}/gitman/tests/test_models_source.py +1 -1
  11. {gitman-3.4.1b2 → gitman-3.5.1}/gitman/tests/test_plugin.py +0 -2
  12. {gitman-3.4.1b2 → gitman-3.5.1}/gitman/tests/test_shell.py +1 -1
  13. {gitman-3.4.1b2 → gitman-3.5.1}/pyproject.toml +37 -9
  14. {gitman-3.4.1b2 → gitman-3.5.1}/LICENSE.md +0 -0
  15. {gitman-3.4.1b2 → gitman-3.5.1}/gitman/__init__.py +0 -0
  16. {gitman-3.4.1b2 → gitman-3.5.1}/gitman/__main__.py +0 -0
  17. {gitman-3.4.1b2 → gitman-3.5.1}/gitman/cli.py +0 -0
  18. {gitman-3.4.1b2 → gitman-3.5.1}/gitman/common.py +0 -0
  19. {gitman-3.4.1b2 → gitman-3.5.1}/gitman/decorators.py +0 -0
  20. {gitman-3.4.1b2 → gitman-3.5.1}/gitman/exceptions.py +0 -0
  21. {gitman-3.4.1b2 → gitman-3.5.1}/gitman/hook-gitman.py +0 -0
  22. {gitman-3.4.1b2 → gitman-3.5.1}/gitman/models/__init__.py +0 -0
  23. {gitman-3.4.1b2 → gitman-3.5.1}/gitman/models/group.py +0 -0
  24. {gitman-3.4.1b2 → gitman-3.5.1}/gitman/models/source.py +0 -0
  25. {gitman-3.4.1b2 → gitman-3.5.1}/gitman/plugin.py +0 -0
  26. {gitman-3.4.1b2 → gitman-3.5.1}/gitman/settings.py +0 -0
  27. {gitman-3.4.1b2 → gitman-3.5.1}/gitman/tests/__init__.py +0 -0
  28. {gitman-3.4.1b2 → gitman-3.5.1}/gitman/tests/conftest.py +0 -0
  29. {gitman-3.4.1b2 → gitman-3.5.1}/gitman/tests/files/gdm-custom.yml +0 -0
  30. {gitman-3.4.1b2 → gitman-3.5.1}/gitman/tests/files/gdm-default.yml +0 -0
  31. {gitman-3.4.1b2 → gitman-3.5.1}/gitman/tests/files/gitman.yml +0 -0
  32. {gitman-3.4.1b2 → gitman-3.5.1}/gitman/tests/files/subdir/gitman.yml +0 -0
  33. {gitman-3.4.1b2 → gitman-3.5.1}/gitman/tests/files/subdir/subsubdir/gitman.yml +0 -0
  34. {gitman-3.4.1b2 → gitman-3.5.1}/gitman/tests/files/subdir/subsubdir/skip/subsubsubsubdir/gitman.yml +0 -0
  35. {gitman-3.4.1b2 → gitman-3.5.1}/gitman/tests/test_commands.py +0 -0
  36. {gitman-3.4.1b2 → gitman-3.5.1}/gitman/tests/test_common.py +0 -0
  37. {gitman-3.4.1b2 → gitman-3.5.1}/gitman/tests/test_models_group.py +0 -0
  38. {gitman-3.4.1b2 → gitman-3.5.1}/gitman/tests/utils.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: gitman
3
- Version: 3.4.1b2
3
+ Version: 3.5.1
4
4
  Summary: A language-agnostic dependency manager using Git.
5
5
  Home-page: https://pypi.org/project/gitman
6
6
  License: MIT
@@ -25,8 +25,8 @@ Classifier: Topic :: Software Development
25
25
  Classifier: Topic :: Software Development :: Build Tools
26
26
  Classifier: Topic :: Software Development :: Version Control
27
27
  Classifier: Topic :: System :: Software Distribution
28
- Requires-Dist: datafiles (>=2.1.2,<3.0.0)
29
- Requires-Dist: minilog (>=2.1,<3.0)
28
+ Requires-Dist: datafiles (>=2.2,<3.0)
29
+ Requires-Dist: minilog (>=2.3,<3.0)
30
30
  Requires-Dist: universal-startfile (>=0.2,<0.3)
31
31
  Project-URL: Documentation, https://gitman.readthedocs.io
32
32
  Project-URL: Repository, https://github.com/jacebrowning/gitman
@@ -38,12 +38,13 @@ Gitman is a language-agnostic dependency manager using Git. It aims to serve as
38
38
 
39
39
  [![Demo](https://raw.githubusercontent.com/jacebrowning/gitman/main/docs/demo.gif)](https://asciinema.org/a/3DLos4HIU84P0AfFlZMYcgPus)
40
40
 
41
- [![Unix Build Status](https://img.shields.io/travis/com/jacebrowning/gitman/main.svg?label=unix)](https://travis-ci.com/jacebrowning/gitman)
42
- [![Windows Build Status](https://img.shields.io/appveyor/ci/jacebrowning/gitman/main.svg?label=window)](https://ci.appveyor.com/project/jacebrowning/gitman)
43
- [![Coverage Status](https://img.shields.io/coveralls/jacebrowning/gitman/main.svg)](https://coveralls.io/r/jacebrowning/gitman)
44
- [![Scrutinizer Code Quality](https://img.shields.io/scrutinizer/g/jacebrowning/gitman.svg)](https://scrutinizer-ci.com/g/jacebrowning/gitman/?branch=main)
41
+ [![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
+ [![Windows Build](https://img.shields.io/appveyor/ci/jacebrowning/gitman/main.svg?label=windows)](https://ci.appveyor.com/project/jacebrowning/gitman)
43
+ [![Code Coverage](https://img.shields.io/codecov/c/github/jacebrowning/gitman)
44
+ ](https://codecov.io/gh/jacebrowning/gitman)
45
+ [![Code Quality](https://img.shields.io/scrutinizer/g/jacebrowning/gitman.svg?label=quality)](https://scrutinizer-ci.com/g/jacebrowning/gitman/?branch=main)
45
46
  [![PyPI License](https://img.shields.io/pypi/l/gitman.svg)](https://pypi.org/project/gitman)
46
- [![PyPI Version](https://img.shields.io/pypi/v/gitman.svg)](https://pypi.org/project/gitman)
47
+ [![PyPI Version](https://img.shields.io/pypi/v/gitman.svg?label=version)](https://pypi.org/project/gitman)
47
48
  [![PyPI Downloads](https://img.shields.io/pypi/dm/gitman.svg?color=orange)](https://pypistats.org/packages/gitman)
48
49
 
49
50
  ## Setup
@@ -4,12 +4,13 @@ Gitman is a language-agnostic dependency manager using Git. It aims to serve as
4
4
 
5
5
  [![Demo](https://raw.githubusercontent.com/jacebrowning/gitman/main/docs/demo.gif)](https://asciinema.org/a/3DLos4HIU84P0AfFlZMYcgPus)
6
6
 
7
- [![Unix Build Status](https://img.shields.io/travis/com/jacebrowning/gitman/main.svg?label=unix)](https://travis-ci.com/jacebrowning/gitman)
8
- [![Windows Build Status](https://img.shields.io/appveyor/ci/jacebrowning/gitman/main.svg?label=window)](https://ci.appveyor.com/project/jacebrowning/gitman)
9
- [![Coverage Status](https://img.shields.io/coveralls/jacebrowning/gitman/main.svg)](https://coveralls.io/r/jacebrowning/gitman)
10
- [![Scrutinizer Code Quality](https://img.shields.io/scrutinizer/g/jacebrowning/gitman.svg)](https://scrutinizer-ci.com/g/jacebrowning/gitman/?branch=main)
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
+ [![Windows Build](https://img.shields.io/appveyor/ci/jacebrowning/gitman/main.svg?label=windows)](https://ci.appveyor.com/project/jacebrowning/gitman)
9
+ [![Code Coverage](https://img.shields.io/codecov/c/github/jacebrowning/gitman)
10
+ ](https://codecov.io/gh/jacebrowning/gitman)
11
+ [![Code Quality](https://img.shields.io/scrutinizer/g/jacebrowning/gitman.svg?label=quality)](https://scrutinizer-ci.com/g/jacebrowning/gitman/?branch=main)
11
12
  [![PyPI License](https://img.shields.io/pypi/l/gitman.svg)](https://pypi.org/project/gitman)
12
- [![PyPI Version](https://img.shields.io/pypi/v/gitman.svg)](https://pypi.org/project/gitman)
13
+ [![PyPI Version](https://img.shields.io/pypi/v/gitman.svg?label=version)](https://pypi.org/project/gitman)
13
14
  [![PyPI Downloads](https://img.shields.io/pypi/dm/gitman.svg?color=orange)](https://pypistats.org/packages/gitman)
14
15
 
15
16
  ## Setup
@@ -171,6 +171,7 @@ def update(
171
171
  config = load_config(root)
172
172
  configs = [config] if config else []
173
173
  configs.extend(find_nested_configs(root, depth, []))
174
+
174
175
  if configs:
175
176
  count = 0
176
177
  common.newline()
@@ -62,11 +62,15 @@ def clone(
62
62
  git("-C", normpath, "remote", "add", "-f", "origin", sparse_paths_repo)
63
63
 
64
64
  with open(
65
- "%s/%s/.git/info/sparse-checkout" % (os.getcwd(), normpath), "w"
65
+ "%s/%s/.git/info/sparse-checkout" % (os.getcwd(), normpath),
66
+ "w",
67
+ encoding="utf-8",
66
68
  ) as fd:
67
69
  fd.write("\n".join(sparse_paths))
68
70
  with open(
69
- "%s/%s/.git/objects/info/alternates" % (os.getcwd(), normpath), "w"
71
+ "%s/%s/.git/objects/info/alternates" % (os.getcwd(), normpath),
72
+ "w",
73
+ encoding="utf-8",
70
74
  ) as fd:
71
75
  fd.write("%s/objects" % sparse_paths_repo)
72
76
 
@@ -329,7 +329,7 @@ class Config:
329
329
  def log(self, message: str = "", *args):
330
330
  """Append a message to the log file."""
331
331
  os.makedirs(self.location_path, exist_ok=True)
332
- with open(self.log_path, "a") as outfile:
332
+ with open(self.log_path, "a", encoding="utf-8") as outfile:
333
333
  outfile.write(message.format(*args) + "\n")
334
334
 
335
335
  def _get_sources(self, *, use_locked: Optional[bool] = None) -> List[Source]:
@@ -431,17 +431,17 @@ def find_nested_configs(
431
431
 
432
432
  log.debug(f"Searching for nested project in: {root}")
433
433
  for name in os.listdir(root):
434
- if name.startswith("."):
434
+ if name[0] in {".", "_", "@"}:
435
+ continue
436
+ if name in {"build", "dist", "node_modules", "venv"}:
435
437
  continue
436
438
  path = os.path.join(root, name)
437
- if os.path.isdir(path) and path not in skip_paths and not os.path.islink(path):
438
- config = load_config(path, search=False)
439
- if config:
439
+ if path in skip_paths:
440
+ continue
441
+ if os.path.isdir(path) and not os.path.islink(path):
442
+ if config := load_config(path, search=False):
440
443
  configs.append(config)
441
444
 
442
- if os.path.islink(path):
443
- continue
444
-
445
445
  if depth is not None:
446
446
  configs.extend(find_nested_configs(path, depth - 1, skip_paths))
447
447
  else:
@@ -46,14 +46,16 @@ def call(name, *args, _show=True, _stream=True, _shell=False, _ignore=False):
46
46
  else:
47
47
  env.pop(lp_key, None) # last resort: remove the env var
48
48
 
49
- command = subprocess.Popen( # pylint: disable=subprocess-run-check
50
- name if _shell else [name, *args],
51
- encoding="utf-8",
52
- universal_newlines=True,
53
- stdout=subprocess.PIPE,
54
- stderr=subprocess.STDOUT,
55
- shell=_shell,
56
- env=env,
49
+ command = (
50
+ subprocess.Popen( # pylint: disable=subprocess-run-check,consider-using-with
51
+ name if _shell else [name, *args],
52
+ encoding="utf-8",
53
+ universal_newlines=True,
54
+ stdout=subprocess.PIPE,
55
+ stderr=subprocess.STDOUT,
56
+ shell=_shell,
57
+ env=env,
58
+ )
57
59
  )
58
60
 
59
61
  # Poll process.stdout to show stdout live
@@ -1,4 +1,4 @@
1
- # pylint: disable=no-self-use,unused-variable,expression-not-assigned
1
+ # pylint: disable=unused-variable,expression-not-assigned
2
2
 
3
3
  from unittest.mock import Mock, patch
4
4
 
@@ -1,5 +1,3 @@
1
- # pylint: disable=no-self-use
2
-
3
1
  import os
4
2
  from unittest.mock import Mock, patch
5
3
 
@@ -1,4 +1,4 @@
1
- # pylint: disable=no-self-use,redefined-outer-name,unused-variable,expression-not-assigned,misplaced-comparison-constant,len-as-condition
1
+ # pylint: disable=redefined-outer-name,unused-variable,expression-not-assigned,len-as-condition
2
2
 
3
3
  import os
4
4
 
@@ -1,4 +1,4 @@
1
- # pylint: disable=no-self-use,redefined-outer-name,misplaced-comparison-constant
1
+ # pylint: disable=redefined-outer-name
2
2
 
3
3
  from copy import copy
4
4
  from unittest.mock import Mock, patch
@@ -1,5 +1,3 @@
1
- # pylint: disable=no-self-use
2
-
3
1
  from unittest.mock import call, patch
4
2
 
5
3
  from gitman import plugin
@@ -1,4 +1,4 @@
1
- # pylint: disable=no-self-use,misplaced-comparison-constant,expression-not-assigned
1
+ # pylint: disable=expression-not-assigned
2
2
 
3
3
  import os
4
4
  from unittest.mock import Mock, patch
@@ -1,7 +1,7 @@
1
1
  [tool.poetry]
2
2
 
3
3
  name = "gitman"
4
- version = "3.4.1b2"
4
+ version = "3.5.1"
5
5
  description = "A language-agnostic dependency manager using Git."
6
6
 
7
7
  license = "MIT"
@@ -44,8 +44,8 @@ classifiers = [
44
44
 
45
45
  python = "^3.8"
46
46
 
47
- datafiles = "^2.1.2"
48
- minilog = "^2.1"
47
+ datafiles = "^2.2"
48
+ minilog = "^2.3"
49
49
  universal-startfile = "~0.2"
50
50
 
51
51
  [tool.poetry.dev-dependencies]
@@ -57,26 +57,26 @@ isort = "^5.10"
57
57
  # Linters
58
58
  mypy = "^1.3"
59
59
  pydocstyle = "*"
60
- pylint = "~2.6"
60
+ pylint = "~2.15"
61
61
  types-freezegun = "*"
62
62
  types-setuptools = "*"
63
63
 
64
64
  # Testing
65
- pytest = "^7.3"
66
- pytest-cov = "^4.1"
67
- pytest-describe = "^2.0"
65
+ pytest = "^8.1"
66
+ pytest-cov = "^5.0"
67
+ pytest-describe = "^2.2"
68
68
  pytest-expecter = "^3.0"
69
69
  pytest-random = "*"
70
70
  freezegun = "*"
71
71
 
72
72
  # Reports
73
- coveragespace = "^6.0"
73
+ coveragespace = "^6.1"
74
74
 
75
75
  # Documentation
76
76
  mkdocs = "^1.2.3"
77
77
  mkdocstrings = "^0.18.1"
78
78
  pygments = "^2.15.0"
79
- jinja2 = "~3.1.3"
79
+ jinja2 = "~3.1.4"
80
80
 
81
81
  # Tooling
82
82
  pyinstaller = "^4.0"
@@ -98,6 +98,34 @@ quiet = true
98
98
 
99
99
  profile = "black"
100
100
 
101
+ [tool.mypy]
102
+
103
+ ignore_missing_imports = true
104
+ no_implicit_optional = true
105
+ check_untyped_defs = true
106
+
107
+ cache_dir = ".cache/mypy/"
108
+
109
+ plugins = "datafiles.plugins:mypy"
110
+
111
+ [tool.pytest.ini_options]
112
+
113
+ addopts = """
114
+ --strict-markers
115
+
116
+ -r sxX
117
+ --show-capture=log
118
+
119
+ --cov=gitman
120
+ --cov-report=html
121
+ --cov-report=term-missing:skip-covered
122
+ --no-cov-on-fail
123
+ """
124
+
125
+ cache_dir = ".cache/pytest/"
126
+
127
+ markers = ["integration"]
128
+
101
129
  [build-system]
102
130
 
103
131
  requires = ["poetry-core>=1.0"]
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