skilleter-thingy 0.0.50__tar.gz → 0.0.51__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.

Files changed (74) hide show
  1. {skilleter_thingy-0.0.50/skilleter_thingy.egg-info → skilleter_thingy-0.0.51}/PKG-INFO +1 -1
  2. {skilleter_thingy-0.0.50 → skilleter_thingy-0.0.51}/pyproject.toml +1 -1
  3. {skilleter_thingy-0.0.50 → skilleter_thingy-0.0.51}/skilleter_thingy/thingy/git.py +30 -14
  4. {skilleter_thingy-0.0.50 → skilleter_thingy-0.0.51/skilleter_thingy.egg-info}/PKG-INFO +1 -1
  5. {skilleter_thingy-0.0.50 → skilleter_thingy-0.0.51}/LICENSE +0 -0
  6. {skilleter_thingy-0.0.50 → skilleter_thingy-0.0.51}/README.md +0 -0
  7. {skilleter_thingy-0.0.50 → skilleter_thingy-0.0.51}/setup.cfg +0 -0
  8. {skilleter_thingy-0.0.50 → skilleter_thingy-0.0.51}/skilleter_thingy/__init__.py +0 -0
  9. {skilleter_thingy-0.0.50 → skilleter_thingy-0.0.51}/skilleter_thingy/addpath.py +0 -0
  10. {skilleter_thingy-0.0.50 → skilleter_thingy-0.0.51}/skilleter_thingy/borger.py +0 -0
  11. {skilleter_thingy-0.0.50 → skilleter_thingy-0.0.51}/skilleter_thingy/box.py +0 -0
  12. {skilleter_thingy-0.0.50 → skilleter_thingy-0.0.51}/skilleter_thingy/console_colours.py +0 -0
  13. {skilleter_thingy-0.0.50 → skilleter_thingy-0.0.51}/skilleter_thingy/diskspacecheck.py +0 -0
  14. {skilleter_thingy-0.0.50 → skilleter_thingy-0.0.51}/skilleter_thingy/docker_purge.py +0 -0
  15. {skilleter_thingy-0.0.50 → skilleter_thingy-0.0.51}/skilleter_thingy/ffind.py +0 -0
  16. {skilleter_thingy-0.0.50 → skilleter_thingy-0.0.51}/skilleter_thingy/ggit.py +0 -0
  17. {skilleter_thingy-0.0.50 → skilleter_thingy-0.0.51}/skilleter_thingy/ggrep.py +0 -0
  18. {skilleter_thingy-0.0.50 → skilleter_thingy-0.0.51}/skilleter_thingy/git_br.py +0 -0
  19. {skilleter_thingy-0.0.50 → skilleter_thingy-0.0.51}/skilleter_thingy/git_ca.py +0 -0
  20. {skilleter_thingy-0.0.50 → skilleter_thingy-0.0.51}/skilleter_thingy/git_cleanup.py +0 -0
  21. {skilleter_thingy-0.0.50 → skilleter_thingy-0.0.51}/skilleter_thingy/git_co.py +0 -0
  22. {skilleter_thingy-0.0.50 → skilleter_thingy-0.0.51}/skilleter_thingy/git_common.py +0 -0
  23. {skilleter_thingy-0.0.50 → skilleter_thingy-0.0.51}/skilleter_thingy/git_hold.py +0 -0
  24. {skilleter_thingy-0.0.50 → skilleter_thingy-0.0.51}/skilleter_thingy/git_mr.py +0 -0
  25. {skilleter_thingy-0.0.50 → skilleter_thingy-0.0.51}/skilleter_thingy/git_parent.py +0 -0
  26. {skilleter_thingy-0.0.50 → skilleter_thingy-0.0.51}/skilleter_thingy/git_review.py +0 -0
  27. {skilleter_thingy-0.0.50 → skilleter_thingy-0.0.51}/skilleter_thingy/git_update.py +0 -0
  28. {skilleter_thingy-0.0.50 → skilleter_thingy-0.0.51}/skilleter_thingy/git_wt.py +0 -0
  29. {skilleter_thingy-0.0.50 → skilleter_thingy-0.0.51}/skilleter_thingy/gitcmp_helper.py +0 -0
  30. {skilleter_thingy-0.0.50 → skilleter_thingy-0.0.51}/skilleter_thingy/gitprompt.py +0 -0
  31. {skilleter_thingy-0.0.50 → skilleter_thingy-0.0.51}/skilleter_thingy/gl.py +0 -0
  32. {skilleter_thingy-0.0.50 → skilleter_thingy-0.0.51}/skilleter_thingy/gphotosync.py +0 -0
  33. {skilleter_thingy-0.0.50 → skilleter_thingy-0.0.51}/skilleter_thingy/linecount.py +0 -0
  34. {skilleter_thingy-0.0.50 → skilleter_thingy-0.0.51}/skilleter_thingy/moviemover.py +0 -0
  35. {skilleter_thingy-0.0.50 → skilleter_thingy-0.0.51}/skilleter_thingy/photodupe.py +0 -0
  36. {skilleter_thingy-0.0.50 → skilleter_thingy-0.0.51}/skilleter_thingy/phototidier.py +0 -0
  37. {skilleter_thingy-0.0.50 → skilleter_thingy-0.0.51}/skilleter_thingy/py_audit.py +0 -0
  38. {skilleter_thingy-0.0.50 → skilleter_thingy-0.0.51}/skilleter_thingy/readable.py +0 -0
  39. {skilleter_thingy-0.0.50 → skilleter_thingy-0.0.51}/skilleter_thingy/remdir.py +0 -0
  40. {skilleter_thingy-0.0.50 → skilleter_thingy-0.0.51}/skilleter_thingy/rmdupe.py +0 -0
  41. {skilleter_thingy-0.0.50 → skilleter_thingy-0.0.51}/skilleter_thingy/rpylint.py +0 -0
  42. {skilleter_thingy-0.0.50 → skilleter_thingy-0.0.51}/skilleter_thingy/splitpics.py +0 -0
  43. {skilleter_thingy-0.0.50 → skilleter_thingy-0.0.51}/skilleter_thingy/strreplace.py +0 -0
  44. {skilleter_thingy-0.0.50 → skilleter_thingy-0.0.51}/skilleter_thingy/sysmon.py +0 -0
  45. {skilleter_thingy-0.0.50 → skilleter_thingy-0.0.51}/skilleter_thingy/tfm.py +0 -0
  46. {skilleter_thingy-0.0.50 → skilleter_thingy-0.0.51}/skilleter_thingy/tfparse.py +0 -0
  47. {skilleter_thingy-0.0.50 → skilleter_thingy-0.0.51}/skilleter_thingy/thingy/__init__.py +0 -0
  48. {skilleter_thingy-0.0.50 → skilleter_thingy-0.0.51}/skilleter_thingy/thingy/colour.py +0 -0
  49. {skilleter_thingy-0.0.50 → skilleter_thingy-0.0.51}/skilleter_thingy/thingy/dc_curses.py +0 -0
  50. {skilleter_thingy-0.0.50 → skilleter_thingy-0.0.51}/skilleter_thingy/thingy/dc_defaults.py +0 -0
  51. {skilleter_thingy-0.0.50 → skilleter_thingy-0.0.51}/skilleter_thingy/thingy/dc_util.py +0 -0
  52. {skilleter_thingy-0.0.50 → skilleter_thingy-0.0.51}/skilleter_thingy/thingy/dircolors.py +0 -0
  53. {skilleter_thingy-0.0.50 → skilleter_thingy-0.0.51}/skilleter_thingy/thingy/docker.py +0 -0
  54. {skilleter_thingy-0.0.50 → skilleter_thingy-0.0.51}/skilleter_thingy/thingy/files.py +0 -0
  55. {skilleter_thingy-0.0.50 → skilleter_thingy-0.0.51}/skilleter_thingy/thingy/git2.py +0 -0
  56. {skilleter_thingy-0.0.50 → skilleter_thingy-0.0.51}/skilleter_thingy/thingy/gitlab.py +0 -0
  57. {skilleter_thingy-0.0.50 → skilleter_thingy-0.0.51}/skilleter_thingy/thingy/logger.py +0 -0
  58. {skilleter_thingy-0.0.50 → skilleter_thingy-0.0.51}/skilleter_thingy/thingy/path.py +0 -0
  59. {skilleter_thingy-0.0.50 → skilleter_thingy-0.0.51}/skilleter_thingy/thingy/popup.py +0 -0
  60. {skilleter_thingy-0.0.50 → skilleter_thingy-0.0.51}/skilleter_thingy/thingy/process.py +0 -0
  61. {skilleter_thingy-0.0.50 → skilleter_thingy-0.0.51}/skilleter_thingy/thingy/run.py +0 -0
  62. {skilleter_thingy-0.0.50 → skilleter_thingy-0.0.51}/skilleter_thingy/thingy/tfm_pane.py +0 -0
  63. {skilleter_thingy-0.0.50 → skilleter_thingy-0.0.51}/skilleter_thingy/thingy/tidy.py +0 -0
  64. {skilleter_thingy-0.0.50 → skilleter_thingy-0.0.51}/skilleter_thingy/thingy/venv_template.py +0 -0
  65. {skilleter_thingy-0.0.50 → skilleter_thingy-0.0.51}/skilleter_thingy/trimpath.py +0 -0
  66. {skilleter_thingy-0.0.50 → skilleter_thingy-0.0.51}/skilleter_thingy/venv_create.py +0 -0
  67. {skilleter_thingy-0.0.50 → skilleter_thingy-0.0.51}/skilleter_thingy/window_rename.py +0 -0
  68. {skilleter_thingy-0.0.50 → skilleter_thingy-0.0.51}/skilleter_thingy/xchmod.py +0 -0
  69. {skilleter_thingy-0.0.50 → skilleter_thingy-0.0.51}/skilleter_thingy/yamlcheck.py +0 -0
  70. {skilleter_thingy-0.0.50 → skilleter_thingy-0.0.51}/skilleter_thingy.egg-info/SOURCES.txt +0 -0
  71. {skilleter_thingy-0.0.50 → skilleter_thingy-0.0.51}/skilleter_thingy.egg-info/dependency_links.txt +0 -0
  72. {skilleter_thingy-0.0.50 → skilleter_thingy-0.0.51}/skilleter_thingy.egg-info/entry_points.txt +0 -0
  73. {skilleter_thingy-0.0.50 → skilleter_thingy-0.0.51}/skilleter_thingy.egg-info/requires.txt +0 -0
  74. {skilleter_thingy-0.0.50 → skilleter_thingy-0.0.51}/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.50
3
+ Version: 0.0.51
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
@@ -7,7 +7,7 @@ name = "skilleter_thingy"
7
7
 
8
8
  # Version must be incremented to install updated Thingy
9
9
 
10
- version = "0.0.50"
10
+ version = "0.0.51"
11
11
 
12
12
  authors = [
13
13
  {name="John Skilleter", email="john@skilleter.org.uk"},
@@ -515,6 +515,13 @@ def difftool(commit_1=None, commit_2=None, files=None, tool=None):
515
515
 
516
516
  ################################################################################
517
517
 
518
+ # Match 'git diff --numstat' output - first re splits into lines added, removed
519
+ # and name. Second one is used if a file has been renamed, to get the old and
520
+ # new name components.
521
+
522
+ _DIFF_OUTPUT_RE = re.compile(r'(-|\d+)\s+(-|\d+)\s+(.*)')
523
+ _DIFF_OUTPUT_RENAME_RE = re.compile('(.*)\{(.*) => (.*)\}(.*)')
524
+
518
525
  def commit_info(commit_1=None, commit_2=None, paths=None, diff_stats=False):
519
526
  """ Return details of changes either in single commit (defaulting to the most
520
527
  recent one) or between two commits, optionally restricted a path or paths
@@ -523,22 +530,30 @@ def commit_info(commit_1=None, commit_2=None, paths=None, diff_stats=False):
523
530
  """
524
531
 
525
532
  def parse_diff_output(result):
526
- """Extract current filename and lines added/deleted from output from git diff --numstat"""
533
+ """Extract previous and current filename (which may be the same) and lines added/deleted
534
+ from output from git diff --numstat"""
535
+
536
+ p = _DIFF_OUTPUT_RE.fullmatch(result)
527
537
 
528
- p = re.fullmatch(r'(-|\d+)\s+(-|\d+)\s+(.*)', result)
538
+ # Extract number of lines added/removed
529
539
 
530
540
  lines_ins = 0 if p.group(1) == '-' else int(p.group(1))
531
541
  lines_del = 0 if p.group(2) == '-' else int(p.group(2))
532
542
 
543
+ # Check for rename and get both old and new names
544
+
533
545
  if ' => ' in p.group(3):
534
- filepath = p.group(3).split('{')[0]
535
- filename = p.group(3).split(' => ')[1]
536
- filename = filename.replace('}', '')
537
- filename = os.path.join(filepath, filename)
546
+ q = _DIFF_OUTPUT_RENAME_RE.fullmatch(p.group(3))
547
+
548
+ if q:
549
+ old_filename = q.group(1) + q.group(2) + q.group(4)
550
+ new_filename = q.group(1) + q.group(3) + q.group(4)
551
+ else:
552
+ old_filename, new_filename = p.group(3).split(' => ')
538
553
  else:
539
- filename = p.group(3)
554
+ old_filename = new_filename = p.group(3)
540
555
 
541
- return filename, lines_ins, lines_del
556
+ return old_filename, new_filename, lines_ins, lines_del
542
557
 
543
558
  # Either get changes between the two commits, or changes in the specified commit
544
559
 
@@ -588,22 +603,23 @@ def commit_info(commit_1=None, commit_2=None, paths=None, diff_stats=False):
588
603
  results = git(['diff', '--numstat'] + params)
589
604
 
590
605
  for result in results:
591
- filename, lines_ins, lines_del = parse_diff_output(result)
606
+ old_filename, new_filename, lines_ins, lines_del = parse_diff_output(result)
592
607
 
593
- info[filename]['deleted'] = lines_del
594
- info[filename]['added'] = lines_ins
608
+ info[new_filename]['deleted'] = lines_del
609
+ info[new_filename]['added'] = lines_ins
595
610
 
596
611
  # Run git diff to get stats ignoring whitespace changes and add them
597
612
 
598
613
  results = git(['diff', '--numstat', '--ignore-all-space', '--ignore-blank-lines'] + params)
599
614
 
600
615
  for result in results:
601
- filename, lines_ins, lines_del = parse_diff_output(result)
616
+ old_filename, new_filename, lines_ins, lines_del = parse_diff_output(result)
602
617
 
603
- info[filename]['non-ws deleted'] = lines_del
604
- info[filename]['non-ws added'] = lines_ins
618
+ info[new_filename]['non-ws deleted'] = lines_del
619
+ info[new_filename]['non-ws added'] = lines_ins
605
620
 
606
621
  # Fill in the blanks - files
622
+
607
623
  for filename in info:
608
624
  if 'deleted' not in info[filename]:
609
625
  info[filename]['deleted'] = info[filename]['added'] = 0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: skilleter_thingy
3
- Version: 0.0.50
3
+ Version: 0.0.51
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