vim-eof-comment 0.3.19__py3-none-any.whl → 0.3.21__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.
vim_eof_comment/eof.py CHANGED
@@ -77,7 +77,7 @@ def eof_comment_search(
77
77
  if last_line != comment_map[ext] or (newline and not had_nwl):
78
78
  verbose_print(f"{_BRIGHT}{_RED}CHANGED", verbose=verbose)
79
79
  result[path] = EOFCommentSearch(
80
- state=IOWrapperBool(file=open(path, "r", encoding="utf8"), had_nwl=had_nwl),
80
+ state=IOWrapperBool(file=open(path, "rb"), had_nwl=had_nwl),
81
81
  lang=ext,
82
82
  match=matches(last_line, verbose)
83
83
  )
vim_eof_comment/file.py CHANGED
@@ -15,6 +15,64 @@ from typing import Dict, List
15
15
  from .types import BatchPairDict, BatchPathDict, LineBool
16
16
  from .util import die, error
17
17
 
18
+ EXCLUDED_DIRS: List[str] = [
19
+ ".git",
20
+ ".mypy_cache",
21
+ ".ropeproject",
22
+ ".venv",
23
+ "build",
24
+ "venv",
25
+ ]
26
+
27
+
28
+ def try_open(fpath: str) -> bool:
29
+ """
30
+ Try to open a file, unless a ``UnicodeDecodeError`` triggers.
31
+
32
+ Parameters
33
+ ----------
34
+ fpath : str
35
+ The file path to try and open.
36
+
37
+ Returns
38
+ -------
39
+ bool
40
+ Whether the file triggers a ``UnicodeDecodeError`` or not.
41
+ """
42
+ file = open(fpath, "rb")
43
+ success: bool = True
44
+ try:
45
+ file.read().decode(encoding="utf8")
46
+ except UnicodeDecodeError:
47
+ success = False
48
+ except Exception:
49
+ die("Something went wrong in `try_open()`!", code=2)
50
+
51
+ file.close()
52
+ return success
53
+
54
+
55
+ def has_excluded(dir: str) -> bool:
56
+ """
57
+ Check whether a directory list contains any excluded directories.
58
+
59
+ Parameters
60
+ ----------
61
+ dir : str
62
+ The directory to check.
63
+
64
+ Returns
65
+ -------
66
+ bool
67
+ Whether an excluded directory was found.
68
+ """
69
+ dir = dir.rstrip("/")
70
+ for excluded in EXCLUDED_DIRS:
71
+ if dir.endswith(excluded):
72
+ return True
73
+
74
+ return False
75
+
18
76
 
19
77
  def bootstrap_paths(paths: List[str], exts: List[str]) -> List[BatchPairDict]:
20
78
  """
@@ -34,11 +92,22 @@ def bootstrap_paths(paths: List[str], exts: List[str]) -> List[BatchPairDict]:
34
92
  """
35
93
  result = list()
36
94
  for path in paths:
37
- if not isdir(path):
95
+ if not isdir(path) or has_excluded(path):
38
96
  continue
39
97
 
40
- file: str
98
+ root: str
99
+ dirs: List[str]
100
+ files: List[str]
41
101
  for root, dirs, files in walk(path):
102
+ excluded = False
103
+ for dir in dirs:
104
+ if has_excluded(dir):
105
+ excluded = True
106
+ break
107
+
108
+ if excluded:
109
+ continue
110
+
42
111
  for file in files:
43
112
  for ext in exts:
44
113
  if not file.endswith(ext):
@@ -66,8 +135,11 @@ def open_batch_paths(paths: List[BatchPairDict]) -> Dict[str, BatchPathDict]:
66
135
  result = dict()
67
136
  for path in paths:
68
137
  fpath, ext = path["fpath"], path["ft_ext"]
138
+ if not try_open(fpath):
139
+ continue
140
+
69
141
  try:
70
- result[fpath] = {"file": open(fpath, "r"), "ft_ext": ext}
142
+ result[fpath] = {"file": open(fpath, "rb"), "ft_ext": ext}
71
143
  except KeyboardInterrupt:
72
144
  die("\nProgram interrupted!", code=1) # Kills the program
73
145
  except FileNotFoundError:
@@ -101,7 +173,8 @@ def modify_file(file: TextIOWrapper, comments: Dict[str, str], ext: str, **kwarg
101
173
  matching: bool = kwargs.get("matching", False)
102
174
  newline: bool = kwargs.get("newline", False)
103
175
 
104
- data: List[str] = file.read().split("\n")
176
+ bdata: str = file.read().decode(encoding="utf8")
177
+ data: List[str] = bdata.split("\n")
105
178
  file.close()
106
179
 
107
180
  data_len = len(data)
@@ -143,7 +216,8 @@ def get_last_line(file: TextIOWrapper) -> LineBool:
143
216
  LineBool
144
217
  An object containing both the last line in a string and a boolean indicating a newline.
145
218
  """
146
- data: List[str] = file.read().split("\n")
219
+ bdata: str = file.read().decode(encoding="utf8")
220
+ data: List[str] = bdata.split("\n")
147
221
  file.close()
148
222
 
149
223
  had_newline, line = False, ""
@@ -226,6 +226,8 @@ version_info = VersionInfo([
226
226
  (0, 3, 17),
227
227
  (0, 3, 18),
228
228
  (0, 3, 19),
229
+ (0, 3, 20),
230
+ (0, 3, 21),
229
231
  ])
230
232
 
231
233
  __version__: str = str(version_info)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: vim-eof-comment
3
- Version: 0.3.19
3
+ Version: 0.3.21
4
4
  Summary: Adds Vim EOF modeline comments for given filetypes in given directories
5
5
  Author-email: Guennadi Maximov C <g.maxc.fox@protonmail.com>
6
6
  Maintainer-email: Guennadi Maximov C <g.maxc.fox@protonmail.com>
@@ -7,9 +7,9 @@ docs/source/installation.rst,sha256=PkiS3E_ujNTWeKXicZ7aBPch2l1R0TsRRL6pFj_oMJI,
7
7
  vim_eof_comment/__init__.py,sha256=ESbmhca9mTst3TYMer8zFw73IRsJvn5EESci_RpfLbQ,487
8
8
  vim_eof_comment/__init__.pyi,sha256=Eh8FQwE_F9TrQEiT7CR1mdGHBT6fHUzfV6VP8uSN33g,478
9
9
  vim_eof_comment/__main__.py,sha256=0AFVSkz8RuxSuPbJJWycyxs6u5Yypl8FKUMR3ZVLJbk,343
10
- vim_eof_comment/eof.py,sha256=Y9LMj8zx7_vhfLJe0txhmeZctaQyYhLOeKTGUKlgKr8,5176
10
+ vim_eof_comment/eof.py,sha256=JpU5v_V_4fIaWt0BJfPvgp-0ZjzhDdyj_otpusIa7a8,5160
11
11
  vim_eof_comment/eof.pyi,sha256=BTw9brhrHBTX12fYuwfO8_D-Gyrf0387ErmgrcTdvh0,1786
12
- vim_eof_comment/file.py,sha256=kvSON13PrqElilnx7MTD0YFvnm83vZOdTe1aFaIlPt4,4182
12
+ vim_eof_comment/file.py,sha256=eIsaB8r20awtBDcUFt2oL8SD_gvpxhiCjaldK_Zh4Xs,5742
13
13
  vim_eof_comment/file.pyi,sha256=BWBtHbFkAdiNSRfe9SQBJvxtH3WHZfIgz03kFsIWX4w,1950
14
14
  vim_eof_comment/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
15
15
  vim_eof_comment/regex.py,sha256=rGfFIBMbfWlIxAScXqvgBlB-tMJBUxQwTVjEkoxDZ3o,1007
@@ -18,7 +18,7 @@ vim_eof_comment/types.py,sha256=ofo6X9sbNG1ONsofMFganJPlYYsCZmriMWuZHj7dukg,3832
18
18
  vim_eof_comment/types.pyi,sha256=dJcnOLxqVShYHSyafbNZEQJ4D3MC42A-oDtlJArApRE,3562
19
19
  vim_eof_comment/util.py,sha256=0-SUdHqpgMdwHauZawaY3KL5FkIfe1u2zA1AHb80ez8,4125
20
20
  vim_eof_comment/util.pyi,sha256=5RQukLgpVZTwbALhBOtd1NqFkiqC-V6JEWeT1_B9-2k,2675
21
- vim_eof_comment/version.py,sha256=hwDm3DDkIJwEgBXOgrV1nIl9M5Rzc9IbngNP7RS6X5c,5766
21
+ vim_eof_comment/version.py,sha256=GYzQ9G8yuBoWKkLgu5qA3-swNe3XjWMtBh4AMVGXHrs,5798
22
22
  vim_eof_comment/version.pyi,sha256=suF5VwVtpA0rVOuKpa6cvJ8TNocXgtJiI51DRrpzOTs,3692
23
23
  vim_eof_comment/args/__init__.py,sha256=Hyqun15456NVFLAJ3cpdtuNEz5XaFH93vfVlbC-aeuc,318
24
24
  vim_eof_comment/args/__init__.pyi,sha256=cXK7nEpYBveD4kxtVTe2x8oUxT9mhENS5r3wK3AAX2U,151
@@ -31,9 +31,9 @@ vim_eof_comment/comments/__init__.pyi,sha256=cecbbrShh0If8btwJ8zKYpBt9dIsMwrDXbd
31
31
  vim_eof_comment/comments/filetypes.json,sha256=JpSrnBNO2AivLYi-C5--8yVocyBwye3IkMesNIz1uHA,2973
32
32
  vim_eof_comment/comments/generator.py,sha256=Mi3Yi0j-8aXQnVUsXqI1VE1yW71tWemooWgO9smSilI,7731
33
33
  vim_eof_comment/comments/generator.pyi,sha256=Nj33jwria5FWUuydUD_uZSH__PxSZ3yPxOPYF1_TIpM,3272
34
- vim_eof_comment-0.3.19.dist-info/licenses/LICENSE,sha256=gXf5dRMhNSbfLPYYTY_5hsZ1r7UU1OaKQEAQUhuIBkM,18092
35
- vim_eof_comment-0.3.19.dist-info/METADATA,sha256=nPiG0NzURTDcOrBS_blRrkfZGLyz_4jDqXRdsrz-pQE,2763
36
- vim_eof_comment-0.3.19.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
37
- vim_eof_comment-0.3.19.dist-info/entry_points.txt,sha256=vm47g4hoUbow4elcHr9yylYfj6IvAs10wSFKqwqTu6E,61
38
- vim_eof_comment-0.3.19.dist-info/top_level.txt,sha256=TkaQ5vuhVzXaJnfUdcLJCQ81ILK2V6OtvX5-hIMZAc0,21
39
- vim_eof_comment-0.3.19.dist-info/RECORD,,
34
+ vim_eof_comment-0.3.21.dist-info/licenses/LICENSE,sha256=gXf5dRMhNSbfLPYYTY_5hsZ1r7UU1OaKQEAQUhuIBkM,18092
35
+ vim_eof_comment-0.3.21.dist-info/METADATA,sha256=SrFvzlchrAr0eJFaCWzFnrocDgrmDUhDszAMZn8eSH0,2763
36
+ vim_eof_comment-0.3.21.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
37
+ vim_eof_comment-0.3.21.dist-info/entry_points.txt,sha256=vm47g4hoUbow4elcHr9yylYfj6IvAs10wSFKqwqTu6E,61
38
+ vim_eof_comment-0.3.21.dist-info/top_level.txt,sha256=TkaQ5vuhVzXaJnfUdcLJCQ81ILK2V6OtvX5-hIMZAc0,21
39
+ vim_eof_comment-0.3.21.dist-info/RECORD,,