jiggle-version 2.2.0__tar.gz → 2.2.2__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 (193) hide show
  1. {jiggle_version-2.2.0 → jiggle_version-2.2.2}/.devcontainer/devcontainer.json +1 -2
  2. jiggle_version-2.2.2/.gitattributes +27 -0
  3. jiggle_version-2.2.2/.github/workflows/actions.lock +107 -0
  4. jiggle_version-2.2.2/.github/workflows/build.yml +37 -0
  5. jiggle_version-2.2.2/.github/workflows/create_draft_release.yml +32 -0
  6. jiggle_version-2.2.2/.github/workflows/pages.yml +64 -0
  7. jiggle_version-2.2.2/.github/workflows/release.yml +129 -0
  8. jiggle_version-2.2.2/.github/workflows/verify-lockfile.yml +27 -0
  9. {jiggle_version-2.2.0 → jiggle_version-2.2.2}/.github/workflows/zizmor.yml +3 -3
  10. {jiggle_version-2.2.0 → jiggle_version-2.2.2}/.gitignore +5 -0
  11. jiggle_version-2.2.2/.jiggle_version.config +2 -0
  12. jiggle_version-2.2.2/.readthedocs.yaml +13 -0
  13. jiggle_version-2.2.2/CHANGELOG.md +115 -0
  14. {jiggle_version-2.2.0 → jiggle_version-2.2.2}/Makefile +66 -21
  15. {jiggle_version-2.2.0 → jiggle_version-2.2.2}/PKG-INFO +17 -10
  16. {jiggle_version-2.2.0 → jiggle_version-2.2.2}/README.md +11 -3
  17. jiggle_version-2.2.2/dead_code/setup.py +13 -0
  18. jiggle_version-2.2.2/docs/cli.md +46 -0
  19. jiggle_version-2.2.2/docs/index.md +21 -0
  20. jiggle_version-2.2.2/docs/requirements.txt +2 -0
  21. {jiggle_version-2.2.0 → jiggle_version-2.2.2}/fetch_raw_data/bump_all.py +2 -2
  22. {jiggle_version-2.2.0 → jiggle_version-2.2.2}/fetch_raw_data/bump_all_directly.py +4 -3
  23. {jiggle_version-2.2.0 → jiggle_version-2.2.2}/fetch_raw_data/pypi_versions.py +6 -5
  24. {jiggle_version-2.2.0 → jiggle_version-2.2.2}/historical/jiggle_version/__about__.py +4 -4
  25. {jiggle_version-2.2.0 → jiggle_version-2.2.2}/historical/jiggle_version/__main__.py +1 -1
  26. {jiggle_version-2.2.0 → jiggle_version-2.2.2}/historical/jiggle_version/central_module_finder.py +5 -6
  27. {jiggle_version-2.2.0 → jiggle_version-2.2.2}/historical/jiggle_version/file_inventory.py +6 -7
  28. {jiggle_version-2.2.0 → jiggle_version-2.2.2}/historical/jiggle_version/file_opener.py +5 -5
  29. {jiggle_version-2.2.0 → jiggle_version-2.2.2}/historical/jiggle_version/find_version_class.py +12 -13
  30. {jiggle_version-2.2.0 → jiggle_version-2.2.2}/historical/jiggle_version/jiggle_class.py +4 -7
  31. {jiggle_version-2.2.0 → jiggle_version-2.2.2}/historical/jiggle_version/module_finder.py +14 -18
  32. {jiggle_version-2.2.0 → jiggle_version-2.2.2}/historical/jiggle_version/parse_package/package_info_finder.py +10 -13
  33. {jiggle_version-2.2.0 → jiggle_version-2.2.2}/historical/jiggle_version/parse_version/parse_dunder_version.py +6 -9
  34. {jiggle_version-2.2.0 → jiggle_version-2.2.2}/historical/jiggle_version/parse_version/parse_kwarg_version.py +8 -7
  35. {jiggle_version-2.2.0 → jiggle_version-2.2.2}/historical/jiggle_version/parse_version/schema_guesser.py +3 -5
  36. {jiggle_version-2.2.0 → jiggle_version-2.2.2}/historical/jiggle_version/utils.py +3 -3
  37. jiggle_version-2.2.2/historical/test/sample_lib/__version__.py +5 -0
  38. {jiggle_version-2.2.0 → jiggle_version-2.2.2}/historical/test/test_damanged_versions.py +1 -1
  39. {jiggle_version-2.2.0 → jiggle_version-2.2.2}/historical/test/test_find_by_ast.py +0 -1
  40. {jiggle_version-2.2.0 → jiggle_version-2.2.2}/historical/test/test_version_schemes.py +1 -2
  41. {jiggle_version-2.2.0 → jiggle_version-2.2.2}/historical/test/test_x_package_finder.py +0 -1
  42. jiggle_version-2.2.2/historical/test/tox_banner.py +3 -0
  43. {jiggle_version-2.2.0 → jiggle_version-2.2.2}/jiggle_version/__about__.py +15 -5
  44. {jiggle_version-2.2.0 → jiggle_version-2.2.2}/jiggle_version/__main__.py +3 -3
  45. {jiggle_version-2.2.0 → jiggle_version-2.2.2}/jiggle_version/auto.py +1 -0
  46. {jiggle_version-2.2.0 → jiggle_version-2.2.2}/jiggle_version/bump.py +1 -0
  47. {jiggle_version-2.2.0 → jiggle_version-2.2.2}/jiggle_version/config.py +4 -6
  48. {jiggle_version-2.2.0 → jiggle_version-2.2.2}/jiggle_version/discover.py +49 -8
  49. {jiggle_version-2.2.0 → jiggle_version-2.2.2}/jiggle_version/git.py +1 -0
  50. {jiggle_version-2.2.0 → jiggle_version-2.2.2}/jiggle_version/gitignore.py +49 -1
  51. {jiggle_version-2.2.0 → jiggle_version-2.2.2}/jiggle_version/parsers/ast_parser.py +1 -0
  52. {jiggle_version-2.2.0 → jiggle_version-2.2.2}/jiggle_version/parsers/config_parser.py +4 -6
  53. {jiggle_version-2.2.0 → jiggle_version-2.2.2}/jiggle_version/pypi.py +6 -10
  54. {jiggle_version-2.2.0 → jiggle_version-2.2.2}/jiggle_version/schemes.py +1 -0
  55. {jiggle_version-2.2.0 → jiggle_version-2.2.2}/jiggle_version/update.py +6 -1
  56. {jiggle_version-2.2.0 → jiggle_version-2.2.2}/jiggle_version/utils/cli_suggestions.py +14 -1
  57. {jiggle_version-2.2.0 → jiggle_version-2.2.2}/jiggle_version/utils/console.py +4 -3
  58. {jiggle_version-2.2.0 → jiggle_version-2.2.2}/jiggle_version_self.py +2 -3
  59. jiggle_version-2.2.2/landing/assets/css/site.css +2 -0
  60. jiggle_version-2.2.2/landing/content/_index.md +3 -0
  61. jiggle_version-2.2.2/landing/hugo.toml +10 -0
  62. jiggle_version-2.2.2/landing/layouts/_default/baseof.html +11 -0
  63. jiggle_version-2.2.2/landing/layouts/index.html +20 -0
  64. {jiggle_version-2.2.0 → jiggle_version-2.2.2}/make_prompt.sh +0 -0
  65. jiggle_version-2.2.2/mkdocs.yml +17 -0
  66. {jiggle_version-2.2.0 → jiggle_version-2.2.2}/pyproject.toml +267 -234
  67. jiggle_version-2.2.2/sample_projects/dupes_in_dunders/dupes/__version__.py +1 -0
  68. {jiggle_version-2.2.0 → jiggle_version-2.2.2}/sample_projects/sample_src/a.py +0 -1
  69. {jiggle_version-2.2.0 → jiggle_version-2.2.2}/sample_projects/sample_src/setup.py +0 -1
  70. {jiggle_version-2.2.0 → jiggle_version-2.2.2}/sample_projects/ver_in_weird_file/conf.py +6 -8
  71. {jiggle_version-2.2.0 → jiggle_version-2.2.2}/sample_projects/ver_in_weird_file/setup_helpers.py +3 -11
  72. jiggle_version-2.2.2/sample_projects/ver_in_weird_file/ver_in_weird_file/smtp.py +2 -0
  73. jiggle_version-2.2.2/scripts/check_local_links.py +70 -0
  74. jiggle_version-2.2.2/spec/bug-uv-cache-leak.md +120 -0
  75. {jiggle_version-2.2.0 → jiggle_version-2.2.2}/stress_test.py +26 -18
  76. {jiggle_version-2.2.0 → jiggle_version-2.2.2}/test/test_discover.py +50 -0
  77. {jiggle_version-2.2.0 → jiggle_version-2.2.2}/test/test_main.py +2 -6
  78. {jiggle_version-2.2.0 → jiggle_version-2.2.2}/test/test_parsers/test_ast_parser_encoding.py +1 -3
  79. {jiggle_version-2.2.0 → jiggle_version-2.2.2}/tox.ini +1 -2
  80. jiggle_version-2.2.2/uv.lock +3665 -0
  81. jiggle_version-2.2.0/.config/.pynt +0 -33
  82. jiggle_version-2.2.0/.github/workflows/build.yml +0 -46
  83. jiggle_version-2.2.0/.github/workflows/publish_to_pypi.yml +0 -83
  84. jiggle_version-2.2.0/.jiggle_version.config +0 -2
  85. jiggle_version-2.2.0/CHANGELOG.md +0 -71
  86. jiggle_version-2.2.0/build.py +0 -748
  87. jiggle_version-2.2.0/codecov +0 -0
  88. jiggle_version-2.2.0/codecov.SHA256SUM +0 -1
  89. jiggle_version-2.2.0/codecov.SHA256SUM.sig +0 -16
  90. jiggle_version-2.2.0/dead_code/Pipfile +0 -39
  91. jiggle_version-2.2.0/dead_code/Pipfile.lock +0 -1052
  92. jiggle_version-2.2.0/dead_code/setup.py +0 -11
  93. jiggle_version-2.2.0/historical/test/sample_lib/__version__.py +0 -5
  94. jiggle_version-2.2.0/historical/test/tox_banner.py +0 -8
  95. jiggle_version-2.2.0/sample_projects/dupes_in_dunders/dupes/__version__.py +0 -1
  96. jiggle_version-2.2.0/sample_projects/ver_in_weird_file/ver_in_weird_file/smtp.py +0 -2
  97. jiggle_version-2.2.0/uv.lock +0 -4886
  98. {jiggle_version-2.2.0 → jiggle_version-2.2.2}/.bandit +0 -0
  99. {jiggle_version-2.2.0 → jiggle_version-2.2.2}/.config/.isort.cfg +0 -0
  100. {jiggle_version-2.2.0 → jiggle_version-2.2.2}/.config/.pylintrc +0 -0
  101. {jiggle_version-2.2.0 → jiggle_version-2.2.2}/.config/.pylintrc_scripts +0 -0
  102. {jiggle_version-2.2.0 → jiggle_version-2.2.2}/.config/.pylintrc_test +0 -0
  103. {jiggle_version-2.2.0 → jiggle_version-2.2.2}/.config/.yamllint +0 -0
  104. {jiggle_version-2.2.0 → jiggle_version-2.2.2}/.devcontainer/Dockerfile +0 -0
  105. {jiggle_version-2.2.0 → jiggle_version-2.2.2}/.env_example +0 -0
  106. {jiggle_version-2.2.0 → jiggle_version-2.2.2}/.pre-commit-config.yaml +0 -0
  107. {jiggle_version-2.2.0 → jiggle_version-2.2.2}/LICENSE +0 -0
  108. {jiggle_version-2.2.0 → jiggle_version-2.2.2}/SECURITY.md +0 -0
  109. {jiggle_version-2.2.0 → jiggle_version-2.2.2}/dead_code/notes_for_mypyc.md +0 -0
  110. {jiggle_version-2.2.0 → jiggle_version-2.2.2}/docs/AUTHORS +0 -0
  111. {jiggle_version-2.2.0 → jiggle_version-2.2.2}/docs/CODE_OF_CONDUCT.md +0 -0
  112. {jiggle_version-2.2.0 → jiggle_version-2.2.2}/docs/ChangeLog +0 -0
  113. {jiggle_version-2.2.0 → jiggle_version-2.2.2}/docs/design_philosophy.md +0 -0
  114. {jiggle_version-2.2.0 → jiggle_version-2.2.2}/docs/prior_art.md +0 -0
  115. {jiggle_version-2.2.0 → jiggle_version-2.2.2}/docs/todo.md +0 -0
  116. {jiggle_version-2.2.0 → jiggle_version-2.2.2}/docs/usage_example/single_module_example/__init__.py +0 -0
  117. {jiggle_version-2.2.0 → jiggle_version-2.2.2}/docs/usage_example/usage.py +0 -0
  118. {jiggle_version-2.2.0 → jiggle_version-2.2.2}/fetch_raw_data/.gitignore +0 -0
  119. {jiggle_version-2.2.0 → jiggle_version-2.2.2}/fetch_raw_data/decomp.sh +0 -0
  120. {jiggle_version-2.2.0 → jiggle_version-2.2.2}/fetch_raw_data/get_file.sh +0 -0
  121. {jiggle_version-2.2.0 → jiggle_version-2.2.2}/historical/jiggle_version/__init__.py +0 -0
  122. {jiggle_version-2.2.0 → jiggle_version-2.2.2}/historical/jiggle_version/commands.py +0 -0
  123. {jiggle_version-2.2.0 → jiggle_version-2.2.2}/historical/jiggle_version/file_makers.py +0 -0
  124. {jiggle_version-2.2.0 → jiggle_version-2.2.2}/historical/jiggle_version/find_modules_function.py +0 -0
  125. {jiggle_version-2.2.0 → jiggle_version-2.2.2}/historical/jiggle_version/parse_package/__init__.py +0 -0
  126. {jiggle_version-2.2.0 → jiggle_version-2.2.2}/historical/jiggle_version/parse_package/find_version_by_package.py +0 -0
  127. {jiggle_version-2.2.0 → jiggle_version-2.2.2}/historical/jiggle_version/parse_python/__init__.py +0 -0
  128. {jiggle_version-2.2.0 → jiggle_version-2.2.2}/historical/jiggle_version/parse_python/is_this_okay.py +0 -0
  129. {jiggle_version-2.2.0 → jiggle_version-2.2.2}/historical/jiggle_version/parse_version/__init__.py +0 -0
  130. {jiggle_version-2.2.0 → jiggle_version-2.2.2}/historical/jiggle_version/version_lint.py +0 -0
  131. {jiggle_version-2.2.0 → jiggle_version-2.2.2}/historical/test/__init__.py +0 -0
  132. {jiggle_version-2.2.0 → jiggle_version-2.2.2}/historical/test/go.sh +0 -0
  133. {jiggle_version-2.2.0 → jiggle_version-2.2.2}/historical/test/sample_lib/__init__.py +0 -0
  134. {jiggle_version-2.2.0 → jiggle_version-2.2.2}/historical/test/test_command_line.py +0 -0
  135. {jiggle_version-2.2.0 → jiggle_version-2.2.2}/historical/test/test_jiggle_class.py +0 -0
  136. {jiggle_version-2.2.0 → jiggle_version-2.2.2}/historical/test/test_main.py +0 -0
  137. {jiggle_version-2.2.0 → jiggle_version-2.2.2}/historical/test/test_parse_dunder_version.py +0 -0
  138. {jiggle_version-2.2.0 → jiggle_version-2.2.2}/historical/test/test_parse_kwarg_version.py +0 -0
  139. {jiggle_version-2.2.0 → jiggle_version-2.2.2}/historical/test/test_pep440.py +0 -0
  140. {jiggle_version-2.2.0 → jiggle_version-2.2.2}/historical/test/test_strings/__init__.py +0 -0
  141. {jiggle_version-2.2.0 → jiggle_version-2.2.2}/historical/test/test_taggint.py +0 -0
  142. {jiggle_version-2.2.0 → jiggle_version-2.2.2}/historical/test/test_zcentral_module_finder.py +0 -0
  143. {jiggle_version-2.2.0 → jiggle_version-2.2.2}/jiggle_version/__init__.py +0 -0
  144. {jiggle_version-2.2.0 → jiggle_version-2.2.2}/jiggle_version/parsers/__init__.py +0 -0
  145. {jiggle_version-2.2.0 → jiggle_version-2.2.2}/jiggle_version/py.typed +0 -0
  146. {jiggle_version-2.2.0 → jiggle_version-2.2.2}/jiggle_version/utils/__init__.py +0 -0
  147. {jiggle_version-2.2.0 → jiggle_version-2.2.2}/jiggle_version/utils/files.py +0 -0
  148. {jiggle_version-2.2.0 → jiggle_version-2.2.2}/jiggle_version/utils/logging_config.py +0 -0
  149. {jiggle_version-2.2.0 → jiggle_version-2.2.2}/sample_projects/double_module/.gitignore +0 -0
  150. {jiggle_version-2.2.0 → jiggle_version-2.2.2}/sample_projects/double_module/bar/.gitignore +0 -0
  151. {jiggle_version-2.2.0 → jiggle_version-2.2.2}/sample_projects/double_module/bar/__init__.py +0 -0
  152. {jiggle_version-2.2.0 → jiggle_version-2.2.2}/sample_projects/double_module/execise_foo.py +0 -0
  153. {jiggle_version-2.2.0 → jiggle_version-2.2.2}/sample_projects/double_module/foo/.gitignore +0 -0
  154. {jiggle_version-2.2.0 → jiggle_version-2.2.2}/sample_projects/double_module/foo/__init__.py +0 -0
  155. {jiggle_version-2.2.0 → jiggle_version-2.2.2}/sample_projects/double_module/setup.py +0 -0
  156. {jiggle_version-2.2.0 → jiggle_version-2.2.2}/sample_projects/dupes_in_dunders/dupes/__init__.py +0 -0
  157. {jiggle_version-2.2.0 → jiggle_version-2.2.2}/sample_projects/file_module_src/.gitignore +0 -0
  158. {jiggle_version-2.2.0 → jiggle_version-2.2.2}/sample_projects/file_module_src/exercise_me.py +0 -0
  159. {jiggle_version-2.2.0 → jiggle_version-2.2.2}/sample_projects/file_module_src/file_module.py +0 -0
  160. {jiggle_version-2.2.0 → jiggle_version-2.2.2}/sample_projects/file_module_src/setup.py +0 -0
  161. {jiggle_version-2.2.0 → jiggle_version-2.2.2}/sample_projects/file_module_ver_in_file/.gitignore +0 -0
  162. {jiggle_version-2.2.0 → jiggle_version-2.2.2}/sample_projects/file_module_ver_in_file/exercise_me.py +0 -0
  163. {jiggle_version-2.2.0 → jiggle_version-2.2.2}/sample_projects/file_module_ver_in_file/file_module.py +0 -0
  164. {jiggle_version-2.2.0 → jiggle_version-2.2.2}/sample_projects/file_module_ver_in_file/setup.py +0 -0
  165. {jiggle_version-2.2.0 → jiggle_version-2.2.2}/sample_projects/init_project/some_thing/__init__.py +0 -0
  166. {jiggle_version-2.2.0 → jiggle_version-2.2.2}/sample_projects/sample_src/.gitignore +0 -0
  167. {jiggle_version-2.2.0 → jiggle_version-2.2.2}/sample_projects/sample_src/__init__.py +0 -0
  168. {jiggle_version-2.2.0 → jiggle_version-2.2.2}/sample_projects/setup_only/.gitignore +0 -0
  169. {jiggle_version-2.2.0 → jiggle_version-2.2.2}/sample_projects/setup_only/setup.py +0 -0
  170. {jiggle_version-2.2.0 → jiggle_version-2.2.2}/sample_projects/ver_in_weird_file/setup.cfg +0 -0
  171. {jiggle_version-2.2.0 → jiggle_version-2.2.2}/sample_projects/ver_in_weird_file/setup.py +0 -0
  172. {jiggle_version-2.2.0 → jiggle_version-2.2.2}/sample_projects/ver_in_weird_file/ver_in_weird_file/__init__.py +0 -0
  173. {jiggle_version-2.2.0 → jiggle_version-2.2.2}/sample_projects/with_unlikely_modules/setup.cfg +0 -0
  174. {jiggle_version-2.2.0 → jiggle_version-2.2.2}/sample_projects/with_unlikely_modules/setup.py +0 -0
  175. {jiggle_version-2.2.0 → jiggle_version-2.2.2}/sample_projects/with_unlikely_modules/test/__init__.py +0 -0
  176. {jiggle_version-2.2.0 → jiggle_version-2.2.2}/sample_projects/with_unlikely_modules/thing/__init__.py +0 -0
  177. {jiggle_version-2.2.0 → jiggle_version-2.2.2}/scripts/basic_checks.sh +0 -0
  178. {jiggle_version-2.2.0 → jiggle_version-2.2.2}/scripts/integration_test.sh +0 -0
  179. {jiggle_version-2.2.0 → jiggle_version-2.2.2}/scripts/make_prompt.sh +0 -0
  180. {jiggle_version-2.2.0 → jiggle_version-2.2.2}/scripts/make_source.sh +0 -0
  181. {jiggle_version-2.2.0 → jiggle_version-2.2.2}/spec/vnext.md +0 -0
  182. {jiggle_version-2.2.0 → jiggle_version-2.2.2}/test/__init__.py +0 -0
  183. {jiggle_version-2.2.0 → jiggle_version-2.2.2}/test/test_auto.py +0 -0
  184. {jiggle_version-2.2.0 → jiggle_version-2.2.2}/test/test_config.py +0 -0
  185. {jiggle_version-2.2.0 → jiggle_version-2.2.2}/test/test_discover_permission.py +0 -0
  186. {jiggle_version-2.2.0 → jiggle_version-2.2.2}/test/test_git.py +0 -0
  187. {jiggle_version-2.2.0 → jiggle_version-2.2.2}/test/test_gitignore.py +0 -0
  188. {jiggle_version-2.2.0 → jiggle_version-2.2.2}/test/test_hypothesis_properties.py +0 -0
  189. {jiggle_version-2.2.0 → jiggle_version-2.2.2}/test/test_parsers/__init__.py +0 -0
  190. {jiggle_version-2.2.0 → jiggle_version-2.2.2}/test/test_parsers/test_ast_parser.py +0 -0
  191. {jiggle_version-2.2.0 → jiggle_version-2.2.2}/test/test_parsers/test_config_parser.py +0 -0
  192. {jiggle_version-2.2.0 → jiggle_version-2.2.2}/test/test_schemes.py +0 -0
  193. {jiggle_version-2.2.0 → jiggle_version-2.2.2}/test/test_update.py +0 -0
@@ -43,7 +43,7 @@
43
43
  // "forwardPorts": [],
44
44
 
45
45
  // Use 'postCreateCommand' to run commands after the container is created.
46
- "postCreateCommand": "pipenv sync --dev",
46
+ "postCreateCommand": "pip install uv && uv sync --all-extras",
47
47
 
48
48
  // Comment out to connect as root instead. More info: https://aka.ms/vscode-remote/containers/non-root.
49
49
  "remoteUser": "vscode",
@@ -56,7 +56,6 @@
56
56
  "ghcr.io/devcontainers-contrib/features/black:2": {},
57
57
  "ghcr.io/devcontainers-contrib/features/coverage-py:2": {},
58
58
  "ghcr.io/devcontainers-contrib/features/isort:2": {},
59
- "ghcr.io/devcontainers-contrib/features/pipenv:2": {},
60
59
  "ghcr.io/devcontainers-contrib/features/pylint:2": {}
61
60
  }
62
61
  }
@@ -0,0 +1,27 @@
1
+ # Normalize line endings: store as LF in the repo, check out native on each OS.
2
+ * text=auto
3
+
4
+ # Files that break with CRLF must always be LF, even on Windows checkouts.
5
+ *.sh text eol=lf
6
+ *.bash text eol=lf
7
+ Dockerfile* text eol=lf
8
+ *.dockerfile text eol=lf
9
+
10
+ # Windows-only scripts stay CRLF.
11
+ *.bat text eol=crlf
12
+ *.cmd text eol=crlf
13
+ *.ps1 text eol=crlf
14
+
15
+ # Common binaries: never touch.
16
+ *.png binary
17
+ *.jpg binary
18
+ *.jpeg binary
19
+ *.gif binary
20
+ *.ico binary
21
+ *.pdf binary
22
+ *.zip binary
23
+ *.gz binary
24
+ *.woff binary
25
+ *.woff2 binary
26
+ *.ttf binary
27
+ *.eot binary
@@ -0,0 +1,107 @@
1
+ # This file is machine-generated by `gh actions-lock`.
2
+ # Do not edit by hand; run `gh actions-lock` to update.
3
+ # Docs: https://gh.io/actions-lockfile
4
+ version: 'v0.0.3'
5
+ workflows:
6
+ '.github/workflows/build.yml':
7
+ - 'actions/checkout@v7.0.1'
8
+ - 'actions/setup-python@v7.0.0'
9
+ '.github/workflows/create_draft_release.yml':
10
+ - 'actions/checkout@v7.0.1'
11
+ - 'actions/setup-python@v7.0.0'
12
+ - 'astral-sh/setup-uv@v10.3.0'
13
+ '.github/workflows/pages.yml':
14
+ - 'actions/checkout@v7.0.1'
15
+ - 'actions/deploy-pages@v5.0.1'
16
+ - 'actions/upload-pages-artifact@v5.0.0'
17
+ '.github/workflows/release.yml':
18
+ - 'actions/checkout@v7.0.1'
19
+ - 'actions/download-artifact@v8.0.2'
20
+ - 'actions/setup-python@v7.0.0'
21
+ - 'actions/upload-artifact@v7.0.2'
22
+ - 'astral-sh/setup-uv@v10.3.0'
23
+ - 'pypa/gh-action-pypi-publish@v1.14.2'
24
+ '.github/workflows/verify-lockfile.yml':
25
+ - 'actions/checkout@v7.0.1'
26
+ '.github/workflows/zizmor.yml':
27
+ - 'actions/checkout@v7.0.1'
28
+ - 'github/codeql-action@v4.38.3'
29
+ - 'hynek/setup-cached-uv@v2.6.0'
30
+ dependencies:
31
+ 'actions/cache@55cc8345863c7cc4c66a329aec7e433d2d1c52a9':
32
+ ref: 'v6.1.0'
33
+ commit: 'sha1-55cc8345863c7cc4c66a329aec7e433d2d1c52a9'
34
+ owner_id: 44036562
35
+ repo_id: 215566462
36
+ 'actions/checkout@v7.0.1':
37
+ ref: 'v7.0.1'
38
+ commit: 'sha1-3d3c42e5aac5ba805825da76410c181273ba90b1'
39
+ owner_id: 44036562
40
+ repo_id: 197814629
41
+ 'actions/deploy-pages@v5.0.1':
42
+ ref: 'v5.0.1'
43
+ commit: 'sha1-368f82528645a54fb793d4d04e342629a3f51346'
44
+ owner_id: 44036562
45
+ repo_id: 438112499
46
+ 'actions/download-artifact@v8.0.2':
47
+ ref: 'v8.0.2'
48
+ commit: 'sha1-9000827ccba6bdab643e8b6fd33ac0654aef8333'
49
+ owner_id: 44036562
50
+ repo_id: 192626254
51
+ 'actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405':
52
+ ref: 'v6.2.0'
53
+ commit: 'sha1-a309ff8b426b58ec0e2a45f0f869d46889d02405'
54
+ owner_id: 44036562
55
+ repo_id: 192625525
56
+ 'actions/setup-python@v7.0.0':
57
+ ref: 'v7.0.0'
58
+ commit: 'sha1-5fda3b95a4ea91299a34e894583c3862153e4b97'
59
+ owner_id: 44036562
60
+ repo_id: 192625525
61
+ 'actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f':
62
+ ref: 'v7.0.0'
63
+ commit: 'sha1-bbbca2ddaa5d8feaa63e36b76fdaad77386f024f'
64
+ owner_id: 44036562
65
+ repo_id: 192625955
66
+ 'actions/upload-artifact@v7.0.2':
67
+ ref: 'v7.0.2'
68
+ commit: 'sha1-cf430e030ddbb5b0abf93d22962f4752f3646cd9'
69
+ owner_id: 44036562
70
+ repo_id: 192625955
71
+ 'actions/upload-pages-artifact@v5.0.0':
72
+ ref: 'v5.0.0'
73
+ commit: 'sha1-fc324d3547104276b827a68afc52ff2a11cc49c9'
74
+ owner_id: 44036562
75
+ repo_id: 496012378
76
+ uses:
77
+ - 'actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f'
78
+ 'astral-sh/setup-uv@v10.3.0':
79
+ ref: 'v10.3.0'
80
+ commit: 'sha1-1c37ad07a6a961277cf70c0d37d6f313000f5884'
81
+ owner_id: 115962839
82
+ repo_id: 846733598
83
+ 'gacts/run-and-post-run@598d7a875d5620e0457490555b5e18e46082aa47':
84
+ ref: 'v1.4.4'
85
+ commit: 'sha1-598d7a875d5620e0457490555b5e18e46082aa47'
86
+ owner_id: 56696274
87
+ repo_id: 617991574
88
+ 'github/codeql-action@v4.38.3':
89
+ ref: 'v4.38.3'
90
+ commit: 'sha1-24c54180a607b1449ed407dd24f251e4e9147c8d'
91
+ owner_id: 9919
92
+ repo_id: 259445878
93
+ 'hynek/setup-cached-uv@v2.6.0':
94
+ ref: 'v2.6.0'
95
+ commit: 'sha1-34e35d30f1ebc7421a5cc733bca38dcc62603960'
96
+ owner_id: 41240
97
+ repo_id: 779953216
98
+ uses:
99
+ - 'actions/cache@55cc8345863c7cc4c66a329aec7e433d2d1c52a9'
100
+ - 'gacts/run-and-post-run@598d7a875d5620e0457490555b5e18e46082aa47'
101
+ 'pypa/gh-action-pypi-publish@v1.14.2':
102
+ ref: 'v1.14.2'
103
+ commit: 'sha1-dc37677b2e1c63e2034f94d8a5b11f265b73ba33'
104
+ owner_id: 647025
105
+ repo_id: 178055147
106
+ uses:
107
+ - 'actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405'
@@ -0,0 +1,37 @@
1
+ name: Build and Test
2
+
3
+ on: [ push ]
4
+
5
+ permissions:
6
+ contents: read
7
+
8
+ jobs:
9
+ build:
10
+ runs-on: ubuntu-latest
11
+
12
+ steps:
13
+ - uses: actions/checkout@v7.0.1
14
+ with:
15
+ persist-credentials: false
16
+
17
+ - uses: actions/setup-python@v7.0.0
18
+ with:
19
+ python-version: '3.14'
20
+
21
+ - name: Install uv and pipx
22
+ run: |
23
+ pip install uv && pip install pipx
24
+
25
+ - name: Install global dependencies
26
+ run: |
27
+ pipx install uv && pipx install "coderoller" && \
28
+ pipx install isort && pipx install black && pipx install bandit && \
29
+ pipx install pylint && pipx install poetry && pipx install hatch
30
+
31
+ - name: Install Dependencies
32
+ run: uv sync
33
+
34
+ - name: Run make check
35
+ run: chmod +x *.sh && uv run make check
36
+
37
+
@@ -0,0 +1,32 @@
1
+ ---
2
+ name: Create Draft Release
3
+ concurrency: changelog
4
+ on:
5
+ push:
6
+ branches: [main]
7
+ workflow_dispatch:
8
+ permissions:
9
+ contents: read
10
+ jobs:
11
+ release:
12
+ runs-on: ubuntu-latest
13
+ permissions:
14
+ contents: write
15
+ steps:
16
+ - uses: actions/checkout@v7.0.1
17
+ with:
18
+ fetch-depth: 0
19
+ persist-credentials: false
20
+ - name: Setup Python 3.14
21
+ uses: actions/setup-python@v7.0.0
22
+ with: {python-version: '3.14'}
23
+ - name: Set up uv
24
+ uses: astral-sh/setup-uv@v10.3.0
25
+ with:
26
+ enable-cache: true
27
+ - name: Sync dependencies
28
+ run: uv sync --frozen --group dev
29
+ - name: Creating Draft release
30
+ env:
31
+ GITHUB_TOKEN: ${{ github.token }}
32
+ run: uv run kaclm github-release --repository ${{ github.repository }}
@@ -0,0 +1,64 @@
1
+ name: Landing page to GitHub Pages
2
+
3
+ # Pages source: GitHub Actions. Documentation is built separately on Read the Docs.
4
+ on:
5
+ push:
6
+ branches: [main]
7
+ paths:
8
+ - "landing/**"
9
+ - ".github/workflows/pages.yml"
10
+ pull_request:
11
+ paths:
12
+ - "landing/**"
13
+ - ".github/workflows/pages.yml"
14
+ workflow_dispatch:
15
+
16
+ permissions:
17
+ contents: read
18
+
19
+ concurrency:
20
+ group: jiggle-version-pages
21
+ cancel-in-progress: false
22
+
23
+ env:
24
+ HUGO_VERSION: "0.164.0"
25
+
26
+ jobs:
27
+ build:
28
+ runs-on: ubuntu-latest
29
+ timeout-minutes: 10
30
+ steps:
31
+ - uses: actions/checkout@v7.0.1
32
+ with:
33
+ persist-credentials: false
34
+
35
+ - name: Install Hugo (extended)
36
+ run: |
37
+ curl --fail --silent --show-error --location --output "$RUNNER_TEMP/hugo.deb" \
38
+ "https://github.com/gohugoio/hugo/releases/download/v${HUGO_VERSION}/hugo_extended_${HUGO_VERSION}_linux-amd64.deb"
39
+ echo "8325f3653032d0fc536503691f4833dc4eb6c6be02ee62466758f3f37a7f2fcd $RUNNER_TEMP/hugo.deb" | sha256sum --check
40
+ sudo dpkg -i "$RUNNER_TEMP/hugo.deb"
41
+
42
+ - name: Build landing page
43
+ run: hugo --source landing --minify --gc
44
+
45
+ - name: Upload Pages artifact
46
+ uses: actions/upload-pages-artifact@v5.0.0
47
+ with:
48
+ path: landing/public
49
+
50
+ deploy:
51
+ if: github.ref == 'refs/heads/main' && github.event_name != 'pull_request'
52
+ needs: build
53
+ runs-on: ubuntu-latest
54
+ timeout-minutes: 10
55
+ permissions:
56
+ pages: write
57
+ id-token: write
58
+ environment:
59
+ name: github-pages
60
+ url: ${{ steps.deployment.outputs.page_url }}
61
+ steps:
62
+ - name: Deploy to GitHub Pages
63
+ id: deployment
64
+ uses: actions/deploy-pages@v5.0.1
@@ -0,0 +1,129 @@
1
+ ---
2
+ name: Release
3
+ concurrency: changelog
4
+ on:
5
+ release:
6
+ types: [released]
7
+ permissions:
8
+ contents: read
9
+ jobs:
10
+ bump:
11
+ runs-on: ubuntu-latest
12
+ permissions:
13
+ contents: write
14
+ pull-requests: write
15
+ outputs:
16
+ branch: ${{ steps.release.outputs.branch }}
17
+ version: ${{ steps.release.outputs.version }}
18
+ steps:
19
+ - uses: actions/checkout@v7.0.1
20
+ with:
21
+ ref: ${{ github.event.release.target_commitish }}
22
+ fetch-depth: 0
23
+ persist-credentials: false
24
+ - name: Set up Python 3.14
25
+ uses: actions/setup-python@v7.0.0
26
+ with: {python-version: '3.14'}
27
+ - name: Set up uv
28
+ uses: astral-sh/setup-uv@v10.3.0
29
+ with:
30
+ enable-cache: false
31
+ - name: Sync dependencies
32
+ run: uv sync --frozen --group dev
33
+ - name: Configure git author
34
+ run: |
35
+ git config user.name "github-actions[bot]"
36
+ git config user.email "github-actions[bot]@users.noreply.github.com"
37
+
38
+ - name: Bump, commit, push branch and open PR
39
+ id: release
40
+ env:
41
+ GITHUB_TOKEN: ${{ github.token }}
42
+ RELEASE_VERSION: ${{ github.event.release.tag_name }}
43
+ RELEASE_ID: ${{ github.event.release.id }}
44
+ BASE_BRANCH: ${{ github.event.release.target_commitish }}
45
+ REPO: ${{ github.repository }}
46
+ run: |
47
+ # One command does everything the bump job used to do in shell:
48
+ # bump changelog + version files, branch, [skip ci] commit,
49
+ # --force-with-lease push, and open the release PR. The [skip ci]
50
+ # decision follows [defaults].skip_ci (default true).
51
+ git remote set-url origin "https://x-access-token:${GITHUB_TOKEN}@github.com/${REPO}.git"
52
+ VERSION="${RELEASE_VERSION#v}"
53
+ # --json is a global flag, so it must precede the `release-bump`
54
+ # subcommand (argparse rejects it if placed after).
55
+ uv run kaclm --json release-bump \
56
+ --version "$VERSION" \
57
+ --base "$BASE_BRANCH" \
58
+ --release-id "$RELEASE_ID" \
59
+ --repository "$REPO" \
60
+ --open-pr \
61
+ --title "chore: release ${VERSION}" \
62
+ --body "Automated release PR for ${VERSION}. Merge once the PyPI publish succeeds." \
63
+ --yes > release-bump.json
64
+ echo "version=$(python -c "import json;print(json.load(open('release-bump.json'))['version'])")" >> "$GITHUB_OUTPUT"
65
+ echo "branch=$(python -c "import json;print(json.load(open('release-bump.json'))['branch'])")" >> "$GITHUB_OUTPUT"
66
+ build:
67
+ runs-on: ubuntu-latest
68
+ needs: bump
69
+ steps:
70
+ - uses: actions/checkout@v7.0.1
71
+ with:
72
+ ref: ${{ needs.bump.outputs.branch }}
73
+ fetch-depth: 0
74
+ persist-credentials: false
75
+ - name: Set up Python 3.14
76
+ uses: actions/setup-python@v7.0.0
77
+ with: {python-version: '3.14'}
78
+ - name: Set up uv
79
+ uses: astral-sh/setup-uv@v10.3.0
80
+ with:
81
+ enable-cache: false
82
+ - name: Sync dependencies
83
+ run: uv sync --frozen
84
+ - name: Build
85
+ run: uv build --no-sources
86
+ # Fail before uploading: the publish action's bundled twine rejects
87
+ # metadata it cannot parse (e.g. Metadata-Version 2.5 from hatchling),
88
+ # which otherwise only surfaces after the release is already tagged.
89
+ - name: Validate distribution metadata
90
+ run: uv run --with 'twine>=7' twine check --strict dist/*
91
+ - name: Verify dist version matches release
92
+ env:
93
+ EXPECTED: ${{ needs.bump.outputs.version }}
94
+ run: |
95
+ WHEEL=$(ls dist/*.whl 2>/dev/null | head -1)
96
+ if [ -z "$WHEEL" ]; then
97
+ echo "::error::No wheel found in dist/"
98
+ exit 1
99
+ fi
100
+ if ! echo "$WHEEL" | grep -q "${EXPECTED}"; then
101
+ echo "::error::Wheel ${WHEEL} does not contain expected version ${EXPECTED}"
102
+ exit 1
103
+ fi
104
+ echo "Verified: ${WHEEL} matches version ${EXPECTED}"
105
+ - name: Upload artifact
106
+ uses: actions/upload-artifact@v7.0.2
107
+ with:
108
+ name: packages
109
+ path: dist/
110
+ if-no-files-found: error
111
+ retention-days: 1
112
+ publish:
113
+ runs-on: ubuntu-latest
114
+ needs: build
115
+ permissions:
116
+ id-token: write
117
+ environment:
118
+ name: pypi
119
+ url: https://pypi.org/p/jiggle-version
120
+ steps:
121
+ - name: Download artifact
122
+ uses: actions/download-artifact@v8.0.2
123
+ with:
124
+ name: packages
125
+ path: dist/
126
+ - name: Publish to PyPI
127
+ uses: pypa/gh-action-pypi-publish@v1.14.2
128
+ with:
129
+ verbose: 'true'
@@ -0,0 +1,27 @@
1
+ name: Verify Actions lockfile
2
+
3
+ on:
4
+ pull_request:
5
+ push:
6
+ branches: [main]
7
+ workflow_dispatch:
8
+
9
+ permissions:
10
+ contents: read
11
+
12
+ jobs:
13
+ verify:
14
+ runs-on: ubuntu-latest
15
+ timeout-minutes: 10
16
+ steps:
17
+ - uses: actions/checkout@v7.0.1
18
+ with:
19
+ persist-credentials: false
20
+ - name: Install Actions lockfile verifier
21
+ run: gh extension install github/gh-actions-lock --pin v0.4.1
22
+ env:
23
+ GH_TOKEN: ${{ github.token }}
24
+ - name: Verify workflow dependency locks
25
+ run: gh actions-lock --verify
26
+ env:
27
+ GH_TOKEN: ${{ github.token }}
@@ -23,12 +23,12 @@ jobs:
23
23
  security-events: write
24
24
  steps:
25
25
  - name: Checkout repository
26
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
26
+ uses: actions/checkout@v7.0.1
27
27
  with:
28
28
  persist-credentials: false
29
29
 
30
30
 
31
- - uses: hynek/setup-cached-uv@4300ec2180bc77d705e626a34e381b81a4772c51 # v2.5.0
31
+ - uses: hynek/setup-cached-uv@v2.6.0
32
32
 
33
33
  - name: Run zizmor 🌈
34
34
  run: uvx zizmor --format sarif . > results.sarif
@@ -36,7 +36,7 @@ jobs:
36
36
  GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
37
37
 
38
38
  - name: Upload SARIF file
39
- uses: github/codeql-action/upload-sarif@68bde559dea0fdcac2102bfdf6230c5f70eb485e # v4.35.4
39
+ uses: github/codeql-action/upload-sarif@v4.38.3
40
40
  with:
41
41
  # Path to SARIF file relative to the root of the repository
42
42
  sarif_file: results.sarif
@@ -84,11 +84,13 @@ celerybeat-schedule
84
84
  # Environments
85
85
  .env
86
86
  .venv
87
+ .venv*/
87
88
  env/
88
89
  venv/
89
90
  ENV/
90
91
  env.bak/
91
92
  venv.bak/
93
+ .build/
92
94
 
93
95
  # Spyder project settings
94
96
  .spyderproject
@@ -99,6 +101,9 @@ venv.bak/
99
101
 
100
102
  # mkdocs documentation
101
103
  /site
104
+ /landing/public/
105
+ /landing/resources/
106
+ /landing/.hugo_build.lock
102
107
 
103
108
  # mypy
104
109
  .mypy_cache/
@@ -0,0 +1,2 @@
1
+ digest = "sha256:ec3b1a7f2e386c9bd0ceb9c2efd06cf9b210e766dab4a88aa9507ffa85ea0fe0"
2
+ symbols = ["__credits__", "__dependencies__", "__description__", "__keywords__", "__license__", "__readme__", "__requires_python__", "__status__", "__title__", "__version__"]
@@ -0,0 +1,13 @@
1
+ version: 2
2
+
3
+ build:
4
+ os: ubuntu-24.04
5
+ tools:
6
+ python: "3.14"
7
+
8
+ mkdocs:
9
+ configuration: mkdocs.yml
10
+
11
+ python:
12
+ install:
13
+ - requirements: docs/requirements.txt
@@ -0,0 +1,115 @@
1
+ # Changelog
2
+ All notable changes to this project will be documented in this file.
3
+
4
+ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
5
+ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
6
+
7
+ ## [2.2.2] - 2026-11-15
8
+ ### Changed
9
+ - Requires Python 3.11 or newer; Python 3.9-3.10 are no longer supported.
10
+
11
+ ## [2.2.1] - 2026-07-04
12
+ ### Fixed
13
+ - Version discovery now honors nested `.gitignore` files and skips directories tagged with a `CACHEDIR.TAG` marker, so project-local caches (e.g. uv's `./.uv/`) no longer leak installed-package version files and cause false version-conflict errors.
14
+
15
+ ## [2.2.0] - 2026-05-24
16
+ ### Added
17
+ - Git tag checking via `check --git-tag` command: compares the agreed source version against the most recent git tag reachable from HEAD (`git describe --tags --abbrev=0`). A leading `v`/`V` is stripped before comparison. Exits `102` on mismatch; exits `0` with an informational note when no tags exist. Opt-in flag; existing pipelines are unaffected.
18
+
19
+ ### Fixed
20
+ - Version discovery no longer walks into virtual-environment roots. Any directory containing a `pyvenv.cfg` file (the standard venv marker written by pip, uv, and virtualenv) is skipped entirely, eliminating false version-conflict errors from installed-package `_version.py` / `__version__.py` files in ad-hoc venvs not covered by `.gitignore`. `site-packages` and `node_modules` are also added to the unconditional prune list.
21
+
22
+ ## [2.1.1] - 2026-03-27
23
+ ### Added
24
+ - Quiet option
25
+
26
+ ### Fixed
27
+ - UTF-8 error on printing output
28
+
29
+ ## [2.1.0] - 2025-10-20
30
+ ### Added
31
+ - Python 3.14 support
32
+ - Checks PyPI to see if current version is published. Skips bump if version is unpublished to avoid version number gaps when running on every Makefile or Justfile invocation.
33
+
34
+ ### Fixed
35
+ - Missing packaging library dependency
36
+
37
+ ## [2.0.1] - 2025-10-06
38
+ ### Fixed
39
+ - Missing dependency in pyproject.toml
40
+
41
+ ## [2.0.0] - 2025-10-06
42
+ ### Added
43
+ - 100% code rewrite with new commands
44
+
45
+ ### Changed
46
+ - Command signature changed
47
+
48
+ ### Removed
49
+ - Removed current command, replaced with others
50
+
51
+ ## [1.2.0] - 2025-10-05
52
+ ### Added
53
+ - Python 3.14 compatibility
54
+
55
+ ### Changed
56
+ - Replace die() utility with JiggleVersionException for cleaner error propagation
57
+ - Switch version metadata to __about__.py and use Path-based arguments internally
58
+ - Fix keyword typo in package metadata (verision-numbers → version-numbers)
59
+
60
+ ## [1.1.0] - 2023-05-28
61
+ ### Added
62
+ - Update to Python 3.11 and Actions
63
+ - MyPyC compilation support
64
+
65
+ ### Changed
66
+ - Build script improvements
67
+
68
+ ## [1.0.77] - 2021-12-11
69
+ ### Added
70
+ - Vendor versio library (comparable_mixin, version, version_scheme) to support version comparison logic
71
+
72
+ ## [1.0.76] - 2021-12-06
73
+ ### Added
74
+ - New build script
75
+
76
+ ### Changed
77
+ - Documentation improvements
78
+
79
+ ## [1.0.71] - 2020-05-23
80
+ ### Fixed
81
+ - Close file handles
82
+
83
+ ## [1.0.70] - 2020-02-09
84
+ ### Added
85
+ - Python 3 only support
86
+
87
+ ### Fixed
88
+ - Fix formatting issues
89
+
90
+ ## [1.0.68] - 2019-01-11
91
+ ### Added
92
+ - Force choice of module option
93
+ - Init feature for version file initialization
94
+
95
+ ### Fixed
96
+ - Fix bug causing incorrect behavior on certain path configurations
97
+ - Remove extraneous PyCharm IDE files accidentally included in the PyPI distribution
98
+
99
+ ## [0.1.2] - 2025-10-05
100
+ ### Fixed
101
+ - Python 3.13 support
102
+ - Last version before complete rewrite
103
+
104
+ [2.2.0]: https://github.com/matthewdeanmartin/jiggle_version/compare/v2.1.1...v2.2.0
105
+ [2.1.1]: https://github.com/matthewdeanmartin/jiggle_version/compare/v2.1.0...v2.1.1
106
+ [2.1.0]: https://github.com/matthewdeanmartin/jiggle_version/compare/v2.0.1...v2.1.0
107
+ [2.0.1]: https://github.com/matthewdeanmartin/jiggle_version/compare/v2.0.0...v2.0.1
108
+ [2.0.0]: https://github.com/matthewdeanmartin/jiggle_version/compare/v1.2.0...v2.0.0
109
+ [1.2.0]: https://github.com/matthewdeanmartin/jiggle_version/compare/v1.1.0...v1.2.0
110
+ [1.1.0]: https://github.com/matthewdeanmartin/jiggle_version/compare/v1.0.77...v1.1.0
111
+ [1.0.77]: https://github.com/matthewdeanmartin/jiggle_version/compare/v1.0.76...v1.0.77
112
+ [1.0.76]: https://github.com/matthewdeanmartin/jiggle_version/compare/v1.0.71...v1.0.76
113
+ [1.0.71]: https://github.com/matthewdeanmartin/jiggle_version/compare/v1.0.70...v1.0.71
114
+ [1.0.70]: https://github.com/matthewdeanmartin/jiggle_version/compare/v1.0.68...v1.0.70
115
+ [1.0.68]: https://github.com/matthewdeanmartin/jiggle_version/releases/tag/v1.0.68