vim-eof-comment 0.3.11__tar.gz → 0.3.13__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 (61) hide show
  1. vim_eof_comment-0.3.13/.github/workflows/vim-eof-comment.yml +40 -0
  2. {vim_eof_comment-0.3.11 → vim_eof_comment-0.3.13}/Makefile +2 -0
  3. {vim_eof_comment-0.3.11 → vim_eof_comment-0.3.13}/PKG-INFO +4 -1
  4. {vim_eof_comment-0.3.11 → vim_eof_comment-0.3.13}/Pipfile +1 -0
  5. {vim_eof_comment-0.3.11 → vim_eof_comment-0.3.13}/docs/source/conf.py +17 -0
  6. {vim_eof_comment-0.3.11 → vim_eof_comment-0.3.13}/docs/source/index.rst +1 -1
  7. vim_eof_comment-0.3.13/docs/source/installation.rst +14 -0
  8. {vim_eof_comment-0.3.11 → vim_eof_comment-0.3.13}/pyproject.toml +5 -2
  9. {vim_eof_comment-0.3.11 → vim_eof_comment-0.3.13}/requirements.txt +4 -0
  10. vim_eof_comment-0.3.13/version.txt +1 -0
  11. vim_eof_comment-0.3.13/vim_eof_comment/args/completion.py +48 -0
  12. {vim_eof_comment-0.3.11 → vim_eof_comment-0.3.13}/vim_eof_comment/args/completion.pyi +1 -1
  13. {vim_eof_comment-0.3.11 → vim_eof_comment-0.3.13}/vim_eof_comment/comments/generator.py +47 -5
  14. {vim_eof_comment-0.3.11 → vim_eof_comment-0.3.13}/vim_eof_comment/eof.py +2 -2
  15. {vim_eof_comment-0.3.11 → vim_eof_comment-0.3.13}/vim_eof_comment/regex.py +2 -2
  16. {vim_eof_comment-0.3.11 → vim_eof_comment-0.3.13}/vim_eof_comment/regex.pyi +2 -2
  17. {vim_eof_comment-0.3.11 → vim_eof_comment-0.3.13}/vim_eof_comment/types.py +80 -10
  18. vim_eof_comment-0.3.13/vim_eof_comment/types.pyi +157 -0
  19. {vim_eof_comment-0.3.11 → vim_eof_comment-0.3.13}/vim_eof_comment/util.py +1 -17
  20. {vim_eof_comment-0.3.11 → vim_eof_comment-0.3.13}/vim_eof_comment/util.pyi +1 -14
  21. {vim_eof_comment-0.3.11 → vim_eof_comment-0.3.13}/vim_eof_comment/version.py +18 -5
  22. {vim_eof_comment-0.3.11 → vim_eof_comment-0.3.13}/vim_eof_comment/version.pyi +14 -3
  23. {vim_eof_comment-0.3.11 → vim_eof_comment-0.3.13}/vim_eof_comment.egg-info/PKG-INFO +4 -1
  24. {vim_eof_comment-0.3.11 → vim_eof_comment-0.3.13}/vim_eof_comment.egg-info/SOURCES.txt +3 -2
  25. vim_eof_comment-0.3.11/docs/source/usage.rst +0 -11
  26. vim_eof_comment-0.3.11/version.txt +0 -1
  27. vim_eof_comment-0.3.11/vim_eof_comment/args/completion.py +0 -30
  28. vim_eof_comment-0.3.11/vim_eof_comment/types.pyi +0 -87
  29. {vim_eof_comment-0.3.11 → vim_eof_comment-0.3.13}/.flake8 +0 -0
  30. {vim_eof_comment-0.3.11 → vim_eof_comment-0.3.13}/.gitattributes +0 -0
  31. {vim_eof_comment-0.3.11 → vim_eof_comment-0.3.13}/.github/CODEOWNERS +0 -0
  32. {vim_eof_comment-0.3.11 → vim_eof_comment-0.3.13}/.github/workflows/flake8-lint.yml +0 -0
  33. {vim_eof_comment-0.3.11 → vim_eof_comment-0.3.13}/.github/workflows/mypy-lint.yml +0 -0
  34. {vim_eof_comment-0.3.11 → vim_eof_comment-0.3.13}/.github/workflows/release.yml +0 -0
  35. {vim_eof_comment-0.3.11 → vim_eof_comment-0.3.13}/.pre-commit-config.yaml +0 -0
  36. {vim_eof_comment-0.3.11 → vim_eof_comment-0.3.13}/LICENSE +0 -0
  37. {vim_eof_comment-0.3.11 → vim_eof_comment-0.3.13}/README.md +0 -0
  38. {vim_eof_comment-0.3.11 → vim_eof_comment-0.3.13}/docs/Makefile +0 -0
  39. {vim_eof_comment-0.3.11 → vim_eof_comment-0.3.13}/docs/make.bat +0 -0
  40. {vim_eof_comment-0.3.11 → vim_eof_comment-0.3.13}/docs/source/functions.rst +0 -0
  41. {vim_eof_comment-0.3.11 → vim_eof_comment-0.3.13}/setup.cfg +0 -0
  42. /vim_eof_comment-0.3.11/.taplo.toml → /vim_eof_comment-0.3.13/taplo.toml +0 -0
  43. {vim_eof_comment-0.3.11 → vim_eof_comment-0.3.13}/vim_eof_comment/__init__.py +0 -0
  44. {vim_eof_comment-0.3.11 → vim_eof_comment-0.3.13}/vim_eof_comment/__init__.pyi +0 -0
  45. {vim_eof_comment-0.3.11 → vim_eof_comment-0.3.13}/vim_eof_comment/__main__.py +0 -0
  46. {vim_eof_comment-0.3.11 → vim_eof_comment-0.3.13}/vim_eof_comment/args/__init__.py +0 -0
  47. {vim_eof_comment-0.3.11 → vim_eof_comment-0.3.13}/vim_eof_comment/args/__init__.pyi +0 -0
  48. {vim_eof_comment-0.3.11 → vim_eof_comment-0.3.13}/vim_eof_comment/args/parsing.py +0 -0
  49. {vim_eof_comment-0.3.11 → vim_eof_comment-0.3.13}/vim_eof_comment/args/parsing.pyi +0 -0
  50. {vim_eof_comment-0.3.11 → vim_eof_comment-0.3.13}/vim_eof_comment/comments/__init__.py +0 -0
  51. {vim_eof_comment-0.3.11 → vim_eof_comment-0.3.13}/vim_eof_comment/comments/__init__.pyi +0 -0
  52. {vim_eof_comment-0.3.11 → vim_eof_comment-0.3.13}/vim_eof_comment/comments/filetypes.json +0 -0
  53. {vim_eof_comment-0.3.11 → vim_eof_comment-0.3.13}/vim_eof_comment/comments/generator.pyi +0 -0
  54. {vim_eof_comment-0.3.11 → vim_eof_comment-0.3.13}/vim_eof_comment/eof.pyi +0 -0
  55. {vim_eof_comment-0.3.11 → vim_eof_comment-0.3.13}/vim_eof_comment/file.py +0 -0
  56. {vim_eof_comment-0.3.11 → vim_eof_comment-0.3.13}/vim_eof_comment/file.pyi +0 -0
  57. {vim_eof_comment-0.3.11 → vim_eof_comment-0.3.13}/vim_eof_comment/py.typed +0 -0
  58. {vim_eof_comment-0.3.11 → vim_eof_comment-0.3.13}/vim_eof_comment.egg-info/dependency_links.txt +0 -0
  59. {vim_eof_comment-0.3.11 → vim_eof_comment-0.3.13}/vim_eof_comment.egg-info/entry_points.txt +0 -0
  60. {vim_eof_comment-0.3.11 → vim_eof_comment-0.3.13}/vim_eof_comment.egg-info/requires.txt +0 -0
  61. {vim_eof_comment-0.3.11 → vim_eof_comment-0.3.13}/vim_eof_comment.egg-info/top_level.txt +0 -0
@@ -0,0 +1,40 @@
1
+ # GitHub Actions example
2
+ name: Run vim-eof-comment
3
+ on:
4
+ push:
5
+ branches:
6
+ - main
7
+ pull_request:
8
+ types:
9
+ - opened
10
+ branches:
11
+ - main
12
+ jobs:
13
+ vim_eof_comment:
14
+ name: vim-eof-comment
15
+ runs-on: ubuntu-latest
16
+ permissions:
17
+ contents: write
18
+ steps:
19
+ - name: Checkout
20
+ uses: actions/checkout@v6
21
+ - name: Set up Python
22
+ uses: actions/setup-python@v6.1.0
23
+ with:
24
+ python-version: '3.10'
25
+ - name: Install pipenv
26
+ run: |
27
+ python -m pip install -U pip
28
+ pip install pipenv
29
+ - name: Install vim-eof-comment
30
+ run: |
31
+ pipenv install --dev vim-eof-comment
32
+ - name: Run vim-eof-comment
33
+ run: |
34
+ pipenv run vim-eof-comment -e lua,md,Makefile,yaml,toml -i lua:2:Y,md:2:Y -v .
35
+ - name: Auto Commit Changes
36
+ uses: stefanzweifel/git-auto-commit-action@v7.1.0
37
+ with:
38
+ commit_message: "chore: format files with `vim-eof-comment`"
39
+ commit_options: "--signoff"
40
+ branch: ${{ github.head_ref }}
@@ -43,6 +43,8 @@ lint:
43
43
  vim_eof_comment
44
44
  @pydocstyle --convention=numpy --match='.*\.py' vim_eof_comment
45
45
  @autopep8 --aggressive --aggressive --aggressive --in-place --recursive vim_eof_comment
46
+ $(eval files := $(shell fd --full-path vim_eof_comment -e py))
47
+ @numpydoc lint $(files)
46
48
  @echo -e "\nDone!"
47
49
 
48
50
  stubs: lint
@@ -1,18 +1,21 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: vim-eof-comment
3
- Version: 0.3.11
3
+ Version: 0.3.13
4
4
  Summary: Adds Vim EOF 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
7
  License-Expression: GPL-2.0-only
8
8
  Project-URL: Issues, https://github.com/DrKJeff16/vim-eof-comment/issues
9
9
  Project-URL: Repository, https://github.com/DrKJeff16/vim-eof-comment
10
+ Project-URL: Download, https://github.com/DrKJeff16/vim-eof-comment/releases/latest
10
11
  Keywords: eof comments,eof,files,preprocessing,text,vim modeline,vim,vim-eof
11
12
  Classifier: Development Status :: 4 - Beta
12
13
  Classifier: Environment :: Console
13
14
  Classifier: Intended Audience :: Developers
14
15
  Classifier: Intended Audience :: End Users/Desktop
15
16
  Classifier: Operating System :: OS Independent
17
+ Classifier: Programming Language :: Python :: 3 :: Only
18
+ Classifier: Programming Language :: Python :: 3
16
19
  Classifier: Programming Language :: Python :: 3.10
17
20
  Classifier: Programming Language :: Python :: 3.11
18
21
  Classifier: Programming Language :: Python :: 3.12
@@ -13,6 +13,7 @@ pyproject = "*"
13
13
  colorama = "*"
14
14
  argcomplete = "*"
15
15
  python-magic = "*"
16
+ pynvim = "*"
16
17
 
17
18
  [dev-packages]
18
19
  pynvim = "*"
@@ -22,8 +22,10 @@ release: str = '0.1.33'
22
22
  # https://www.sphinx-doc.org/en/master/usage/configuration.html#general-configuration
23
23
 
24
24
  extensions: List[str] = [
25
+ 'numpydoc',
25
26
  'sphinx.ext.autodoc',
26
27
  'sphinx.ext.autosectionlabel',
28
+ 'sphinx.ext.autosummary',
27
29
  'sphinx.ext.duration',
28
30
  ]
29
31
 
@@ -36,4 +38,19 @@ exclude_patterns: List[str] = []
36
38
  html_theme: str = 'sphinx_rtd_theme'
37
39
  html_static_path: List[str] = ['_static']
38
40
 
41
+ # -- Options for numpydoc ----------------------------------------------------
42
+ numpydoc_xref_param_type = True
43
+ numpydoc_validation_checks = {
44
+ "all", # report on all checks, except the below
45
+ "ES01",
46
+ "EX01",
47
+ "SA01",
48
+ }
49
+ numpydoc_xref_aliases = {
50
+ 'TextIO': 'typing.TextIO',
51
+ 'List': 'list',
52
+ 'Dict': 'dict',
53
+ 'Tuple': 'tuple',
54
+ }
55
+
39
56
  # vim: set ts=4 sts=4 sw=4 et ai si sta:
@@ -18,5 +18,5 @@ Contents
18
18
 
19
19
  .. toctree::
20
20
 
21
- usage
21
+ installation
22
22
  functions
@@ -0,0 +1,14 @@
1
+ Installation
2
+ ============
3
+
4
+ To install *vim-eof-comment*, first install it using ``pip``:
5
+
6
+ .. code-block:: console
7
+
8
+ $ pip install -U vim-eof-comment
9
+
10
+ You may also use ``pipenv`` or any other virtual environment:
11
+
12
+ .. code-block:: console
13
+
14
+ $ pipenv install vim-eof-comment
@@ -10,6 +10,8 @@ classifiers = [
10
10
  "Intended Audience :: Developers",
11
11
  "Intended Audience :: End Users/Desktop",
12
12
  "Operating System :: OS Independent",
13
+ "Programming Language :: Python :: 3 :: Only",
14
+ "Programming Language :: Python :: 3",
13
15
  "Programming Language :: Python :: 3.10",
14
16
  "Programming Language :: Python :: 3.11",
15
17
  "Programming Language :: Python :: 3.12",
@@ -45,7 +47,7 @@ maintainers = [{ name = "Guennadi Maximov C", email = "g.maxc.fox@protonmail.com
45
47
  name = "vim-eof-comment"
46
48
  readme = "README.md"
47
49
  requires-python = ">=3.10"
48
- version = "0.3.11"
50
+ version = "0.3.13"
49
51
 
50
52
  [project.scripts]
51
53
  vim-eof-comment = "vim_eof_comment.eof:main"
@@ -53,13 +55,14 @@ version = "0.3.11"
53
55
  [project.urls]
54
56
  Issues = "https://github.com/DrKJeff16/vim-eof-comment/issues"
55
57
  Repository = "https://github.com/DrKJeff16/vim-eof-comment"
58
+ Download = "https://github.com/DrKJeff16/vim-eof-comment/releases/latest"
56
59
 
57
60
  [tool.numpydoc_validation]
58
61
  checks = [
62
+ "all", # report on all checks, except the below
59
63
  "ES01",
60
64
  "EX01",
61
65
  "SA01",
62
- "all", # report on all checks, except the below
63
66
  ]
64
67
  exclude = [
65
68
  '\.undocumented_method$',
@@ -2,7 +2,11 @@
2
2
  argcomplete==3.6.3; python_version >= '3.8'
3
3
  argparse==1.4.0
4
4
  colorama==0.4.6; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4, 3.5, 3.6'
5
+ greenlet==3.3.0; python_version >= '3.10'
6
+ msgpack==1.1.2; python_version >= '3.9'
7
+ pynvim==0.6.0; python_version >= '3.7'
5
8
  pyproject==1!0.1.2; python_version >= '3.12'
9
+ python-magic==0.4.27; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4'
6
10
  setuptools==80.9.0; python_version >= '3.9'
7
11
  typing==3.7.4.3; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'
8
12
  typing-extensions==4.15.0; python_version >= '3.9'
@@ -0,0 +1 @@
1
+ 0.3.13
@@ -0,0 +1,48 @@
1
+ # -*- coding: utf-8 -*-
2
+ # Copyright (c) 2025 Guennadi Maximov C. All Rights Reserved.
3
+ """
4
+ Argument parsing completion utilities for ``vim-eof-comment``.
5
+
6
+ Copyright (c) 2025 Guennadi Maximov C. All Rights Reserved.
7
+ """
8
+ __all__ = ["complete_parser"]
9
+
10
+ from argparse import ArgumentParser
11
+ from typing import List, NoReturn
12
+
13
+ from argcomplete import autocomplete
14
+
15
+
16
+ def complete_validator(completion_candidate: List[str], current_input: str) -> bool:
17
+ """
18
+ Complete non-prefix substring matches.
19
+
20
+ Parameters
21
+ ----------
22
+ completion_candidate : List[str]
23
+ All the completion candidates.
24
+ current_input : str
25
+ The current input string.
26
+
27
+ Returns
28
+ -------
29
+ bool
30
+ Whether the current input fits the completion candidates pool.
31
+ """
32
+ return current_input in completion_candidate
33
+
34
+
35
+ def complete_parser(parser: ArgumentParser, **kwargs) -> NoReturn:
36
+ """
37
+ Complete the script argument parser.
38
+
39
+ Parameters
40
+ ----------
41
+ parser : argparse.ArgumentParser
42
+ The ``ArgumentParser`` object.
43
+ **kwargs
44
+ Extra parameters to be passed to ``argcomplete.autocomplete()``.
45
+ """
46
+ autocomplete(parser, validator=complete_validator, **kwargs)
47
+
48
+ # vim: set ts=4 sts=4 sw=4 et ai si sta:
@@ -12,7 +12,7 @@ def complete_parser(parser: ArgumentParser, **kwargs) -> NoReturn:
12
12
  parser : argparse.ArgumentParser
13
13
  The ``ArgumentParser`` object.
14
14
  **kwargs
15
- Extra parameters.
15
+ Extra parameters to be passed to ``argcomplete.autocomplete()``.
16
16
  """
17
17
 
18
18
  # vim: set ts=4 sts=4 sw=4 et ai si sta:
@@ -13,11 +13,20 @@ from io import TextIOWrapper
13
13
  from os.path import exists, isdir, realpath
14
14
  from typing import Dict, Iterator, List, NoReturn, Tuple
15
15
 
16
+ from colorama import Fore, Style
17
+ from colorama import init as color_init
18
+
16
19
  from ..types import IndentMap
17
20
  from ..util import die
18
21
 
19
22
  _JSON_FILE: str = realpath("./vim_eof_comment/comments/filetypes.json")
20
23
 
24
+ _BLUE: int = Fore.BLUE
25
+ _YELLOW: int = Fore.YELLOW
26
+ _CYAN: int = Fore.CYAN
27
+ _BRIGHT: int = Style.BRIGHT
28
+ _RESET: int = Style.RESET_ALL
29
+
21
30
 
22
31
  def import_json() -> Tuple[Dict[str, str], Dict[str, IndentMap]]:
23
32
  """
@@ -195,15 +204,48 @@ class Comments():
195
204
  return comments.get(ext, None)
196
205
 
197
206
 
207
+ def generate_list_items(ft: str, level: int, expandtab: str) -> str:
208
+ """
209
+ Generate a colored string for filetypes listing.
210
+
211
+ Parameters
212
+ ----------
213
+ ft : str
214
+ The filetype item in question.
215
+ level : int
216
+ Indent size.
217
+ expandtab : str
218
+ Either ``"Yes"`` or ``"No"``.
219
+
220
+ Returns
221
+ -------
222
+ str
223
+ The generated string.
224
+ """
225
+ txt = f"{_RESET}{_BRIGHT}{_BLUE}{ft}\n"
226
+ txt += f" {_RESET}{_BRIGHT}indent size{_RESET}{_BRIGHT} ==> {_CYAN}{level}\n"
227
+ txt += f" {_RESET}{_BRIGHT}expandtab{_RESET}{_BRIGHT} ==> {_CYAN}{expandtab}"
228
+
229
+ return txt
230
+
231
+
198
232
  def list_filetypes() -> NoReturn:
199
233
  """List all available filetypes."""
200
- txt: List[str] = [""]
234
+ color_init()
235
+
236
+ defaults = Comments().get_defaults()
237
+ items: Dict[str, Tuple[int, str]] = dict()
238
+ for ft_ext, indents in defaults.items():
239
+ level: int = indents.get("level", 4)
240
+ et = "Yes" if indents.get("expandtab") else "No"
241
+ items[ft_ext] = (level, et)
242
+
243
+ keys: List[str] = list(items.keys())
244
+ keys.sort()
201
245
 
202
- c: Comments = Comments()
203
- defaults: Dict[str, IndentMap] = c.get_defaults()
204
- for ext, indents in defaults.items():
205
- txt.append(f"- {ext}: {indents}")
246
+ sorted_items: Dict[str, Tuple[int, str]] = {i: items[i] for i in keys}
206
247
 
248
+ txt = [generate_list_items(k, v[0], v[1]) for k, v in sorted_items.items()]
207
249
  die(*txt, code=0, sep="\n")
208
250
 
209
251
 
@@ -19,8 +19,8 @@ from .comments.generator import Comments, list_filetypes
19
19
  from .file import bootstrap_paths, get_last_line, modify_file, open_batch_paths
20
20
  from .regex import matches
21
21
  from .types import BatchPathDict, EOFCommentSearch, IndentHandler, IOWrapperBool
22
- from .util import die, gen_indent_maps, verbose_print, version_print
23
- from .version import __version__, list_versions
22
+ from .util import die, gen_indent_maps, verbose_print
23
+ from .version import __version__, list_versions, version_print
24
24
 
25
25
  _RED: int = Fore.LIGHTRED_EX
26
26
  _GREEN: int = Fore.LIGHTGREEN_EX
@@ -11,7 +11,7 @@ from re import compile
11
11
  from typing import Tuple
12
12
 
13
13
 
14
- def matches(s: str, verbose: bool) -> bool:
14
+ def matches(s: str, verbose: bool = False) -> bool:
15
15
  """
16
16
  Check if given string matches any of the given patterns.
17
17
 
@@ -19,7 +19,7 @@ def matches(s: str, verbose: bool) -> bool:
19
19
  ----------
20
20
  s : str
21
21
  The string to be matched.
22
- verbose : bool
22
+ verbose : bool, optional, default=False
23
23
  Enables verbose mode.
24
24
 
25
25
  Returns
@@ -1,6 +1,6 @@
1
1
  __all__ = ['matches']
2
2
 
3
- def matches(s: str, verbose: bool) -> bool:
3
+ def matches(s: str, verbose: bool = False) -> bool:
4
4
  """
5
5
  Check if given string matches any of the given patterns.
6
6
 
@@ -8,7 +8,7 @@ def matches(s: str, verbose: bool) -> bool:
8
8
  ----------
9
9
  s : str
10
10
  The string to be matched.
11
- verbose : bool
11
+ verbose : bool, optional, default=False
12
12
  Enables verbose mode.
13
13
 
14
14
  Returns
@@ -32,15 +32,15 @@ class ParserSpec(TypedDict):
32
32
  ----------
33
33
  opts : List[str]
34
34
  A list containing all the relevant iterations of the same option.
35
- kwargs : Dict[str, str]
35
+ kwargs : Dict[str, Any]
36
36
  Extra arguments for ``argparse.ArgumentParser``.
37
- completer : argcomplete.DirectoriesCompleter, optional, default=None
38
- An optional ``argcomplete`` completer object.
37
+ completer : argcomplete.DirectoriesCompleter
38
+ An ``argcomplete`` completer object.
39
39
  """
40
40
 
41
41
  opts: List[str]
42
42
  kwargs: Dict[str, Any]
43
- completer: DirectoriesCompleter | None
43
+ completer: DirectoriesCompleter
44
44
 
45
45
 
46
46
  class CommentMap(TypedDict):
@@ -59,7 +59,18 @@ class CommentMap(TypedDict):
59
59
 
60
60
 
61
61
  class IndentMap(TypedDict):
62
- """A ``TypedDict`` container."""
62
+ """
63
+ A dict containing ``level`` and ``expandtab`` as keys.
64
+
65
+ This is a ``TypedDict``-like object.
66
+
67
+ Attributes
68
+ ----------
69
+ level : int
70
+ The indent level.
71
+ expandtab : bool
72
+ Whether to expand tabs or not.
73
+ """
63
74
 
64
75
  level: int
65
76
  expandtab: bool
@@ -69,6 +80,8 @@ class IndentHandler(TypedDict):
69
80
  """
70
81
  A dict containing ``ft_ext``, ``level`` and ``expandtab`` as keys.
71
82
 
83
+ This is a ``TypedDict``-like object.
84
+
72
85
  Attributes
73
86
  ----------
74
87
  ft_ext : str
@@ -85,35 +98,92 @@ class IndentHandler(TypedDict):
85
98
 
86
99
 
87
100
  class IOWrapperBool(TypedDict):
88
- """A ``TypedDict`` container."""
101
+ """
102
+ A dict containing ``file`` and ``has_nwl`` as keys.
103
+
104
+ This is a ``TypedDict``-like object.
105
+
106
+ Attributes
107
+ ----------
108
+ file : TextIO
109
+ The opened file as a ``TextIO`` wrapper.
110
+ has_nwl : bool
111
+ Whether the file has a newline or not.
112
+ """
89
113
 
90
114
  file: TextIO
91
115
  has_nwl: bool
92
116
 
93
117
 
94
118
  class LineBool(TypedDict):
95
- """A ``TypedDict`` container."""
119
+ """
120
+ A dict containing ``line`` and ``has_nwl`` as keys.
121
+
122
+ This is a ``TypedDict``-like object.
123
+
124
+ Attributes
125
+ ----------
126
+ line : str
127
+ The last line of the target file.
128
+ has_nwl : bool
129
+ Whether the file has a newline or not.
130
+ """
96
131
 
97
132
  line: str
98
133
  has_nwl: bool
99
134
 
100
135
 
101
136
  class BatchPathDict(TypedDict):
102
- """A ``TypedDict`` container."""
137
+ """
138
+ A dict containing ``file`` and ``ft_ext`` as keys.
139
+
140
+ This is a ``TypedDict``-like object.
141
+
142
+ Attributes
143
+ ----------
144
+ file : TextIO
145
+ The opened file as a ``TextIO`` wrapper.
146
+ ft_ext : str
147
+ The file-type/file-extension.
148
+ """
103
149
 
104
150
  file: TextIO
105
151
  ft_ext: str
106
152
 
107
153
 
108
154
  class BatchPairDict(TypedDict):
109
- """A ``TypedDict`` container."""
155
+ """
156
+ A dict containing ``fpath`` and ``ft_ext`` as keys.
157
+
158
+ This is a ``TypedDict``-like object.
159
+
160
+ Attributes
161
+ ----------
162
+ fpath : str
163
+ The target file's path.
164
+ ft_ext : str
165
+ The file-type/file-extension.
166
+ """
110
167
 
111
168
  fpath: str
112
169
  ft_ext: str
113
170
 
114
171
 
115
172
  class EOFCommentSearch(TypedDict):
116
- """A ``TypedDict`` container."""
173
+ """
174
+ A dict containing ``state``, ``lang`` and ``match`` as keys.
175
+
176
+ This is a ``TypedDict``-like object.
177
+
178
+ Attributes
179
+ ----------
180
+ state : IOWrapperBool
181
+ The target ``IOWrapperBool`` object.
182
+ lang : str
183
+ The file language.
184
+ match : bool
185
+ Whether it has a variation of an EOF comment at the end.
186
+ """
117
187
 
118
188
  state: IOWrapperBool
119
189
  lang: str
@@ -0,0 +1,157 @@
1
+ from typing import Any, TextIO, TypedDict
2
+
3
+ from argcomplete.completers import DirectoriesCompleter
4
+
5
+ __all__ = ['BatchPairDict', 'BatchPathDict', 'CommentMap', 'EOFCommentSearch', 'IOWrapperBool', 'IndentHandler', 'IndentMap', 'LineBool', 'ParserSpec']
6
+
7
+ class ParserSpec(TypedDict):
8
+ """
9
+ Stores the spec for ``argparse`` operations in a constant value.
10
+
11
+ This is a ``TypedDict``-like object.
12
+
13
+ Attributes
14
+ ----------
15
+ opts : List[str]
16
+ A list containing all the relevant iterations of the same option.
17
+ kwargs : Dict[str, Any]
18
+ Extra arguments for ``argparse.ArgumentParser``.
19
+ completer : argcomplete.DirectoriesCompleter
20
+ An ``argcomplete`` completer object.
21
+ """
22
+ opts: list[str]
23
+ kwargs: dict[str, Any]
24
+ completer: DirectoriesCompleter
25
+
26
+ class CommentMap(TypedDict):
27
+ """
28
+ Stores a dict with a ``level`` key.
29
+
30
+ This is a ``TypedDict``-like object.
31
+
32
+ Attributes
33
+ ----------
34
+ level : int
35
+ The indentation level.
36
+ """
37
+ level: int
38
+
39
+ class IndentMap(TypedDict):
40
+ """
41
+ A dict containing ``level`` and ``expandtab`` as keys.
42
+
43
+ This is a ``TypedDict``-like object.
44
+
45
+ Attributes
46
+ ----------
47
+ level : int
48
+ The indent level.
49
+ expandtab : bool
50
+ Whether to expand tabs or not.
51
+ """
52
+ level: int
53
+ expandtab: bool
54
+
55
+ class IndentHandler(TypedDict):
56
+ """
57
+ A dict containing ``ft_ext``, ``level`` and ``expandtab`` as keys.
58
+
59
+ This is a ``TypedDict``-like object.
60
+
61
+ Attributes
62
+ ----------
63
+ ft_ext : str
64
+ The file-extension/file-type.
65
+ level : str
66
+ The string representation of the indent level.
67
+ expandtab : bool
68
+ Whether to expand tabs or not.
69
+ """
70
+ ft_ext: str
71
+ level: str
72
+ expandtab: bool
73
+
74
+ class IOWrapperBool(TypedDict):
75
+ """
76
+ A dict containing ``file`` and ``has_nwl`` as keys.
77
+
78
+ This is a ``TypedDict``-like object.
79
+
80
+ Attributes
81
+ ----------
82
+ file : TextIO
83
+ The opened file as a ``TextIO`` wrapper.
84
+ has_nwl : bool
85
+ Whether the file has a newline or not.
86
+ """
87
+ file: TextIO
88
+ has_nwl: bool
89
+
90
+ class LineBool(TypedDict):
91
+ """
92
+ A dict containing ``line`` and ``has_nwl`` as keys.
93
+
94
+ This is a ``TypedDict``-like object.
95
+
96
+ Attributes
97
+ ----------
98
+ line : str
99
+ The last line of the target file.
100
+ has_nwl : bool
101
+ Whether the file has a newline or not.
102
+ """
103
+ line: str
104
+ has_nwl: bool
105
+
106
+ class BatchPathDict(TypedDict):
107
+ """
108
+ A dict containing ``file`` and ``ft_ext`` as keys.
109
+
110
+ This is a ``TypedDict``-like object.
111
+
112
+ Attributes
113
+ ----------
114
+ file : TextIO
115
+ The opened file as a ``TextIO`` wrapper.
116
+ ft_ext : str
117
+ The file-type/file-extension.
118
+ """
119
+ file: TextIO
120
+ ft_ext: str
121
+
122
+ class BatchPairDict(TypedDict):
123
+ """
124
+ A dict containing ``fpath`` and ``ft_ext`` as keys.
125
+
126
+ This is a ``TypedDict``-like object.
127
+
128
+ Attributes
129
+ ----------
130
+ fpath : str
131
+ The target file's path.
132
+ ft_ext : str
133
+ The file-type/file-extension.
134
+ """
135
+ fpath: str
136
+ ft_ext: str
137
+
138
+ class EOFCommentSearch(TypedDict):
139
+ """
140
+ A dict containing ``state``, ``lang`` and ``match`` as keys.
141
+
142
+ This is a ``TypedDict``-like object.
143
+
144
+ Attributes
145
+ ----------
146
+ state : IOWrapperBool
147
+ The target ``IOWrapperBool`` object.
148
+ lang : str
149
+ The file language.
150
+ match : bool
151
+ Whether it has a variation of an EOF comment at the end.
152
+ """
153
+ state: IOWrapperBool
154
+ lang: str
155
+ match: bool
156
+
157
+ # vim: set ts=4 sts=4 sw=4 et ai si sta:
@@ -5,7 +5,7 @@ EOF comments checker utilities.
5
5
 
6
6
  Copyright (c) 2025 Guennadi Maximov C. All Rights Reserved.
7
7
  """
8
- __all__ = ["die", "error", "gen_indent_maps", "verbose_print", "version_print"]
8
+ __all__ = ["die", "error", "gen_indent_maps", "verbose_print"]
9
9
 
10
10
  from sys import exit as Exit
11
11
  from sys import stderr, stdout
@@ -117,22 +117,6 @@ def verbose_print(*msg, verbose: bool | None = None, **kwargs) -> NoReturn:
117
117
  print(*msg, end=end, sep=sep, flush=flush)
118
118
 
119
119
 
120
- def version_print(version: str) -> NoReturn:
121
- """
122
- Print project version, then exit.
123
-
124
- Parameters
125
- ----------
126
- version : str
127
- The version string.
128
-
129
- See Also
130
- --------
131
- vim_eof_comment.util.die : The function used for this function.
132
- """
133
- die(f"vim-eof-comment-{version}", code=0)
134
-
135
-
136
120
  def gen_indent_maps(maps: List[IndentHandler]) -> Dict[str, IndentMap] | None:
137
121
  """
138
122
  Generate a dictionary from the custom indent maps.
@@ -2,7 +2,7 @@ from typing import Callable, NoReturn, TextIO
2
2
 
3
3
  from .types import IndentHandler, IndentMap
4
4
 
5
- __all__ = ['die', 'error', 'gen_indent_maps', 'verbose_print', 'version_print']
5
+ __all__ = ['die', 'error', 'gen_indent_maps', 'verbose_print']
6
6
 
7
7
  def error(*msg, **kwargs) -> NoReturn:
8
8
  """
@@ -77,19 +77,6 @@ def verbose_print(*msg, verbose: bool | None = None, **kwargs) -> NoReturn:
77
77
  --------
78
78
  print : This function is essentially being wrapped around here.
79
79
  """
80
- def version_print(version: str) -> NoReturn:
81
- """
82
- Print project version, then exit.
83
-
84
- Parameters
85
- ----------
86
- version : str
87
- The version string.
88
-
89
- See Also
90
- --------
91
- vim_eof_comment.util.die : The function used for this function.
92
- """
93
80
  def gen_indent_maps(maps: list[IndentHandler]) -> dict[str, IndentMap] | None:
94
81
  """
95
82
  Generate a dictionary from the custom indent maps.
@@ -5,7 +5,7 @@ Custom vim-eof-comment versioning objects.
5
5
 
6
6
  Copyright (c) 2025 Guennadi Maximov C. All Rights Reserved.
7
7
  """
8
- __all__ = ["VersionInfo", "list_versions", "version_info", "__version__"]
8
+ __all__ = ["VersionInfo", "list_versions", "version_info", "version_print", "__version__"]
9
9
 
10
10
  from typing import List, NoReturn, Tuple
11
11
 
@@ -103,7 +103,7 @@ class VersionInfo():
103
103
  Only one definition in constructor.
104
104
 
105
105
  >>> from vim_eof_comment.version import VersionInfo
106
- >>> print(VersionInfo([(0, 0, 1)]))
106
+ >>> print(repr(VersionInfo([(0, 0, 1)])))
107
107
  0.0.1
108
108
 
109
109
  Multiple definitions in constructor.
@@ -163,7 +163,7 @@ class VersionInfo():
163
163
  return result
164
164
 
165
165
 
166
- version_info: VersionInfo = VersionInfo([
166
+ version_info = VersionInfo([
167
167
  (0, 1, 1),
168
168
  (0, 1, 2),
169
169
  (0, 1, 3),
@@ -218,6 +218,8 @@ version_info: VersionInfo = VersionInfo([
218
218
  (0, 3, 9),
219
219
  (0, 3, 10),
220
220
  (0, 3, 11),
221
+ (0, 3, 12),
222
+ (0, 3, 13),
221
223
  ])
222
224
 
223
225
  __version__: str = str(version_info)
@@ -225,7 +227,18 @@ __version__: str = str(version_info)
225
227
 
226
228
  def list_versions() -> NoReturn:
227
229
  """List all versions."""
228
- all_versions: str = version_info.get_all_versions()
229
- die(all_versions, code=0)
230
+ die(version_info.get_all_versions(), code=0)
231
+
232
+
233
+ def version_print(version: str) -> NoReturn:
234
+ """
235
+ Print project version, then exit.
236
+
237
+ Parameters
238
+ ----------
239
+ version : str
240
+ The version string.
241
+ """
242
+ die(f"vim-eof-comment-{version}", code=0)
230
243
 
231
244
  # vim: set ts=4 sts=4 sw=4 et ai si sta:
@@ -1,6 +1,8 @@
1
1
  from typing import NoReturn
2
2
 
3
- __all__ = ['VersionInfo', 'list_versions', 'version_info', '__version__']
3
+ from _typeshed import Incomplete
4
+
5
+ __all__ = ['VersionInfo', 'list_versions', 'version_info', 'version_print', '__version__']
4
6
 
5
7
  class VersionInfo:
6
8
  """
@@ -82,7 +84,7 @@ class VersionInfo:
82
84
  Only one definition in constructor.
83
85
 
84
86
  >>> from vim_eof_comment.version import VersionInfo
85
- >>> print(VersionInfo([(0, 0, 1)]))
87
+ >>> print(repr(VersionInfo([(0, 0, 1)])))
86
88
  0.0.1
87
89
 
88
90
  Multiple definitions in constructor.
@@ -124,10 +126,19 @@ class VersionInfo:
124
126
  0.0.3 (latest)
125
127
  """
126
128
 
127
- version_info: VersionInfo
129
+ version_info: Incomplete
128
130
  __version__: str
129
131
 
130
132
  def list_versions() -> NoReturn:
131
133
  """List all versions."""
134
+ def version_print(version: str) -> NoReturn:
135
+ """
136
+ Print project version, then exit.
137
+
138
+ Parameters
139
+ ----------
140
+ version : str
141
+ The version string.
142
+ """
132
143
 
133
144
  # vim: set ts=4 sts=4 sw=4 et ai si sta:
@@ -1,18 +1,21 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: vim-eof-comment
3
- Version: 0.3.11
3
+ Version: 0.3.13
4
4
  Summary: Adds Vim EOF 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
7
  License-Expression: GPL-2.0-only
8
8
  Project-URL: Issues, https://github.com/DrKJeff16/vim-eof-comment/issues
9
9
  Project-URL: Repository, https://github.com/DrKJeff16/vim-eof-comment
10
+ Project-URL: Download, https://github.com/DrKJeff16/vim-eof-comment/releases/latest
10
11
  Keywords: eof comments,eof,files,preprocessing,text,vim modeline,vim,vim-eof
11
12
  Classifier: Development Status :: 4 - Beta
12
13
  Classifier: Environment :: Console
13
14
  Classifier: Intended Audience :: Developers
14
15
  Classifier: Intended Audience :: End Users/Desktop
15
16
  Classifier: Operating System :: OS Independent
17
+ Classifier: Programming Language :: Python :: 3 :: Only
18
+ Classifier: Programming Language :: Python :: 3
16
19
  Classifier: Programming Language :: Python :: 3.10
17
20
  Classifier: Programming Language :: Python :: 3.11
18
21
  Classifier: Programming Language :: Python :: 3.12
@@ -1,24 +1,25 @@
1
1
  .flake8
2
2
  .gitattributes
3
3
  .pre-commit-config.yaml
4
- .taplo.toml
5
4
  LICENSE
6
5
  Makefile
7
6
  Pipfile
8
7
  README.md
9
8
  pyproject.toml
10
9
  requirements.txt
10
+ taplo.toml
11
11
  version.txt
12
12
  .github/CODEOWNERS
13
13
  .github/workflows/flake8-lint.yml
14
14
  .github/workflows/mypy-lint.yml
15
15
  .github/workflows/release.yml
16
+ .github/workflows/vim-eof-comment.yml
16
17
  docs/Makefile
17
18
  docs/make.bat
18
19
  docs/source/conf.py
19
20
  docs/source/functions.rst
20
21
  docs/source/index.rst
21
- docs/source/usage.rst
22
+ docs/source/installation.rst
22
23
  vim_eof_comment/__init__.py
23
24
  vim_eof_comment/__init__.pyi
24
25
  vim_eof_comment/__main__.py
@@ -1,11 +0,0 @@
1
- Usage
2
- =====
3
-
4
- Installation
5
- ------------
6
-
7
- To use *vim-eof-comment*, first install it using `pip`:
8
-
9
- .. code-block:: console
10
-
11
- $ pip install vim-eof-comment
@@ -1 +0,0 @@
1
- 0.3.11
@@ -1,30 +0,0 @@
1
- # -*- coding: utf-8 -*-
2
- # Copyright (c) 2025 Guennadi Maximov C. All Rights Reserved.
3
- """
4
- Argument parsing completion utilities for ``vim-eof-comment``.
5
-
6
- Copyright (c) 2025 Guennadi Maximov C. All Rights Reserved.
7
- """
8
- __all__ = ["complete_parser"]
9
-
10
- from argparse import ArgumentParser
11
- from typing import NoReturn
12
-
13
- from argcomplete import autocomplete
14
- from argcomplete.finders import default_validator
15
-
16
-
17
- def complete_parser(parser: ArgumentParser, **kwargs) -> NoReturn:
18
- """
19
- Complete the script argument parser.
20
-
21
- Parameters
22
- ----------
23
- parser : argparse.ArgumentParser
24
- The ``ArgumentParser`` object.
25
- **kwargs
26
- Extra parameters.
27
- """
28
- autocomplete(parser, validator=default_validator, **kwargs)
29
-
30
- # vim: set ts=4 sts=4 sw=4 et ai si sta:
@@ -1,87 +0,0 @@
1
- from typing import Any, TextIO, TypedDict
2
-
3
- from argcomplete.completers import DirectoriesCompleter
4
-
5
- __all__ = ['BatchPairDict', 'BatchPathDict', 'CommentMap', 'EOFCommentSearch', 'IOWrapperBool', 'IndentHandler', 'IndentMap', 'LineBool', 'ParserSpec']
6
-
7
- class ParserSpec(TypedDict):
8
- """
9
- Stores the spec for ``argparse`` operations in a constant value.
10
-
11
- This is a ``TypedDict``-like object.
12
-
13
- Attributes
14
- ----------
15
- opts : List[str]
16
- A list containing all the relevant iterations of the same option.
17
- kwargs : Dict[str, str]
18
- Extra arguments for ``argparse.ArgumentParser``.
19
- completer : argcomplete.DirectoriesCompleter, optional, default=None
20
- An optional ``argcomplete`` completer object.
21
- """
22
- opts: list[str]
23
- kwargs: dict[str, Any]
24
- completer: DirectoriesCompleter | None
25
-
26
- class CommentMap(TypedDict):
27
- """
28
- Stores a dict with a ``level`` key.
29
-
30
- This is a ``TypedDict``-like object.
31
-
32
- Attributes
33
- ----------
34
- level : int
35
- The indentation level.
36
- """
37
- level: int
38
-
39
- class IndentMap(TypedDict):
40
- """A ``TypedDict`` container."""
41
- level: int
42
- expandtab: bool
43
-
44
- class IndentHandler(TypedDict):
45
- """
46
- A dict containing ``ft_ext``, ``level`` and ``expandtab`` as keys.
47
-
48
- Attributes
49
- ----------
50
- ft_ext : str
51
- The file-extension/file-type.
52
- level : str
53
- The string representation of the indent level.
54
- expandtab : bool
55
- Whether to expand tabs or not.
56
- """
57
- ft_ext: str
58
- level: str
59
- expandtab: bool
60
-
61
- class IOWrapperBool(TypedDict):
62
- """A ``TypedDict`` container."""
63
- file: TextIO
64
- has_nwl: bool
65
-
66
- class LineBool(TypedDict):
67
- """A ``TypedDict`` container."""
68
- line: str
69
- has_nwl: bool
70
-
71
- class BatchPathDict(TypedDict):
72
- """A ``TypedDict`` container."""
73
- file: TextIO
74
- ft_ext: str
75
-
76
- class BatchPairDict(TypedDict):
77
- """A ``TypedDict`` container."""
78
- fpath: str
79
- ft_ext: str
80
-
81
- class EOFCommentSearch(TypedDict):
82
- """A ``TypedDict`` container."""
83
- state: IOWrapperBool
84
- lang: str
85
- match: bool
86
-
87
- # vim: set ts=4 sts=4 sw=4 et ai si sta: