gitman 3.4.1b1__tar.gz → 3.5__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.1b1 → gitman-3.5}/PKG-INFO +8 -13
  2. {gitman-3.4.1b1 → gitman-3.5}/README.md +4 -5
  3. {gitman-3.4.1b1 → gitman-3.5}/gitman/cli.py +15 -0
  4. {gitman-3.4.1b1 → gitman-3.5}/gitman/commands.py +6 -2
  5. {gitman-3.4.1b1 → gitman-3.5}/gitman/git.py +6 -2
  6. {gitman-3.4.1b1 → gitman-3.5}/gitman/models/config.py +1 -1
  7. {gitman-3.4.1b1 → gitman-3.5}/gitman/plugin.py +7 -0
  8. {gitman-3.4.1b1 → gitman-3.5}/gitman/shell.py +10 -8
  9. {gitman-3.4.1b1 → gitman-3.5}/gitman/tests/conftest.py +2 -0
  10. {gitman-3.4.1b1 → gitman-3.5}/gitman/tests/test_cli.py +16 -1
  11. {gitman-3.4.1b1 → gitman-3.5}/gitman/tests/test_git.py +0 -2
  12. {gitman-3.4.1b1 → gitman-3.5}/gitman/tests/test_models_config.py +1 -1
  13. {gitman-3.4.1b1 → gitman-3.5}/gitman/tests/test_models_source.py +1 -1
  14. {gitman-3.4.1b1 → gitman-3.5}/gitman/tests/test_plugin.py +5 -3
  15. {gitman-3.4.1b1 → gitman-3.5}/gitman/tests/test_shell.py +1 -1
  16. {gitman-3.4.1b1 → gitman-3.5}/pyproject.toml +38 -10
  17. {gitman-3.4.1b1 → gitman-3.5}/LICENSE.md +0 -0
  18. {gitman-3.4.1b1 → gitman-3.5}/gitman/__init__.py +0 -0
  19. {gitman-3.4.1b1 → gitman-3.5}/gitman/__main__.py +0 -0
  20. {gitman-3.4.1b1 → gitman-3.5}/gitman/common.py +0 -0
  21. {gitman-3.4.1b1 → gitman-3.5}/gitman/decorators.py +0 -0
  22. {gitman-3.4.1b1 → gitman-3.5}/gitman/exceptions.py +0 -0
  23. {gitman-3.4.1b1 → gitman-3.5}/gitman/hook-gitman.py +0 -0
  24. {gitman-3.4.1b1 → gitman-3.5}/gitman/models/__init__.py +0 -0
  25. {gitman-3.4.1b1 → gitman-3.5}/gitman/models/group.py +0 -0
  26. {gitman-3.4.1b1 → gitman-3.5}/gitman/models/source.py +0 -0
  27. {gitman-3.4.1b1 → gitman-3.5}/gitman/settings.py +0 -0
  28. {gitman-3.4.1b1 → gitman-3.5}/gitman/tests/__init__.py +0 -0
  29. {gitman-3.4.1b1 → gitman-3.5}/gitman/tests/files/gdm-custom.yml +0 -0
  30. {gitman-3.4.1b1 → gitman-3.5}/gitman/tests/files/gdm-default.yml +0 -0
  31. {gitman-3.4.1b1 → gitman-3.5}/gitman/tests/files/gitman.yml +0 -0
  32. {gitman-3.4.1b1 → gitman-3.5}/gitman/tests/files/subdir/gitman.yml +0 -0
  33. {gitman-3.4.1b1 → gitman-3.5}/gitman/tests/files/subdir/subsubdir/gitman.yml +0 -0
  34. {gitman-3.4.1b1 → gitman-3.5}/gitman/tests/files/subdir/subsubdir/skip/subsubsubsubdir/gitman.yml +0 -0
  35. {gitman-3.4.1b1 → gitman-3.5}/gitman/tests/test_commands.py +0 -0
  36. {gitman-3.4.1b1 → gitman-3.5}/gitman/tests/test_common.py +0 -0
  37. {gitman-3.4.1b1 → gitman-3.5}/gitman/tests/test_models_group.py +0 -0
  38. {gitman-3.4.1b1 → gitman-3.5}/gitman/tests/utils.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: gitman
3
- Version: 3.4.1b1
3
+ Version: 3.5
4
4
  Summary: A language-agnostic dependency manager using Git.
5
5
  Home-page: https://pypi.org/project/gitman
6
6
  License: MIT
@@ -20,17 +20,13 @@ Classifier: Programming Language :: Python :: 3.8
20
20
  Classifier: Programming Language :: Python :: 3.9
21
21
  Classifier: Programming Language :: Python :: 3.10
22
22
  Classifier: Programming Language :: Python :: 3.11
23
- Classifier: Programming Language :: Python :: 3
24
- Classifier: Programming Language :: Python :: 3.10
25
- Classifier: Programming Language :: Python :: 3.11
26
- Classifier: Programming Language :: Python :: 3.8
27
- Classifier: Programming Language :: Python :: 3.9
23
+ Classifier: Programming Language :: Python :: 3.12
28
24
  Classifier: Topic :: Software Development
29
25
  Classifier: Topic :: Software Development :: Build Tools
30
26
  Classifier: Topic :: Software Development :: Version Control
31
27
  Classifier: Topic :: System :: Software Distribution
32
- Requires-Dist: datafiles (>=2.1.2,<3.0.0)
33
- Requires-Dist: minilog (>=2.1,<3.0)
28
+ Requires-Dist: datafiles (>=2.2,<3.0)
29
+ Requires-Dist: minilog (>=2.3,<3.0)
34
30
  Requires-Dist: universal-startfile (>=0.2,<0.3)
35
31
  Project-URL: Documentation, https://gitman.readthedocs.io
36
32
  Project-URL: Repository, https://github.com/jacebrowning/gitman
@@ -42,12 +38,11 @@ Gitman is a language-agnostic dependency manager using Git. It aims to serve as
42
38
 
43
39
  [![Demo](https://raw.githubusercontent.com/jacebrowning/gitman/main/docs/demo.gif)](https://asciinema.org/a/3DLos4HIU84P0AfFlZMYcgPus)
44
40
 
45
- [![Unix Build Status](https://img.shields.io/travis/com/jacebrowning/gitman/main.svg?label=unix)](https://travis-ci.com/jacebrowning/gitman)
46
- [![Windows Build Status](https://img.shields.io/appveyor/ci/jacebrowning/gitman/main.svg?label=window)](https://ci.appveyor.com/project/jacebrowning/gitman)
47
- [![Coverage Status](https://img.shields.io/coveralls/jacebrowning/gitman/main.svg)](https://coveralls.io/r/jacebrowning/gitman)
48
- [![Scrutinizer Code Quality](https://img.shields.io/scrutinizer/g/jacebrowning/gitman.svg)](https://scrutinizer-ci.com/g/jacebrowning/gitman/?branch=main)
41
+ [![Build Status](https://img.shields.io/github/actions/workflow/status/jacebrowning/gitman/main.yml?branch=main)](https://github.com/jacebrowning/gitman/actions)
42
+ [![Code Coverage](https://img.shields.io/codecov/c/gh/jacebrowning/gitman)](https://codecov.io/gh/jacebrowning/gitman)
43
+ [![Code Quality](https://img.shields.io/scrutinizer/g/jacebrowning/gitman.svg?label=quiality)](https://scrutinizer-ci.com/g/jacebrowning/gitman/?branch=main)
49
44
  [![PyPI License](https://img.shields.io/pypi/l/gitman.svg)](https://pypi.org/project/gitman)
50
- [![PyPI Version](https://img.shields.io/pypi/v/gitman.svg)](https://pypi.org/project/gitman)
45
+ [![PyPI Version](https://img.shields.io/pypi/v/gitman.svg?label=version)](https://pypi.org/project/gitman)
51
46
  [![PyPI Downloads](https://img.shields.io/pypi/dm/gitman.svg?color=orange)](https://pypistats.org/packages/gitman)
52
47
 
53
48
  ## Setup
@@ -4,12 +4,11 @@ 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
+ [![Build Status](https://img.shields.io/github/actions/workflow/status/jacebrowning/gitman/main.yml?branch=main)](https://github.com/jacebrowning/gitman/actions)
8
+ [![Code Coverage](https://img.shields.io/codecov/c/gh/jacebrowning/gitman)](https://codecov.io/gh/jacebrowning/gitman)
9
+ [![Code Quality](https://img.shields.io/scrutinizer/g/jacebrowning/gitman.svg?label=quiality)](https://scrutinizer-ci.com/g/jacebrowning/gitman/?branch=main)
11
10
  [![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)
11
+ [![PyPI Version](https://img.shields.io/pypi/v/gitman.svg?label=version)](https://pypi.org/project/gitman)
13
12
  [![PyPI Downloads](https://img.shields.io/pypi/dm/gitman.svg?color=orange)](https://pypistats.org/packages/gitman)
14
13
 
15
14
  ## Setup
@@ -118,6 +118,13 @@ def main(args=None, function=None):
118
118
  action="store_true",
119
119
  dest="no_defaults",
120
120
  )
121
+ sub.add_argument(
122
+ "-S",
123
+ "--no-scripts",
124
+ help="skip running scripts after installation",
125
+ action="store_true",
126
+ dest="no_scripts",
127
+ )
121
128
 
122
129
  # Update parser
123
130
  info = "update dependencies to the latest versions"
@@ -144,6 +151,13 @@ def main(args=None, function=None):
144
151
  default=None,
145
152
  help="disable recording of updated versions",
146
153
  )
154
+ sub.add_argument(
155
+ "-S",
156
+ "--no-scripts",
157
+ help="skip running scripts after installation",
158
+ action="store_true",
159
+ dest="no_scripts",
160
+ )
147
161
 
148
162
  # List parser
149
163
  info = "display the current version of each dependency"
@@ -262,6 +276,7 @@ def _get_command(function, namespace):
262
276
  force_interactive=namespace.force_interactive,
263
277
  clean=namespace.clean,
264
278
  skip_changes=namespace.skip_changes,
279
+ skip_scripts=namespace.no_scripts,
265
280
  )
266
281
  if namespace.command == "install":
267
282
  kwargs.update(
@@ -62,6 +62,7 @@ def install(
62
62
  clean=True,
63
63
  skip_changes=False,
64
64
  skip_default_group=False,
65
+ skip_scripts=False,
65
66
  ):
66
67
  """Install dependencies for a project.
67
68
 
@@ -80,6 +81,7 @@ def install(
80
81
  should be skipped
81
82
  - `skip_default_group`: indicates default_group should be skipped if
82
83
  `*names` is empty
84
+ - `skip_scripts`: indicates scripts should be skipped
83
85
  """
84
86
  log.info(
85
87
  "%sInstalling dependencies: %s",
@@ -115,7 +117,7 @@ def install(
115
117
  )
116
118
  count += _count # type: ignore
117
119
 
118
- if _count:
120
+ if _count and not skip_scripts:
119
121
  label = "nested scripts" if index else "scripts"
120
122
  common.show(f"Running {label}...", color="message", log=False)
121
123
  common.newline()
@@ -136,6 +138,7 @@ def update(
136
138
  lock=None, # pylint: disable=redefined-outer-name
137
139
  skip_changes=False,
138
140
  skip_default_group=False,
141
+ skip_scripts=False,
139
142
  ):
140
143
  """Update dependencies for a project.
141
144
 
@@ -155,6 +158,7 @@ def update(
155
158
  should be skipped
156
159
  - `skip_default_group`: indicates default_group should be skipped if
157
160
  `*names` is empty
161
+ - `skip_scripts`: indicates scripts should be skipped
158
162
  """
159
163
  log.info(
160
164
  "%s dependencies%s: %s",
@@ -198,7 +202,7 @@ def update(
198
202
  skip_changes=skip_changes or force_interactive,
199
203
  )
200
204
 
201
- if _count:
205
+ if _count and not skip_scripts:
202
206
  label = "nested scripts" if index else "scripts"
203
207
  common.show(f"Running {label}...", color="message", log=False)
204
208
  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]:
@@ -62,6 +62,13 @@ def main(args=None):
62
62
  action="store_true",
63
63
  dest="no_defaults",
64
64
  )
65
+ parser.add_argument(
66
+ "-S",
67
+ "--no-scripts",
68
+ help="skip running scripts after installation",
69
+ action="store_true",
70
+ dest="no_scripts",
71
+ )
65
72
 
66
73
  # Update option
67
74
  group.add_argument(
@@ -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
@@ -24,6 +24,8 @@ def pytest_configure(config):
24
24
  def pytest_runtest_setup(item):
25
25
  """Disable file storage during unit tests."""
26
26
  if "integration" in item.keywords:
27
+ if os.name == "nt":
28
+ pytest.skip("Integration tests not supported on Windows")
27
29
  if not os.getenv(ENV):
28
30
  pytest.skip(REASON)
29
31
  else:
@@ -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
 
@@ -77,6 +77,7 @@ class TestInstall:
77
77
  fetch=False,
78
78
  clean=False,
79
79
  skip_changes=False,
80
+ skip_scripts=False,
80
81
  skip_default_group=False,
81
82
  )
82
83
 
@@ -93,6 +94,7 @@ class TestInstall:
93
94
  fetch=False,
94
95
  clean=False,
95
96
  skip_changes=False,
97
+ skip_scripts=False,
96
98
  skip_default_group=False,
97
99
  )
98
100
 
@@ -109,6 +111,7 @@ class TestInstall:
109
111
  fetch=False,
110
112
  clean=False,
111
113
  skip_changes=False,
114
+ skip_scripts=False,
112
115
  skip_default_group=False,
113
116
  )
114
117
 
@@ -125,6 +128,7 @@ class TestInstall:
125
128
  fetch=True,
126
129
  clean=False,
127
130
  skip_changes=False,
131
+ skip_scripts=False,
128
132
  skip_default_group=False,
129
133
  )
130
134
 
@@ -141,6 +145,7 @@ class TestInstall:
141
145
  fetch=False,
142
146
  clean=True,
143
147
  skip_changes=False,
148
+ skip_scripts=False,
144
149
  skip_default_group=False,
145
150
  )
146
151
 
@@ -159,6 +164,7 @@ class TestInstall:
159
164
  fetch=False,
160
165
  clean=False,
161
166
  skip_changes=False,
167
+ skip_scripts=False,
162
168
  skip_default_group=False,
163
169
  )
164
170
 
@@ -175,6 +181,7 @@ class TestInstall:
175
181
  fetch=False,
176
182
  clean=False,
177
183
  skip_changes=False,
184
+ skip_scripts=False,
178
185
  skip_default_group=False,
179
186
  )
180
187
 
@@ -204,6 +211,7 @@ class TestUpdate:
204
211
  recurse=False,
205
212
  lock=None,
206
213
  skip_changes=False,
214
+ skip_scripts=False,
207
215
  )
208
216
 
209
217
  @patch("gitman.commands.update")
@@ -220,6 +228,7 @@ class TestUpdate:
220
228
  recurse=True,
221
229
  lock=None,
222
230
  skip_changes=False,
231
+ skip_scripts=False,
223
232
  )
224
233
 
225
234
  @patch("gitman.commands.update")
@@ -236,6 +245,7 @@ class TestUpdate:
236
245
  recurse=False,
237
246
  lock=False,
238
247
  skip_changes=False,
248
+ skip_scripts=False,
239
249
  )
240
250
 
241
251
  @patch("gitman.commands.update")
@@ -252,6 +262,7 @@ class TestUpdate:
252
262
  recurse=False,
253
263
  lock=None,
254
264
  skip_changes=True,
265
+ skip_scripts=False,
255
266
  )
256
267
 
257
268
  @patch("gitman.commands.update")
@@ -268,6 +279,7 @@ class TestUpdate:
268
279
  recurse=False,
269
280
  lock=None,
270
281
  skip_changes=False,
282
+ skip_scripts=False,
271
283
  )
272
284
 
273
285
  @patch("gitman.commands.update")
@@ -284,6 +296,7 @@ class TestUpdate:
284
296
  recurse=False,
285
297
  lock=None,
286
298
  skip_changes=False,
299
+ skip_scripts=False,
287
300
  )
288
301
 
289
302
  @patch("gitman.commands.update")
@@ -302,6 +315,7 @@ class TestUpdate:
302
315
  recurse=False,
303
316
  lock=None,
304
317
  skip_changes=False,
318
+ skip_scripts=False,
305
319
  )
306
320
 
307
321
  @patch("gitman.commands.update")
@@ -318,6 +332,7 @@ class TestUpdate:
318
332
  recurse=False,
319
333
  lock=None,
320
334
  skip_changes=False,
335
+ skip_scripts=False,
321
336
  )
322
337
 
323
338
 
@@ -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,12 +1,9 @@
1
- # pylint: disable=no-self-use
2
-
3
1
  from unittest.mock import call, patch
4
2
 
5
3
  from gitman import plugin
6
4
 
7
5
 
8
6
  class TestMain:
9
-
10
7
  """Unit tests for the top-level arguments."""
11
8
 
12
9
  @patch("gitman.cli.commands")
@@ -25,6 +22,7 @@ class TestMain:
25
22
  force=False,
26
23
  force_interactive=False,
27
24
  skip_changes=False,
25
+ skip_scripts=False,
28
26
  skip_default_group=False,
29
27
  ),
30
28
  call.install().__bool__(), # command status check
@@ -47,6 +45,7 @@ class TestMain:
47
45
  recurse=False,
48
46
  lock=True,
49
47
  skip_changes=False,
48
+ skip_scripts=False,
50
49
  ),
51
50
  call.update().__bool__(), # command status check
52
51
  ] == mock_commands.mock_calls
@@ -68,6 +67,7 @@ class TestMain:
68
67
  recurse=True,
69
68
  lock=True,
70
69
  skip_changes=False,
70
+ skip_scripts=False,
71
71
  ),
72
72
  call.update().__bool__(), # command status check
73
73
  ] == mock_commands.mock_calls
@@ -89,6 +89,7 @@ class TestMain:
89
89
  recurse=False,
90
90
  lock=False,
91
91
  skip_changes=False,
92
+ skip_scripts=False,
92
93
  ),
93
94
  call.update().__bool__(), # command status check
94
95
  ] == mock_commands.mock_calls
@@ -110,6 +111,7 @@ class TestMain:
110
111
  recurse=False,
111
112
  lock=True,
112
113
  skip_changes=True,
114
+ skip_scripts=False,
113
115
  ),
114
116
  call.update().__bool__(), # command status check
115
117
  ] == mock_commands.mock_calls
@@ -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.1b1"
4
+ version = "3.5"
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
- pygments = "^2.7.4"
79
- jinja2 = "~3.0.3"
78
+ pygments = "^2.15.0"
79
+ jinja2 = "~3.1.3"
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