gitbolt 0.0.0.dev22__tar.gz → 0.0.0.dev24__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.
- {gitbolt-0.0.0.dev22 → gitbolt-0.0.0.dev24}/PKG-INFO +17 -10
- {gitbolt-0.0.0.dev22 → gitbolt-0.0.0.dev24}/README.md +16 -9
- {gitbolt-0.0.0.dev22 → gitbolt-0.0.0.dev24}/pyproject.toml +1 -1
- {gitbolt-0.0.0.dev22 → gitbolt-0.0.0.dev24}/src/gitbolt/__init__.py +1 -1
- {gitbolt-0.0.0.dev22 → gitbolt-0.0.0.dev24}/src/gitbolt/base.py +54 -17
- {gitbolt-0.0.0.dev22 → gitbolt-0.0.0.dev24}/src/gitbolt/subprocess/base.py +275 -9
- gitbolt-0.0.0.dev24/src/gitbolt/subprocess/constants.py +22 -0
- {gitbolt-0.0.0.dev22 → gitbolt-0.0.0.dev24}/src/gitbolt/subprocess/impl/simple.py +92 -63
- gitbolt-0.0.0.dev22/src/gitbolt/subprocess/utils/cmd.py → gitbolt-0.0.0.dev24/src/gitbolt/subprocess/utils/main_cmd.py +37 -0
- {gitbolt-0.0.0.dev22 → gitbolt-0.0.0.dev24}/src/gitbolt/subprocess/utils/session.py +2 -2
- {gitbolt-0.0.0.dev22 → gitbolt-0.0.0.dev24}/src/gitbolt/subprocess/worktree.py +10 -17
- {gitbolt-0.0.0.dev22 → gitbolt-0.0.0.dev24}/src/gitbolt.egg-info/PKG-INFO +17 -10
- {gitbolt-0.0.0.dev22 → gitbolt-0.0.0.dev24}/src/gitbolt.egg-info/SOURCES.txt +1 -1
- gitbolt-0.0.0.dev22/src/gitbolt/subprocess/constants.py +0 -13
- {gitbolt-0.0.0.dev22 → gitbolt-0.0.0.dev24}/LICENSE +0 -0
- {gitbolt-0.0.0.dev22 → gitbolt-0.0.0.dev24}/setup.cfg +0 -0
- {gitbolt-0.0.0.dev22 → gitbolt-0.0.0.dev24}/src/gitbolt/_internal_init.py +0 -0
- {gitbolt-0.0.0.dev22 → gitbolt-0.0.0.dev24}/src/gitbolt/add.py +0 -0
- {gitbolt-0.0.0.dev22 → gitbolt-0.0.0.dev24}/src/gitbolt/constants.py +0 -0
- {gitbolt-0.0.0.dev22 → gitbolt-0.0.0.dev24}/src/gitbolt/exceptions.py +0 -0
- {gitbolt-0.0.0.dev22 → gitbolt-0.0.0.dev24}/src/gitbolt/ls_tree.py +0 -0
- {gitbolt-0.0.0.dev22 → gitbolt-0.0.0.dev24}/src/gitbolt/models.py +0 -0
- {gitbolt-0.0.0.dev22 → gitbolt-0.0.0.dev24}/src/gitbolt/py.typed +0 -0
- {gitbolt-0.0.0.dev22 → gitbolt-0.0.0.dev24}/src/gitbolt/pytest_plugin.py +0 -0
- {gitbolt-0.0.0.dev22 → gitbolt-0.0.0.dev24}/src/gitbolt/subprocess/__init__.py +0 -0
- {gitbolt-0.0.0.dev22 → gitbolt-0.0.0.dev24}/src/gitbolt/subprocess/_internal_init.py +0 -0
- {gitbolt-0.0.0.dev22 → gitbolt-0.0.0.dev24}/src/gitbolt/subprocess/add.py +0 -0
- {gitbolt-0.0.0.dev22 → gitbolt-0.0.0.dev24}/src/gitbolt/subprocess/exceptions.py +0 -0
- {gitbolt-0.0.0.dev22 → gitbolt-0.0.0.dev24}/src/gitbolt/subprocess/impl/__init__.py +0 -0
- {gitbolt-0.0.0.dev22 → gitbolt-0.0.0.dev24}/src/gitbolt/subprocess/ls_tree.py +0 -0
- {gitbolt-0.0.0.dev22 → gitbolt-0.0.0.dev24}/src/gitbolt/subprocess/runner/__init__.py +0 -0
- {gitbolt-0.0.0.dev22 → gitbolt-0.0.0.dev24}/src/gitbolt/subprocess/runner/base.py +0 -0
- {gitbolt-0.0.0.dev22 → gitbolt-0.0.0.dev24}/src/gitbolt/subprocess/runner/simple.py +0 -0
- {gitbolt-0.0.0.dev22 → gitbolt-0.0.0.dev24}/src/gitbolt/subprocess/utils/__init__.py +0 -0
- {gitbolt-0.0.0.dev22 → gitbolt-0.0.0.dev24}/src/gitbolt/subprocess/utils/models.py +0 -0
- {gitbolt-0.0.0.dev22 → gitbolt-0.0.0.dev24}/src/gitbolt/utils.py +0 -0
- {gitbolt-0.0.0.dev22 → gitbolt-0.0.0.dev24}/src/gitbolt.egg-info/dependency_links.txt +0 -0
- {gitbolt-0.0.0.dev22 → gitbolt-0.0.0.dev24}/src/gitbolt.egg-info/entry_points.txt +0 -0
- {gitbolt-0.0.0.dev22 → gitbolt-0.0.0.dev24}/src/gitbolt.egg-info/requires.txt +0 -0
- {gitbolt-0.0.0.dev22 → gitbolt-0.0.0.dev24}/src/gitbolt.egg-info/top_level.txt +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: gitbolt
|
|
3
|
-
Version: 0.0.0.
|
|
3
|
+
Version: 0.0.0.dev24
|
|
4
4
|
Summary: Fast, flexible and type-safe Git commands in Python.
|
|
5
5
|
Author-email: Suhas Krishna Srivastava <suhas.srivastava@vaastav.tech>
|
|
6
6
|
Maintainer-email: Suhas Krishna Srivastava <suhas.srivastava@vaastav.tech>
|
|
@@ -116,8 +116,8 @@ Gitbolt lets you pass subcommands around as typed objects. This enables highly f
|
|
|
116
116
|
import gitbolt
|
|
117
117
|
|
|
118
118
|
git = gitbolt.get_git()
|
|
119
|
-
version_subcmd = git.version_subcmd
|
|
120
|
-
add_subcmd = git.add_subcmd
|
|
119
|
+
version_subcmd = git.version_subcmd()
|
|
120
|
+
add_subcmd = git.add_subcmd()
|
|
121
121
|
|
|
122
122
|
def method_which_only_adds_a_file(add_subcmd: gitbolt.base.Add):
|
|
123
123
|
"""
|
|
@@ -138,7 +138,7 @@ git subcommands are modeled as terminal functions that return stdout.
|
|
|
138
138
|
import gitbolt
|
|
139
139
|
|
|
140
140
|
git = gitbolt.get_git()
|
|
141
|
-
version_stdout = git.version_subcmd.version().version()
|
|
141
|
+
version_stdout = git.version_subcmd().version().version()
|
|
142
142
|
print(version_stdout)
|
|
143
143
|
```
|
|
144
144
|
|
|
@@ -153,8 +153,8 @@ particular commands.
|
|
|
153
153
|
from gitbolt import get_git
|
|
154
154
|
|
|
155
155
|
git = get_git() # get git object for the current working directory
|
|
156
|
-
add_subcmd = git.add_subcmd
|
|
157
|
-
ls_tree_subcmd = git.ls_tree_subcmd
|
|
156
|
+
add_subcmd = git.add_subcmd()
|
|
157
|
+
ls_tree_subcmd = git.ls_tree_subcmd()
|
|
158
158
|
|
|
159
159
|
# now, functions can be written to accept only the required subcommands and nothing more than that.
|
|
160
160
|
```
|
|
@@ -338,8 +338,8 @@ import gitbolt
|
|
|
338
338
|
|
|
339
339
|
git = gitbolt.get_git_command()
|
|
340
340
|
git = git.git_opts_override(no_advice=True)
|
|
341
|
-
git.subcmd_unchecked.run(['--version']) # run the version option for git.
|
|
342
|
-
git.subcmd_unchecked.run(['version']) # run the version subcommand.
|
|
341
|
+
git.subcmd_unchecked().run(['--version']) # run the version option for git.
|
|
342
|
+
git.subcmd_unchecked().run(['version']) # run the version subcommand.
|
|
343
343
|
```
|
|
344
344
|
|
|
345
345
|
#### 🖥️ Run one long-running process and communicate with it
|
|
@@ -354,7 +354,7 @@ import gitbolt
|
|
|
354
354
|
import sys
|
|
355
355
|
|
|
356
356
|
git = gitbolt.get_git_command()
|
|
357
|
-
with git.subcmd_unchecked.popen(["cat-file", "--batch-command"]) as cf:
|
|
357
|
+
with git.subcmd_unchecked().popen(["cat-file", "--batch-command"]) as cf:
|
|
358
358
|
cf.stdin.write(b"contents HEAD\n")
|
|
359
359
|
cf.stdin.flush()
|
|
360
360
|
header = cf.stdout.readline().strip()
|
|
@@ -384,7 +384,7 @@ git = gitbolt.get_git_command()
|
|
|
384
384
|
with git.session(
|
|
385
385
|
cat_file1=["cat-file", "--batch"],
|
|
386
386
|
cat_file2=["cat-file", "--batch"],
|
|
387
|
-
cat_file3=lambda: git.subcmd_unchecked.popen(["cat-file", "--batch"]), # pass your own git subcmd Popen(s)
|
|
387
|
+
cat_file3=lambda: git.subcmd_unchecked().popen(["cat-file", "--batch"]), # pass your own git subcmd Popen(s)
|
|
388
388
|
mktree=["mktree", "--batch", "-z"]
|
|
389
389
|
) as ses: # reusable and reentrant session
|
|
390
390
|
tree_data: list[bytes] = []
|
|
@@ -430,6 +430,13 @@ Transformers for formatting/parsing can be added later.
|
|
|
430
430
|
|
|
431
431
|
---
|
|
432
432
|
|
|
433
|
+
## Notes
|
|
434
|
+
|
|
435
|
+
|
|
436
|
+
- 0.0.0.dev24: `worktree` implementations are not stable yet. Use `subcmd_unchecked` directly.
|
|
437
|
+
|
|
438
|
+
---
|
|
439
|
+
|
|
433
440
|
## ✅ Benefits Out-of-the-Box
|
|
434
441
|
|
|
435
442
|
* 🔄 Composable Git commands.
|
|
@@ -80,8 +80,8 @@ Gitbolt lets you pass subcommands around as typed objects. This enables highly f
|
|
|
80
80
|
import gitbolt
|
|
81
81
|
|
|
82
82
|
git = gitbolt.get_git()
|
|
83
|
-
version_subcmd = git.version_subcmd
|
|
84
|
-
add_subcmd = git.add_subcmd
|
|
83
|
+
version_subcmd = git.version_subcmd()
|
|
84
|
+
add_subcmd = git.add_subcmd()
|
|
85
85
|
|
|
86
86
|
def method_which_only_adds_a_file(add_subcmd: gitbolt.base.Add):
|
|
87
87
|
"""
|
|
@@ -102,7 +102,7 @@ git subcommands are modeled as terminal functions that return stdout.
|
|
|
102
102
|
import gitbolt
|
|
103
103
|
|
|
104
104
|
git = gitbolt.get_git()
|
|
105
|
-
version_stdout = git.version_subcmd.version().version()
|
|
105
|
+
version_stdout = git.version_subcmd().version().version()
|
|
106
106
|
print(version_stdout)
|
|
107
107
|
```
|
|
108
108
|
|
|
@@ -117,8 +117,8 @@ particular commands.
|
|
|
117
117
|
from gitbolt import get_git
|
|
118
118
|
|
|
119
119
|
git = get_git() # get git object for the current working directory
|
|
120
|
-
add_subcmd = git.add_subcmd
|
|
121
|
-
ls_tree_subcmd = git.ls_tree_subcmd
|
|
120
|
+
add_subcmd = git.add_subcmd()
|
|
121
|
+
ls_tree_subcmd = git.ls_tree_subcmd()
|
|
122
122
|
|
|
123
123
|
# now, functions can be written to accept only the required subcommands and nothing more than that.
|
|
124
124
|
```
|
|
@@ -302,8 +302,8 @@ import gitbolt
|
|
|
302
302
|
|
|
303
303
|
git = gitbolt.get_git_command()
|
|
304
304
|
git = git.git_opts_override(no_advice=True)
|
|
305
|
-
git.subcmd_unchecked.run(['--version']) # run the version option for git.
|
|
306
|
-
git.subcmd_unchecked.run(['version']) # run the version subcommand.
|
|
305
|
+
git.subcmd_unchecked().run(['--version']) # run the version option for git.
|
|
306
|
+
git.subcmd_unchecked().run(['version']) # run the version subcommand.
|
|
307
307
|
```
|
|
308
308
|
|
|
309
309
|
#### 🖥️ Run one long-running process and communicate with it
|
|
@@ -318,7 +318,7 @@ import gitbolt
|
|
|
318
318
|
import sys
|
|
319
319
|
|
|
320
320
|
git = gitbolt.get_git_command()
|
|
321
|
-
with git.subcmd_unchecked.popen(["cat-file", "--batch-command"]) as cf:
|
|
321
|
+
with git.subcmd_unchecked().popen(["cat-file", "--batch-command"]) as cf:
|
|
322
322
|
cf.stdin.write(b"contents HEAD\n")
|
|
323
323
|
cf.stdin.flush()
|
|
324
324
|
header = cf.stdout.readline().strip()
|
|
@@ -348,7 +348,7 @@ git = gitbolt.get_git_command()
|
|
|
348
348
|
with git.session(
|
|
349
349
|
cat_file1=["cat-file", "--batch"],
|
|
350
350
|
cat_file2=["cat-file", "--batch"],
|
|
351
|
-
cat_file3=lambda: git.subcmd_unchecked.popen(["cat-file", "--batch"]), # pass your own git subcmd Popen(s)
|
|
351
|
+
cat_file3=lambda: git.subcmd_unchecked().popen(["cat-file", "--batch"]), # pass your own git subcmd Popen(s)
|
|
352
352
|
mktree=["mktree", "--batch", "-z"]
|
|
353
353
|
) as ses: # reusable and reentrant session
|
|
354
354
|
tree_data: list[bytes] = []
|
|
@@ -394,6 +394,13 @@ Transformers for formatting/parsing can be added later.
|
|
|
394
394
|
|
|
395
395
|
---
|
|
396
396
|
|
|
397
|
+
## Notes
|
|
398
|
+
|
|
399
|
+
|
|
400
|
+
- 0.0.0.dev24: `worktree` implementations are not stable yet. Use `subcmd_unchecked` directly.
|
|
401
|
+
|
|
402
|
+
---
|
|
403
|
+
|
|
397
404
|
## ✅ Benefits Out-of-the-Box
|
|
398
405
|
|
|
399
406
|
* 🔄 Composable Git commands.
|
|
@@ -71,7 +71,7 @@ def get_git_command(
|
|
|
71
71
|
|
|
72
72
|
* Get git version, as a git subcommand. Runs git in subprocess:
|
|
73
73
|
|
|
74
|
-
>>> assert git.subcmd_unchecked.run(["version"], text=True).stdout.strip() == subprocess.run(['git', 'version'], capture_output=True, text=True).stdout.strip()
|
|
74
|
+
>>> assert git.subcmd_unchecked().run(["version"], text=True).stdout.strip() == subprocess.run(['git', 'version'], capture_output=True, text=True).stdout.strip()
|
|
75
75
|
|
|
76
76
|
:param git_root_dir: Path to the git repo root directory. Defaults to current working directory.
|
|
77
77
|
:param git_prog: git program name/location. Useful when user wants to run a separate git version/git emulator.
|
|
@@ -131,7 +131,7 @@ class LsTree(GitSubCommand, RootDirOp, Protocol):
|
|
|
131
131
|
|
|
132
132
|
@override
|
|
133
133
|
def _subcmd_from_git(self, git: "Git") -> "LsTree":
|
|
134
|
-
return git.ls_tree_subcmd
|
|
134
|
+
return git.ls_tree_subcmd()
|
|
135
135
|
|
|
136
136
|
@property
|
|
137
137
|
def args_validator(self) -> LsTreeArgsValidator:
|
|
@@ -216,7 +216,7 @@ class Add(GitSubCommand, RootDirOp, Protocol):
|
|
|
216
216
|
|
|
217
217
|
@override
|
|
218
218
|
def _subcmd_from_git(self, git: "Git") -> "Add":
|
|
219
|
-
return git.add_subcmd
|
|
219
|
+
return git.add_subcmd()
|
|
220
220
|
|
|
221
221
|
|
|
222
222
|
class Version(GitSubCommand, Protocol):
|
|
@@ -283,7 +283,7 @@ class Version(GitSubCommand, Protocol):
|
|
|
283
283
|
|
|
284
284
|
@override
|
|
285
285
|
def _subcmd_from_git(self, git: "Git") -> "Version":
|
|
286
|
-
return git.version_subcmd
|
|
286
|
+
return git.version_subcmd()
|
|
287
287
|
|
|
288
288
|
|
|
289
289
|
class Worktree(GitSubCommand, RootDirOp, Protocol):
|
|
@@ -304,6 +304,22 @@ class Worktree(GitSubCommand, RootDirOp, Protocol):
|
|
|
304
304
|
"""
|
|
305
305
|
...
|
|
306
306
|
|
|
307
|
+
@abstractmethod
|
|
308
|
+
def clone(self) -> "Worktree.WorktreeSubcmd":
|
|
309
|
+
"""
|
|
310
|
+
:return: a clone of the underlying worktree subcommand.
|
|
311
|
+
"""
|
|
312
|
+
...
|
|
313
|
+
|
|
314
|
+
@abstractmethod
|
|
315
|
+
def _subcmd_from_worktree(self, worktree: "Worktree") -> "Worktree.WorktreeSubcmd":
|
|
316
|
+
"""
|
|
317
|
+
Protected. Intended for inheritance only.
|
|
318
|
+
|
|
319
|
+
:return: specific implementation of subcommand from ``worktree``.
|
|
320
|
+
"""
|
|
321
|
+
...
|
|
322
|
+
|
|
307
323
|
# region worktree list subcommands
|
|
308
324
|
class List(WorktreeSubcmd, Protocol):
|
|
309
325
|
"""
|
|
@@ -341,7 +357,10 @@ class Worktree(GitSubCommand, RootDirOp, Protocol):
|
|
|
341
357
|
"""
|
|
342
358
|
...
|
|
343
359
|
|
|
344
|
-
|
|
360
|
+
@override
|
|
361
|
+
def _subcmd_from_worktree(self, worktree: "Worktree") -> Worktree.List:
|
|
362
|
+
return worktree.list_subcmd()
|
|
363
|
+
|
|
345
364
|
@abstractmethod
|
|
346
365
|
def list_subcmd(self) -> Worktree.List:
|
|
347
366
|
"""
|
|
@@ -372,7 +391,10 @@ class Worktree(GitSubCommand, RootDirOp, Protocol):
|
|
|
372
391
|
"""
|
|
373
392
|
...
|
|
374
393
|
|
|
375
|
-
|
|
394
|
+
@override
|
|
395
|
+
def _subcmd_from_worktree(self, worktree: "Worktree") -> Worktree.Lock:
|
|
396
|
+
return worktree.lock_subcmd()
|
|
397
|
+
|
|
376
398
|
@abstractmethod
|
|
377
399
|
def lock_subcmd(self) -> Worktree.Lock:
|
|
378
400
|
"""
|
|
@@ -401,7 +423,10 @@ class Worktree(GitSubCommand, RootDirOp, Protocol):
|
|
|
401
423
|
"""
|
|
402
424
|
...
|
|
403
425
|
|
|
404
|
-
|
|
426
|
+
@override
|
|
427
|
+
def _subcmd_from_worktree(self, worktree: "Worktree") -> Worktree.UnLock:
|
|
428
|
+
return worktree.unlock_subcmd()
|
|
429
|
+
|
|
405
430
|
@abstractmethod
|
|
406
431
|
def unlock_subcmd(self) -> Worktree.UnLock:
|
|
407
432
|
"""
|
|
@@ -432,8 +457,12 @@ class Worktree(GitSubCommand, RootDirOp, Protocol):
|
|
|
432
457
|
:param relative_paths: `use relative paths for worktree <https://git-scm.com/docs/git-worktree#Documentation/git-worktree.txt---no-relative-paths>`_.
|
|
433
458
|
:return: output of ``git worktree move``.
|
|
434
459
|
"""
|
|
460
|
+
...
|
|
461
|
+
|
|
462
|
+
@override
|
|
463
|
+
def _subcmd_from_worktree(self, worktree: "Worktree") -> Worktree.Move:
|
|
464
|
+
return worktree.move_subcmd()
|
|
435
465
|
|
|
436
|
-
@property
|
|
437
466
|
@abstractmethod
|
|
438
467
|
def move_subcmd(self) -> Worktree.Move:
|
|
439
468
|
"""
|
|
@@ -467,7 +496,10 @@ class Worktree(GitSubCommand, RootDirOp, Protocol):
|
|
|
467
496
|
"""
|
|
468
497
|
...
|
|
469
498
|
|
|
470
|
-
|
|
499
|
+
@override
|
|
500
|
+
def _subcmd_from_worktree(self, worktree: "Worktree") -> Worktree.Prune:
|
|
501
|
+
return worktree.prune_subcmd()
|
|
502
|
+
|
|
471
503
|
@abstractmethod
|
|
472
504
|
def prune_subcmd(self) -> Worktree.Prune:
|
|
473
505
|
"""
|
|
@@ -497,7 +529,10 @@ class Worktree(GitSubCommand, RootDirOp, Protocol):
|
|
|
497
529
|
"""
|
|
498
530
|
...
|
|
499
531
|
|
|
500
|
-
|
|
532
|
+
@override
|
|
533
|
+
def _subcmd_from_worktree(self, worktree: "Worktree") -> Worktree.Remove:
|
|
534
|
+
return worktree.remove_subcmd()
|
|
535
|
+
|
|
501
536
|
@abstractmethod
|
|
502
537
|
def remove_subcmd(self) -> Worktree.Remove:
|
|
503
538
|
"""
|
|
@@ -526,7 +561,10 @@ class Worktree(GitSubCommand, RootDirOp, Protocol):
|
|
|
526
561
|
"""
|
|
527
562
|
...
|
|
528
563
|
|
|
529
|
-
|
|
564
|
+
@override
|
|
565
|
+
def _subcmd_from_worktree(self, worktree: "Worktree") -> Worktree.Repair:
|
|
566
|
+
return worktree.repair_subcmd()
|
|
567
|
+
|
|
530
568
|
@abstractmethod
|
|
531
569
|
def repair_subcmd(self) -> Worktree.Repair:
|
|
532
570
|
"""
|
|
@@ -586,8 +624,11 @@ class Worktree(GitSubCommand, RootDirOp, Protocol):
|
|
|
586
624
|
"""
|
|
587
625
|
...
|
|
588
626
|
|
|
627
|
+
@override
|
|
628
|
+
def _subcmd_from_worktree(self, worktree: "Worktree") -> Worktree.Add:
|
|
629
|
+
return worktree.add_subcmd()
|
|
630
|
+
|
|
589
631
|
|
|
590
|
-
@property
|
|
591
632
|
@abstractmethod
|
|
592
633
|
def add_subcmd(self) -> Worktree.Add:
|
|
593
634
|
"""
|
|
@@ -598,7 +639,7 @@ class Worktree(GitSubCommand, RootDirOp, Protocol):
|
|
|
598
639
|
|
|
599
640
|
@override
|
|
600
641
|
def _subcmd_from_git(self, git: "Git") -> "Worktree":
|
|
601
|
-
return git.worktree_subcmd
|
|
642
|
+
return git.worktree_subcmd()
|
|
602
643
|
|
|
603
644
|
|
|
604
645
|
class Git(CanOverrideGitOpts, CanOverrideGitEnvs, Protocol):
|
|
@@ -610,7 +651,7 @@ class Git(CanOverrideGitOpts, CanOverrideGitEnvs, Protocol):
|
|
|
610
651
|
"""
|
|
611
652
|
:return: current git version.
|
|
612
653
|
"""
|
|
613
|
-
return self.version_subcmd.version()
|
|
654
|
+
return self.version_subcmd().version()
|
|
614
655
|
|
|
615
656
|
@abstractmethod
|
|
616
657
|
def exec_path(self) -> Path:
|
|
@@ -640,7 +681,6 @@ class Git(CanOverrideGitOpts, CanOverrideGitEnvs, Protocol):
|
|
|
640
681
|
"""
|
|
641
682
|
...
|
|
642
683
|
|
|
643
|
-
@property
|
|
644
684
|
@abstractmethod
|
|
645
685
|
def version_subcmd(self) -> Version:
|
|
646
686
|
"""
|
|
@@ -648,7 +688,6 @@ class Git(CanOverrideGitOpts, CanOverrideGitEnvs, Protocol):
|
|
|
648
688
|
"""
|
|
649
689
|
...
|
|
650
690
|
|
|
651
|
-
@property
|
|
652
691
|
@abstractmethod
|
|
653
692
|
def ls_tree_subcmd(self) -> LsTree:
|
|
654
693
|
"""
|
|
@@ -656,7 +695,6 @@ class Git(CanOverrideGitOpts, CanOverrideGitEnvs, Protocol):
|
|
|
656
695
|
"""
|
|
657
696
|
...
|
|
658
697
|
|
|
659
|
-
@property
|
|
660
698
|
@abstractmethod
|
|
661
699
|
def add_subcmd(self) -> Add:
|
|
662
700
|
"""
|
|
@@ -664,7 +702,6 @@ class Git(CanOverrideGitOpts, CanOverrideGitEnvs, Protocol):
|
|
|
664
702
|
"""
|
|
665
703
|
...
|
|
666
704
|
|
|
667
|
-
@property
|
|
668
705
|
@abstractmethod
|
|
669
706
|
def worktree_subcmd(self) -> Worktree:
|
|
670
707
|
"""
|