Markdown-Checker 1.0.2__tar.gz → 1.1.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 (95) hide show
  1. {markdown_checker-1.0.2/src/markdown_checker.egg-info → markdown_checker-1.1.0}/PKG-INFO +13 -48
  2. markdown_checker-1.1.0/docs/CODE_OF_CONDUCT.rst +138 -0
  3. markdown_checker-1.1.0/docs/CONTRIBUTING.rst +60 -0
  4. markdown_checker-1.1.0/docs/advanced.rst +439 -0
  5. markdown_checker-1.1.0/docs/api/checker.rst +7 -0
  6. markdown_checker-1.1.0/docs/api/checks.rst +42 -0
  7. markdown_checker-1.1.0/docs/api/cli.rst +7 -0
  8. markdown_checker-1.1.0/docs/api/main.rst +7 -0
  9. markdown_checker-1.1.0/docs/api/models.rst +34 -0
  10. markdown_checker-1.1.0/docs/api/patterns.rst +7 -0
  11. markdown_checker-1.1.0/docs/api/reports.rst +26 -0
  12. markdown_checker-1.1.0/docs/api/utils.rst +42 -0
  13. markdown_checker-1.1.0/docs/automate.rst +9 -0
  14. markdown_checker-1.1.0/docs/changes.rst +4 -0
  15. markdown_checker-1.1.0/docs/conf.py +60 -0
  16. markdown_checker-1.1.0/docs/index.rst +71 -0
  17. markdown_checker-1.1.0/docs/license.rst +5 -0
  18. markdown_checker-1.1.0/docs/usage.rst +73 -0
  19. markdown_checker-1.1.0/pyproject.toml +216 -0
  20. markdown_checker-1.1.0/src/markdown_checker/__init__.py +13 -0
  21. markdown_checker-1.1.0/src/markdown_checker/checker.py +144 -0
  22. {markdown_checker-1.0.2 → markdown_checker-1.1.0}/src/markdown_checker/checks/__init__.py +4 -2
  23. markdown_checker-1.1.0/src/markdown_checker/checks/base.py +82 -0
  24. {markdown_checker-1.0.2 → markdown_checker-1.1.0}/src/markdown_checker/checks/broken_paths.py +7 -4
  25. markdown_checker-1.1.0/src/markdown_checker/checks/broken_urls.py +88 -0
  26. {markdown_checker-1.0.2 → markdown_checker-1.1.0}/src/markdown_checker/checks/locale.py +7 -4
  27. {markdown_checker-1.0.2 → markdown_checker-1.1.0}/src/markdown_checker/checks/tracking.py +12 -7
  28. {markdown_checker-1.0.2 → markdown_checker-1.1.0}/src/markdown_checker/cli.py +99 -30
  29. markdown_checker-1.1.0/src/markdown_checker/models/__init__.py +17 -0
  30. {markdown_checker-1.0.2 → markdown_checker-1.1.0}/src/markdown_checker/models/base.py +6 -5
  31. {markdown_checker-1.0.2 → markdown_checker-1.1.0}/src/markdown_checker/models/config.py +11 -5
  32. {markdown_checker-1.0.2 → markdown_checker-1.1.0}/src/markdown_checker/models/path.py +3 -5
  33. markdown_checker-1.1.0/src/markdown_checker/models/url.py +149 -0
  34. markdown_checker-1.1.0/src/markdown_checker/patterns.py +27 -0
  35. {markdown_checker-1.0.2 → markdown_checker-1.1.0}/src/markdown_checker/reports/__init__.py +2 -1
  36. {markdown_checker-1.0.2 → markdown_checker-1.1.0}/src/markdown_checker/reports/base.py +2 -1
  37. markdown_checker-1.1.0/src/markdown_checker/reports/format_output.py +86 -0
  38. markdown_checker-1.1.0/src/markdown_checker/utils/__init__.py +15 -0
  39. {markdown_checker-1.0.2 → markdown_checker-1.1.0}/src/markdown_checker/utils/extract_links.py +26 -27
  40. markdown_checker-1.1.0/src/markdown_checker/utils/github_env.py +57 -0
  41. {markdown_checker-1.0.2 → markdown_checker-1.1.0}/src/markdown_checker/utils/spinner.py +2 -1
  42. markdown_checker-1.1.0/src/markdown_checker/utils/url_pipeline.py +254 -0
  43. markdown_checker-1.1.0/tests/conftest.py +106 -0
  44. markdown_checker-1.1.0/tests/resources/sample1.md +17 -0
  45. markdown_checker-1.1.0/tests/resources/sample2.md +17 -0
  46. markdown_checker-1.1.0/tests/resources/sample3.md +17 -0
  47. markdown_checker-1.1.0/tests/resources/sample4.md +17 -0
  48. markdown_checker-1.1.0/tests/smoke/test_cli_smoke.py +81 -0
  49. {markdown_checker-1.0.2 → markdown_checker-1.1.0}/tests/test_checker.py +117 -1
  50. markdown_checker-1.1.0/tests/test_checks_broken_urls.py +196 -0
  51. {markdown_checker-1.0.2 → markdown_checker-1.1.0}/tests/test_checks_locale.py +2 -1
  52. {markdown_checker-1.0.2 → markdown_checker-1.1.0}/tests/test_checks_tracking.py +2 -1
  53. {markdown_checker-1.0.2 → markdown_checker-1.1.0}/tests/test_cli.py +90 -2
  54. {markdown_checker-1.0.2 → markdown_checker-1.1.0}/tests/test_models_base.py +15 -0
  55. markdown_checker-1.1.0/tests/test_models_url.py +339 -0
  56. {markdown_checker-1.0.2 → markdown_checker-1.1.0}/tests/test_utils_extract_links.py +56 -1
  57. markdown_checker-1.1.0/tests/test_utils_format_output.py +139 -0
  58. markdown_checker-1.1.0/tests/test_utils_github_env.py +105 -0
  59. {markdown_checker-1.0.2 → markdown_checker-1.1.0}/tests/test_utils_spinner.py +2 -1
  60. markdown_checker-1.1.0/tests/test_utils_url_pipeline.py +347 -0
  61. markdown_checker-1.1.0/uv.lock +1562 -0
  62. markdown_checker-1.0.2/PKG-INFO +0 -162
  63. markdown_checker-1.0.2/pyproject.toml +0 -93
  64. markdown_checker-1.0.2/setup.cfg +0 -4
  65. markdown_checker-1.0.2/src/markdown_checker/__init__.py +0 -10
  66. markdown_checker-1.0.2/src/markdown_checker/checker.py +0 -82
  67. markdown_checker-1.0.2/src/markdown_checker/checks/base.py +0 -30
  68. markdown_checker-1.0.2/src/markdown_checker/checks/broken_urls.py +0 -67
  69. markdown_checker-1.0.2/src/markdown_checker/models/__init__.py +0 -6
  70. markdown_checker-1.0.2/src/markdown_checker/models/url.py +0 -64
  71. markdown_checker-1.0.2/src/markdown_checker/reports/format_output.py +0 -58
  72. markdown_checker-1.0.2/src/markdown_checker/utils/__init__.py +0 -11
  73. markdown_checker-1.0.2/src/markdown_checker.egg-info/SOURCES.txt +0 -52
  74. markdown_checker-1.0.2/src/markdown_checker.egg-info/dependency_links.txt +0 -1
  75. markdown_checker-1.0.2/src/markdown_checker.egg-info/entry_points.txt +0 -2
  76. markdown_checker-1.0.2/src/markdown_checker.egg-info/requires.txt +0 -19
  77. markdown_checker-1.0.2/src/markdown_checker.egg-info/top_level.txt +0 -1
  78. markdown_checker-1.0.2/tests/test_checks_broken_urls.py +0 -109
  79. markdown_checker-1.0.2/tests/test_models_url.py +0 -124
  80. markdown_checker-1.0.2/tests/test_utils_format_output.py +0 -86
  81. {markdown_checker-1.0.2 → markdown_checker-1.1.0}/LICENSE +0 -0
  82. {markdown_checker-1.0.2 → markdown_checker-1.1.0}/README.md +0 -0
  83. {markdown_checker-1.0.2 → markdown_checker-1.1.0}/src/markdown_checker/py.typed +0 -0
  84. {markdown_checker-1.0.2 → markdown_checker-1.1.0}/src/markdown_checker/reports/markdown.py +0 -0
  85. {markdown_checker-1.0.2 → markdown_checker-1.1.0}/src/markdown_checker/reports/templates/paths/broken.md +0 -0
  86. {markdown_checker-1.0.2 → markdown_checker-1.1.0}/src/markdown_checker/reports/templates/paths/tracking.md +0 -0
  87. {markdown_checker-1.0.2 → markdown_checker-1.1.0}/src/markdown_checker/reports/templates/urls/broken.md +0 -0
  88. {markdown_checker-1.0.2 → markdown_checker-1.1.0}/src/markdown_checker/reports/templates/urls/locale.md +0 -0
  89. {markdown_checker-1.0.2 → markdown_checker-1.1.0}/src/markdown_checker/reports/templates/urls/tracking.md +0 -0
  90. {markdown_checker-1.0.2 → markdown_checker-1.1.0}/src/markdown_checker/utils/list_files.py +0 -0
  91. {markdown_checker-1.0.2 → markdown_checker-1.1.0}/tests/test_checks_broken_paths.py +0 -0
  92. {markdown_checker-1.0.2 → markdown_checker-1.1.0}/tests/test_checks_registry.py +0 -0
  93. {markdown_checker-1.0.2 → markdown_checker-1.1.0}/tests/test_models_path.py +0 -0
  94. {markdown_checker-1.0.2 → markdown_checker-1.1.0}/tests/test_reports.py +0 -0
  95. {markdown_checker-1.0.2 → markdown_checker-1.1.0}/tests/test_utils_list_files.py +0 -0
@@ -1,67 +1,31 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: markdown-checker
3
- Version: 1.0.2
3
+ Version: 1.1.0
4
4
  Summary: A markdown link validation reporting tool.
5
5
  Author-email: John Aziz <johnaziz269@gmail.com>
6
6
  Maintainer-email: John Aziz <johnaziz269@gmail.com>
7
- License: MIT License
8
-
9
- Copyright (c) 2023 John Aziz
10
-
11
- Permission is hereby granted, free of charge, to any person obtaining a copy
12
- of this software and associated documentation files (the "Software"), to deal
13
- in the Software without restriction, including without limitation the rights
14
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
15
- copies of the Software, and to permit persons to whom the Software is
16
- furnished to do so, subject to the following conditions:
17
-
18
- The above copyright notice and this permission notice shall be included in all
19
- copies or substantial portions of the Software.
20
-
21
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
22
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
23
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
24
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
25
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
26
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
27
- SOFTWARE.
28
-
29
- Project-URL: Homepage, https://github.com/john0isaac/markdown-checker
30
- Project-URL: Documentation, https://markdown-checker.readthedocs.io/en/latest/
31
- Project-URL: Issues, https://github.com/john0isaac/markdown-checker/issues
32
- Project-URL: Contributing, https://github.com/john0isaac/markdown-checker/pulls
33
- Project-URL: Releases, https://github.com/john0isaac/markdown-checker/releases
7
+ Requires-Python: >=3.11
8
+ Description-Content-Type: text/markdown
9
+ License-Expression: MIT
34
10
  Classifier: Development Status :: 5 - Production/Stable
35
11
  Classifier: Environment :: Console
36
- Classifier: License :: OSI Approved :: MIT License
37
12
  Classifier: Operating System :: OS Independent
38
13
  Classifier: Programming Language :: Python
39
14
  Classifier: Programming Language :: Python :: 3 :: Only
40
- Classifier: Programming Language :: Python :: 3.10
41
15
  Classifier: Programming Language :: Python :: 3.11
42
16
  Classifier: Programming Language :: Python :: 3.12
43
17
  Classifier: Programming Language :: Python :: 3.13
18
+ Classifier: Typing :: Typed
44
19
  Classifier: Topic :: Software Development :: Libraries :: Python Modules
45
20
  Classifier: Topic :: Software Development :: Quality Assurance
46
- Requires-Python: >=3.10
47
- Description-Content-Type: text/markdown
48
21
  License-File: LICENSE
49
- Requires-Dist: click>=8.3.3
50
- Requires-Dist: httpx>=0.28.1
51
- Provides-Extra: dev
52
- Requires-Dist: pre-commit; extra == "dev"
53
- Requires-Dist: mypy; extra == "dev"
54
- Provides-Extra: lint
55
- Requires-Dist: ruff; extra == "lint"
56
- Provides-Extra: test
57
- Requires-Dist: pytest; extra == "test"
58
- Requires-Dist: pytest-cov; extra == "test"
59
- Provides-Extra: docs
60
- Requires-Dist: mkdocs; extra == "docs"
61
- Requires-Dist: mkdocs-material; extra == "docs"
62
- Requires-Dist: mkdocstrings[python]; extra == "docs"
63
- Requires-Dist: pymdown-extensions; extra == "docs"
64
- Dynamic: license-file
22
+ Requires-Dist: click>=8.3.1
23
+ Requires-Dist: httpx2>=2.0.0
24
+ Project-URL: Contributing, https://github.com/john0isaac/markdown-checker/pulls
25
+ Project-URL: Documentation, https://markdown-checker.readthedocs.io/en/latest/
26
+ Project-URL: Homepage, https://github.com/john0isaac/markdown-checker
27
+ Project-URL: Issues, https://github.com/john0isaac/markdown-checker/issues
28
+ Project-URL: Releases, https://github.com/john0isaac/markdown-checker/releases
65
29
 
66
30
  [![PyPi](https://img.shields.io/pypi/v/markdown-checker)](https://pypi.org/project/markdown-checker/)
67
31
  [![Documentation Status](https://readthedocs.org/projects/markdown-checker/badge/?version=latest)](https://markdown-checker.readthedocs.io/en/latest/?badge=latest)
@@ -160,3 +124,4 @@ Example:
160
124
  ```bash
161
125
  markdown-checker -d . -f check_urls_tracking -gu https://github.com/john0isaac/markdown-checker/blob/main/CONTRIBUTING.md
162
126
  ```
127
+
@@ -0,0 +1,138 @@
1
+ Contributor Covenant Code of Conduct
2
+ ====================================
3
+
4
+ Our Pledge
5
+ ----------
6
+
7
+ We as members, contributors, and leaders pledge to make participation in our
8
+ community a harassment-free experience for everyone, regardless of age, body
9
+ size, visible or invisible disability, ethnicity, sex characteristics, gender
10
+ identity and expression, level of experience, education, socio-economic status,
11
+ nationality, personal appearance, race, religion, or sexual identity and
12
+ orientation.
13
+
14
+ We pledge to act and interact in ways that contribute to an open, welcoming,
15
+ diverse, inclusive, and healthy community.
16
+
17
+ Our Standards
18
+ -------------
19
+
20
+ Examples of behavior that contributes to a positive environment for our
21
+ community include:
22
+
23
+ * Demonstrating empathy and kindness toward other people
24
+ * Being respectful of differing opinions, viewpoints, and experiences
25
+ * Giving and gracefully accepting constructive feedback
26
+ * Accepting responsibility and apologizing to those affected by our mistakes,
27
+ and learning from the experience
28
+ * Focusing on what is best not just for us as individuals, but for the overall
29
+ community
30
+
31
+ Examples of unacceptable behavior include:
32
+
33
+ * The use of sexualized language or imagery, and sexual attention or advances
34
+ of any kind
35
+ * Trolling, insulting or derogatory comments, and personal or political attacks
36
+ * Public or private harassment
37
+ * Publishing others' private information, such as a physical or email address,
38
+ without their explicit permission
39
+ * Other conduct which could reasonably be considered inappropriate in a
40
+ professional setting
41
+
42
+ Enforcement Responsibilities
43
+ ----------------------------
44
+
45
+ Community leaders are responsible for clarifying and enforcing our standards of
46
+ acceptable behavior and will take appropriate and fair corrective action in
47
+ response to any behavior that they deem inappropriate, threatening, offensive,
48
+ or harmful.
49
+
50
+ Community leaders have the right and responsibility to remove, edit, or reject
51
+ comments, commits, code, wiki edits, issues, and other contributions that are
52
+ not aligned to this Code of Conduct, and will communicate reasons for
53
+ moderation decisions when appropriate.
54
+
55
+ Scope
56
+ -----
57
+
58
+ This Code of Conduct applies within all community spaces, and also applies when
59
+ an individual is officially representing the community in public spaces.
60
+ Examples of representing our community include using an official e-mail
61
+ address, posting via an official social media account, or acting as an
62
+ appointed representative at an online or offline event.
63
+
64
+ Enforcement
65
+ -----------
66
+
67
+ Instances of abusive, harassing, or otherwise unacceptable behavior may be
68
+ reported to the community leaders responsible for enforcement at
69
+ johnaziz269@gmail.com. All complaints will be reviewed and investigated
70
+ promptly and fairly.
71
+
72
+ All community leaders are obligated to respect the privacy and security of the
73
+ reporter of any incident.
74
+
75
+ Enforcement Guidelines
76
+ ----------------------
77
+
78
+ Community leaders will follow these Community Impact Guidelines in determining
79
+ the consequences for any action they deem in violation of this Code of Conduct.
80
+
81
+ 1. Correction
82
+ ~~~~~~~~~~~~~
83
+
84
+ **Community Impact:** Use of inappropriate language or other behavior deemed
85
+ unprofessional or unwelcome in the community.
86
+
87
+ **Consequence:** A private, written warning from community leaders, providing
88
+ clarity around the nature of the violation and an explanation of why the
89
+ behavior was inappropriate. A public apology may be requested.
90
+
91
+ 2. Warning
92
+ ~~~~~~~~~~
93
+
94
+ **Community Impact:** A violation through a single incident or series of
95
+ actions.
96
+
97
+ **Consequence:** A warning with consequences for continued behavior. No
98
+ interaction with the people involved, including unsolicited interaction with
99
+ those enforcing the Code of Conduct, for a specified period of time. This
100
+ includes avoiding interactions in community spaces as well as external channels
101
+ like social media. Violating these terms may lead to a temporary or permanent
102
+ ban.
103
+
104
+ 3. Temporary Ban
105
+ ~~~~~~~~~~~~~~~~
106
+
107
+ **Community Impact:** A serious violation of community standards, including
108
+ sustained inappropriate behavior.
109
+
110
+ **Consequence:** A temporary ban from any sort of interaction or public
111
+ communication with the community for a specified period of time. No public or
112
+ private interaction with the people involved, including unsolicited
113
+ interaction with those enforcing the Code of Conduct, is allowed during this
114
+ period. Violating these terms may lead to a permanent ban.
115
+
116
+ 4. Permanent Ban
117
+ ~~~~~~~~~~~~~~~~
118
+
119
+ **Community Impact:** Demonstrating a pattern of violation of community
120
+ standards, including sustained inappropriate behavior, harassment of an
121
+ individual, or aggression toward or disparagement of classes of individuals.
122
+
123
+ **Consequence:** A permanent ban from any sort of public interaction within the
124
+ community.
125
+
126
+ Attribution
127
+ -----------
128
+
129
+ This Code of Conduct is adapted from the
130
+ `Contributor Covenant <https://www.contributor-covenant.org/version/2/0/code_of_conduct.html>`_,
131
+ version 2.0.
132
+
133
+ Community Impact Guidelines were inspired by the
134
+ `Mozilla code of conduct enforcement ladder <https://github.com/mozilla/diversity>`_.
135
+
136
+ For answers to common questions about this code of conduct, see the
137
+ `FAQ <https://www.contributor-covenant.org/faq>`_. Translations are available
138
+ at `https://www.contributor-covenant.org/translations <https://www.contributor-covenant.org/translations>`_.
@@ -0,0 +1,60 @@
1
+ Contribution
2
+ ============
3
+
4
+ How to `contribute to the project <https://docs.github.com/en/get-started/quickstart/contributing-to-projects>`_?
5
+
6
+ While contributing, each contributor should keep the
7
+ :doc:`Code of Conduct <CODE_OF_CONDUCT>` in mind.
8
+
9
+ This repository is open for everyone to contribute and is maintained by
10
+ `John Aziz <https://github.com/john0isaac>`_.
11
+
12
+ Develop Locally
13
+ ---------------
14
+
15
+ Install all dependencies and the package in editable mode:
16
+
17
+ .. code-block:: shell
18
+
19
+ uv sync
20
+
21
+ Activate the virtual environment:
22
+
23
+ .. code-block:: shell
24
+
25
+ source .venv/bin/activate
26
+
27
+ Any changes you make to the source will take effect immediately.
28
+
29
+ First Steps
30
+ -----------
31
+
32
+ These are the most common commands you will use:
33
+
34
+ - ``pytest``: Run the unit tests.
35
+ - ``mypy``: Run the type checker.
36
+ - ``ruff``: Run the linter and formatter tools.
37
+ - ``tox run -e docs``: Build the documentation.
38
+
39
+ These are some more specific commands if you need them:
40
+
41
+ - ``tox parallel``: Run all test environments that will be run in CI, in
42
+ parallel. Python versions that are not installed are skipped.
43
+ - ``pre-commit``: Run the linter and formatter tools. Only staged files are
44
+ checked, and this runs automatically before each commit.
45
+ - ``pre-commit run --all-files``: Run the pre-commit hooks against all files,
46
+ including unchanged and unstaged files.
47
+ - ``tox run -e py3.11``: Run unit tests with a specific Python version. The
48
+ version must be installed.
49
+ - ``tox run -e style``: Run all pre-commit hooks on all files via tox.
50
+ - ``tox run -e typing``: Run all typing checks.
51
+ - ``tox run -e docs``: Build the documentation in strict mode.
52
+ - ``tox run -e docs-auto``: Serve the documentation locally with auto-reload.
53
+ - ``tox run -e update-actions``: Update GitHub Actions pins.
54
+ - ``tox run -e update-pre_commit``: Update pre-commit hook pins.
55
+ - ``tox run -e update-requirements``: Update the ``uv.lock`` file.
56
+
57
+ .. tip::
58
+
59
+ ``tox run`` and ``tox parallel`` can be shortened to ``tox r`` and
60
+ ``tox p``.