skilleter-thingy 0.0.60__tar.gz → 0.0.62__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 (73) hide show
  1. {skilleter_thingy-0.0.60/skilleter_thingy.egg-info → skilleter_thingy-0.0.62}/PKG-INFO +2 -2
  2. {skilleter_thingy-0.0.60 → skilleter_thingy-0.0.62}/pyproject.toml +2 -2
  3. {skilleter_thingy-0.0.60 → skilleter_thingy-0.0.62}/skilleter_thingy/readable.py +36 -7
  4. {skilleter_thingy-0.0.60 → skilleter_thingy-0.0.62}/skilleter_thingy/thingy/tidy.py +2 -2
  5. {skilleter_thingy-0.0.60 → skilleter_thingy-0.0.62/skilleter_thingy.egg-info}/PKG-INFO +2 -2
  6. {skilleter_thingy-0.0.60 → skilleter_thingy-0.0.62}/LICENSE +0 -0
  7. {skilleter_thingy-0.0.60 → skilleter_thingy-0.0.62}/README.md +0 -0
  8. {skilleter_thingy-0.0.60 → skilleter_thingy-0.0.62}/setup.cfg +0 -0
  9. {skilleter_thingy-0.0.60 → skilleter_thingy-0.0.62}/skilleter_thingy/__init__.py +0 -0
  10. {skilleter_thingy-0.0.60 → skilleter_thingy-0.0.62}/skilleter_thingy/addpath.py +0 -0
  11. {skilleter_thingy-0.0.60 → skilleter_thingy-0.0.62}/skilleter_thingy/borger.py +0 -0
  12. {skilleter_thingy-0.0.60 → skilleter_thingy-0.0.62}/skilleter_thingy/box.py +0 -0
  13. {skilleter_thingy-0.0.60 → skilleter_thingy-0.0.62}/skilleter_thingy/console_colours.py +0 -0
  14. {skilleter_thingy-0.0.60 → skilleter_thingy-0.0.62}/skilleter_thingy/diskspacecheck.py +0 -0
  15. {skilleter_thingy-0.0.60 → skilleter_thingy-0.0.62}/skilleter_thingy/docker_purge.py +0 -0
  16. {skilleter_thingy-0.0.60 → skilleter_thingy-0.0.62}/skilleter_thingy/ffind.py +0 -0
  17. {skilleter_thingy-0.0.60 → skilleter_thingy-0.0.62}/skilleter_thingy/ggit.py +0 -0
  18. {skilleter_thingy-0.0.60 → skilleter_thingy-0.0.62}/skilleter_thingy/ggrep.py +0 -0
  19. {skilleter_thingy-0.0.60 → skilleter_thingy-0.0.62}/skilleter_thingy/git_br.py +0 -0
  20. {skilleter_thingy-0.0.60 → skilleter_thingy-0.0.62}/skilleter_thingy/git_ca.py +0 -0
  21. {skilleter_thingy-0.0.60 → skilleter_thingy-0.0.62}/skilleter_thingy/git_cleanup.py +0 -0
  22. {skilleter_thingy-0.0.60 → skilleter_thingy-0.0.62}/skilleter_thingy/git_co.py +0 -0
  23. {skilleter_thingy-0.0.60 → skilleter_thingy-0.0.62}/skilleter_thingy/git_common.py +0 -0
  24. {skilleter_thingy-0.0.60 → skilleter_thingy-0.0.62}/skilleter_thingy/git_hold.py +0 -0
  25. {skilleter_thingy-0.0.60 → skilleter_thingy-0.0.62}/skilleter_thingy/git_mr.py +0 -0
  26. {skilleter_thingy-0.0.60 → skilleter_thingy-0.0.62}/skilleter_thingy/git_parent.py +0 -0
  27. {skilleter_thingy-0.0.60 → skilleter_thingy-0.0.62}/skilleter_thingy/git_review.py +0 -0
  28. {skilleter_thingy-0.0.60 → skilleter_thingy-0.0.62}/skilleter_thingy/git_update.py +0 -0
  29. {skilleter_thingy-0.0.60 → skilleter_thingy-0.0.62}/skilleter_thingy/git_wt.py +0 -0
  30. {skilleter_thingy-0.0.60 → skilleter_thingy-0.0.62}/skilleter_thingy/gitcmp_helper.py +0 -0
  31. {skilleter_thingy-0.0.60 → skilleter_thingy-0.0.62}/skilleter_thingy/gitprompt.py +0 -0
  32. {skilleter_thingy-0.0.60 → skilleter_thingy-0.0.62}/skilleter_thingy/gl.py +0 -0
  33. {skilleter_thingy-0.0.60 → skilleter_thingy-0.0.62}/skilleter_thingy/gphotosync.py +0 -0
  34. {skilleter_thingy-0.0.60 → skilleter_thingy-0.0.62}/skilleter_thingy/linecount.py +0 -0
  35. {skilleter_thingy-0.0.60 → skilleter_thingy-0.0.62}/skilleter_thingy/moviemover.py +0 -0
  36. {skilleter_thingy-0.0.60 → skilleter_thingy-0.0.62}/skilleter_thingy/photodupe.py +0 -0
  37. {skilleter_thingy-0.0.60 → skilleter_thingy-0.0.62}/skilleter_thingy/phototidier.py +0 -0
  38. {skilleter_thingy-0.0.60 → skilleter_thingy-0.0.62}/skilleter_thingy/py_audit.py +0 -0
  39. {skilleter_thingy-0.0.60 → skilleter_thingy-0.0.62}/skilleter_thingy/remdir.py +0 -0
  40. {skilleter_thingy-0.0.60 → skilleter_thingy-0.0.62}/skilleter_thingy/rmdupe.py +0 -0
  41. {skilleter_thingy-0.0.60 → skilleter_thingy-0.0.62}/skilleter_thingy/rpylint.py +0 -0
  42. {skilleter_thingy-0.0.60 → skilleter_thingy-0.0.62}/skilleter_thingy/splitpics.py +0 -0
  43. {skilleter_thingy-0.0.60 → skilleter_thingy-0.0.62}/skilleter_thingy/strreplace.py +0 -0
  44. {skilleter_thingy-0.0.60 → skilleter_thingy-0.0.62}/skilleter_thingy/sysmon.py +0 -0
  45. {skilleter_thingy-0.0.60 → skilleter_thingy-0.0.62}/skilleter_thingy/tfm.py +0 -0
  46. {skilleter_thingy-0.0.60 → skilleter_thingy-0.0.62}/skilleter_thingy/tfparse.py +0 -0
  47. {skilleter_thingy-0.0.60 → skilleter_thingy-0.0.62}/skilleter_thingy/thingy/__init__.py +0 -0
  48. {skilleter_thingy-0.0.60 → skilleter_thingy-0.0.62}/skilleter_thingy/thingy/colour.py +0 -0
  49. {skilleter_thingy-0.0.60 → skilleter_thingy-0.0.62}/skilleter_thingy/thingy/dc_curses.py +0 -0
  50. {skilleter_thingy-0.0.60 → skilleter_thingy-0.0.62}/skilleter_thingy/thingy/dc_defaults.py +0 -0
  51. {skilleter_thingy-0.0.60 → skilleter_thingy-0.0.62}/skilleter_thingy/thingy/dc_util.py +0 -0
  52. {skilleter_thingy-0.0.60 → skilleter_thingy-0.0.62}/skilleter_thingy/thingy/dircolors.py +0 -0
  53. {skilleter_thingy-0.0.60 → skilleter_thingy-0.0.62}/skilleter_thingy/thingy/docker.py +0 -0
  54. {skilleter_thingy-0.0.60 → skilleter_thingy-0.0.62}/skilleter_thingy/thingy/files.py +0 -0
  55. {skilleter_thingy-0.0.60 → skilleter_thingy-0.0.62}/skilleter_thingy/thingy/git.py +0 -0
  56. {skilleter_thingy-0.0.60 → skilleter_thingy-0.0.62}/skilleter_thingy/thingy/git2.py +0 -0
  57. {skilleter_thingy-0.0.60 → skilleter_thingy-0.0.62}/skilleter_thingy/thingy/gitlab.py +0 -0
  58. {skilleter_thingy-0.0.60 → skilleter_thingy-0.0.62}/skilleter_thingy/thingy/path.py +0 -0
  59. {skilleter_thingy-0.0.60 → skilleter_thingy-0.0.62}/skilleter_thingy/thingy/popup.py +0 -0
  60. {skilleter_thingy-0.0.60 → skilleter_thingy-0.0.62}/skilleter_thingy/thingy/process.py +0 -0
  61. {skilleter_thingy-0.0.60 → skilleter_thingy-0.0.62}/skilleter_thingy/thingy/run.py +0 -0
  62. {skilleter_thingy-0.0.60 → skilleter_thingy-0.0.62}/skilleter_thingy/thingy/tfm_pane.py +0 -0
  63. {skilleter_thingy-0.0.60 → skilleter_thingy-0.0.62}/skilleter_thingy/thingy/venv_template.py +0 -0
  64. {skilleter_thingy-0.0.60 → skilleter_thingy-0.0.62}/skilleter_thingy/trimpath.py +0 -0
  65. {skilleter_thingy-0.0.60 → skilleter_thingy-0.0.62}/skilleter_thingy/venv_create.py +0 -0
  66. {skilleter_thingy-0.0.60 → skilleter_thingy-0.0.62}/skilleter_thingy/window_rename.py +0 -0
  67. {skilleter_thingy-0.0.60 → skilleter_thingy-0.0.62}/skilleter_thingy/xchmod.py +0 -0
  68. {skilleter_thingy-0.0.60 → skilleter_thingy-0.0.62}/skilleter_thingy/yamlcheck.py +0 -0
  69. {skilleter_thingy-0.0.60 → skilleter_thingy-0.0.62}/skilleter_thingy.egg-info/SOURCES.txt +0 -0
  70. {skilleter_thingy-0.0.60 → skilleter_thingy-0.0.62}/skilleter_thingy.egg-info/dependency_links.txt +0 -0
  71. {skilleter_thingy-0.0.60 → skilleter_thingy-0.0.62}/skilleter_thingy.egg-info/entry_points.txt +0 -0
  72. {skilleter_thingy-0.0.60 → skilleter_thingy-0.0.62}/skilleter_thingy.egg-info/requires.txt +0 -0
  73. {skilleter_thingy-0.0.60 → skilleter_thingy-0.0.62}/skilleter_thingy.egg-info/top_level.txt +0 -0
@@ -1,13 +1,13 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: skilleter_thingy
3
- Version: 0.0.60
3
+ Version: 0.0.62
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
  Classifier: Programming Language :: Python :: 3
8
8
  Classifier: License :: OSI Approved :: GNU General Public License v3 or later (GPLv3+)
9
9
  Classifier: Operating System :: OS Independent
10
- Requires-Python: >=3.6
10
+ Requires-Python: >=3.8
11
11
  Description-Content-Type: text/markdown
12
12
  License-File: LICENSE
13
13
  Requires-Dist: imagehash
@@ -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.60"
10
+ version = "0.0.62"
11
11
 
12
12
  authors = [
13
13
  {name="John Skilleter", email="john@skilleter.org.uk"},
@@ -17,7 +17,7 @@ description = "A collection of useful utilities, mainly aimed at making Git more
17
17
 
18
18
  readme = "README.md"
19
19
 
20
- requires-python = ">=3.6"
20
+ requires-python = ">=3.8"
21
21
 
22
22
  classifiers = [
23
23
  "Programming Language :: Python :: 3",
@@ -31,6 +31,7 @@ TF_IGNORE_MSG = 'Unless you have made equivalent changes to your configuration,
31
31
 
32
32
  TF_REFRESHING_AND_READING = re.compile(r'.*: (?:Refreshing state\.\.\.|Reading\.\.\.|Still reading\.\.\.|Read complete after |Preparing import\.\.\.).*')
33
33
  TF_FINDING_AND_INSTALLING = re.compile(r'- (?:Finding .*[.]{3}|Installing .*[.]{3}|Installed .*)')
34
+ TF_FETCHING_AND_INSTALLING = re.compile(r'(Fetching|Installing|Using) [-a-z0-9_]+ [0-9.]+')
34
35
 
35
36
  TF_UNCHANGED_HIDDEN = re.compile(r' +# \(\d+ unchanged (?:attribute|block|element)s? hidden\)')
36
37
 
@@ -40,14 +41,22 @@ TF_HAS_CHANGED_END = re.compile(r' [}]')
40
41
  TF_READ_DURING_APPLY = re.compile(r' +# [-a-z_.0-9\[\]]+ will be read during apply')
41
42
  TF_READ_DURING_APPLY_END = re.compile(r' [}]')
42
43
 
44
+ TF_TAG_CHANGE_BLOCK_START = re.compile(r'^ +~ +tags(_all)? += +\{$')
45
+ TF_TAG_ENTRY_IGNORE = re.compile(r'^ +".*" += +".*"')
46
+ TF_TAG_CHANGE_BLOCK_END = re.compile(r'^ +}$')
47
+
43
48
  TF_MISC_REGEX = \
44
49
  [
45
- { 'regex': re.compile(r'(Read complete after) \d+s'), 'replace': r'\1 {SECONDS}'}
50
+ { 'regex': re.compile(r'(Read complete after) \d+s'), 'replace': r'\1 {SECONDS}'},
51
+ { 'regex': re.compile(r'"(.*:.*)"( = ".*")'), 'replace': r'\1\2'},
52
+ { 'regex': re.compile(r'"(.*:.*)"( = \[$)'), 'replace': r'\1\2'},
53
+ { 'regex': re.compile(r'^last "terraform apply":$'), 'replace':r'last "terraform apply" which may have affected this plan:'},
46
54
  ]
47
55
 
48
56
  TF_IGNORE_LIST = [
49
57
  {'start': TF_HAS_CHANGED, 'end': TF_HAS_CHANGED_END},
50
58
  {'start': TF_READ_DURING_APPLY, 'end': TF_READ_DURING_APPLY_END},
59
+ {'start': re.compile('(Releasing|Acquiring) state lock. This may take a few moments\.+')},
51
60
  ]
52
61
 
53
62
  ################################################################################
@@ -140,6 +149,10 @@ def cleanfile(args, infile, outfile):
140
149
 
141
150
  collection = []
142
151
 
152
+ # True if we are processing a tag block
153
+
154
+ in_tag_block = False
155
+
143
156
  # Read, process and write stdin to stdout, converting appropriately
144
157
 
145
158
  for data in infile:
@@ -194,22 +207,31 @@ def cleanfile(args, infile, outfile):
194
207
 
195
208
  for ignore in TF_IGNORE_LIST:
196
209
  if ignore['start'].fullmatch(clean):
197
- ignore_until = ignore['end']
210
+ if 'end' in ignore:
211
+ ignore_until = ignore['end']
212
+
213
+ logging.info('Found ignore start marker: "%s"', clean)
214
+ logging.info('Skipping until end marker: "%s"', ignore_until.pattern)
215
+ else:
216
+ clean = None
198
217
 
199
- logging.info('Found ignore start marker: "%s"', clean)
200
- logging.info('Skipping until end marker: "%s"', ignore_until.pattern)
201
218
  break
202
219
  else:
203
- if TF_UNCHANGED_HIDDEN.fullmatch(clean):
220
+ if TF_TAG_CHANGE_BLOCK_START.fullmatch(clean):
221
+ in_tag_block = True
222
+
223
+ elif TF_TAG_CHANGE_BLOCK_END.fullmatch(clean):
224
+ in_tag_block = False
225
+
226
+ elif TF_UNCHANGED_HIDDEN.fullmatch(clean):
204
227
  clean = None
205
228
 
206
229
  elif clean == TF_IGNORE_MSG:
207
230
  clean = None
208
231
 
209
- elif TF_REFRESHING_AND_READING.match(clean) or TF_FINDING_AND_INSTALLING.fullmatch(clean):
232
+ elif TF_REFRESHING_AND_READING.match(clean) or TF_FINDING_AND_INSTALLING.fullmatch(clean) or TF_FETCHING_AND_INSTALLING.fullmatch(clean):
210
233
  # Collect a block of non-deterministically-ordered data
211
234
 
212
- logging.info('Adding "%s" to collection', clean)
213
235
  collection.append(clean)
214
236
  clean = None
215
237
 
@@ -225,6 +247,9 @@ def cleanfile(args, infile, outfile):
225
247
 
226
248
  collection = []
227
249
 
250
+ if in_tag_block and clean and TF_TAG_ENTRY_IGNORE.fullmatch(clean):
251
+ clean = None
252
+
228
253
  # Write normal output, skipping >1 blank lines
229
254
 
230
255
  if clean is not None and not ignore_until:
@@ -246,6 +271,10 @@ def cleanfile(args, infile, outfile):
246
271
  print(f'INTERNAL ERROR: Code never found end of ignore-block marker "{ignore_until.pattern}" - either the Terraform output format has changed, or the log file is incomplete!')
247
272
  sys.exit(2)
248
273
 
274
+ if in_tag_block:
275
+ print('INTERNAL ERROR: Code never found end of tag block marker - either the Terraform output format has changed, or the log file is incomplete!')
276
+ sys.exit(2)
277
+
249
278
  ################################################################################
250
279
 
251
280
  def main():
@@ -58,8 +58,8 @@ RE_TIME = [
58
58
 
59
59
  {'regex': re.compile(r'[0-9]([.][0-9]*)*\s*(second[s]?)'), 'replace': '{ELAPSED}'},
60
60
 
61
- {'find': r'{DATE} {TIME}', 'replace': '{DATE+TIME}'},
62
- {'find': r'\d{2}m \d{2}s', 'replace': '{TIME}'},
61
+ {'find': '\{DATE\} \{TIME\}', 'replace': '{DATE+TIME}'},
62
+ {'regex': re.compile(r'[0-9]{2}m [0-9]{2}s'), 'replace': '{TIME}'},
63
63
  ]
64
64
 
65
65
  # SHA values
@@ -1,13 +1,13 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: skilleter_thingy
3
- Version: 0.0.60
3
+ Version: 0.0.62
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
  Classifier: Programming Language :: Python :: 3
8
8
  Classifier: License :: OSI Approved :: GNU General Public License v3 or later (GPLv3+)
9
9
  Classifier: Operating System :: OS Independent
10
- Requires-Python: >=3.6
10
+ Requires-Python: >=3.8
11
11
  Description-Content-Type: text/markdown
12
12
  License-File: LICENSE
13
13
  Requires-Dist: imagehash