breakscope 0.0.1__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
breakscope/__init__.py ADDED
@@ -0,0 +1,3 @@
1
+ """BreakScope: see what your API changes will break in your code."""
2
+
3
+ __version__ = "0.0.1"
breakscope/__main__.py ADDED
@@ -0,0 +1,3 @@
1
+ from breakscope.cli.main import app
2
+
3
+ app()
File without changes
breakscope/cli/main.py ADDED
@@ -0,0 +1,44 @@
1
+ from pathlib import Path
2
+ from typing import Annotated
3
+
4
+ import typer
5
+
6
+ from breakscope import __version__
7
+
8
+ app = typer.Typer(
9
+ name="breakscope",
10
+ help="See what your API changes will break in your code.",
11
+ no_args_is_help=True,
12
+ )
13
+
14
+
15
+ def _version(value: bool) -> None:
16
+ if value:
17
+ typer.echo(f"breakscope {__version__}")
18
+ raise typer.Exit()
19
+
20
+
21
+ @app.callback()
22
+ def main(
23
+ version: Annotated[
24
+ bool, typer.Option("--version", callback=_version, is_eager=True, help="Show version.")
25
+ ] = False,
26
+ ) -> None:
27
+ pass
28
+
29
+
30
+ @app.command()
31
+ def diff(
32
+ old: Annotated[Path, typer.Argument(exists=True, dir_okay=False, help="Old OpenAPI spec.")],
33
+ new: Annotated[Path, typer.Argument(exists=True, dir_okay=False, help="New OpenAPI spec.")],
34
+ ) -> None:
35
+ """Show contract changes between two OpenAPI specs."""
36
+ typer.echo("diff: coming in v0.1", err=True)
37
+ raise typer.Exit(2)
38
+
39
+
40
+ @app.command()
41
+ def analyze() -> None:
42
+ """Trace API changes into your codebase."""
43
+ typer.echo("analyze: coming in v0.4", err=True)
44
+ raise typer.Exit(2)
@@ -0,0 +1,35 @@
1
+ Metadata-Version: 2.5
2
+ Name: breakscope
3
+ Version: 0.0.1
4
+ Summary: See what your API changes will break in your code.
5
+ License-Expression: MIT
6
+ Requires-Python: >=3.11
7
+ Requires-Dist: pydantic>=2
8
+ Requires-Dist: pyyaml>=6
9
+ Requires-Dist: rich>=13
10
+ Requires-Dist: typer>=0.12
11
+ Provides-Extra: dev
12
+ Requires-Dist: mypy>=1.11; extra == 'dev'
13
+ Requires-Dist: pytest>=8; extra == 'dev'
14
+ Requires-Dist: ruff>=0.6; extra == 'dev'
15
+ Requires-Dist: syrupy>=4; extra == 'dev'
16
+ Requires-Dist: types-pyyaml; extra == 'dev'
17
+ Description-Content-Type: text/markdown
18
+
19
+ # BreakScope
20
+
21
+ > **See what your API changes will break — before they reach production.**
22
+
23
+ API contract changes are easy to detect. Knowing what they break isn't.
24
+ BreakScope diffs your OpenAPI specs and traces each breaking change to the exact `file:line` in your Python and TypeScript code that's likely affected.
25
+
26
+ ```bash
27
+ pip install breakscope
28
+ breakscope diff openapi-old.yaml openapi-new.yaml
29
+ ```
30
+
31
+ **Status:** pre-alpha. See [docs/ROADMAP.md](docs/ROADMAP.md) and [docs/ARCHITECTURE-v0.1.md](docs/ARCHITECTURE-v0.1.md).
32
+
33
+ ## License
34
+
35
+ MIT
@@ -0,0 +1,8 @@
1
+ breakscope/__init__.py,sha256=vKhOX_IdBorgD7wHaqS_n7mYI_nTO8Tk8O1XiwzeZ5Y,92
2
+ breakscope/__main__.py,sha256=G9vQNALLcEGoh03cuLLF3e7MEZA6u8sSbRRkQJdm8YU,43
3
+ breakscope/cli/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
4
+ breakscope/cli/main.py,sha256=bG_bKnCg4-x3AJqpqxbQOqvjPb6XGxORjXI0h1zZViQ,1075
5
+ breakscope-0.0.1.dist-info/METADATA,sha256=Fz8jA3M0lHGKSn9X8dcdOZZmuFLvqr3ptx8JCnIAyzc,1077
6
+ breakscope-0.0.1.dist-info/WHEEL,sha256=W3fkpkm7-wf9vBI5Z-7s0eWkeM-spu78I8Neb98DeEg,87
7
+ breakscope-0.0.1.dist-info/entry_points.txt,sha256=_J4ORnRax-bT8AwExgCRDq9wnPdvZcbCsSQJqfc-rDs,55
8
+ breakscope-0.0.1.dist-info/RECORD,,
@@ -0,0 +1,4 @@
1
+ Wheel-Version: 1.0
2
+ Generator: hatchling 1.32.4
3
+ Root-Is-Purelib: true
4
+ Tag: py3-none-any
@@ -0,0 +1,2 @@
1
+ [console_scripts]
2
+ breakscope = breakscope.cli.main:app