skilleter-thingy 0.0.49__py3-none-any.whl → 0.0.50__py3-none-any.whl

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.

@@ -0,0 +1,31 @@
1
+ #! /usr/bin/env python3
2
+
3
+ ################################################################################
4
+ """ Draw a box with text in
5
+ """
6
+ ################################################################################
7
+
8
+ import sys
9
+ import thingy.colour as colour
10
+
11
+ ################################################################################
12
+
13
+ def main():
14
+ """The guts"""
15
+ return
16
+ ################################################################################
17
+
18
+ def box():
19
+ """Entry point"""
20
+
21
+ try:
22
+ main()
23
+ except KeyboardInterrupt:
24
+ sys.exit(1)
25
+ except BrokenPipeError:
26
+ sys.exit(2)
27
+
28
+ ################################################################################
29
+
30
+ if __name__ == '__main__':
31
+ box()
@@ -54,7 +54,7 @@ def archive_branches(branches):
54
54
  colour.error(f'[RED:ERROR:] An archive tag already exists for branch {branch}')
55
55
 
56
56
  if branch == current_branch:
57
- colour.error(f'[RED:ERROR:] Cannot archive the current branch')
57
+ colour.error('[RED:ERROR:] Cannot archive the current branch')
58
58
 
59
59
  for branch in branches:
60
60
  tag_name = archive_tag_name(branch)
@@ -95,7 +95,7 @@ def restore_archive_branches(branches):
95
95
  tags = archive_tags()
96
96
 
97
97
  for branch in branches:
98
- if not archive_tag_name(branch) in tags:
98
+ if archive_tag_name(branch) not in tags:
99
99
  colour.error(f'[RED:ERROR:] Archive branch {branch} does not exist')
100
100
 
101
101
  archive_tag_names = []
@@ -1299,13 +1299,13 @@ def parse_command_line():
1299
1299
  # Make sure that we're actually in a git working tree
1300
1300
 
1301
1301
  if not git.working_tree():
1302
- colour.error(f'[RED:ERROR] Not a git repository')
1302
+ colour.error('[RED:ERROR] Not a git repository')
1303
1303
 
1304
1304
  # -C/--change is shorthand for '--commit HEAD^'
1305
1305
 
1306
1306
  if args.change:
1307
1307
  if args.commits:
1308
- colour.error(f'[RED:ERROR] The -C/--change option does not take parameters')
1308
+ colour.error('[RED:ERROR] The -C/--change option does not take parameters')
1309
1309
 
1310
1310
  args.commits = ['HEAD^']
1311
1311
 
@@ -195,7 +195,7 @@ def branch_pull(args, results, branch, fail=True):
195
195
  fail = False
196
196
 
197
197
  elif exc.msg.startswith('Your configuration specifies to merge with the ref'):
198
- colour.write(f'[RED:WARNING]: The upstream branch no longer exists', indent=4)
198
+ colour.write('[RED:WARNING]: The upstream branch no longer exists', indent=4)
199
199
  fail = False
200
200
 
201
201
  elif 'no such ref was fetched' in exc.msg:
@@ -3,7 +3,6 @@
3
3
 
4
4
  import sys
5
5
  import os
6
- import sys
7
6
  import pickle
8
7
  import argparse
9
8
 
@@ -5,7 +5,6 @@
5
5
 
6
6
  ################################################################################
7
7
 
8
- import os
9
8
  import sys
10
9
  import requests
11
10
  import subprocess
@@ -64,7 +63,7 @@ def audit(package, version):
64
63
  print()
65
64
  print(v['details'])
66
65
  else:
67
- print(f'No known vulnerabilities')
66
+ print('No known vulnerabilities')
68
67
 
69
68
  ################################################################################
70
69
 
@@ -29,7 +29,7 @@ import thingy.files as files
29
29
  TF_OBJECTS_CHANGED_END = 'Terraform detected the following changes made outside of Terraform since the last "terraform apply":'
30
30
  TF_IGNORE_MSG = 'Unless you have made equivalent changes to your configuration, or ignored the relevant attributes using ignore_changes, the following plan may include actions to undo or respond to these changes.'
31
31
 
32
- TF_REFRESHING_AND_READING = re.compile(r'.*: (?:Refreshing state\.\.\.|Reading\.\.\.|Read complete after |Preparing import\.\.\.).*')
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
34
 
35
35
  TF_HAS_CHANGED = re.compile(r' # .* has changed')
@@ -62,6 +62,7 @@ def parse_command_line():
62
62
  parser.add_argument('-O', '--dir', action='store', default=None, help='Store output files in the specified directory (creating it if it doesn\'t exist)')
63
63
  parser.add_argument('-a', '--aws', action='store_true', help='Remove AWS resource IDs')
64
64
  parser.add_argument('-T', '--terraform', action='store_true', help='Clean Terraform plan/apply log files')
65
+ parser.add_argument('-R', '--replace', action='append', default=None, help='Additional regex replacements in the form "REGEX=REPLACEMENT"')
65
66
  parser.add_argument('files', nargs='*', default=None, help='The files to convert (use stdin/stout if no input files are specified)')
66
67
 
67
68
  args = parser.parse_args()
@@ -91,6 +92,18 @@ def parse_command_line():
91
92
  if args.dir and not os.path.isdir(args.dir):
92
93
  os.mkdir(args.dir)
93
94
 
95
+ # Handle additional regex replacements
96
+
97
+ if args.replace:
98
+ args.regex_replace = []
99
+ for entry in args.replace:
100
+ regex, replace = entry.split('=')
101
+ try:
102
+ args.regex_replace.append({'regex': re.compile(regex), 'replace':replace})
103
+ except re.error as exc:
104
+ print(f'ERROR in regular expression {regex}: {exc}')
105
+ sys.exit(1)
106
+
94
107
  return args
95
108
 
96
109
  ################################################################################
@@ -139,6 +152,7 @@ def cleanfile(args, infile, outfile):
139
152
  clean = tidy.remove_sha256(clean)
140
153
  clean = tidy.remove_sha1(clean)
141
154
  clean = tidy.remove_times(clean)
155
+ clean = tidy.remove_speeds(clean)
142
156
 
143
157
  if not args.light and not args.dark:
144
158
  clean = tidy.remove_ansi(clean)
@@ -148,6 +162,12 @@ def cleanfile(args, infile, outfile):
148
162
  if args.aws:
149
163
  clean = tidy.remove_aws_ids(clean)
150
164
 
165
+ # Additional custom regex replacements
166
+
167
+ if args.replace:
168
+ for entry in args.regex_replace:
169
+ clean = entry['regex'].sub(entry['replace'], clean)
170
+
151
171
  # Do things with Terraform log data
152
172
 
153
173
  if args.terraform:
@@ -216,15 +216,6 @@ def merge(branch):
216
216
 
217
217
  ################################################################################
218
218
 
219
- def merging():
220
- """ Return True if a merge is in progress, False otherwise """
221
-
222
- merge_check = git_run_status(['rev-parse', '-q', '--verify', 'MERGE_HEAD'])
223
-
224
- return merge_check[1] == 0
225
-
226
- ################################################################################
227
-
228
219
  def abort_merge():
229
220
  """ Abort the current merge """
230
221
 
@@ -50,16 +50,16 @@ RE_TIME = [
50
50
  {'regex': re.compile(r'[1-9][0-9]{3}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}[.][0-9]+Z?'), 'replace': '{DATE+TIME}'},
51
51
  {'regex': re.compile(r'[0-9]{1,2}:[0-9]{1,2}:[0-9]{1,2}(Z|,[0-9]+)'), 'replace': '{TIME}'},
52
52
  {'regex': re.compile(r'[0-9]{1,2}:[0-9]{2}:[0-9]{2}(\.[0-9]{1,6})?([+][0-9]{2}:[0-9]{2})?'), 'replace': '{TIME}'},
53
-
54
-
53
+
55
54
  {'regex': re.compile(r'[1-9][0-9]{3}/[0-9][0-9]?/[1-9][0-9]'), 'replace': '{DATE}'},
56
55
  {'regex': re.compile(r'[1-9][0-9]/[0-9][0-9]?/[1-9][0-9]{3}'), 'replace': '{DATE}'},
57
56
  {'regex': re.compile(r'[0-9]{4}-[0-9]{2}-[0-9]{2}'), 'replace': '{DATE}'},
58
57
  {'regex': re.compile(r'[0-9]{2}-[0-9]{2}-[0-9]{4}'), 'replace': '{DATE}'},
59
58
 
60
59
  {'regex': re.compile(r'[0-9]([.][0-9]*)*\s*(second[s]?)'), 'replace': '{ELAPSED}'},
61
-
60
+
62
61
  {'find': r'{DATE} {TIME}', 'replace': '{DATE+TIME}'},
62
+ {'find': r'\d{2}m \d{2}s', 'replace': '{TIME}'},
63
63
  ]
64
64
 
65
65
  # SHA values
@@ -85,6 +85,14 @@ RE_AWS = \
85
85
  {'regex': re.compile(r'request id: [0-0a-f]{8}-[0-0a-f]{4}-[0-0a-f]{4}-[0-0a-f]{4}-[0-0a-f]{12}'), 'replace': 'request id: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx'},
86
86
  ]
87
87
 
88
+ # Data transfer speeds
89
+
90
+ RE_SPEED = \
91
+ [
92
+ {'regex': re.compile(r'[0-9.]+ *MB/s'), 'replace': '{SPEED}'},
93
+ {'regex': re.compile(r'[0-9.]+ *MiB/s'), 'replace': '{SPEED}'},
94
+ ]
95
+
88
96
  ################################################################################
89
97
 
90
98
  def regex_replace(data, regexes):
@@ -150,6 +158,13 @@ def remove_aws_ids(data):
150
158
 
151
159
  ################################################################################
152
160
 
161
+ def remove_speeds(data):
162
+ """ Attempt to remove data transfer speed references from a string """
163
+
164
+ return regex_replace(data, RE_SPEED)
165
+
166
+ ################################################################################
167
+
153
168
  def remove_ansi(text):
154
169
  """ Remove ANSI codes from a string """
155
170
 
@@ -1,5 +1,6 @@
1
1
  #!/usr/bin/env python3
2
2
 
3
+ import sys
3
4
  import os
4
5
  import stat
5
6
  import argparse
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: skilleter_thingy
3
- Version: 0.0.49
3
+ Version: 0.0.50
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
@@ -1,6 +1,7 @@
1
1
  skilleter_thingy/__init__.py,sha256=rVPTxm8L5w52U0YdTd7r_D44SBP7pS3JCJtsf0iIsow,110
2
2
  skilleter_thingy/addpath.py,sha256=4Yhhgjjz1XDI98j0dAiQpNA2ejLefeWUTeSg3nIXQq0,3842
3
3
  skilleter_thingy/borger.py,sha256=AQX7OHeGXcUjkgyXEWE2h_oOey9eczZBbKjrreXvRAs,7832
4
+ skilleter_thingy/box.py,sha256=WJlviIvPtpdDUt4MfSMcnIo9OxV3j-ua_CAtR8CTYnc,745
4
5
  skilleter_thingy/console_colours.py,sha256=BOS9mo3jChx_FE8L1j488MDoVNgib11KjTRhrz_YRYE,1781
5
6
  skilleter_thingy/diskspacecheck.py,sha256=7xsj4egXXV6jPhXZTe2b5rS03XAmm5uLC5TeiO1NJoE,2072
6
7
  skilleter_thingy/docker_purge.py,sha256=2t6yjlxmHCHKMAejLViYyOQNzyqSXGiV59df4Wlojaw,3349
@@ -12,11 +13,11 @@ skilleter_thingy/git_ca.py,sha256=0SluqsJaNSaPdcS4c94648ELAm7aHB3aWgIdF1sngT8,49
12
13
  skilleter_thingy/git_cleanup.py,sha256=TnUPYAUnByVyY_dwANzDg2BGGNh3jskNF1DgU3pc8Jk,10201
13
14
  skilleter_thingy/git_co.py,sha256=gBES0ltlomy7vXX8IHh0-Vt1af54t2Ie5UnRYYfP4tM,8212
14
15
  skilleter_thingy/git_common.py,sha256=ZjNkvIBRDGNLFYwOu9FjeqdDKJdm0sndX5QATtmq290,1879
15
- skilleter_thingy/git_hold.py,sha256=yXpbpwH0cKpRiSAwxsYZncF4XHkJREUiLEyxCWzN8Rg,4617
16
+ skilleter_thingy/git_hold.py,sha256=Zk6YUhr08znUOdpVJkJAt0rOtrCXnKE0NHoZzoaEEGo,4616
16
17
  skilleter_thingy/git_mr.py,sha256=BCE68hhz2bV0zwHkEv5tyfRY0aXoUdb_aJ-yWYDu_Wo,3087
17
18
  skilleter_thingy/git_parent.py,sha256=D47D01dPs6kActusA0ircJYTv8tBjDoe8MzMpJVWJpA,2683
18
- skilleter_thingy/git_review.py,sha256=23kxfq7A3Se_x3dMgT12rKp7Ixqd1jOaUHUIySfZnOc,52055
19
- skilleter_thingy/git_update.py,sha256=2SAGeqL2LjdsXTYak3nvPtNfhSOWJdXZfAUx6bqC8Qw,13972
19
+ skilleter_thingy/git_review.py,sha256=WCBw49OP3WHiaxku8jUUk6I_NqtjScLGaQHvPxX6LnU,52053
20
+ skilleter_thingy/git_update.py,sha256=uYd4ubnDbHzkwwrtzVatNIg-L15ap1X8UMO-2PafseY,13971
20
21
  skilleter_thingy/git_wt.py,sha256=kMxA3f39-gMjXfhLH4DHw9klsgPbJzn1Ae4osehbtD8,3487
21
22
  skilleter_thingy/gitcmp_helper.py,sha256=_3ji-PyIF2oI6a4zyUPjLeCFgAtACykxPpOrbjD6-aw,11245
22
23
  skilleter_thingy/gitprompt.py,sha256=SzSMd0EGI7ftPko80Q2PipwbVA-qjU1jsmdpmTCM5GI,8912
@@ -24,10 +25,10 @@ skilleter_thingy/gl.py,sha256=9zbGpKxw6lX9RghLkdy-Q5sZlqtbB3uGFO04qTu1dH8,5954
24
25
  skilleter_thingy/gphotosync.py,sha256=Vb2zYTEFp26BYdkG810SRg9afyfDqvq4CLHTk-MFf60,22388
25
26
  skilleter_thingy/linecount.py,sha256=5voQtjJjDCVx4zjPwVRy620NpuLiwwFitzxjIsRGtxQ,4310
26
27
  skilleter_thingy/moviemover.py,sha256=j_Xb9_jFdgpFBAXcF4tEqbnKH_FonlnUU39LiCK980k,4470
27
- skilleter_thingy/photodupe.py,sha256=FssLgbLnqHPuSvMGtRyOa7bRdowufJOQaJJ56f9ybxk,4195
28
+ skilleter_thingy/photodupe.py,sha256=l0hbzSLb2Vk2ceteg-x9fHXCEE1uUuFo84hz5rsZUPA,4184
28
29
  skilleter_thingy/phototidier.py,sha256=5gSjlINUxf3ZQl3NG0o7CsWwODvTbokIMIafLFvn8Hc,7818
29
- skilleter_thingy/py_audit.py,sha256=ZyKN8O0fM4xnwVspk1qH_Dnv5ujM7lJfKxC87xWilr0,4395
30
- skilleter_thingy/readable.py,sha256=2KAhc45ZwjEHrvWrMZUTbpY7xPKFJiP5vxIsmLizHfc,9645
30
+ skilleter_thingy/py_audit.py,sha256=xJm5k5qyeA6ii8mODa4dOkmP8L1drv94UHuxR54RsIM,4384
31
+ skilleter_thingy/readable.py,sha256=pz6g0Rh91SnzzpzrPoYELkBGwljuPiwhb33yANIjAAw,10462
31
32
  skilleter_thingy/remdir.py,sha256=-C-LAOaphdKLbBwm--rEwrsDdyldXps-C4s8iDNOKw8,4610
32
33
  skilleter_thingy/rmdupe.py,sha256=tcX3w8XvliGwBMdSt9BUu07kuDtQEc0IiU8sCxmgzHA,17117
33
34
  skilleter_thingy/rpylint.py,sha256=TzZ5GvWrqgTKYKZwadTvzdbX-DJ8ll4WfVJqtN6IzO0,2635
@@ -37,7 +38,7 @@ skilleter_thingy/sysmon.py,sha256=XRZG6EVSzoVYan_N16qVB1l1RaU51uvLWlRA0CDjC54,11
37
38
  skilleter_thingy/tfm.py,sha256=3ejKNI2P65lGz-50mxRMxW_o5NmoeMDcmhji_0uALhI,33703
38
39
  skilleter_thingy/tfparse.py,sha256=u1IZH2J_WH1aORyMozKSI2JKok7_S1MMJhiobzmhlUI,2988
39
40
  skilleter_thingy/trimpath.py,sha256=IJU3zl4Hg08g0eU24LZyDlGfNa-5k-TZM5s9zR4OIdA,2385
40
- skilleter_thingy/venv_create.py,sha256=tE4Pgubyt7gZs2cb6d_Fds5Df-oUWJswzSSGdSuzbGA,1142
41
+ skilleter_thingy/venv_create.py,sha256=lMcGvWNwP-ZlyPJ1eZU-PHNOnscZHjtjhoT6sLfhIU4,1153
41
42
  skilleter_thingy/window_rename.py,sha256=dCBgZqih_3YKHt35hsOAhARFp3QxOi8w8huC63sqJK8,3128
42
43
  skilleter_thingy/xchmod.py,sha256=F9_lxKuLqVlHHr3oBI3dkMoFOuwRzYDlpQMTmDcjpBI,4590
43
44
  skilleter_thingy/yamlcheck.py,sha256=FXylZ5NtHirDlPVhVEUZUZkTugVR-g51BbjaN06akAc,2868
@@ -50,7 +51,7 @@ skilleter_thingy/thingy/dircolors.py,sha256=5NbXMsGWdABLvvZfB70VPmN6N5HyyihfpgoQ
50
51
  skilleter_thingy/thingy/docker.py,sha256=9EFatudoVPfB1UbDEtzdJDB3o6ToHiNHv8-oLsUeqiQ,2449
51
52
  skilleter_thingy/thingy/files.py,sha256=8wXUHEGALhHvYtJewjSNwHFw-hGHFYbWH9_40lJj5ZY,4257
52
53
  skilleter_thingy/thingy/git.py,sha256=9y58KhFx6t9nNyqMbixM5cl8LBcD2sdCh9UgyVPv4bo,38043
53
- skilleter_thingy/thingy/git2.py,sha256=xfQrOpOk4SLdE6T-pr0FTuYGn0gSY92VMDpmqvX3gDM,35751
54
+ skilleter_thingy/thingy/git2.py,sha256=HdLar1rN5-Uop6GvoWM-NERDBOI7s93dC6Ry7iuEumA,35473
54
55
  skilleter_thingy/thingy/gitlab.py,sha256=uXAF918xnPk6qQyiwPQDbMZfqtJzhiRqDS7yEtJEIAg,6079
55
56
  skilleter_thingy/thingy/logger.py,sha256=xKgPAq8KGXmtaXIFjFs1AmZJXtYrXJn2sqL3oxHZjfQ,3107
56
57
  skilleter_thingy/thingy/path.py,sha256=me__Ukw-7NiD70Yd9tOWyj7QX79-deFvsQaQ9AGzWzU,4732
@@ -58,11 +59,11 @@ skilleter_thingy/thingy/popup.py,sha256=jW-nbpdeswqEMTli7OmBv1J8XQsvFoMI0J33O6dO
58
59
  skilleter_thingy/thingy/process.py,sha256=88pKHQZXBP1m3Ja7t3DtKJ4Njn7HS2OtcI0Z0i1KwUs,3560
59
60
  skilleter_thingy/thingy/run.py,sha256=051lGahG4liYLckQFpmSaGuE9Chd-lFdmJO85LdmeXE,12607
60
61
  skilleter_thingy/thingy/tfm_pane.py,sha256=40DmQeLMEUPiKKIJkgN1MEpIen00V70I1HB7Q6git44,19814
61
- skilleter_thingy/thingy/tidy.py,sha256=adm-09WLOSj6_8UId23Hb7LgJowFgoEtDAvv00ni2mA,5412
62
+ skilleter_thingy/thingy/tidy.py,sha256=0EVUP2XyUTtoIpqaDwvrHL58YxM4Elvu5MO1nzhwLG4,5854
62
63
  skilleter_thingy/thingy/venv_template.py,sha256=SsVNvSwojd8NnFeQaZPCRQYTNdwJRplpZpygbUEXRnY,1015
63
- skilleter_thingy-0.0.49.dist-info/LICENSE,sha256=ljOS4DjXvqEo5VzGfdaRwgRZPbNScGBmfwyC8PChvmQ,32422
64
- skilleter_thingy-0.0.49.dist-info/METADATA,sha256=BryF-1KGwXobPiiN60EmDKuqAtIBSPadlgmJ72xZhMk,5313
65
- skilleter_thingy-0.0.49.dist-info/WHEEL,sha256=Wyh-_nZ0DJYolHNn1_hMa4lM7uDedD_RGVwbmTjyItk,91
66
- skilleter_thingy-0.0.49.dist-info/entry_points.txt,sha256=IT6cZSbGHrd2UzIQbiMRotKiTJnYJBkESC4fAe8gjsE,2026
67
- skilleter_thingy-0.0.49.dist-info/top_level.txt,sha256=8-JhgToBBiWURunmvfpSxEvNkDHQQ7r25-aBXtZv61g,17
68
- skilleter_thingy-0.0.49.dist-info/RECORD,,
64
+ skilleter_thingy-0.0.50.dist-info/LICENSE,sha256=ljOS4DjXvqEo5VzGfdaRwgRZPbNScGBmfwyC8PChvmQ,32422
65
+ skilleter_thingy-0.0.50.dist-info/METADATA,sha256=itzZGWAuQ6uaklD1TJH1F75YFn0AQCmpv7clMQ6XHD8,5313
66
+ skilleter_thingy-0.0.50.dist-info/WHEEL,sha256=R0nc6qTxuoLk7ShA2_Y-UWkN8ZdfDBG2B6Eqpz2WXbs,91
67
+ skilleter_thingy-0.0.50.dist-info/entry_points.txt,sha256=IT6cZSbGHrd2UzIQbiMRotKiTJnYJBkESC4fAe8gjsE,2026
68
+ skilleter_thingy-0.0.50.dist-info/top_level.txt,sha256=8-JhgToBBiWURunmvfpSxEvNkDHQQ7r25-aBXtZv61g,17
69
+ skilleter_thingy-0.0.50.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (71.1.0)
2
+ Generator: setuptools (72.1.0)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5