wagov-squ 1.4.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 (47) hide show
  1. wagov_squ-1.4.0/.devcontainer/devcontainer.json +12 -0
  2. wagov_squ-1.4.0/.gitattributes +3 -0
  3. wagov_squ-1.4.0/.github/dependabot.yml +21 -0
  4. wagov_squ-1.4.0/.github/workflows/codeql.yml +78 -0
  5. wagov_squ-1.4.0/.github/workflows/dependency-review.yml +27 -0
  6. wagov_squ-1.4.0/.github/workflows/deploy.yaml +56 -0
  7. wagov_squ-1.4.0/.github/workflows/release.yml +39 -0
  8. wagov_squ-1.4.0/.github/workflows/scorecard.yml +78 -0
  9. wagov_squ-1.4.0/.gitignore +153 -0
  10. wagov_squ-1.4.0/.pre-commit-config.yaml +22 -0
  11. wagov_squ-1.4.0/AGENTS.md +22 -0
  12. wagov_squ-1.4.0/CHANGELOG.md +27 -0
  13. wagov_squ-1.4.0/LICENSE +201 -0
  14. wagov_squ-1.4.0/MANIFEST.in +6 -0
  15. wagov_squ-1.4.0/PKG-INFO +172 -0
  16. wagov_squ-1.4.0/README.md +124 -0
  17. wagov_squ-1.4.0/SECURITY.md +19 -0
  18. wagov_squ-1.4.0/atlaskit-transformer.js +32 -0
  19. wagov_squ-1.4.0/dbt_example_project/.gitignore +6 -0
  20. wagov_squ-1.4.0/dbt_example_project/README.md +15 -0
  21. wagov_squ-1.4.0/dbt_example_project/analyses/.gitkeep +0 -0
  22. wagov_squ-1.4.0/dbt_example_project/dbt_project.yml +36 -0
  23. wagov_squ-1.4.0/dbt_example_project/macros/.gitkeep +0 -0
  24. wagov_squ-1.4.0/dbt_example_project/models/squ/T1547_001.kql +7 -0
  25. wagov_squ-1.4.0/dbt_example_project/models/squ/hunt.sql +1 -0
  26. wagov_squ-1.4.0/dbt_example_project/models/squ/schema.yml +15 -0
  27. wagov_squ-1.4.0/dbt_example_project/profiles.yml +10 -0
  28. wagov_squ-1.4.0/dbt_example_project/seeds/.gitkeep +0 -0
  29. wagov_squ-1.4.0/dbt_example_project/snapshots/.gitkeep +0 -0
  30. wagov_squ-1.4.0/dbt_example_project/tests/.gitkeep +0 -0
  31. wagov_squ-1.4.0/justfile +65 -0
  32. wagov_squ-1.4.0/package-lock.json +1314 -0
  33. wagov_squ-1.4.0/package.json +11 -0
  34. wagov_squ-1.4.0/pyproject.toml +98 -0
  35. wagov_squ-1.4.0/src/nbdev_squ/__init__.py +17 -0
  36. wagov_squ-1.4.0/src/wagov_squ/__init__.py +21 -0
  37. wagov_squ-1.4.0/src/wagov_squ/api.py +488 -0
  38. wagov_squ-1.4.0/src/wagov_squ/clients.py +7 -0
  39. wagov_squ-1.4.0/src/wagov_squ/core.py +205 -0
  40. wagov_squ-1.4.0/src/wagov_squ/frame.py +92 -0
  41. wagov_squ-1.4.0/src/wagov_squ/legacy.py +321 -0
  42. wagov_squ-1.4.0/tests/__init__.py +1 -0
  43. wagov_squ-1.4.0/tests/test_api.py +133 -0
  44. wagov_squ-1.4.0/tests/test_core.py +24 -0
  45. wagov_squ-1.4.0/tests/test_frame.py +143 -0
  46. wagov_squ-1.4.0/tests/test_integration.py +288 -0
  47. wagov_squ-1.4.0/uv.lock +5274 -0
@@ -0,0 +1,12 @@
1
+ {
2
+ "name": "wagov-dtt devcontainer-base",
3
+ "image": "ghcr.io/wagov-dtt/devcontainer-base",
4
+ "privileged": true,
5
+ "runArgs": [
6
+ "--cgroupns=host"
7
+ ],
8
+ "mounts": [
9
+ "source=dind-var-lib-docker,target=/var/lib/docker,type=volume"
10
+ ],
11
+ "remoteUser": "vscode"
12
+ }
@@ -0,0 +1,3 @@
1
+ # Auto detect text files and perform LF normalization
2
+ * text=auto
3
+ *.ipynb merge=nbdev-merge
@@ -0,0 +1,21 @@
1
+ # To get started with Dependabot version updates, you'll need to specify which
2
+ # package ecosystems to update and where the package manifests are located.
3
+ # Please see the documentation for all configuration options:
4
+ # https://docs.github.com/github/administering-a-repository/configuration-options-for-dependency-updates
5
+
6
+ version: 2
7
+ updates:
8
+ - package-ecosystem: "pip" # See documentation for possible values
9
+ directory: "/" # Location of package manifests
10
+ schedule:
11
+ interval: "weekly"
12
+
13
+ - package-ecosystem: github-actions
14
+ directory: /
15
+ schedule:
16
+ interval: daily
17
+
18
+ - package-ecosystem: npm
19
+ directory: /
20
+ schedule:
21
+ interval: daily
@@ -0,0 +1,78 @@
1
+ # For most projects, this workflow file will not need changing; you simply need
2
+ # to commit it to your repository.
3
+ #
4
+ # You may wish to alter this file to override the set of languages analyzed,
5
+ # or to provide custom queries or build logic.
6
+ #
7
+ # ******** NOTE ********
8
+ # We have attempted to detect the languages in your repository. Please check
9
+ # the `language` matrix defined below to confirm you have the correct set of
10
+ # supported CodeQL languages.
11
+ #
12
+ name: "CodeQL"
13
+
14
+ on:
15
+ push:
16
+ branches: ["main"]
17
+ pull_request:
18
+ # The branches below must be a subset of the branches above
19
+ branches: ["main"]
20
+ schedule:
21
+ - cron: "0 0 * * 1"
22
+
23
+ permissions:
24
+ contents: read
25
+
26
+ jobs:
27
+ analyze:
28
+ name: Analyze
29
+ runs-on: ubuntu-latest
30
+ permissions:
31
+ actions: read
32
+ contents: read
33
+ security-events: write
34
+
35
+ strategy:
36
+ fail-fast: false
37
+ matrix:
38
+ language: ["javascript", "python"]
39
+ # CodeQL supports [ $supported-codeql-languages ]
40
+ # Learn more about CodeQL language support at https://aka.ms/codeql-docs/language-support
41
+
42
+ steps:
43
+ - name: Harden Runner
44
+ uses: step-security/harden-runner@4d991eb9b905ef189e4c376166672c3f2f230481 # v2.11.0
45
+ with:
46
+ egress-policy: audit
47
+
48
+ - name: Checkout repository
49
+ uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
50
+
51
+ # Initializes the CodeQL tools for scanning.
52
+ - name: Initialize CodeQL
53
+ uses: github/codeql-action/init@51f77329afa6477de8c49fc9c7046c15b9a4e79d # v3.29.5
54
+ with:
55
+ languages: ${{ matrix.language }}
56
+ # If you wish to specify custom queries, you can do so here or in a config file.
57
+ # By default, queries listed here will override any specified in a config file.
58
+ # Prefix the list here with "+" to use these queries and those in the config file.
59
+
60
+ # Autobuild attempts to build any compiled languages (C/C++, C#, or Java).
61
+ # If this step fails, then you should remove it and run the build manually (see below)
62
+ - name: Autobuild
63
+ uses: github/codeql-action/autobuild@51f77329afa6477de8c49fc9c7046c15b9a4e79d # v3.29.5
64
+
65
+ # ℹ️ Command-line programs to run using the OS shell.
66
+ # 📚 See https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsrun
67
+
68
+ # If the Autobuild fails above, remove it and uncomment the following three lines.
69
+ # modify them (or add more) to build your code if your project, please refer to the EXAMPLE below for guidance.
70
+
71
+ # - run: |
72
+ # echo "Run, Build Application using script"
73
+ # ./location_of_script_within_repo/buildscript.sh
74
+
75
+ - name: Perform CodeQL Analysis
76
+ uses: github/codeql-action/analyze@51f77329afa6477de8c49fc9c7046c15b9a4e79d # v3.29.5
77
+ with:
78
+ category: "/language:${{matrix.language}}"
@@ -0,0 +1,27 @@
1
+ # Dependency Review Action
2
+ #
3
+ # This Action will scan dependency manifest files that change as part of a Pull Request,
4
+ # surfacing known-vulnerable versions of the packages declared or updated in the PR.
5
+ # Once installed, if the workflow run is marked as required,
6
+ # PRs introducing known-vulnerable packages will be blocked from merging.
7
+ #
8
+ # Source repository: https://github.com/actions/dependency-review-action
9
+ name: 'Dependency Review'
10
+ on: [pull_request]
11
+
12
+ permissions:
13
+ contents: read
14
+
15
+ jobs:
16
+ dependency-review:
17
+ runs-on: ubuntu-latest
18
+ steps:
19
+ - name: Harden Runner
20
+ uses: step-security/harden-runner@4d991eb9b905ef189e4c376166672c3f2f230481 # v2.11.0
21
+ with:
22
+ egress-policy: audit
23
+
24
+ - name: 'Checkout Repository'
25
+ uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
26
+ - name: 'Dependency Review'
27
+ uses: actions/dependency-review-action@da24556b548a50705dd671f47852072ea4c105d9 # v4.7.1
@@ -0,0 +1,56 @@
1
+ name: Build and upload docs to GitHub Pages
2
+
3
+ # Allow only one concurrent deployment, skipping runs queued between the run in-progress and latest queued.
4
+ # However, do NOT cancel in-progress runs as we want to allow these production deployments to complete.
5
+ concurrency:
6
+ group: "pages"
7
+ cancel-in-progress: false
8
+
9
+ on:
10
+ push:
11
+ branches: ["main"]
12
+ workflow_dispatch:
13
+
14
+ jobs:
15
+ deploy:
16
+ runs-on: ubuntu-latest
17
+ environment:
18
+ name: github-pages
19
+ url: ${{ steps.deployment.outputs.page_url }}
20
+ # Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages
21
+ permissions:
22
+ contents: read
23
+ pages: write
24
+ id-token: write
25
+ steps:
26
+ - name: Harden Runner
27
+ uses: step-security/harden-runner@4d991eb9b905ef189e4c376166672c3f2f230481 # v2.11.0
28
+ with:
29
+ egress-policy: block
30
+ allowed-endpoints: >
31
+ api.github.com:443
32
+ download.pytorch.org:443
33
+ files.pythonhosted.org:443
34
+ github.com:443
35
+ objects.githubusercontent.com:443
36
+ pypi.org:443
37
+ quarto.org:443
38
+ registry.npmjs.org:443
39
+ www.quarto.org:443
40
+ - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
41
+ - uses: extractions/setup-just@v3
42
+ - uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5.6.0
43
+ with:
44
+ python-version: '3.12'
45
+ - uses: quarto-dev/quarto-actions/setup@9e48da27e184aa238fcb49f5db75469626d43adb # v2.1.9
46
+ - run: just install
47
+ - name: Setup Pages
48
+ uses: actions/configure-pages@983d7736d9b0ae728b81ab479565c72886d7745b # v5.0.0
49
+ - name: Upload artifact
50
+ uses: actions/upload-pages-artifact@56afc609e74202658d3ffba0e8f6dda462b719fa # v3.0.1
51
+ with:
52
+ # Upload built _docs
53
+ path: '_docs'
54
+ - name: Deploy to GitHub Pages
55
+ id: deployment
56
+ uses: actions/deploy-pages@d6db90164ac5ed86f2b6aed7e0febac5b3c0c03e # v4.0.5
@@ -0,0 +1,39 @@
1
+ name: Release and Publish
2
+
3
+ on:
4
+ push:
5
+ tags:
6
+ - 'v*'
7
+
8
+ jobs:
9
+ release:
10
+ runs-on: ubuntu-latest
11
+ permissions:
12
+ contents: write
13
+ id-token: write
14
+
15
+ steps:
16
+ - uses: actions/checkout@v4
17
+
18
+ - name: Install uv
19
+ uses: astral-sh/setup-uv@v4
20
+
21
+ - name: Set up Node.js
22
+ uses: actions/setup-node@v4
23
+ with:
24
+ node-version: 'lts/*'
25
+
26
+ - name: Build package
27
+ run: |
28
+ npm install
29
+ npm run build
30
+ uv build
31
+
32
+ - name: Create GitHub Release
33
+ uses: softprops/action-gh-release@v2
34
+ with:
35
+ files: dist/*
36
+ generate_release_notes: true
37
+
38
+ - name: Publish to PyPI
39
+ uses: pypa/gh-action-pypi-publish@release/v1
@@ -0,0 +1,78 @@
1
+ # This workflow uses actions that are not certified by GitHub. They are provided
2
+ # by a third-party and are governed by separate terms of service, privacy
3
+ # policy, and support documentation.
4
+
5
+ name: Scorecard supply-chain security
6
+ on:
7
+ # For Branch-Protection check. Only the default branch is supported. See
8
+ # https://github.com/ossf/scorecard/blob/main/docs/checks.md#branch-protection
9
+ branch_protection_rule:
10
+ # To guarantee Maintained check is occasionally updated. See
11
+ # https://github.com/ossf/scorecard/blob/main/docs/checks.md#maintained
12
+ schedule:
13
+ - cron: '21 19 * * 4'
14
+ push:
15
+ branches: [ "main" ]
16
+
17
+ # Declare default permissions as read only.
18
+ permissions: read-all
19
+
20
+ jobs:
21
+ analysis:
22
+ name: Scorecard analysis
23
+ runs-on: ubuntu-latest
24
+ permissions:
25
+ # Needed to upload the results to code-scanning dashboard.
26
+ security-events: write
27
+ # Needed to publish results and get a badge (see publish_results below).
28
+ id-token: write
29
+ # Uncomment the permissions below if installing in a private repository.
30
+ # contents: read
31
+ # actions: read
32
+
33
+ steps:
34
+ - name: Harden Runner
35
+ uses: step-security/harden-runner@4d991eb9b905ef189e4c376166672c3f2f230481 # v2.11.0
36
+ with:
37
+ egress-policy: audit
38
+
39
+ - name: "Checkout code"
40
+ uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
41
+ with:
42
+ persist-credentials: false
43
+
44
+ - name: "Run analysis"
45
+ uses: ossf/scorecard-action@f49aabe0b5af0936a0987cfb85d86b75731b0186 # v2.4.1
46
+ with:
47
+ results_file: results.sarif
48
+ results_format: sarif
49
+ # (Optional) "write" PAT token. Uncomment the `repo_token` line below if:
50
+ # - you want to enable the Branch-Protection check on a *public* repository, or
51
+ # - you are installing Scorecard on a *private* repository
52
+ # To create the PAT, follow the steps in https://github.com/ossf/scorecard-action?tab=readme-ov-file#authentication-with-fine-grained-pat-optional.
53
+ # repo_token: ${{ secrets.SCORECARD_TOKEN }}
54
+
55
+ # Public repositories:
56
+ # - Publish results to OpenSSF REST API for easy access by consumers
57
+ # - Allows the repository to include the Scorecard badge.
58
+ # - See https://github.com/ossf/scorecard-action#publishing-results.
59
+ # For private repositories:
60
+ # - `publish_results` will always be set to `false`, regardless
61
+ # of the value entered here.
62
+ publish_results: true
63
+
64
+ # Upload the results as artifacts (optional). Commenting out will disable uploads of run results in SARIF
65
+ # format to the repository Actions tab.
66
+ - name: "Upload artifact"
67
+ uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
68
+ with:
69
+ name: SARIF file
70
+ path: results.sarif
71
+ retention-days: 5
72
+
73
+ # Upload the results to GitHub's code scanning dashboard (optional).
74
+ # Commenting out will disable upload of results to your repo's Code Scanning dashboard
75
+ - name: "Upload to code-scanning"
76
+ uses: github/codeql-action/upload-sarif@51f77329afa6477de8c49fc9c7046c15b9a4e79d # v3.29.5
77
+ with:
78
+ sarif_file: results.sarif
@@ -0,0 +1,153 @@
1
+ # Build outputs
2
+ _docs/
3
+ _proc/
4
+ node_modules/
5
+ dist/
6
+ build/
7
+ *.bundle.js
8
+
9
+ # Temporary files
10
+ *.bak
11
+ *.log
12
+ *~
13
+ ~*
14
+ _tmp*
15
+ tmp*
16
+ tags
17
+
18
+ # UV/Python package management
19
+ .venv/
20
+
21
+ # Byte-compiled / optimized / DLL files
22
+ __pycache__/
23
+ *.py[cod]
24
+ *$py.class
25
+
26
+ # C extensions
27
+ *.so
28
+
29
+ # Distribution / packaging
30
+ .Python
31
+ env/
32
+ develop-eggs/
33
+ downloads/
34
+ eggs/
35
+ .eggs/
36
+ lib/
37
+ lib64/
38
+ parts/
39
+ sdist/
40
+ var/
41
+ wheels/
42
+ *.egg-info/
43
+ .installed.cfg
44
+ *.egg
45
+
46
+ # PyInstaller
47
+ # Usually these files are written by a python script from a template
48
+ # before PyInstaller builds the exe, so as to inject date/other infos into it.
49
+ *.manifest
50
+ *.spec
51
+
52
+ # Installer logs
53
+ pip-log.txt
54
+ pip-delete-this-directory.txt
55
+
56
+ # Unit test / coverage reports
57
+ htmlcov/
58
+ .tox/
59
+ .coverage
60
+ .coverage.*
61
+ .cache
62
+ nosetests.xml
63
+ coverage.xml
64
+ *.cover
65
+ .hypothesis/
66
+
67
+ # Translations
68
+ *.mo
69
+ *.pot
70
+
71
+ # Django stuff:
72
+ *.log
73
+ local_settings.py
74
+
75
+ # Flask stuff:
76
+ instance/
77
+ .webassets-cache
78
+
79
+ # Scrapy stuff:
80
+ .scrapy
81
+
82
+ # Sphinx documentation
83
+ docs/_build/
84
+
85
+ # PyBuilder
86
+ target/
87
+
88
+ # Jupyter Notebook
89
+ .ipynb_checkpoints
90
+
91
+ # pyenv
92
+ .python-version
93
+
94
+ # celery beat schedule file
95
+ celerybeat-schedule
96
+
97
+ # SageMath parsed files
98
+ *.sage.py
99
+
100
+ # dotenv
101
+ .env
102
+
103
+ # virtualenv
104
+ venv/
105
+ ENV/
106
+
107
+ # Spyder project settings
108
+ .spyderproject
109
+ .spyproject
110
+
111
+ # Rope project settings
112
+ .ropeproject
113
+
114
+ # mkdocs documentation
115
+ /site
116
+
117
+ # mypy
118
+ .mypy_cache/
119
+
120
+ .vscode
121
+ *.swp
122
+
123
+ # osx generated files
124
+ .DS_Store
125
+ .DS_Store?
126
+ .Trashes
127
+ ehthumbs.db
128
+ Thumbs.db
129
+ .idea
130
+
131
+ # pytest
132
+ .pytest_cache
133
+
134
+ # tools/trust-doc-nbs
135
+ docs_src/.last_checked
136
+
137
+ # symlinks to fastai
138
+ docs_src/fastai
139
+ tools/fastai
140
+
141
+ # link checker
142
+ checklink/cookies.txt
143
+
144
+ # .gitconfig is now autogenerated
145
+ .gitconfig
146
+
147
+ # Quarto installer
148
+ .deb
149
+ .pkg
150
+
151
+ # Quarto
152
+ .quarto
153
+ /.jupyter
@@ -0,0 +1,22 @@
1
+ repos:
2
+ - repo: https://github.com/gitleaks/gitleaks
3
+ rev: v8.16.3
4
+ hooks:
5
+ - id: gitleaks
6
+ - repo: https://github.com/jumanjihouse/pre-commit-hooks
7
+ rev: 3.0.0
8
+ hooks:
9
+ - id: shellcheck
10
+ - repo: https://github.com/pre-commit/mirrors-eslint
11
+ rev: v8.38.0
12
+ hooks:
13
+ - id: eslint
14
+ - repo: https://github.com/pre-commit/pre-commit-hooks
15
+ rev: v4.4.0
16
+ hooks:
17
+ - id: end-of-file-fixer
18
+ - id: trailing-whitespace
19
+ - repo: https://github.com/pylint-dev/pylint
20
+ rev: v2.17.2
21
+ hooks:
22
+ - id: pylint
@@ -0,0 +1,22 @@
1
+ # Development Guide
2
+
3
+ ## Quick Commands
4
+ - `just install` - Setup dev environment
5
+ - `just test` - Run all tests
6
+ - `just test-fast` - Unit tests only
7
+ - `just test-integration` - Azure/Jira tests (needs SQU_CONFIG)
8
+ - `just lint` - Format and check code
9
+ - `just check` - Full quality check
10
+ - `just build` - Build package
11
+
12
+ ## Project Structure
13
+ - **Package**: `src/nbdev_squ/` - Standard Python layout
14
+ - **Core modules**: api (SIEM queries), core (auth/caching), clients (external APIs)
15
+ - **Config**: Azure Key Vault via `SQU_CONFIG=keyvault/tenantid`
16
+ - **APIs**: Azure Sentinel, Runzero, Jira v3, AbuseIPDB, Tenable
17
+
18
+ ## Development Standards
19
+ - Python 3.12+, ruff formatting, mypy type checking
20
+ - pytest with `@pytest.mark.integration` for external dependencies
21
+ - Import order: stdlib, third-party, local
22
+ - Use library solutions over custom implementations
@@ -0,0 +1,27 @@
1
+ # Changelog
2
+
3
+ ## [1.4.0] - 2025-09-16
4
+
5
+ ### Added
6
+ - Ibis support for scalable data processing (`Fmt.ibis`)
7
+ - Modern uv-based package structure
8
+ - Integration test suite for Azure and Jira scenarios
9
+ - Jira v3 API support (transparent upgrade from v2)
10
+
11
+ ### Changed
12
+ - Migrated from nbdev to standard Python package
13
+ - Build system: uv, pytest, ruff, mypy with streamlined setup
14
+ - All API functions support pandas/ibis output formats
15
+ - Separated fast unit tests from integration tests
16
+ - Simplified Azure CLI extension handling
17
+
18
+ ### Technical
19
+ - Zero breaking changes for existing users
20
+ - Dependencies: ibis-framework, duckdb, pip (for Azure CLI)
21
+ - Clean documentation and contributor-friendly setup
22
+ - Enhanced test coverage with comprehensive JQL testing
23
+
24
+ ## [1.3.0] - Previous
25
+ Updated to include api clients and msticpy. Python 3.11 support.
26
+
27
+