hypervigilant 1.0.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.
@@ -0,0 +1,14 @@
1
+ [run]
2
+ source =
3
+ hypervigilant/
4
+
5
+ omit =
6
+ */__init__.py
7
+ */tests/*
8
+
9
+ [report]
10
+ fail_under = 80
11
+ show_missing = True
12
+
13
+ [html]
14
+ directory = coverage_html_report
@@ -0,0 +1,51 @@
1
+ # Python
2
+ __pycache__/
3
+ *.py[cod]
4
+ *$py.class
5
+ *.so
6
+ .Python
7
+ .venv/
8
+ venv/
9
+ ENV/
10
+ env/
11
+ .pytest_cache/
12
+ .coverage
13
+ .coverage.*
14
+ htmlcov/
15
+ .tox/
16
+ .mypy_cache/
17
+ .dmypy.json
18
+ dmypy.json
19
+ .pyre/
20
+ .ruff_cache/
21
+
22
+ # Git
23
+ .git/
24
+ .github/
25
+ .gitignore
26
+ .gitattributes
27
+
28
+ # IDE
29
+ .vscode/
30
+ .idea/
31
+ *.swp
32
+ *.swo
33
+ *~
34
+ .DS_Store
35
+
36
+ # Documentation
37
+ docs/
38
+ *.md
39
+ !README.md
40
+
41
+ # Testing
42
+ tests/
43
+ test_*.py
44
+ *_test.py
45
+ conftest.py
46
+
47
+ # Build artifacts
48
+ build/
49
+ dist/
50
+ *.egg-info/
51
+ .eggs/
@@ -0,0 +1,12 @@
1
+ ENV=development
2
+ DEBUG=true
3
+
4
+ S3__ENDPOINT_URL=http://host.docker.internal:9000
5
+ S3__AWS_ACCESS_KEY_ID=minioadmin
6
+ S3__AWS_SECRET_ACCESS_KEY=minioadmin
7
+
8
+ OPENAI__API_KEY=
9
+ OPENAI__MODEL_NAME=gpt-4o-mini
10
+ OPENAI__TEMPERATURE=0.0
11
+ OPENAI__MAX_COMPLETION_TOKENS=1000
12
+ OPENAI__LOGPROBS=false
@@ -0,0 +1 @@
1
+ *.ipynb linguist-documentation
@@ -0,0 +1,80 @@
1
+ _build/
2
+ .DS_Store
3
+ .secrets
4
+ __pycache__/
5
+ *.py[cod]
6
+ *$py.class
7
+ *.so
8
+ .Python
9
+ build/
10
+ develop-eggs/
11
+ dist/
12
+ downloads/
13
+ eggs/
14
+ .eggs/
15
+ lib/
16
+ lib64/
17
+ parts/
18
+ sdist/
19
+ var/
20
+ wheels/
21
+ share/python-wheels/
22
+ *.egg-info/
23
+ .installed.cfg
24
+ *.egg
25
+ MANIFEST
26
+ *.manifest
27
+ *.spec
28
+ pip-log.txt
29
+ pip-delete-this-directory.txt
30
+ htmlcov/
31
+ .tox/
32
+ .nox/
33
+ .coverage
34
+ .coverage.*
35
+ .cache
36
+ nosetests.xml
37
+ coverage.xml
38
+ *.cover
39
+ *.py,cover
40
+ .hypothesis/
41
+ .pytest_cache/
42
+ cover/
43
+ *.mo
44
+ *.pot
45
+ *.log
46
+ instance/
47
+ .webassets-cache
48
+ .scrapy
49
+ docs/_build/
50
+ .pybuilder/
51
+ target/
52
+ .ipynb_checkpoints
53
+ profile_default/
54
+ ipython_config.py
55
+ .pdm.toml
56
+ __pypackages__/
57
+ celerybeat-schedule
58
+ celerybeat.pid
59
+ *.sage.py
60
+ .venv
61
+ env/
62
+ venv/
63
+ ENV/
64
+ env.bak/
65
+ venv.bak/
66
+ .spyderproject
67
+ .spyproject
68
+ .ropeproject
69
+ /site
70
+ .mypy_cache/
71
+ .dmypy.json
72
+ dmypy.json
73
+ .pyre/
74
+ .pytype/
75
+ cython_debug/
76
+ .vscode/
77
+ .env
78
+ **/genai/**/*
79
+ **/llm/**/*
80
+ outputs/
@@ -0,0 +1,15 @@
1
+ {
2
+ "default": true,
3
+ "MD007": {
4
+ "indent": 4
5
+ },
6
+ "MD013": {
7
+ "line_length": 10000
8
+ },
9
+ "MD024": {
10
+ "siblings_only": true
11
+ },
12
+ "MD033": false,
13
+ "no-hard-tabs": false,
14
+ "whitespace": false
15
+ }
@@ -0,0 +1,69 @@
1
+ # Reference:
2
+ # https://github.com/openai/openai-python/blob/main/mypy.ini
3
+ # https://github.com/pytorch/pytorch/blob/main/mypy.ini
4
+ [mypy]
5
+ pretty=True
6
+ show_error_codes=True
7
+ python_version=3.12
8
+
9
+ strict_equality=True
10
+ implicit_reexport=True
11
+ check_untyped_defs=True
12
+ no_implicit_optional=True
13
+
14
+ warn_return_any=True
15
+ warn_unreachable=True
16
+ warn_unused_configs=True
17
+
18
+ warn_unused_ignores=False
19
+ warn_redundant_casts=False
20
+
21
+ disallow_any_generics=True
22
+ disallow_untyped_defs=True
23
+ disallow_untyped_calls=False
24
+ disallow_subclassing_any=True
25
+ disallow_incomplete_defs=True
26
+ disallow_untyped_decorators=True
27
+ cache_fine_grained=True
28
+ disable_error_code=func-returns-value
29
+
30
+ # Uncomment when using pydantic in the project
31
+ # plugins = pydantic.mypy
32
+ #
33
+ # [pydantic-mypy]
34
+ # init_forbid_extra = True
35
+ # init_typed = True
36
+ # warn_required_dynamic_aliases = True
37
+
38
+ # https://github.com/python/mypy/issues/12162
39
+ [mypy.overrides]
40
+ module="black.files.*"
41
+ ignore_errors=true
42
+ ignore_missing_imports=true
43
+
44
+ [mypy-matplotlib.*]
45
+ ignore_missing_imports=True
46
+
47
+ [mypy-mpl_toolkits.*]
48
+ ignore_missing_imports=True
49
+
50
+ [mypy-seaborn.*]
51
+ ignore_missing_imports=True
52
+
53
+ [mypy-sklearn.*]
54
+ ignore_missing_imports=True
55
+
56
+ [mypy-transformers.*]
57
+ ignore_missing_imports=True
58
+
59
+ [mypy-datasets.*]
60
+ ignore_missing_imports=True
61
+
62
+ [mypy-accelerate.*]
63
+ ignore_missing_imports=True
64
+
65
+ [mypy-scipy.*]
66
+ ignore_missing_imports=True
67
+
68
+ [mypy-bitsandbytes.*]
69
+ ignore_missing_imports=True
@@ -0,0 +1,69 @@
1
+ repos:
2
+ - repo: https://github.com/pre-commit/pre-commit-hooks
3
+ rev: v5.0.0
4
+ hooks:
5
+ - id: check-ast
6
+ - id: check-builtin-literals
7
+ - id: check-case-conflict
8
+ - id: check-docstring-first
9
+ - id: check-executables-have-shebangs
10
+ - id: check-json
11
+ - id: check-shebang-scripts-are-executable
12
+ - id: check-symlinks
13
+ - id: check-toml
14
+ - id: check-vcs-permalinks
15
+ - id: check-xml
16
+ - id: check-yaml
17
+ - id: debug-statements
18
+ - id: destroyed-symlinks
19
+ - id: mixed-line-ending
20
+ - id: trailing-whitespace
21
+ - id: check-merge-conflict
22
+
23
+
24
+ - repo: local
25
+ hooks:
26
+ - id: security-bandit
27
+ name: Security Check (Bandit)
28
+ entry: make security
29
+ language: system
30
+ types: [python]
31
+ pass_filenames: false
32
+
33
+ - repo: local
34
+ hooks:
35
+ - id: lint-ruff
36
+ name: Lint and Format Check (Ruff)
37
+ entry: make lint
38
+ language: system
39
+ types: [python]
40
+ pass_filenames: false
41
+
42
+ - repo: local
43
+ hooks:
44
+ - id: type-mypy
45
+ name: Type Check (MyPy)
46
+ entry: make typecheck
47
+ language: system
48
+ types: [python]
49
+ pass_filenames: false
50
+
51
+ - repo: local
52
+ hooks:
53
+ - id: unit-test
54
+ name: Unit Tests (PyTest)
55
+ entry: make test
56
+ language: system
57
+ types: [python]
58
+ pass_filenames: false
59
+
60
+ - repo: https://github.com/commitizen-tools/commitizen
61
+ rev: v4.8.3
62
+ hooks:
63
+ - id: commitizen
64
+ stages: [commit-msg]
65
+
66
+ - repo: https://github.com/astral-sh/uv-pre-commit
67
+ rev: 0.7.19
68
+ hooks:
69
+ - id: uv-lock
@@ -0,0 +1,78 @@
1
+ # Build artifacts
2
+ build/
3
+ dist/
4
+ *.egg-info/
5
+ __pycache__/
6
+ *.pyc
7
+ *.pyo
8
+ .DS_Store
9
+
10
+ # Coverage reports
11
+ htmlcov/
12
+ .coverage
13
+ coverage.xml
14
+ *.cover
15
+
16
+ # Virtual environments
17
+ venv/
18
+ .venv/
19
+ env/
20
+ .env/
21
+
22
+ # Cache directories
23
+ .pytest_cache/
24
+ .mypy_cache/
25
+ .ruff_cache/
26
+ .nox/
27
+ .tox/
28
+
29
+ # Node modules
30
+ node_modules/
31
+
32
+ # IDE
33
+ .vscode/
34
+ .idea/
35
+ *.swp
36
+ *.swo
37
+
38
+ # Documentation build
39
+ docs/_build/
40
+ docs/_static/
41
+ docs/_templates/
42
+
43
+ # Jupyter
44
+ .ipynb_checkpoints/
45
+ *.ipynb
46
+
47
+ # Lock files (we want to format these)
48
+ !package-lock.json
49
+ !yarn.lock
50
+ !pnpm-lock.yaml
51
+
52
+ # Test artifacts
53
+ .benchmarks/
54
+
55
+ # Temporary files
56
+ *.tmp
57
+ *.temp
58
+ *.log
59
+
60
+ # Python files (handled by ruff)
61
+ *.py
62
+
63
+ # Generated files
64
+ *.min.js
65
+ *.min.css
66
+
67
+ # Archives
68
+ *.zip
69
+ *.tar.gz
70
+ *.tgz
71
+
72
+ # OS files
73
+ Thumbs.db
74
+
75
+ # Git
76
+ .git/
77
+ .gitignore
78
+ .gitattributes
@@ -0,0 +1,5 @@
1
+ {
2
+ "proseWrap": "always",
3
+ "printWidth": 80,
4
+ "tabWidth": 4
5
+ }
@@ -0,0 +1,19 @@
1
+ # Reference:
2
+ # https://github.com/tiangolo/fastapi/blob/master/pyproject.toml
3
+ # https://github.com/pydantic/pydantic/blob/main/pyproject.toml
4
+ [pytest]
5
+ minversion=6.0
6
+ pythonpath=.
7
+ addopts=
8
+ --strict-config
9
+ --strict-markers
10
+ --import-mode=importlib
11
+ testpaths=
12
+ tests/hypervigilant/unit
13
+ tests/hypervigilant/integration
14
+ xfail_strict=true
15
+ filterwarnings=
16
+ error
17
+ ignore::DeprecationWarning
18
+ markers =
19
+ asyncio: mark test as an async test
@@ -0,0 +1 @@
1
+ 3.12
@@ -0,0 +1,96 @@
1
+ exclude = [
2
+ ".bzr",
3
+ ".direnv",
4
+ ".eggs",
5
+ ".git",
6
+ ".git-rewrite",
7
+ ".hg",
8
+ ".mypy_cache",
9
+ ".nox",
10
+ ".pants.d",
11
+ ".pytype",
12
+ ".ruff_cache",
13
+ ".svn",
14
+ ".tox",
15
+ ".venv",
16
+ "__pypackages__",
17
+ "_build",
18
+ "buck-out",
19
+ "build",
20
+ "dist",
21
+ "node_modules",
22
+ "venv",
23
+ ]
24
+
25
+ line-length = 120
26
+ indent-width = 4
27
+ target-version = "py312"
28
+ output-format = "grouped"
29
+
30
+ [lint]
31
+ exclude = ["*.ipynb"]
32
+ select = [
33
+ "ARG",
34
+ "B",
35
+ "C4",
36
+ "G",
37
+ "E",
38
+ "EXE",
39
+ "F",
40
+ "I",
41
+ "SIM1",
42
+ "W",
43
+ "NPY",
44
+ "PERF",
45
+ "PGH004",
46
+ "PIE794",
47
+ "PIE800",
48
+ "PIE804",
49
+ "PIE807",
50
+ "PIE810",
51
+ "PLC0131",
52
+ "PLC0132",
53
+ "PLC0205",
54
+ "PLE",
55
+ "PLR0133",
56
+ "PLR0206",
57
+ "PLR1722",
58
+ "PLW0129",
59
+ "PLW0406",
60
+ "PLW0711",
61
+ "PLW1509",
62
+ "PLW3301",
63
+ "PT006",
64
+ "PT022",
65
+ "PT023",
66
+ "PT024",
67
+ "PT025",
68
+ "PT026",
69
+ "PYI",
70
+ "B904",
71
+ "TRY203",
72
+ "UP",
73
+ ]
74
+ ignore = [
75
+ "E501",
76
+ "UP006",
77
+ "UP015",
78
+ "UP035",
79
+ "G004",
80
+ "UP007",
81
+ "UP040",
82
+ "UP046",
83
+ "UP047",
84
+ ]
85
+ fixable = ["ALL"]
86
+ unfixable = []
87
+ dummy-variable-rgx = "^(_+|(_+[a-zA-Z0-9_]*[a-zA-Z0-9]+?))$"
88
+
89
+ [lint.isort]
90
+ known-first-party = ["hypervigilant"]
91
+
92
+ [format]
93
+ quote-style = "double"
94
+ indent-style = "space"
95
+ skip-magic-trailing-comma = false
96
+ line-ending = "auto"
@@ -0,0 +1 @@
1
+ POSTGRES__PASSWORD=
@@ -0,0 +1,86 @@
1
+ .DEFAULT_GOAL := help
2
+
3
+ PACKAGE_NAME := hypervigilant
4
+ DOCS_DIR := playbook
5
+ TEST_DIR := tests
6
+ SOURCES := $(PACKAGE_NAME)
7
+
8
+ .PHONY: .uv
9
+ .uv:
10
+ @uv -V || echo 'Please install uv: https://docs.astral.sh/uv/getting-started/installation/'
11
+
12
+ .PHONY: install
13
+ install: .uv
14
+ uv sync --frozen --all-extras --all-packages --all-groups
15
+ uv run pre-commit install
16
+ uv run pre-commit install --hook-type commit-msg
17
+
18
+ .PHONY: lock
19
+ lock: .uv
20
+ uv lock --upgrade
21
+
22
+ .PHONY: sync
23
+ sync: .uv
24
+ uv sync --all-extras --all-packages --all-groups
25
+
26
+ .PHONY: format
27
+ format: .uv
28
+ uv run ruff check --fix --exit-zero $(SOURCES)
29
+ uv run ruff format $(SOURCES)
30
+
31
+ .PHONY: lint
32
+ lint: .uv
33
+ uv run ruff check $(SOURCES)
34
+ uv run ruff format --check $(SOURCES)
35
+
36
+ .PHONY: security
37
+ security: .uv
38
+ uv run bandit -r $(PACKAGE_NAME) -ll
39
+
40
+ .PHONY: typecheck
41
+ typecheck: .uv
42
+ uv run mypy $(SOURCES)
43
+ uv run pyright $(SOURCES)
44
+ # @echo "Running ty (experimental)..."
45
+ # uv run ty check $(SOURCES) || echo "ty check failed (expected for pre-release)"
46
+
47
+ .PHONY: test
48
+ test: .uv
49
+ uv run pytest $(TEST_DIR)
50
+
51
+ .PHONY: coverage
52
+ coverage: .uv
53
+ uv run coverage run -m pytest $(TEST_DIR)
54
+ uv run coverage html -d htmlcov
55
+ uv run coverage xml -o coverage.xml
56
+ uv run coverage report -m --fail-under=95
57
+
58
+ .PHONY: docs
59
+ docs: .uv
60
+ cd $(DOCS_DIR) && uv run jupyter book build .
61
+
62
+ .PHONY: ci
63
+ ci: lint security typecheck test
64
+
65
+ .PHONY: clean
66
+ clean:
67
+ @./scripts/clean.sh
68
+
69
+ .PHONY: help
70
+ help:
71
+ @echo "Development Commands:"
72
+ @echo " install Install all dependencies (all groups + extras)"
73
+ @echo " lock Update and regenerate lock file"
74
+ @echo " sync Sync dependencies (without --frozen)"
75
+ @echo " format Format code with ruff"
76
+ @echo " lint Lint code with ruff (includes format check)"
77
+ @echo " security Run security checks with bandit"
78
+ @echo " typecheck Run type checking with mypy, pyright"
79
+ @echo " test Run tests with pytest"
80
+ @echo " coverage Run tests with coverage reporting (95% minimum)"
81
+ @echo " docs Build Jupyter Book documentation"
82
+ @echo " ci Run full CI pipeline (lint, security, typecheck, test, coverage)"
83
+ @echo ""
84
+ @echo "Utility Commands:"
85
+ @echo " clean Clean build artifacts and cache files"
86
+ @echo " help Show this help message"
@@ -0,0 +1,44 @@
1
+ Metadata-Version: 2.4
2
+ Name: hypervigilant
3
+ Version: 1.0.0
4
+ Summary: A collection of code for hypervigilant - wrapper for instrumentation.
5
+ Project-URL: Homepage, https://github.com/gao-hongnan/hypervigilant
6
+ Project-URL: Documentation, https://github.com/gao-hongnan/hypervigilant/tree/main/playbook
7
+ Project-URL: Repository, https://github.com/gao-hongnan/hypervigilant
8
+ Project-URL: Issues, https://github.com/gao-hongnan/hypervigilant/issues
9
+ Project-URL: Changelog, https://github.com/gao-hongnan/hypervigilant/releases
10
+ Author-email: GAO Hongnan <hongnangao@gmail.com>
11
+ Maintainer-email: GAO Hongnan <hongnangao@gmail.com>
12
+ License: Apache-2.0
13
+ Classifier: Development Status :: 4 - Beta
14
+ Classifier: Intended Audience :: Developers
15
+ Classifier: License :: OSI Approved :: Apache Software License
16
+ Classifier: Operating System :: OS Independent
17
+ Classifier: Programming Language :: Python :: 3
18
+ Classifier: Programming Language :: Python :: 3.12
19
+ Classifier: Programming Language :: Python :: 3.13
20
+ Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
21
+ Classifier: Topic :: Software Development :: Libraries :: Python Modules
22
+ Classifier: Typing :: Typed
23
+ Requires-Python: >=3.12
24
+ Provides-Extra: playground
25
+ Requires-Dist: pydanticonf>=1.0.0; extra == 'playground'
26
+ Description-Content-Type: text/markdown
27
+
28
+ # Hypervigilant
29
+
30
+ [![CI](https://github.com/gao-hongnan/hypervigilant/actions/workflows/ci.yml/badge.svg)](https://github.com/gao-hongnan/hypervigilant/actions/workflows/ci.yml)
31
+ [![Python](https://img.shields.io/badge/python-3.12%20%7C%203.13-blue.svg)](https://www.python.org/downloads/)
32
+ [![PyPI](https://img.shields.io/badge/pypi-v22.0.0-blue.svg)](https://github.com/gao-hongnan/hypervigilant)
33
+ [![License](https://img.shields.io/badge/license-Apache%202.0-green.svg)](https://opensource.org/licenses/Apache-2.0)
34
+ [![Ruff](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/ruff/main/assets/badge/v2.json)](https://github.com/astral-sh/ruff)
35
+ [![Mypy](https://img.shields.io/badge/typed-mypy-blue?style=flat-square&logo=python)](http://mypy-lang.org/)
36
+ [![Pyright](https://img.shields.io/badge/typed-pyright-blue?style=flat-square&logo=python)](https://github.com/microsoft/pyright)
37
+ [![pre-commit](https://img.shields.io/badge/pre--commit-enabled-brightgreen?logo=pre-commit&logoColor=white)](https://github.com/pre-commit/pre-commit)
38
+
39
+ ```bash
40
+ git commit -m "release: v14.0.0" && \
41
+ git push origin main && \
42
+ git tag v14.0.0 && \
43
+ git push origin v14.0.0
44
+ ```
@@ -0,0 +1,17 @@
1
+ # Hypervigilant
2
+
3
+ [![CI](https://github.com/gao-hongnan/hypervigilant/actions/workflows/ci.yml/badge.svg)](https://github.com/gao-hongnan/hypervigilant/actions/workflows/ci.yml)
4
+ [![Python](https://img.shields.io/badge/python-3.12%20%7C%203.13-blue.svg)](https://www.python.org/downloads/)
5
+ [![PyPI](https://img.shields.io/badge/pypi-v22.0.0-blue.svg)](https://github.com/gao-hongnan/hypervigilant)
6
+ [![License](https://img.shields.io/badge/license-Apache%202.0-green.svg)](https://opensource.org/licenses/Apache-2.0)
7
+ [![Ruff](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/ruff/main/assets/badge/v2.json)](https://github.com/astral-sh/ruff)
8
+ [![Mypy](https://img.shields.io/badge/typed-mypy-blue?style=flat-square&logo=python)](http://mypy-lang.org/)
9
+ [![Pyright](https://img.shields.io/badge/typed-pyright-blue?style=flat-square&logo=python)](https://github.com/microsoft/pyright)
10
+ [![pre-commit](https://img.shields.io/badge/pre--commit-enabled-brightgreen?logo=pre-commit&logoColor=white)](https://github.com/pre-commit/pre-commit)
11
+
12
+ ```bash
13
+ git commit -m "release: v14.0.0" && \
14
+ git push origin main && \
15
+ git tag v14.0.0 && \
16
+ git push origin v14.0.0
17
+ ```
File without changes