skilleter-thingy 0.0.61__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.61/skilleter_thingy.egg-info → skilleter_thingy-0.0.62}/PKG-INFO +2 -2
  2. {skilleter_thingy-0.0.61 → skilleter_thingy-0.0.62}/pyproject.toml +2 -2
  3. {skilleter_thingy-0.0.61 → skilleter_thingy-0.0.62}/skilleter_thingy/readable.py +33 -6
  4. {skilleter_thingy-0.0.61 → skilleter_thingy-0.0.62}/skilleter_thingy/thingy/tidy.py +2 -2
  5. {skilleter_thingy-0.0.61 → skilleter_thingy-0.0.62/skilleter_thingy.egg-info}/PKG-INFO +2 -2
  6. {skilleter_thingy-0.0.61 → skilleter_thingy-0.0.62}/LICENSE +0 -0
  7. {skilleter_thingy-0.0.61 → skilleter_thingy-0.0.62}/README.md +0 -0
  8. {skilleter_thingy-0.0.61 → skilleter_thingy-0.0.62}/setup.cfg +0 -0
  9. {skilleter_thingy-0.0.61 → skilleter_thingy-0.0.62}/skilleter_thingy/__init__.py +0 -0
  10. {skilleter_thingy-0.0.61 → skilleter_thingy-0.0.62}/skilleter_thingy/addpath.py +0 -0
  11. {skilleter_thingy-0.0.61 → skilleter_thingy-0.0.62}/skilleter_thingy/borger.py +0 -0
  12. {skilleter_thingy-0.0.61 → skilleter_thingy-0.0.62}/skilleter_thingy/box.py +0 -0
  13. {skilleter_thingy-0.0.61 → skilleter_thingy-0.0.62}/skilleter_thingy/console_colours.py +0 -0
  14. {skilleter_thingy-0.0.61 → skilleter_thingy-0.0.62}/skilleter_thingy/diskspacecheck.py +0 -0
  15. {skilleter_thingy-0.0.61 → skilleter_thingy-0.0.62}/skilleter_thingy/docker_purge.py +0 -0
  16. {skilleter_thingy-0.0.61 → skilleter_thingy-0.0.62}/skilleter_thingy/ffind.py +0 -0
  17. {skilleter_thingy-0.0.61 → skilleter_thingy-0.0.62}/skilleter_thingy/ggit.py +0 -0
  18. {skilleter_thingy-0.0.61 → skilleter_thingy-0.0.62}/skilleter_thingy/ggrep.py +0 -0
  19. {skilleter_thingy-0.0.61 → skilleter_thingy-0.0.62}/skilleter_thingy/git_br.py +0 -0
  20. {skilleter_thingy-0.0.61 → skilleter_thingy-0.0.62}/skilleter_thingy/git_ca.py +0 -0
  21. {skilleter_thingy-0.0.61 → skilleter_thingy-0.0.62}/skilleter_thingy/git_cleanup.py +0 -0
  22. {skilleter_thingy-0.0.61 → skilleter_thingy-0.0.62}/skilleter_thingy/git_co.py +0 -0
  23. {skilleter_thingy-0.0.61 → skilleter_thingy-0.0.62}/skilleter_thingy/git_common.py +0 -0
  24. {skilleter_thingy-0.0.61 → skilleter_thingy-0.0.62}/skilleter_thingy/git_hold.py +0 -0
  25. {skilleter_thingy-0.0.61 → skilleter_thingy-0.0.62}/skilleter_thingy/git_mr.py +0 -0
  26. {skilleter_thingy-0.0.61 → skilleter_thingy-0.0.62}/skilleter_thingy/git_parent.py +0 -0
  27. {skilleter_thingy-0.0.61 → skilleter_thingy-0.0.62}/skilleter_thingy/git_review.py +0 -0
  28. {skilleter_thingy-0.0.61 → skilleter_thingy-0.0.62}/skilleter_thingy/git_update.py +0 -0
  29. {skilleter_thingy-0.0.61 → skilleter_thingy-0.0.62}/skilleter_thingy/git_wt.py +0 -0
  30. {skilleter_thingy-0.0.61 → skilleter_thingy-0.0.62}/skilleter_thingy/gitcmp_helper.py +0 -0
  31. {skilleter_thingy-0.0.61 → skilleter_thingy-0.0.62}/skilleter_thingy/gitprompt.py +0 -0
  32. {skilleter_thingy-0.0.61 → skilleter_thingy-0.0.62}/skilleter_thingy/gl.py +0 -0
  33. {skilleter_thingy-0.0.61 → skilleter_thingy-0.0.62}/skilleter_thingy/gphotosync.py +0 -0
  34. {skilleter_thingy-0.0.61 → skilleter_thingy-0.0.62}/skilleter_thingy/linecount.py +0 -0
  35. {skilleter_thingy-0.0.61 → skilleter_thingy-0.0.62}/skilleter_thingy/moviemover.py +0 -0
  36. {skilleter_thingy-0.0.61 → skilleter_thingy-0.0.62}/skilleter_thingy/photodupe.py +0 -0
  37. {skilleter_thingy-0.0.61 → skilleter_thingy-0.0.62}/skilleter_thingy/phototidier.py +0 -0
  38. {skilleter_thingy-0.0.61 → skilleter_thingy-0.0.62}/skilleter_thingy/py_audit.py +0 -0
  39. {skilleter_thingy-0.0.61 → skilleter_thingy-0.0.62}/skilleter_thingy/remdir.py +0 -0
  40. {skilleter_thingy-0.0.61 → skilleter_thingy-0.0.62}/skilleter_thingy/rmdupe.py +0 -0
  41. {skilleter_thingy-0.0.61 → skilleter_thingy-0.0.62}/skilleter_thingy/rpylint.py +0 -0
  42. {skilleter_thingy-0.0.61 → skilleter_thingy-0.0.62}/skilleter_thingy/splitpics.py +0 -0
  43. {skilleter_thingy-0.0.61 → skilleter_thingy-0.0.62}/skilleter_thingy/strreplace.py +0 -0
  44. {skilleter_thingy-0.0.61 → skilleter_thingy-0.0.62}/skilleter_thingy/sysmon.py +0 -0
  45. {skilleter_thingy-0.0.61 → skilleter_thingy-0.0.62}/skilleter_thingy/tfm.py +0 -0
  46. {skilleter_thingy-0.0.61 → skilleter_thingy-0.0.62}/skilleter_thingy/tfparse.py +0 -0
  47. {skilleter_thingy-0.0.61 → skilleter_thingy-0.0.62}/skilleter_thingy/thingy/__init__.py +0 -0
  48. {skilleter_thingy-0.0.61 → skilleter_thingy-0.0.62}/skilleter_thingy/thingy/colour.py +0 -0
  49. {skilleter_thingy-0.0.61 → skilleter_thingy-0.0.62}/skilleter_thingy/thingy/dc_curses.py +0 -0
  50. {skilleter_thingy-0.0.61 → skilleter_thingy-0.0.62}/skilleter_thingy/thingy/dc_defaults.py +0 -0
  51. {skilleter_thingy-0.0.61 → skilleter_thingy-0.0.62}/skilleter_thingy/thingy/dc_util.py +0 -0
  52. {skilleter_thingy-0.0.61 → skilleter_thingy-0.0.62}/skilleter_thingy/thingy/dircolors.py +0 -0
  53. {skilleter_thingy-0.0.61 → skilleter_thingy-0.0.62}/skilleter_thingy/thingy/docker.py +0 -0
  54. {skilleter_thingy-0.0.61 → skilleter_thingy-0.0.62}/skilleter_thingy/thingy/files.py +0 -0
  55. {skilleter_thingy-0.0.61 → skilleter_thingy-0.0.62}/skilleter_thingy/thingy/git.py +0 -0
  56. {skilleter_thingy-0.0.61 → skilleter_thingy-0.0.62}/skilleter_thingy/thingy/git2.py +0 -0
  57. {skilleter_thingy-0.0.61 → skilleter_thingy-0.0.62}/skilleter_thingy/thingy/gitlab.py +0 -0
  58. {skilleter_thingy-0.0.61 → skilleter_thingy-0.0.62}/skilleter_thingy/thingy/path.py +0 -0
  59. {skilleter_thingy-0.0.61 → skilleter_thingy-0.0.62}/skilleter_thingy/thingy/popup.py +0 -0
  60. {skilleter_thingy-0.0.61 → skilleter_thingy-0.0.62}/skilleter_thingy/thingy/process.py +0 -0
  61. {skilleter_thingy-0.0.61 → skilleter_thingy-0.0.62}/skilleter_thingy/thingy/run.py +0 -0
  62. {skilleter_thingy-0.0.61 → skilleter_thingy-0.0.62}/skilleter_thingy/thingy/tfm_pane.py +0 -0
  63. {skilleter_thingy-0.0.61 → skilleter_thingy-0.0.62}/skilleter_thingy/thingy/venv_template.py +0 -0
  64. {skilleter_thingy-0.0.61 → skilleter_thingy-0.0.62}/skilleter_thingy/trimpath.py +0 -0
  65. {skilleter_thingy-0.0.61 → skilleter_thingy-0.0.62}/skilleter_thingy/venv_create.py +0 -0
  66. {skilleter_thingy-0.0.61 → skilleter_thingy-0.0.62}/skilleter_thingy/window_rename.py +0 -0
  67. {skilleter_thingy-0.0.61 → skilleter_thingy-0.0.62}/skilleter_thingy/xchmod.py +0 -0
  68. {skilleter_thingy-0.0.61 → skilleter_thingy-0.0.62}/skilleter_thingy/yamlcheck.py +0 -0
  69. {skilleter_thingy-0.0.61 → skilleter_thingy-0.0.62}/skilleter_thingy.egg-info/SOURCES.txt +0 -0
  70. {skilleter_thingy-0.0.61 → skilleter_thingy-0.0.62}/skilleter_thingy.egg-info/dependency_links.txt +0 -0
  71. {skilleter_thingy-0.0.61 → skilleter_thingy-0.0.62}/skilleter_thingy.egg-info/entry_points.txt +0 -0
  72. {skilleter_thingy-0.0.61 → skilleter_thingy-0.0.62}/skilleter_thingy.egg-info/requires.txt +0 -0
  73. {skilleter_thingy-0.0.61 → 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.61
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.61"
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,16 +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
50
  { 'regex': re.compile(r'(Read complete after) \d+s'), 'replace': r'\1 {SECONDS}'},
46
51
  { 'regex': re.compile(r'"(.*:.*)"( = ".*")'), 'replace': r'\1\2'},
47
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:'},
48
54
  ]
49
55
 
50
56
  TF_IGNORE_LIST = [
51
57
  {'start': TF_HAS_CHANGED, 'end': TF_HAS_CHANGED_END},
52
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\.+')},
53
60
  ]
54
61
 
55
62
  ################################################################################
@@ -142,6 +149,10 @@ def cleanfile(args, infile, outfile):
142
149
 
143
150
  collection = []
144
151
 
152
+ # True if we are processing a tag block
153
+
154
+ in_tag_block = False
155
+
145
156
  # Read, process and write stdin to stdout, converting appropriately
146
157
 
147
158
  for data in infile:
@@ -196,22 +207,31 @@ def cleanfile(args, infile, outfile):
196
207
 
197
208
  for ignore in TF_IGNORE_LIST:
198
209
  if ignore['start'].fullmatch(clean):
199
- 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
200
217
 
201
- logging.info('Found ignore start marker: "%s"', clean)
202
- logging.info('Skipping until end marker: "%s"', ignore_until.pattern)
203
218
  break
204
219
  else:
205
- 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):
206
227
  clean = None
207
228
 
208
229
  elif clean == TF_IGNORE_MSG:
209
230
  clean = None
210
231
 
211
- 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):
212
233
  # Collect a block of non-deterministically-ordered data
213
234
 
214
- logging.info('Adding "%s" to collection', clean)
215
235
  collection.append(clean)
216
236
  clean = None
217
237
 
@@ -227,6 +247,9 @@ def cleanfile(args, infile, outfile):
227
247
 
228
248
  collection = []
229
249
 
250
+ if in_tag_block and clean and TF_TAG_ENTRY_IGNORE.fullmatch(clean):
251
+ clean = None
252
+
230
253
  # Write normal output, skipping >1 blank lines
231
254
 
232
255
  if clean is not None and not ignore_until:
@@ -248,6 +271,10 @@ def cleanfile(args, infile, outfile):
248
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!')
249
272
  sys.exit(2)
250
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
+
251
278
  ################################################################################
252
279
 
253
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.61
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