insto 0.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 (121) hide show
  1. insto-0.1.0/.github/workflows/ci.yml +37 -0
  2. insto-0.1.0/.github/workflows/docs.yml +46 -0
  3. insto-0.1.0/.github/workflows/pr-title.yml +33 -0
  4. insto-0.1.0/.github/workflows/release-please.yml +20 -0
  5. insto-0.1.0/.github/workflows/release.yml +65 -0
  6. insto-0.1.0/.gitignore +24 -0
  7. insto-0.1.0/.ralphex/.gitignore +3 -0
  8. insto-0.1.0/.ralphex/progress/progress-2026-04-27-insto-v0.1-implementation.txt +1960 -0
  9. insto-0.1.0/.release-please-config.json +27 -0
  10. insto-0.1.0/.release-please-manifest.json +3 -0
  11. insto-0.1.0/CHANGELOG.md +34 -0
  12. insto-0.1.0/CONTRIBUTING.md +96 -0
  13. insto-0.1.0/LICENSE +21 -0
  14. insto-0.1.0/PKG-INFO +188 -0
  15. insto-0.1.0/README.md +147 -0
  16. insto-0.1.0/SECURITY.md +48 -0
  17. insto-0.1.0/docs/architecture.md +92 -0
  18. insto-0.1.0/docs/backends.md +61 -0
  19. insto-0.1.0/docs/basic-usage.md +85 -0
  20. insto-0.1.0/docs/changelog.md +1 -0
  21. insto-0.1.0/docs/cli-reference.md +158 -0
  22. insto-0.1.0/docs/contributing.md +1 -0
  23. insto-0.1.0/docs/index.md +58 -0
  24. insto-0.1.0/docs/installation.md +61 -0
  25. insto-0.1.0/docs/troubleshooting.md +82 -0
  26. insto-0.1.0/insto/__init__.py +3 -0
  27. insto-0.1.0/insto/__main__.py +6 -0
  28. insto-0.1.0/insto/_redact.py +88 -0
  29. insto-0.1.0/insto/_version.py +1 -0
  30. insto-0.1.0/insto/backends/__init__.py +52 -0
  31. insto-0.1.0/insto/backends/_base.py +135 -0
  32. insto-0.1.0/insto/backends/_cdn.py +343 -0
  33. insto-0.1.0/insto/backends/_fake.py +196 -0
  34. insto-0.1.0/insto/backends/_hiker_map.py +355 -0
  35. insto-0.1.0/insto/backends/_retry.py +103 -0
  36. insto-0.1.0/insto/backends/hiker.py +681 -0
  37. insto-0.1.0/insto/cli.py +547 -0
  38. insto-0.1.0/insto/commands/__init__.py +55 -0
  39. insto-0.1.0/insto/commands/_base.py +532 -0
  40. insto-0.1.0/insto/commands/batch.py +434 -0
  41. insto-0.1.0/insto/commands/content.py +354 -0
  42. insto-0.1.0/insto/commands/dossier.py +549 -0
  43. insto-0.1.0/insto/commands/interactions.py +334 -0
  44. insto-0.1.0/insto/commands/media.py +329 -0
  45. insto-0.1.0/insto/commands/network.py +317 -0
  46. insto-0.1.0/insto/commands/operational.py +272 -0
  47. insto-0.1.0/insto/commands/profile.py +225 -0
  48. insto-0.1.0/insto/commands/target.py +65 -0
  49. insto-0.1.0/insto/commands/watch.py +334 -0
  50. insto-0.1.0/insto/config.py +245 -0
  51. insto-0.1.0/insto/exceptions.py +113 -0
  52. insto-0.1.0/insto/models.py +223 -0
  53. insto-0.1.0/insto/repl.py +417 -0
  54. insto-0.1.0/insto/service/__init__.py +6 -0
  55. insto-0.1.0/insto/service/analytics.py +345 -0
  56. insto-0.1.0/insto/service/exporter.py +323 -0
  57. insto-0.1.0/insto/service/facade.py +456 -0
  58. insto-0.1.0/insto/service/history.py +580 -0
  59. insto-0.1.0/insto/service/watch.py +227 -0
  60. insto-0.1.0/insto/ui/__init__.py +29 -0
  61. insto-0.1.0/insto/ui/banner.py +195 -0
  62. insto-0.1.0/insto/ui/render.py +198 -0
  63. insto-0.1.0/insto/ui/theme.py +53 -0
  64. insto-0.1.0/mkdocs.yml +71 -0
  65. insto-0.1.0/pyproject.toml +102 -0
  66. insto-0.1.0/tests/__init__.py +2 -0
  67. insto-0.1.0/tests/e2e/__init__.py +0 -0
  68. insto-0.1.0/tests/e2e/conftest.py +63 -0
  69. insto-0.1.0/tests/e2e/test_oneshot.py +63 -0
  70. insto-0.1.0/tests/e2e/test_repl_session.py +80 -0
  71. insto-0.1.0/tests/e2e/test_watch_tick.py +82 -0
  72. insto-0.1.0/tests/fakes.py +274 -0
  73. insto-0.1.0/tests/fixtures/hiker/comment_basic.json +16 -0
  74. insto-0.1.0/tests/fixtures/hiker/comment_reply.json +17 -0
  75. insto-0.1.0/tests/fixtures/hiker/comment_schema_drift.json +10 -0
  76. insto-0.1.0/tests/fixtures/hiker/highlight_basic.json +18 -0
  77. insto-0.1.0/tests/fixtures/hiker/highlight_schema_drift.json +6 -0
  78. insto-0.1.0/tests/fixtures/hiker/post_carousel.json +33 -0
  79. insto-0.1.0/tests/fixtures/hiker/post_image.json +23 -0
  80. insto-0.1.0/tests/fixtures/hiker/post_schema_drift.json +10 -0
  81. insto-0.1.0/tests/fixtures/hiker/post_video.json +21 -0
  82. insto-0.1.0/tests/fixtures/hiker/profile_deleted.json +22 -0
  83. insto-0.1.0/tests/fixtures/hiker/profile_empty.json +21 -0
  84. insto-0.1.0/tests/fixtures/hiker/profile_private.json +21 -0
  85. insto-0.1.0/tests/fixtures/hiker/profile_public.json +21 -0
  86. insto-0.1.0/tests/fixtures/hiker/profile_schema_drift.json +11 -0
  87. insto-0.1.0/tests/fixtures/hiker/story_image.json +14 -0
  88. insto-0.1.0/tests/fixtures/hiker/story_schema_drift.json +7 -0
  89. insto-0.1.0/tests/fixtures/hiker/story_video.json +15 -0
  90. insto-0.1.0/tests/fixtures/hiker/user_short.json +9 -0
  91. insto-0.1.0/tests/fixtures/hiker/user_short_schema_drift.json +7 -0
  92. insto-0.1.0/tests/test_analytics.py +269 -0
  93. insto-0.1.0/tests/test_backend_contract.py +154 -0
  94. insto-0.1.0/tests/test_cdn.py +471 -0
  95. insto-0.1.0/tests/test_cli.py +454 -0
  96. insto-0.1.0/tests/test_commands_base.py +647 -0
  97. insto-0.1.0/tests/test_commands_batch.py +797 -0
  98. insto-0.1.0/tests/test_commands_content.py +627 -0
  99. insto-0.1.0/tests/test_commands_dossier.py +447 -0
  100. insto-0.1.0/tests/test_commands_interactions.py +520 -0
  101. insto-0.1.0/tests/test_commands_media.py +636 -0
  102. insto-0.1.0/tests/test_commands_network.py +626 -0
  103. insto-0.1.0/tests/test_commands_operational.py +430 -0
  104. insto-0.1.0/tests/test_commands_profile.py +514 -0
  105. insto-0.1.0/tests/test_commands_target.py +129 -0
  106. insto-0.1.0/tests/test_commands_watch.py +363 -0
  107. insto-0.1.0/tests/test_config.py +243 -0
  108. insto-0.1.0/tests/test_exceptions.py +144 -0
  109. insto-0.1.0/tests/test_exporter.py +238 -0
  110. insto-0.1.0/tests/test_exporter_maltego.py +284 -0
  111. insto-0.1.0/tests/test_facade.py +609 -0
  112. insto-0.1.0/tests/test_hiker_backend.py +600 -0
  113. insto-0.1.0/tests/test_hiker_map.py +423 -0
  114. insto-0.1.0/tests/test_history.py +417 -0
  115. insto-0.1.0/tests/test_models.py +199 -0
  116. insto-0.1.0/tests/test_redact.py +89 -0
  117. insto-0.1.0/tests/test_render.py +265 -0
  118. insto-0.1.0/tests/test_repl_completer.py +373 -0
  119. insto-0.1.0/tests/test_retry.py +220 -0
  120. insto-0.1.0/tests/test_smoke.py +9 -0
  121. insto-0.1.0/uv.lock +1114 -0
@@ -0,0 +1,37 @@
1
+ name: CI
2
+
3
+ on:
4
+ push:
5
+ branches: [main]
6
+ pull_request:
7
+
8
+ jobs:
9
+ test:
10
+ runs-on: ubuntu-latest
11
+ strategy:
12
+ fail-fast: false
13
+ matrix:
14
+ python-version: ["3.11", "3.12"]
15
+ steps:
16
+ - uses: actions/checkout@v4
17
+
18
+ - name: Install uv
19
+ uses: astral-sh/setup-uv@v3
20
+ with:
21
+ enable-cache: true
22
+ python-version: ${{ matrix.python-version }}
23
+
24
+ - name: Sync dependencies
25
+ run: uv sync
26
+
27
+ - name: Ruff check
28
+ run: uv run ruff check
29
+
30
+ - name: Ruff format check
31
+ run: uv run ruff format --check
32
+
33
+ - name: Mypy
34
+ run: uv run mypy insto
35
+
36
+ - name: Pytest with coverage
37
+ run: uv run pytest --cov=insto --cov-fail-under=80
@@ -0,0 +1,46 @@
1
+ name: docs
2
+
3
+ on:
4
+ push:
5
+ branches: [main]
6
+ paths:
7
+ - "docs/**"
8
+ - "mkdocs.yml"
9
+ - "README.md"
10
+ - "CONTRIBUTING.md"
11
+ - "CHANGELOG.md"
12
+ - ".github/workflows/docs.yml"
13
+ workflow_dispatch:
14
+
15
+ permissions:
16
+ contents: read
17
+ pages: write
18
+ id-token: write
19
+
20
+ concurrency:
21
+ group: docs-deploy
22
+ cancel-in-progress: false
23
+
24
+ jobs:
25
+ build:
26
+ runs-on: ubuntu-latest
27
+ steps:
28
+ - uses: actions/checkout@v4
29
+ - uses: actions/setup-python@v6
30
+ with:
31
+ python-version: "3.12"
32
+ cache: pip
33
+ - run: pip install -e '.[docs]'
34
+ - run: mkdocs build --strict --site-dir _site
35
+ - uses: actions/upload-pages-artifact@v5
36
+ with:
37
+ path: _site
38
+
39
+ deploy:
40
+ needs: build
41
+ runs-on: ubuntu-latest
42
+ environment:
43
+ name: github-pages
44
+ steps:
45
+ - id: deployment
46
+ uses: actions/deploy-pages@v4
@@ -0,0 +1,33 @@
1
+ name: pr-title
2
+
3
+ on:
4
+ pull_request_target:
5
+ types: [opened, edited, synchronize, reopened]
6
+
7
+ permissions:
8
+ pull-requests: read
9
+
10
+ jobs:
11
+ lint:
12
+ runs-on: ubuntu-latest
13
+ steps:
14
+ - uses: amannn/action-semantic-pull-request@v5
15
+ env:
16
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
17
+ with:
18
+ types: |
19
+ feat
20
+ fix
21
+ refactor
22
+ docs
23
+ perf
24
+ test
25
+ ci
26
+ build
27
+ chore
28
+ style
29
+ requireScope: false
30
+ subjectPattern: ^(?![A-Z]).+$
31
+ subjectPatternError: |
32
+ The PR title subject must start with a lowercase letter.
33
+ Example: "fix: retry on 429" not "fix: Retry on 429".
@@ -0,0 +1,20 @@
1
+ name: release-please
2
+
3
+ on:
4
+ push:
5
+ branches: [main]
6
+ workflow_dispatch:
7
+
8
+ permissions:
9
+ contents: write
10
+ pull-requests: write
11
+
12
+ jobs:
13
+ release-please:
14
+ runs-on: ubuntu-latest
15
+ steps:
16
+ - uses: googleapis/release-please-action@v4
17
+ with:
18
+ token: ${{ secrets.RELEASE_PLEASE_TOKEN || secrets.GITHUB_TOKEN }}
19
+ config-file: .release-please-config.json
20
+ manifest-file: .release-please-manifest.json
@@ -0,0 +1,65 @@
1
+ name: release
2
+
3
+ on:
4
+ push:
5
+ tags:
6
+ - "v*"
7
+ workflow_dispatch:
8
+
9
+ permissions:
10
+ contents: read
11
+
12
+ jobs:
13
+ build:
14
+ runs-on: ubuntu-latest
15
+ steps:
16
+ - uses: actions/checkout@v4
17
+ - uses: actions/setup-python@v6
18
+ with:
19
+ python-version: "3.12"
20
+ - run: pip install build
21
+ - run: python -m build
22
+ - uses: actions/upload-artifact@v7
23
+ with:
24
+ name: dist
25
+ path: dist/
26
+ if-no-files-found: error
27
+
28
+ publish:
29
+ needs: build
30
+ runs-on: ubuntu-latest
31
+ environment:
32
+ name: pypi
33
+ url: https://pypi.org/project/insto/
34
+ permissions:
35
+ id-token: write
36
+ steps:
37
+ - uses: actions/download-artifact@v7
38
+ with:
39
+ name: dist
40
+ path: dist/
41
+ - uses: pypa/gh-action-pypi-publish@release/v1
42
+ with:
43
+ attestations: true
44
+
45
+ github-release:
46
+ needs: publish
47
+ runs-on: ubuntu-latest
48
+ permissions:
49
+ contents: write
50
+ steps:
51
+ - uses: actions/checkout@v4
52
+ - uses: actions/download-artifact@v7
53
+ with:
54
+ name: dist
55
+ path: dist/
56
+ - name: Upload artifacts to the GitHub release
57
+ env:
58
+ GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
59
+ TAG: ${{ github.ref_name }}
60
+ run: |
61
+ if gh release view "$TAG" >/dev/null 2>&1; then
62
+ gh release upload "$TAG" dist/* --clobber
63
+ else
64
+ gh release create "$TAG" --title "$TAG" --generate-notes dist/*
65
+ fi
insto-0.1.0/.gitignore ADDED
@@ -0,0 +1,24 @@
1
+ docs/superpowers/
2
+ docs/plans/
3
+ docs/internal/
4
+ .context/
5
+ .claude/settings.local.json
6
+ CLAUDE.md
7
+
8
+ # Python
9
+ __pycache__/
10
+ *.py[cod]
11
+ *.egg-info/
12
+ .venv/
13
+
14
+ # Tooling caches
15
+ .pytest_cache/
16
+ .mypy_cache/
17
+ .ruff_cache/
18
+ .coverage
19
+ .coverage.*
20
+ htmlcov/
21
+
22
+ # insto runtime artifacts
23
+ output/
24
+ .insto-test-home/
@@ -0,0 +1,3 @@
1
+ .gitignore
2
+ progress/
3
+ worktrees/