vim-eof-comment 0.3.20__tar.gz → 0.4.0__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.
Files changed (58) hide show
  1. {vim_eof_comment-0.3.20 → vim_eof_comment-0.4.0}/PKG-INFO +1 -1
  2. {vim_eof_comment-0.3.20 → vim_eof_comment-0.4.0}/pyproject.toml +1 -1
  3. vim_eof_comment-0.4.0/version.txt +1 -0
  4. {vim_eof_comment-0.3.20 → vim_eof_comment-0.4.0}/vim_eof_comment/file.py +83 -3
  5. {vim_eof_comment-0.3.20 → vim_eof_comment-0.4.0}/vim_eof_comment/file.pyi +31 -1
  6. {vim_eof_comment-0.3.20 → vim_eof_comment-0.4.0}/vim_eof_comment/version.py +2 -0
  7. {vim_eof_comment-0.3.20 → vim_eof_comment-0.4.0}/vim_eof_comment.egg-info/PKG-INFO +1 -1
  8. vim_eof_comment-0.3.20/version.txt +0 -1
  9. {vim_eof_comment-0.3.20 → vim_eof_comment-0.4.0}/.flake8 +0 -0
  10. {vim_eof_comment-0.3.20 → vim_eof_comment-0.4.0}/.gitattributes +0 -0
  11. {vim_eof_comment-0.3.20 → vim_eof_comment-0.4.0}/.github/CODEOWNERS +0 -0
  12. {vim_eof_comment-0.3.20 → vim_eof_comment-0.4.0}/.github/workflows/flake8-lint.yml +0 -0
  13. {vim_eof_comment-0.3.20 → vim_eof_comment-0.4.0}/.github/workflows/mypy-lint.yml +0 -0
  14. {vim_eof_comment-0.3.20 → vim_eof_comment-0.4.0}/.github/workflows/release.yml +0 -0
  15. {vim_eof_comment-0.3.20 → vim_eof_comment-0.4.0}/.github/workflows/vim-eof-comment.yml +0 -0
  16. {vim_eof_comment-0.3.20 → vim_eof_comment-0.4.0}/.pre-commit-config.yaml +0 -0
  17. {vim_eof_comment-0.3.20 → vim_eof_comment-0.4.0}/LICENSE +0 -0
  18. {vim_eof_comment-0.3.20 → vim_eof_comment-0.4.0}/Makefile +0 -0
  19. {vim_eof_comment-0.3.20 → vim_eof_comment-0.4.0}/Pipfile +0 -0
  20. {vim_eof_comment-0.3.20 → vim_eof_comment-0.4.0}/README.md +0 -0
  21. {vim_eof_comment-0.3.20 → vim_eof_comment-0.4.0}/docs/Makefile +0 -0
  22. {vim_eof_comment-0.3.20 → vim_eof_comment-0.4.0}/docs/make.bat +0 -0
  23. {vim_eof_comment-0.3.20 → vim_eof_comment-0.4.0}/docs/source/conf.py +0 -0
  24. {vim_eof_comment-0.3.20 → vim_eof_comment-0.4.0}/docs/source/functions.rst +0 -0
  25. {vim_eof_comment-0.3.20 → vim_eof_comment-0.4.0}/docs/source/index.rst +0 -0
  26. {vim_eof_comment-0.3.20 → vim_eof_comment-0.4.0}/docs/source/installation.rst +0 -0
  27. {vim_eof_comment-0.3.20 → vim_eof_comment-0.4.0}/requirements.txt +0 -0
  28. {vim_eof_comment-0.3.20 → vim_eof_comment-0.4.0}/setup.cfg +0 -0
  29. {vim_eof_comment-0.3.20 → vim_eof_comment-0.4.0}/taplo.toml +0 -0
  30. {vim_eof_comment-0.3.20 → vim_eof_comment-0.4.0}/vim_eof_comment/__init__.py +0 -0
  31. {vim_eof_comment-0.3.20 → vim_eof_comment-0.4.0}/vim_eof_comment/__init__.pyi +0 -0
  32. {vim_eof_comment-0.3.20 → vim_eof_comment-0.4.0}/vim_eof_comment/__main__.py +0 -0
  33. {vim_eof_comment-0.3.20 → vim_eof_comment-0.4.0}/vim_eof_comment/args/__init__.py +0 -0
  34. {vim_eof_comment-0.3.20 → vim_eof_comment-0.4.0}/vim_eof_comment/args/__init__.pyi +0 -0
  35. {vim_eof_comment-0.3.20 → vim_eof_comment-0.4.0}/vim_eof_comment/args/completion.py +0 -0
  36. {vim_eof_comment-0.3.20 → vim_eof_comment-0.4.0}/vim_eof_comment/args/completion.pyi +0 -0
  37. {vim_eof_comment-0.3.20 → vim_eof_comment-0.4.0}/vim_eof_comment/args/parsing.py +0 -0
  38. {vim_eof_comment-0.3.20 → vim_eof_comment-0.4.0}/vim_eof_comment/args/parsing.pyi +0 -0
  39. {vim_eof_comment-0.3.20 → vim_eof_comment-0.4.0}/vim_eof_comment/comments/__init__.py +0 -0
  40. {vim_eof_comment-0.3.20 → vim_eof_comment-0.4.0}/vim_eof_comment/comments/__init__.pyi +0 -0
  41. {vim_eof_comment-0.3.20 → vim_eof_comment-0.4.0}/vim_eof_comment/comments/filetypes.json +0 -0
  42. {vim_eof_comment-0.3.20 → vim_eof_comment-0.4.0}/vim_eof_comment/comments/generator.py +0 -0
  43. {vim_eof_comment-0.3.20 → vim_eof_comment-0.4.0}/vim_eof_comment/comments/generator.pyi +0 -0
  44. {vim_eof_comment-0.3.20 → vim_eof_comment-0.4.0}/vim_eof_comment/eof.py +0 -0
  45. {vim_eof_comment-0.3.20 → vim_eof_comment-0.4.0}/vim_eof_comment/eof.pyi +0 -0
  46. {vim_eof_comment-0.3.20 → vim_eof_comment-0.4.0}/vim_eof_comment/py.typed +0 -0
  47. {vim_eof_comment-0.3.20 → vim_eof_comment-0.4.0}/vim_eof_comment/regex.py +0 -0
  48. {vim_eof_comment-0.3.20 → vim_eof_comment-0.4.0}/vim_eof_comment/regex.pyi +0 -0
  49. {vim_eof_comment-0.3.20 → vim_eof_comment-0.4.0}/vim_eof_comment/types.py +0 -0
  50. {vim_eof_comment-0.3.20 → vim_eof_comment-0.4.0}/vim_eof_comment/types.pyi +0 -0
  51. {vim_eof_comment-0.3.20 → vim_eof_comment-0.4.0}/vim_eof_comment/util.py +0 -0
  52. {vim_eof_comment-0.3.20 → vim_eof_comment-0.4.0}/vim_eof_comment/util.pyi +0 -0
  53. {vim_eof_comment-0.3.20 → vim_eof_comment-0.4.0}/vim_eof_comment/version.pyi +0 -0
  54. {vim_eof_comment-0.3.20 → vim_eof_comment-0.4.0}/vim_eof_comment.egg-info/SOURCES.txt +0 -0
  55. {vim_eof_comment-0.3.20 → vim_eof_comment-0.4.0}/vim_eof_comment.egg-info/dependency_links.txt +0 -0
  56. {vim_eof_comment-0.3.20 → vim_eof_comment-0.4.0}/vim_eof_comment.egg-info/entry_points.txt +0 -0
  57. {vim_eof_comment-0.3.20 → vim_eof_comment-0.4.0}/vim_eof_comment.egg-info/requires.txt +0 -0
  58. {vim_eof_comment-0.3.20 → vim_eof_comment-0.4.0}/vim_eof_comment.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: vim-eof-comment
3
- Version: 0.3.20
3
+ Version: 0.4.0
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>
@@ -39,7 +39,7 @@ maintainers = [{ name = "Guennadi Maximov C", email = "g.maxc.fox@protonmail.com
39
39
  name = "vim-eof-comment"
40
40
  readme = "README.md"
41
41
  requires-python = ">=3.10"
42
- version = "0.3.20"
42
+ version = "0.4.0"
43
43
 
44
44
  [project.scripts]
45
45
  vim-eof-comment = "vim_eof_comment.eof:main"
@@ -0,0 +1 @@
1
+ 0.4.0
@@ -5,7 +5,15 @@ File management utilities.
5
5
 
6
6
  Copyright (c) 2025 Guennadi Maximov C. All Rights Reserved.
7
7
  """
8
- __all__ = ["bootstrap_paths", "open_batch_paths", "modify_file", "get_last_line"]
8
+ __all__ = [
9
+ "EXCLUDED_DIRS",
10
+ "bootstrap_paths",
11
+ "get_last_line",
12
+ "has_excluded",
13
+ "modify_file",
14
+ "open_batch_paths",
15
+ "try_open",
16
+ ]
9
17
 
10
18
  from io import TextIOWrapper
11
19
  from os import walk
@@ -15,6 +23,64 @@ from typing import Dict, List
15
23
  from .types import BatchPairDict, BatchPathDict, LineBool
16
24
  from .util import die, error
17
25
 
26
+ EXCLUDED_DIRS: List[str] = [
27
+ ".git",
28
+ ".mypy_cache",
29
+ ".ropeproject",
30
+ ".venv",
31
+ "build",
32
+ "venv",
33
+ ]
34
+
35
+
36
+ def try_open(fpath: str) -> bool:
37
+ """
38
+ Try to open a file, unless a ``UnicodeDecodeError`` triggers.
39
+
40
+ Parameters
41
+ ----------
42
+ fpath : str
43
+ The file path to try and open.
44
+
45
+ Returns
46
+ -------
47
+ bool
48
+ Whether the file triggers a ``UnicodeDecodeError`` or not.
49
+ """
50
+ file = open(fpath, "rb")
51
+ success: bool = True
52
+ try:
53
+ file.read().decode(encoding="utf8")
54
+ except UnicodeDecodeError:
55
+ success = False
56
+ except Exception:
57
+ die("Something went wrong in `try_open()`!", code=2)
58
+
59
+ file.close()
60
+ return success
61
+
62
+
63
+ def has_excluded(dir: str) -> bool:
64
+ """
65
+ Check whether a directory list contains any excluded directories.
66
+
67
+ Parameters
68
+ ----------
69
+ dir : str
70
+ The directory to check.
71
+
72
+ Returns
73
+ -------
74
+ bool
75
+ Whether an excluded directory was found.
76
+ """
77
+ dir = dir.rstrip("/")
78
+ for excluded in EXCLUDED_DIRS:
79
+ if dir.endswith(excluded):
80
+ return True
81
+
82
+ return False
83
+
18
84
 
19
85
  def bootstrap_paths(paths: List[str], exts: List[str]) -> List[BatchPairDict]:
20
86
  """
@@ -34,11 +100,22 @@ def bootstrap_paths(paths: List[str], exts: List[str]) -> List[BatchPairDict]:
34
100
  """
35
101
  result = list()
36
102
  for path in paths:
37
- if not isdir(path):
103
+ if not isdir(path) or has_excluded(path):
38
104
  continue
39
105
 
40
- file: str
106
+ root: str
107
+ dirs: List[str]
108
+ files: List[str]
41
109
  for root, dirs, files in walk(path):
110
+ excluded = False
111
+ for dir in dirs:
112
+ if has_excluded(dir):
113
+ excluded = True
114
+ break
115
+
116
+ if excluded:
117
+ continue
118
+
42
119
  for file in files:
43
120
  for ext in exts:
44
121
  if not file.endswith(ext):
@@ -66,6 +143,9 @@ def open_batch_paths(paths: List[BatchPairDict]) -> Dict[str, BatchPathDict]:
66
143
  result = dict()
67
144
  for path in paths:
68
145
  fpath, ext = path["fpath"], path["ft_ext"]
146
+ if not try_open(fpath):
147
+ continue
148
+
69
149
  try:
70
150
  result[fpath] = {"file": open(fpath, "rb"), "ft_ext": ext}
71
151
  except KeyboardInterrupt:
@@ -2,8 +2,38 @@ from io import TextIOWrapper
2
2
 
3
3
  from .types import BatchPairDict, BatchPathDict, LineBool
4
4
 
5
- __all__ = ['bootstrap_paths', 'open_batch_paths', 'modify_file', 'get_last_line']
5
+ __all__ = ['EXCLUDED_DIRS', 'bootstrap_paths', 'get_last_line', 'has_excluded', 'modify_file', 'open_batch_paths', 'try_open']
6
6
 
7
+ EXCLUDED_DIRS: list[str]
8
+
9
+ def try_open(fpath: str) -> bool:
10
+ """
11
+ Try to open a file, unless a ``UnicodeDecodeError`` triggers.
12
+
13
+ Parameters
14
+ ----------
15
+ fpath : str
16
+ The file path to try and open.
17
+
18
+ Returns
19
+ -------
20
+ bool
21
+ Whether the file triggers a ``UnicodeDecodeError`` or not.
22
+ """
23
+ def has_excluded(dir: str) -> bool:
24
+ """
25
+ Check whether a directory list contains any excluded directories.
26
+
27
+ Parameters
28
+ ----------
29
+ dir : str
30
+ The directory to check.
31
+
32
+ Returns
33
+ -------
34
+ bool
35
+ Whether an excluded directory was found.
36
+ """
7
37
  def bootstrap_paths(paths: list[str], exts: list[str]) -> list[BatchPairDict]:
8
38
  """
9
39
  Bootstrap all the matching paths in current dir and below.
@@ -227,6 +227,8 @@ version_info = VersionInfo([
227
227
  (0, 3, 18),
228
228
  (0, 3, 19),
229
229
  (0, 3, 20),
230
+ (0, 3, 21),
231
+ (0, 4, 0),
230
232
  ])
231
233
 
232
234
  __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.20
3
+ Version: 0.4.0
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>
@@ -1 +0,0 @@
1
- 0.3.20