skilleter-thingy 0.0.51__tar.gz → 0.0.52__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 skilleter-thingy might be problematic. Click here for more details.
- {skilleter_thingy-0.0.51/skilleter_thingy.egg-info → skilleter_thingy-0.0.52}/PKG-INFO +1 -1
- {skilleter_thingy-0.0.51 → skilleter_thingy-0.0.52}/pyproject.toml +1 -1
- {skilleter_thingy-0.0.51 → skilleter_thingy-0.0.52}/skilleter_thingy/git_mr.py +3 -2
- {skilleter_thingy-0.0.51 → skilleter_thingy-0.0.52}/skilleter_thingy/thingy/files.py +16 -3
- {skilleter_thingy-0.0.51 → skilleter_thingy-0.0.52}/skilleter_thingy/thingy/git.py +7 -2
- {skilleter_thingy-0.0.51 → skilleter_thingy-0.0.52}/skilleter_thingy/thingy/git2.py +1 -1
- {skilleter_thingy-0.0.51 → skilleter_thingy-0.0.52}/skilleter_thingy/thingy/run.py +1 -1
- {skilleter_thingy-0.0.51 → skilleter_thingy-0.0.52}/skilleter_thingy/thingy/tfm_pane.py +3 -5
- {skilleter_thingy-0.0.51 → skilleter_thingy-0.0.52/skilleter_thingy.egg-info}/PKG-INFO +1 -1
- {skilleter_thingy-0.0.51 → skilleter_thingy-0.0.52}/LICENSE +0 -0
- {skilleter_thingy-0.0.51 → skilleter_thingy-0.0.52}/README.md +0 -0
- {skilleter_thingy-0.0.51 → skilleter_thingy-0.0.52}/setup.cfg +0 -0
- {skilleter_thingy-0.0.51 → skilleter_thingy-0.0.52}/skilleter_thingy/__init__.py +0 -0
- {skilleter_thingy-0.0.51 → skilleter_thingy-0.0.52}/skilleter_thingy/addpath.py +0 -0
- {skilleter_thingy-0.0.51 → skilleter_thingy-0.0.52}/skilleter_thingy/borger.py +0 -0
- {skilleter_thingy-0.0.51 → skilleter_thingy-0.0.52}/skilleter_thingy/box.py +0 -0
- {skilleter_thingy-0.0.51 → skilleter_thingy-0.0.52}/skilleter_thingy/console_colours.py +0 -0
- {skilleter_thingy-0.0.51 → skilleter_thingy-0.0.52}/skilleter_thingy/diskspacecheck.py +0 -0
- {skilleter_thingy-0.0.51 → skilleter_thingy-0.0.52}/skilleter_thingy/docker_purge.py +0 -0
- {skilleter_thingy-0.0.51 → skilleter_thingy-0.0.52}/skilleter_thingy/ffind.py +0 -0
- {skilleter_thingy-0.0.51 → skilleter_thingy-0.0.52}/skilleter_thingy/ggit.py +0 -0
- {skilleter_thingy-0.0.51 → skilleter_thingy-0.0.52}/skilleter_thingy/ggrep.py +0 -0
- {skilleter_thingy-0.0.51 → skilleter_thingy-0.0.52}/skilleter_thingy/git_br.py +0 -0
- {skilleter_thingy-0.0.51 → skilleter_thingy-0.0.52}/skilleter_thingy/git_ca.py +0 -0
- {skilleter_thingy-0.0.51 → skilleter_thingy-0.0.52}/skilleter_thingy/git_cleanup.py +0 -0
- {skilleter_thingy-0.0.51 → skilleter_thingy-0.0.52}/skilleter_thingy/git_co.py +0 -0
- {skilleter_thingy-0.0.51 → skilleter_thingy-0.0.52}/skilleter_thingy/git_common.py +0 -0
- {skilleter_thingy-0.0.51 → skilleter_thingy-0.0.52}/skilleter_thingy/git_hold.py +0 -0
- {skilleter_thingy-0.0.51 → skilleter_thingy-0.0.52}/skilleter_thingy/git_parent.py +0 -0
- {skilleter_thingy-0.0.51 → skilleter_thingy-0.0.52}/skilleter_thingy/git_review.py +0 -0
- {skilleter_thingy-0.0.51 → skilleter_thingy-0.0.52}/skilleter_thingy/git_update.py +0 -0
- {skilleter_thingy-0.0.51 → skilleter_thingy-0.0.52}/skilleter_thingy/git_wt.py +0 -0
- {skilleter_thingy-0.0.51 → skilleter_thingy-0.0.52}/skilleter_thingy/gitcmp_helper.py +0 -0
- {skilleter_thingy-0.0.51 → skilleter_thingy-0.0.52}/skilleter_thingy/gitprompt.py +0 -0
- {skilleter_thingy-0.0.51 → skilleter_thingy-0.0.52}/skilleter_thingy/gl.py +0 -0
- {skilleter_thingy-0.0.51 → skilleter_thingy-0.0.52}/skilleter_thingy/gphotosync.py +0 -0
- {skilleter_thingy-0.0.51 → skilleter_thingy-0.0.52}/skilleter_thingy/linecount.py +0 -0
- {skilleter_thingy-0.0.51 → skilleter_thingy-0.0.52}/skilleter_thingy/moviemover.py +0 -0
- {skilleter_thingy-0.0.51 → skilleter_thingy-0.0.52}/skilleter_thingy/photodupe.py +0 -0
- {skilleter_thingy-0.0.51 → skilleter_thingy-0.0.52}/skilleter_thingy/phototidier.py +0 -0
- {skilleter_thingy-0.0.51 → skilleter_thingy-0.0.52}/skilleter_thingy/py_audit.py +0 -0
- {skilleter_thingy-0.0.51 → skilleter_thingy-0.0.52}/skilleter_thingy/readable.py +0 -0
- {skilleter_thingy-0.0.51 → skilleter_thingy-0.0.52}/skilleter_thingy/remdir.py +0 -0
- {skilleter_thingy-0.0.51 → skilleter_thingy-0.0.52}/skilleter_thingy/rmdupe.py +0 -0
- {skilleter_thingy-0.0.51 → skilleter_thingy-0.0.52}/skilleter_thingy/rpylint.py +0 -0
- {skilleter_thingy-0.0.51 → skilleter_thingy-0.0.52}/skilleter_thingy/splitpics.py +0 -0
- {skilleter_thingy-0.0.51 → skilleter_thingy-0.0.52}/skilleter_thingy/strreplace.py +0 -0
- {skilleter_thingy-0.0.51 → skilleter_thingy-0.0.52}/skilleter_thingy/sysmon.py +0 -0
- {skilleter_thingy-0.0.51 → skilleter_thingy-0.0.52}/skilleter_thingy/tfm.py +0 -0
- {skilleter_thingy-0.0.51 → skilleter_thingy-0.0.52}/skilleter_thingy/tfparse.py +0 -0
- {skilleter_thingy-0.0.51 → skilleter_thingy-0.0.52}/skilleter_thingy/thingy/__init__.py +0 -0
- {skilleter_thingy-0.0.51 → skilleter_thingy-0.0.52}/skilleter_thingy/thingy/colour.py +0 -0
- {skilleter_thingy-0.0.51 → skilleter_thingy-0.0.52}/skilleter_thingy/thingy/dc_curses.py +0 -0
- {skilleter_thingy-0.0.51 → skilleter_thingy-0.0.52}/skilleter_thingy/thingy/dc_defaults.py +0 -0
- {skilleter_thingy-0.0.51 → skilleter_thingy-0.0.52}/skilleter_thingy/thingy/dc_util.py +0 -0
- {skilleter_thingy-0.0.51 → skilleter_thingy-0.0.52}/skilleter_thingy/thingy/dircolors.py +0 -0
- {skilleter_thingy-0.0.51 → skilleter_thingy-0.0.52}/skilleter_thingy/thingy/docker.py +0 -0
- {skilleter_thingy-0.0.51 → skilleter_thingy-0.0.52}/skilleter_thingy/thingy/gitlab.py +0 -0
- {skilleter_thingy-0.0.51 → skilleter_thingy-0.0.52}/skilleter_thingy/thingy/logger.py +0 -0
- {skilleter_thingy-0.0.51 → skilleter_thingy-0.0.52}/skilleter_thingy/thingy/path.py +0 -0
- {skilleter_thingy-0.0.51 → skilleter_thingy-0.0.52}/skilleter_thingy/thingy/popup.py +0 -0
- {skilleter_thingy-0.0.51 → skilleter_thingy-0.0.52}/skilleter_thingy/thingy/process.py +0 -0
- {skilleter_thingy-0.0.51 → skilleter_thingy-0.0.52}/skilleter_thingy/thingy/tidy.py +0 -0
- {skilleter_thingy-0.0.51 → skilleter_thingy-0.0.52}/skilleter_thingy/thingy/venv_template.py +0 -0
- {skilleter_thingy-0.0.51 → skilleter_thingy-0.0.52}/skilleter_thingy/trimpath.py +0 -0
- {skilleter_thingy-0.0.51 → skilleter_thingy-0.0.52}/skilleter_thingy/venv_create.py +0 -0
- {skilleter_thingy-0.0.51 → skilleter_thingy-0.0.52}/skilleter_thingy/window_rename.py +0 -0
- {skilleter_thingy-0.0.51 → skilleter_thingy-0.0.52}/skilleter_thingy/xchmod.py +0 -0
- {skilleter_thingy-0.0.51 → skilleter_thingy-0.0.52}/skilleter_thingy/yamlcheck.py +0 -0
- {skilleter_thingy-0.0.51 → skilleter_thingy-0.0.52}/skilleter_thingy.egg-info/SOURCES.txt +0 -0
- {skilleter_thingy-0.0.51 → skilleter_thingy-0.0.52}/skilleter_thingy.egg-info/dependency_links.txt +0 -0
- {skilleter_thingy-0.0.51 → skilleter_thingy-0.0.52}/skilleter_thingy.egg-info/entry_points.txt +0 -0
- {skilleter_thingy-0.0.51 → skilleter_thingy-0.0.52}/skilleter_thingy.egg-info/requires.txt +0 -0
- {skilleter_thingy-0.0.51 → skilleter_thingy-0.0.52}/skilleter_thingy.egg-info/top_level.txt +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: skilleter_thingy
|
|
3
|
-
Version: 0.0.
|
|
3
|
+
Version: 0.0.52
|
|
4
4
|
Summary: A collection of useful utilities, mainly aimed at making Git more friendly
|
|
5
5
|
Author-email: John Skilleter <john@skilleter.org.uk>
|
|
6
6
|
Project-URL: Home, https://skilleter.org.uk
|
|
@@ -49,12 +49,13 @@ def main():
|
|
|
49
49
|
else:
|
|
50
50
|
parents, _ = git.parents()
|
|
51
51
|
|
|
52
|
+
if not parents:
|
|
53
|
+
colour.error('Unable to determine parent branch. Use the [BLUE]--parent[NORMAL] option to specify the appropriate one.')
|
|
54
|
+
|
|
52
55
|
if len(parents) > 1:
|
|
53
56
|
parent_list = ', '.join(parents)
|
|
54
57
|
colour.error(
|
|
55
58
|
f'Branch has multiple potential parents: [BLUE]{parent_list}[NORMAL]. Use the [BLUE]--parent[NORMAL] option to specify the appropriate one.')
|
|
56
|
-
elif not parents:
|
|
57
|
-
colour.error('Unable to determine parent branch. Use the [BLUE]--parent[NORMAL] option to specify the appropriate one.')
|
|
58
59
|
|
|
59
60
|
options = ['merge_request.create', f'merge_request.target={parents[0]}']
|
|
60
61
|
|
|
@@ -73,6 +73,8 @@ def format_size(size, always_suffix=False):
|
|
|
73
73
|
# to 1 (set to 0 when we don't have a divisor).
|
|
74
74
|
|
|
75
75
|
div *= 1024
|
|
76
|
+
else:
|
|
77
|
+
units = ' PiB'
|
|
76
78
|
|
|
77
79
|
# Calculate the size in 10ths so the we get the first digit after
|
|
78
80
|
# the decimal point, doing all the work in the integer domain to
|
|
@@ -89,9 +91,13 @@ def format_size(size, always_suffix=False):
|
|
|
89
91
|
|
|
90
92
|
################################################################################
|
|
91
93
|
|
|
92
|
-
def backup(filename, extension='bak', copyfile=True):
|
|
94
|
+
def backup(filename, extension='bak', copyfile=True, timestamps=True):
|
|
93
95
|
""" Create a backup of a file by copying or renaming it into a file with extension
|
|
94
|
-
.bak, deleting any existing file with that name
|
|
96
|
+
.bak, deleting any existing file with that name.
|
|
97
|
+
|
|
98
|
+
Copies the file by default, unless copyfile is False
|
|
99
|
+
Sets the timetamps of the backup file to be the same as the original, unless
|
|
100
|
+
timestamps is False."""
|
|
95
101
|
|
|
96
102
|
# Do nothing if the file does not exist
|
|
97
103
|
|
|
@@ -117,13 +123,20 @@ def backup(filename, extension='bak', copyfile=True):
|
|
|
117
123
|
if os.path.isfile(backupname):
|
|
118
124
|
os.unlink(backupname)
|
|
119
125
|
|
|
120
|
-
# Create the backup by copying or renaming the file
|
|
126
|
+
# Create the backup by copying or renaming the file, optionally preserving the
|
|
127
|
+
# timestamp of the original file
|
|
128
|
+
|
|
129
|
+
if timestamps:
|
|
130
|
+
file_info = os.stat(filename)
|
|
121
131
|
|
|
122
132
|
if copyfile:
|
|
123
133
|
shutil.copyfile(filename, backupname)
|
|
124
134
|
else:
|
|
125
135
|
os.rename(filename, backupname)
|
|
126
136
|
|
|
137
|
+
if timestamps:
|
|
138
|
+
os.utime(backupname, ns=(file_info.st_atime_ns, file_info.st_mtime_ns))
|
|
139
|
+
|
|
127
140
|
################################################################################
|
|
128
141
|
# Test code
|
|
129
142
|
|
|
@@ -520,7 +520,7 @@ def difftool(commit_1=None, commit_2=None, files=None, tool=None):
|
|
|
520
520
|
# new name components.
|
|
521
521
|
|
|
522
522
|
_DIFF_OUTPUT_RE = re.compile(r'(-|\d+)\s+(-|\d+)\s+(.*)')
|
|
523
|
-
_DIFF_OUTPUT_RENAME_RE = re.compile('(.*)\{(.*) => (.*)\}(.*)')
|
|
523
|
+
_DIFF_OUTPUT_RENAME_RE = re.compile(r'(.*)\{(.*) => (.*)\}(.*)')
|
|
524
524
|
|
|
525
525
|
def commit_info(commit_1=None, commit_2=None, paths=None, diff_stats=False):
|
|
526
526
|
""" Return details of changes either in single commit (defaulting to the most
|
|
@@ -535,6 +535,11 @@ def commit_info(commit_1=None, commit_2=None, paths=None, diff_stats=False):
|
|
|
535
535
|
|
|
536
536
|
p = _DIFF_OUTPUT_RE.fullmatch(result)
|
|
537
537
|
|
|
538
|
+
# This shouldn't happen...
|
|
539
|
+
|
|
540
|
+
if not p:
|
|
541
|
+
return 'ERROR', 'ERROR', 0, 0
|
|
542
|
+
|
|
538
543
|
# Extract number of lines added/removed
|
|
539
544
|
|
|
540
545
|
lines_ins = 0 if p.group(1) == '-' else int(p.group(1))
|
|
@@ -1342,7 +1347,7 @@ def run_tests():
|
|
|
1342
1347
|
if value is None:
|
|
1343
1348
|
print(' Successfully failed to read the newly-deleted config data')
|
|
1344
1349
|
else:
|
|
1345
|
-
raise GitError
|
|
1350
|
+
raise GitError('Unexpected lack of error reading configuration data', 1)
|
|
1346
1351
|
|
|
1347
1352
|
config_set('user', 'email', 'user@localhost')
|
|
1348
1353
|
config_set('user', 'name', 'User Name')
|
|
@@ -1259,7 +1259,7 @@ if __name__ == '__main__':
|
|
|
1259
1259
|
if value is None:
|
|
1260
1260
|
print(' Successfully failed to read the newly-deleted config data')
|
|
1261
1261
|
else:
|
|
1262
|
-
raise GitError
|
|
1262
|
+
raise GitError('Unexpectd lack of error reading configuration data', 1)
|
|
1263
1263
|
|
|
1264
1264
|
config_set('user', 'email', 'user@localhost')
|
|
1265
1265
|
config_set('user', 'name', 'User Name')
|
|
@@ -60,7 +60,7 @@ def capture_output(cmd, input_stream, output_streams, ansi_clean):
|
|
|
60
60
|
if stream in (sys.stdout, sys.stderr):
|
|
61
61
|
stream.write(tidy.convert_ansi(output))
|
|
62
62
|
elif ansi_clean:
|
|
63
|
-
stream.write(
|
|
63
|
+
stream.write(tidy.remove_ansi(output))
|
|
64
64
|
else:
|
|
65
65
|
stream.write(output)
|
|
66
66
|
|
|
@@ -63,7 +63,7 @@ class Pane():
|
|
|
63
63
|
|
|
64
64
|
self.index = index
|
|
65
65
|
|
|
66
|
-
self.current_dir =
|
|
66
|
+
self.current_dir = ''
|
|
67
67
|
|
|
68
68
|
self.ino = inotify.adapters.Inotify() if sys.platform == 'linux' else None
|
|
69
69
|
|
|
@@ -290,13 +290,11 @@ class Pane():
|
|
|
290
290
|
else:
|
|
291
291
|
entry = name + ' ' * (self.width - len(name) - len(data)) + data
|
|
292
292
|
|
|
293
|
+
file_colour = self.dircolours.get_colour_pair(current_file['name'], current_file['mode'])
|
|
293
294
|
else:
|
|
294
295
|
filename = entry = None
|
|
295
296
|
current = False
|
|
296
|
-
|
|
297
|
-
# Render the current line
|
|
298
|
-
|
|
299
|
-
file_colour = self.dircolours.get_colour_pair(current_file['name'], current_file['mode']) if filename else normal_colour
|
|
297
|
+
file_colour = normal_colour
|
|
300
298
|
|
|
301
299
|
# Reverse the colours if this the cursor line
|
|
302
300
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: skilleter_thingy
|
|
3
|
-
Version: 0.0.
|
|
3
|
+
Version: 0.0.52
|
|
4
4
|
Summary: A collection of useful utilities, mainly aimed at making Git more friendly
|
|
5
5
|
Author-email: John Skilleter <john@skilleter.org.uk>
|
|
6
6
|
Project-URL: Home, https://skilleter.org.uk
|
|
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
|
|
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
|
{skilleter_thingy-0.0.51 → skilleter_thingy-0.0.52}/skilleter_thingy/thingy/venv_template.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{skilleter_thingy-0.0.51 → skilleter_thingy-0.0.52}/skilleter_thingy.egg-info/dependency_links.txt
RENAMED
|
File without changes
|
{skilleter_thingy-0.0.51 → skilleter_thingy-0.0.52}/skilleter_thingy.egg-info/entry_points.txt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|