scmrepo 3.5.1__tar.gz → 3.5.2__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.

Potentially problematic release.


This version of scmrepo might be problematic. Click here for more details.

Files changed (73) hide show
  1. {scmrepo-3.5.1 → scmrepo-3.5.2}/.github/workflows/tests.yaml +9 -0
  2. {scmrepo-3.5.1 → scmrepo-3.5.2}/.pre-commit-config.yaml +1 -1
  3. {scmrepo-3.5.1/src/scmrepo.egg-info → scmrepo-3.5.2}/PKG-INFO +3 -3
  4. {scmrepo-3.5.1 → scmrepo-3.5.2}/pyproject.toml +2 -3
  5. {scmrepo-3.5.1 → scmrepo-3.5.2}/src/scmrepo/base.py +4 -0
  6. {scmrepo-3.5.1 → scmrepo-3.5.2}/src/scmrepo/git/__init__.py +1 -0
  7. {scmrepo-3.5.1 → scmrepo-3.5.2}/src/scmrepo/git/backend/dulwich/__init__.py +3 -15
  8. {scmrepo-3.5.1 → scmrepo-3.5.2}/src/scmrepo/git/backend/gitpython.py +3 -0
  9. {scmrepo-3.5.1 → scmrepo-3.5.2}/src/scmrepo/git/backend/pygit2/__init__.py +8 -0
  10. {scmrepo-3.5.1 → scmrepo-3.5.2/src/scmrepo.egg-info}/PKG-INFO +3 -3
  11. {scmrepo-3.5.1 → scmrepo-3.5.2}/src/scmrepo.egg-info/requires.txt +2 -2
  12. {scmrepo-3.5.1 → scmrepo-3.5.2}/.coveragerc +0 -0
  13. {scmrepo-3.5.1 → scmrepo-3.5.2}/.cruft.json +0 -0
  14. {scmrepo-3.5.1 → scmrepo-3.5.2}/.gitattributes +0 -0
  15. {scmrepo-3.5.1 → scmrepo-3.5.2}/.github/dependabot.yml +0 -0
  16. {scmrepo-3.5.1 → scmrepo-3.5.2}/.github/workflows/release.yaml +0 -0
  17. {scmrepo-3.5.1 → scmrepo-3.5.2}/.github/workflows/update-template.yaml +0 -0
  18. {scmrepo-3.5.1 → scmrepo-3.5.2}/.gitignore +0 -0
  19. {scmrepo-3.5.1 → scmrepo-3.5.2}/CODE_OF_CONDUCT.rst +0 -0
  20. {scmrepo-3.5.1 → scmrepo-3.5.2}/CONTRIBUTING.rst +0 -0
  21. {scmrepo-3.5.1 → scmrepo-3.5.2}/LICENSE +0 -0
  22. {scmrepo-3.5.1 → scmrepo-3.5.2}/README.rst +0 -0
  23. {scmrepo-3.5.1 → scmrepo-3.5.2}/noxfile.py +0 -0
  24. {scmrepo-3.5.1 → scmrepo-3.5.2}/setup.cfg +0 -0
  25. {scmrepo-3.5.1 → scmrepo-3.5.2}/src/scmrepo/__init__.py +0 -0
  26. {scmrepo-3.5.1 → scmrepo-3.5.2}/src/scmrepo/asyn.py +0 -0
  27. {scmrepo-3.5.1 → scmrepo-3.5.2}/src/scmrepo/exceptions.py +0 -0
  28. {scmrepo-3.5.1 → scmrepo-3.5.2}/src/scmrepo/fs.py +0 -0
  29. {scmrepo-3.5.1 → scmrepo-3.5.2}/src/scmrepo/git/backend/__init__.py +0 -0
  30. {scmrepo-3.5.1 → scmrepo-3.5.2}/src/scmrepo/git/backend/base.py +0 -0
  31. {scmrepo-3.5.1 → scmrepo-3.5.2}/src/scmrepo/git/backend/dulwich/asyncssh_vendor.py +0 -0
  32. {scmrepo-3.5.1 → scmrepo-3.5.2}/src/scmrepo/git/backend/dulwich/client.py +0 -0
  33. {scmrepo-3.5.1 → scmrepo-3.5.2}/src/scmrepo/git/backend/pygit2/callbacks.py +0 -0
  34. {scmrepo-3.5.1 → scmrepo-3.5.2}/src/scmrepo/git/backend/pygit2/filter.py +0 -0
  35. {scmrepo-3.5.1 → scmrepo-3.5.2}/src/scmrepo/git/config.py +0 -0
  36. {scmrepo-3.5.1 → scmrepo-3.5.2}/src/scmrepo/git/credentials.py +0 -0
  37. {scmrepo-3.5.1 → scmrepo-3.5.2}/src/scmrepo/git/lfs/__init__.py +0 -0
  38. {scmrepo-3.5.1 → scmrepo-3.5.2}/src/scmrepo/git/lfs/client.py +0 -0
  39. {scmrepo-3.5.1 → scmrepo-3.5.2}/src/scmrepo/git/lfs/exceptions.py +0 -0
  40. {scmrepo-3.5.1 → scmrepo-3.5.2}/src/scmrepo/git/lfs/fetch.py +0 -0
  41. {scmrepo-3.5.1 → scmrepo-3.5.2}/src/scmrepo/git/lfs/object.py +0 -0
  42. {scmrepo-3.5.1 → scmrepo-3.5.2}/src/scmrepo/git/lfs/pointer.py +0 -0
  43. {scmrepo-3.5.1 → scmrepo-3.5.2}/src/scmrepo/git/lfs/progress.py +0 -0
  44. {scmrepo-3.5.1 → scmrepo-3.5.2}/src/scmrepo/git/lfs/smudge.py +0 -0
  45. {scmrepo-3.5.1 → scmrepo-3.5.2}/src/scmrepo/git/lfs/storage.py +0 -0
  46. {scmrepo-3.5.1 → scmrepo-3.5.2}/src/scmrepo/git/objects.py +0 -0
  47. {scmrepo-3.5.1 → scmrepo-3.5.2}/src/scmrepo/git/stash.py +0 -0
  48. {scmrepo-3.5.1 → scmrepo-3.5.2}/src/scmrepo/noscm.py +0 -0
  49. {scmrepo-3.5.1 → scmrepo-3.5.2}/src/scmrepo/progress.py +0 -0
  50. {scmrepo-3.5.1 → scmrepo-3.5.2}/src/scmrepo/py.typed +0 -0
  51. {scmrepo-3.5.1 → scmrepo-3.5.2}/src/scmrepo/urls.py +0 -0
  52. {scmrepo-3.5.1 → scmrepo-3.5.2}/src/scmrepo/utils.py +0 -0
  53. {scmrepo-3.5.1 → scmrepo-3.5.2}/src/scmrepo.egg-info/SOURCES.txt +0 -0
  54. {scmrepo-3.5.1 → scmrepo-3.5.2}/src/scmrepo.egg-info/dependency_links.txt +0 -0
  55. {scmrepo-3.5.1 → scmrepo-3.5.2}/src/scmrepo.egg-info/top_level.txt +0 -0
  56. {scmrepo-3.5.1 → scmrepo-3.5.2}/tests/__init__.py +0 -0
  57. {scmrepo-3.5.1 → scmrepo-3.5.2}/tests/conftest.py +0 -0
  58. {scmrepo-3.5.1 → scmrepo-3.5.2}/tests/docker-compose.yml +0 -0
  59. {scmrepo-3.5.1 → scmrepo-3.5.2}/tests/git-init/git.sh +0 -0
  60. {scmrepo-3.5.1 → scmrepo-3.5.2}/tests/test_credentials.py +0 -0
  61. {scmrepo-3.5.1 → scmrepo-3.5.2}/tests/test_dulwich.py +0 -0
  62. {scmrepo-3.5.1 → scmrepo-3.5.2}/tests/test_fs.py +0 -0
  63. {scmrepo-3.5.1 → scmrepo-3.5.2}/tests/test_git.py +0 -0
  64. {scmrepo-3.5.1 → scmrepo-3.5.2}/tests/test_lfs.py +0 -0
  65. {scmrepo-3.5.1 → scmrepo-3.5.2}/tests/test_noscm.py +0 -0
  66. {scmrepo-3.5.1 → scmrepo-3.5.2}/tests/test_pygit2.py +0 -0
  67. {scmrepo-3.5.1 → scmrepo-3.5.2}/tests/test_scmrepo.py +0 -0
  68. {scmrepo-3.5.1 → scmrepo-3.5.2}/tests/test_stash.py +0 -0
  69. {scmrepo-3.5.1 → scmrepo-3.5.2}/tests/test_urls.py +0 -0
  70. {scmrepo-3.5.1 → scmrepo-3.5.2}/tests/user.key +0 -0
  71. {scmrepo-3.5.1 → scmrepo-3.5.2}/tests/user.key.pub +0 -0
  72. {scmrepo-3.5.1 → scmrepo-3.5.2}/tests/vendor/__init__.py +0 -0
  73. {scmrepo-3.5.1 → scmrepo-3.5.2}/tests/vendor/test_paramiko_vendor.py +0 -0
@@ -52,3 +52,12 @@ jobs:
52
52
 
53
53
  - name: Build package
54
54
  run: nox -s build
55
+
56
+ check:
57
+ if: always()
58
+ needs: [tests]
59
+ runs-on: ubuntu-latest
60
+ steps:
61
+ - uses: re-actors/alls-green@release/v1
62
+ with:
63
+ jobs: ${{ toJSON(needs) }}
@@ -20,7 +20,7 @@ repos:
20
20
  - id: sort-simple-yaml
21
21
  - id: trailing-whitespace
22
22
  - repo: https://github.com/astral-sh/ruff-pre-commit
23
- rev: 'v0.12.5'
23
+ rev: 'v0.12.7'
24
24
  hooks:
25
25
  - id: ruff-check
26
26
  args: [--fix, --exit-non-zero-on-fix]
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: scmrepo
3
- Version: 3.5.1
3
+ Version: 3.5.2
4
4
  Summary: scmrepo
5
5
  Author-email: Iterative <support@dvc.org>
6
6
  License-Expression: Apache-2.0
@@ -28,7 +28,7 @@ Requires-Dist: aiohttp-retry>=2.5.0
28
28
  Requires-Dist: tqdm
29
29
  Provides-Extra: tests
30
30
  Requires-Dist: aioresponses<0.8,>=0.7; extra == "tests"
31
- Requires-Dist: paramiko<4,>=3.4.0; extra == "tests"
31
+ Requires-Dist: paramiko<5,>=3.4.0; extra == "tests"
32
32
  Requires-Dist: pytest<9,>=7; extra == "tests"
33
33
  Requires-Dist: pytest-asyncio<2,>=0.23.2; extra == "tests"
34
34
  Requires-Dist: pytest-cov>=4.1.0; extra == "tests"
@@ -38,7 +38,7 @@ Requires-Dist: pytest-sugar; extra == "tests"
38
38
  Requires-Dist: pytest-test-utils<0.2,>=0.1.0; extra == "tests"
39
39
  Requires-Dist: proxy.py; extra == "tests"
40
40
  Provides-Extra: dev
41
- Requires-Dist: mypy==1.17.0; extra == "dev"
41
+ Requires-Dist: mypy==1.17.1; extra == "dev"
42
42
  Requires-Dist: scmrepo[tests]; extra == "dev"
43
43
  Requires-Dist: types-certifi; extra == "dev"
44
44
  Requires-Dist: types-mock; extra == "dev"
@@ -9,7 +9,6 @@ name = "scmrepo"
9
9
  description = "scmrepo"
10
10
  readme = "README.rst"
11
11
  license = "Apache-2.0"
12
- license-files = ["LICENSE"]
13
12
  authors = [{ name = "Iterative", email = "support@dvc.org" }]
14
13
  classifiers = [
15
14
  "Programming Language :: Python :: 3",
@@ -42,7 +41,7 @@ Source = "https://github.com/iterative/scmrepo"
42
41
  [project.optional-dependencies]
43
42
  tests = [
44
43
  "aioresponses>=0.7,<0.8",
45
- "paramiko>=3.4.0,<4",
44
+ "paramiko>=3.4.0,<5",
46
45
  "pytest>=7,<9",
47
46
  "pytest-asyncio>=0.23.2,<2",
48
47
  "pytest-cov>=4.1.0",
@@ -53,7 +52,7 @@ tests = [
53
52
  "proxy.py",
54
53
  ]
55
54
  dev = [
56
- "mypy==1.17.0",
55
+ "mypy==1.17.1",
57
56
  "scmrepo[tests]",
58
57
  "types-certifi",
59
58
  "types-mock",
@@ -103,3 +103,7 @@ class Base(AbstractContextManager):
103
103
 
104
104
  def _reset(self) -> None:
105
105
  pass
106
+
107
+ def list_submodules(self) -> list[str]:
108
+ """Returns a list of submodules in the repo."""
109
+ return []
@@ -412,6 +412,7 @@ class Git(Base):
412
412
  check_attr = partialmethod(_backend_func, "check_attr")
413
413
 
414
414
  get_tree_obj = partialmethod(_backend_func, "get_tree_obj")
415
+ list_submodules = partialmethod(_backend_func, "list_submodules")
415
416
 
416
417
  def branch_revs(self, branch: str, end_rev: Optional[str] = None) -> Iterable[str]:
417
418
  """Iterate over revisions in a given branch (from newest to oldest).
@@ -199,6 +199,9 @@ class DulwichBackend(BaseGitBackend): # pylint:disable=abstract-method
199
199
  self._submodules: dict[str, str] = self._find_submodules()
200
200
  self._stashes: dict = {}
201
201
 
202
+ def list_submodules(self) -> list[str]:
203
+ raise NotImplementedError
204
+
202
205
  def _find_submodules(self) -> dict[str, str]:
203
206
  """Return dict mapping submodule names to submodule paths.
204
207
 
@@ -349,21 +352,6 @@ class DulwichBackend(BaseGitBackend): # pylint:disable=abstract-method
349
352
 
350
353
  def _expand_paths(self, paths: list[str], force: bool = False) -> Iterator[str]:
351
354
  for path in paths:
352
- if not os.path.isabs(path) and self._submodules:
353
- # NOTE: If path is inside a submodule, Dulwich expects the
354
- # staged paths to be relative to the submodule root (not the
355
- # parent git repo root). We append path to root_dir here so
356
- # that the result of relpath(path, root_dir) is actually the
357
- # path relative to the submodule root.
358
- fs_path = relpath(path, self.root_dir)
359
- for sm_path in self._submodules.values():
360
- assert self.root_dir
361
- if fs_path.startswith(sm_path):
362
- path = os.path.join(
363
- self.root_dir,
364
- relpath(fs_path, sm_path),
365
- )
366
- break
367
355
  if os.path.isdir(path):
368
356
  for root, _, fs in os.walk(path):
369
357
  for fpath in fs:
@@ -789,3 +789,6 @@ class GitPythonBackend(BaseGitBackend): # pylint:disable=abstract-method
789
789
  if info == "unset":
790
790
  return False
791
791
  return info
792
+
793
+ def list_submodules(self) -> list[str]:
794
+ raise NotImplementedError
@@ -269,6 +269,9 @@ class Pygit2Backend(BaseGitBackend): # pylint:disable=abstract-method
269
269
  # can be reacquired later as needed.
270
270
  self.repo.free()
271
271
 
272
+ def list_submodules(self) -> list[str]:
273
+ return self.repo.listall_submodules()
274
+
272
275
  @classmethod
273
276
  def clone(
274
277
  cls,
@@ -865,6 +868,11 @@ class Pygit2Backend(BaseGitBackend): # pylint:disable=abstract-method
865
868
  from pygit2 import IndexEntry
866
869
  from pygit2.enums import ResetMode
867
870
 
871
+ if self.list_submodules():
872
+ raise NotImplementedError(
873
+ "pygit2 seems to remove files from submodules on reset"
874
+ )
875
+
868
876
  self.repo.index.read(False) # type: ignore[attr-defined]
869
877
  if paths is not None:
870
878
  tree = self.repo.revparse_single("HEAD").tree # type: ignore[attr-defined]
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: scmrepo
3
- Version: 3.5.1
3
+ Version: 3.5.2
4
4
  Summary: scmrepo
5
5
  Author-email: Iterative <support@dvc.org>
6
6
  License-Expression: Apache-2.0
@@ -28,7 +28,7 @@ Requires-Dist: aiohttp-retry>=2.5.0
28
28
  Requires-Dist: tqdm
29
29
  Provides-Extra: tests
30
30
  Requires-Dist: aioresponses<0.8,>=0.7; extra == "tests"
31
- Requires-Dist: paramiko<4,>=3.4.0; extra == "tests"
31
+ Requires-Dist: paramiko<5,>=3.4.0; extra == "tests"
32
32
  Requires-Dist: pytest<9,>=7; extra == "tests"
33
33
  Requires-Dist: pytest-asyncio<2,>=0.23.2; extra == "tests"
34
34
  Requires-Dist: pytest-cov>=4.1.0; extra == "tests"
@@ -38,7 +38,7 @@ Requires-Dist: pytest-sugar; extra == "tests"
38
38
  Requires-Dist: pytest-test-utils<0.2,>=0.1.0; extra == "tests"
39
39
  Requires-Dist: proxy.py; extra == "tests"
40
40
  Provides-Extra: dev
41
- Requires-Dist: mypy==1.17.0; extra == "dev"
41
+ Requires-Dist: mypy==1.17.1; extra == "dev"
42
42
  Requires-Dist: scmrepo[tests]; extra == "dev"
43
43
  Requires-Dist: types-certifi; extra == "dev"
44
44
  Requires-Dist: types-mock; extra == "dev"
@@ -10,7 +10,7 @@ aiohttp-retry>=2.5.0
10
10
  tqdm
11
11
 
12
12
  [dev]
13
- mypy==1.17.0
13
+ mypy==1.17.1
14
14
  scmrepo[tests]
15
15
  types-certifi
16
16
  types-mock
@@ -19,7 +19,7 @@ types-tqdm
19
19
 
20
20
  [tests]
21
21
  aioresponses<0.8,>=0.7
22
- paramiko<4,>=3.4.0
22
+ paramiko<5,>=3.4.0
23
23
  pytest<9,>=7
24
24
  pytest-asyncio<2,>=0.23.2
25
25
  pytest-cov>=4.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
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