contextual-engine 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 (122) hide show
  1. contextual_engine-0.1.0/.contextualignore +97 -0
  2. contextual_engine-0.1.0/.git-hooks/post-commit +40 -0
  3. contextual_engine-0.1.0/.git-hooks/post-rewrite +54 -0
  4. contextual_engine-0.1.0/.github/workflows/ci.yml +49 -0
  5. contextual_engine-0.1.0/.gitignore +105 -0
  6. contextual_engine-0.1.0/.pre-commit-config.yaml +20 -0
  7. contextual_engine-0.1.0/.python-version +1 -0
  8. contextual_engine-0.1.0/.uv-cache/.gitignore +1 -0
  9. contextual_engine-0.1.0/.uv-cache/.lock +0 -0
  10. contextual_engine-0.1.0/.uv-cache/CACHEDIR.TAG +1 -0
  11. contextual_engine-0.1.0/.uv-cache/interpreter-v4/c2c2931c8a99aae1/7e3e9eef2ab92156.msgpack +0 -0
  12. contextual_engine-0.1.0/.uv-cache/sdists-v9/.git +0 -0
  13. contextual_engine-0.1.0/.uv-cache/sdists-v9/.gitignore +0 -0
  14. contextual_engine-0.1.0/LICENSE +111 -0
  15. contextual_engine-0.1.0/PKG-INFO +297 -0
  16. contextual_engine-0.1.0/README.md +132 -0
  17. contextual_engine-0.1.0/contextual/__init__.py +18 -0
  18. contextual_engine-0.1.0/contextual/__main__.py +11 -0
  19. contextual_engine-0.1.0/contextual/cli.py +339 -0
  20. contextual_engine-0.1.0/contextual/cli_docs.py +685 -0
  21. contextual_engine-0.1.0/contextual/config.py +7 -0
  22. contextual_engine-0.1.0/contextual/core/__init__.py +11 -0
  23. contextual_engine-0.1.0/contextual/core/errors.py +470 -0
  24. contextual_engine-0.1.0/contextual/core/models.py +590 -0
  25. contextual_engine-0.1.0/contextual/docs/__init__.py +66 -0
  26. contextual_engine-0.1.0/contextual/docs/chunker.py +550 -0
  27. contextual_engine-0.1.0/contextual/docs/pipeline.py +513 -0
  28. contextual_engine-0.1.0/contextual/docs/retrieval.py +654 -0
  29. contextual_engine-0.1.0/contextual/docs/watcher.py +265 -0
  30. contextual_engine-0.1.0/contextual/embedding/__init__.py +87 -0
  31. contextual_engine-0.1.0/contextual/embedding/cache.py +455 -0
  32. contextual_engine-0.1.0/contextual/embedding/embedder.py +414 -0
  33. contextual_engine-0.1.0/contextual/embedding/helpers.py +252 -0
  34. contextual_engine-0.1.0/contextual/git/__init__.py +22 -0
  35. contextual_engine-0.1.0/contextual/git/blame.py +334 -0
  36. contextual_engine-0.1.0/contextual/indexing/__init__.py +20 -0
  37. contextual_engine-0.1.0/contextual/indexing/bug_sweep.py +119 -0
  38. contextual_engine-0.1.0/contextual/indexing/chunker.py +691 -0
  39. contextual_engine-0.1.0/contextual/indexing/embedder.py +271 -0
  40. contextual_engine-0.1.0/contextual/indexing/file_watcher.py +154 -0
  41. contextual_engine-0.1.0/contextual/indexing/incremental.py +260 -0
  42. contextual_engine-0.1.0/contextual/indexing/index_writer.py +442 -0
  43. contextual_engine-0.1.0/contextual/indexing/pipeline.py +438 -0
  44. contextual_engine-0.1.0/contextual/indexing/processor.py +436 -0
  45. contextual_engine-0.1.0/contextual/indexing/queries/readme.md +22 -0
  46. contextual_engine-0.1.0/contextual/indexing/symbol_extractor.py +426 -0
  47. contextual_engine-0.1.0/contextual/indexing/tokenizer.py +203 -0
  48. contextual_engine-0.1.0/contextual/integrations/__init__.py +10 -0
  49. contextual_engine-0.1.0/contextual/mcp/__init__.py +15 -0
  50. contextual_engine-0.1.0/contextual/mcp/__main__.py +24 -0
  51. contextual_engine-0.1.0/contextual/mcp/docs_tools.py +286 -0
  52. contextual_engine-0.1.0/contextual/mcp/server.py +118 -0
  53. contextual_engine-0.1.0/contextual/mcp/tools.py +443 -0
  54. contextual_engine-0.1.0/contextual/observability/__init__.py +21 -0
  55. contextual_engine-0.1.0/contextual/observability/logging.py +115 -0
  56. contextual_engine-0.1.0/contextual/py.typed +0 -0
  57. contextual_engine-0.1.0/contextual/retrieval/__init__.py +24 -0
  58. contextual_engine-0.1.0/contextual/retrieval/context_assembler.py +372 -0
  59. contextual_engine-0.1.0/contextual/retrieval/ranker.py +193 -0
  60. contextual_engine-0.1.0/contextual/retrieval/search.py +548 -0
  61. contextual_engine-0.1.0/contextual/security/__init__.py +52 -0
  62. contextual_engine-0.1.0/contextual/security/paths.py +347 -0
  63. contextual_engine-0.1.0/contextual/security/sanitize.py +349 -0
  64. contextual_engine-0.1.0/contextual/security/workspace.py +348 -0
  65. contextual_engine-0.1.0/contextual/storage/__init__.py +36 -0
  66. contextual_engine-0.1.0/contextual/storage/fts_manager.py +273 -0
  67. contextual_engine-0.1.0/contextual/storage/migration_v2.py +289 -0
  68. contextual_engine-0.1.0/contextual/storage/migrations.py +316 -0
  69. contextual_engine-0.1.0/contextual/storage/schema.py +210 -0
  70. contextual_engine-0.1.0/contextual/storage/sqlite_pool.py +468 -0
  71. contextual_engine-0.1.0/contextual/storage/vec0_manager.py +421 -0
  72. contextual_engine-0.1.0/docs/ARCHITECTURE.md +216 -0
  73. contextual_engine-0.1.0/docs/DELEGATION_PLAYBOOK.md +201 -0
  74. contextual_engine-0.1.0/docs/GIT_README.md +138 -0
  75. contextual_engine-0.1.0/docs/PHASE_1.md +195 -0
  76. contextual_engine-0.1.0/docs/PROJECT_MANAGEMENT.md +283 -0
  77. contextual_engine-0.1.0/docs/PROJECT_PHASES.md +257 -0
  78. contextual_engine-0.1.0/docs/ROADMAP.md +263 -0
  79. contextual_engine-0.1.0/docs/TECHNICAL_SPEC.md +396 -0
  80. contextual_engine-0.1.0/docs/WEEK1_GAMEPLAN.md +621 -0
  81. contextual_engine-0.1.0/docs/adr/ADR-001-embedding-model.md +36 -0
  82. contextual_engine-0.1.0/docs/adr/ADR-002-storage-architecture.md +30 -0
  83. contextual_engine-0.1.0/docs/adr/ADR-003-bitemporal-model.md +31 -0
  84. contextual_engine-0.1.0/docs/adr/ADR-004-hybrid-retrieval.md +34 -0
  85. contextual_engine-0.1.0/docs/adr/ADR-005-mcp-first.md +41 -0
  86. contextual_engine-0.1.0/docs/adr/ADR-006-security.md +30 -0
  87. contextual_engine-0.1.0/docs/adr/ADR-007-licensing.md +51 -0
  88. contextual_engine-0.1.0/docs/adr/ADR-008-treesitter-chunking.md +45 -0
  89. contextual_engine-0.1.0/examples/index_repository.py +145 -0
  90. contextual_engine-0.1.0/examples/readme.md +47 -0
  91. contextual_engine-0.1.0/mypy.ini +57 -0
  92. contextual_engine-0.1.0/pyproject.toml +141 -0
  93. contextual_engine-0.1.0/pytest.ini +74 -0
  94. contextual_engine-0.1.0/ruff.toml +126 -0
  95. contextual_engine-0.1.0/scripts/install-hooks.sh +41 -0
  96. contextual_engine-0.1.0/tests/__init__.py +6 -0
  97. contextual_engine-0.1.0/tests/benchmark/__init__.py +0 -0
  98. contextual_engine-0.1.0/tests/conftest.py +192 -0
  99. contextual_engine-0.1.0/tests/integration/__init__.py +0 -0
  100. contextual_engine-0.1.0/tests/security/__init__.py +0 -0
  101. contextual_engine-0.1.0/tests/test_docs_phase2.py +790 -0
  102. contextual_engine-0.1.0/tests/test_e2e_workflow.py +289 -0
  103. contextual_engine-0.1.0/tests/test_indexing.py +364 -0
  104. contextual_engine-0.1.0/tests/test_integration_phase1.py +248 -0
  105. contextual_engine-0.1.0/tests/test_logging.py +28 -0
  106. contextual_engine-0.1.0/tests/test_performance.py +911 -0
  107. contextual_engine-0.1.0/tests/test_schema.py +44 -0
  108. contextual_engine-0.1.0/tests/test_search_integration.py +258 -0
  109. contextual_engine-0.1.0/tests/test_storage_integration.py +111 -0
  110. contextual_engine-0.1.0/tests/unit/__init__.py +0 -0
  111. contextual_engine-0.1.0/tests/unit/test_chunker.py +45 -0
  112. contextual_engine-0.1.0/tests/unit/test_errors.py +57 -0
  113. contextual_engine-0.1.0/tests/unit/test_git_integration.py +41 -0
  114. contextual_engine-0.1.0/tests/unit/test_lance_store.py +43 -0
  115. contextual_engine-0.1.0/tests/unit/test_migrations.py +41 -0
  116. contextual_engine-0.1.0/tests/unit/test_models.py +113 -0
  117. contextual_engine-0.1.0/tests/unit/test_processor.py +45 -0
  118. contextual_engine-0.1.0/tests/unit/test_schema.py +54 -0
  119. contextual_engine-0.1.0/tests/unit/test_security.py +73 -0
  120. contextual_engine-0.1.0/tests/unit/test_sqlite_pool.py +49 -0
  121. contextual_engine-0.1.0/tests/unit/test_temporal.py +42 -0
  122. contextual_engine-0.1.0/uv.lock +5149 -0
@@ -0,0 +1,97 @@
1
+ # .contextualignore - Default patterns for Contextual indexing
2
+ # Uses gitignore syntax (pathspec)
3
+ # Place this in your project root to customize what gets indexed
4
+
5
+ # Dependencies
6
+ node_modules/
7
+ .venv/
8
+ venv/
9
+ vendor/
10
+ .bundle/
11
+
12
+ # Build outputs
13
+ dist/
14
+ build/
15
+ *.egg-info/
16
+ target/
17
+ out/
18
+ bin/
19
+ obj/
20
+
21
+ # Minified/generated files
22
+ *.min.js
23
+ *.min.css
24
+ *_pb2.py
25
+ *_pb2.pyi
26
+ *.g.dart
27
+ *.freezed.dart
28
+ *.g.go
29
+
30
+ # Type declarations (usually auto-generated)
31
+ *.d.ts
32
+
33
+ # Database files
34
+ *.db
35
+ *.sqlite
36
+ *.sqlite3
37
+
38
+ # Logs
39
+ *.log
40
+
41
+ # IDE/Editor files
42
+ .vscode/
43
+ .idea/
44
+ *.swp
45
+ *.swo
46
+
47
+ # OS files
48
+ .DS_Store
49
+ Thumbs.db
50
+
51
+ # Test coverage
52
+ htmlcov/
53
+ .coverage
54
+ coverage.xml
55
+
56
+ # Documentation builds
57
+ _build/
58
+ site/
59
+
60
+ # Large media files (not useful for code context)
61
+ *.mp4
62
+ *.mov
63
+ *.avi
64
+ *.mp3
65
+ *.wav
66
+ *.jpg
67
+ *.jpeg
68
+ *.png
69
+ *.gif
70
+ *.ico
71
+ *.svg
72
+ *.pdf
73
+
74
+ # Archive files
75
+ *.zip
76
+ *.tar
77
+ *.tar.gz
78
+ *.rar
79
+ *.7z
80
+
81
+ # Binary files
82
+ *.exe
83
+ *.dll
84
+ *.so
85
+ *.dylib
86
+
87
+ # Lock files (too noisy, low signal)
88
+ package-lock.json
89
+ yarn.lock
90
+ pnpm-lock.yaml
91
+ poetry.lock
92
+ Cargo.lock
93
+
94
+ # Code generated comments
95
+ # DO NOT EDIT
96
+ # Code generated by
97
+ # Auto-generated
@@ -0,0 +1,40 @@
1
+ #!/bin/bash
2
+ #
3
+ # Contextual post-commit hook
4
+ # Triggers incremental indexing after each commit
5
+ #
6
+ # This hook runs as a fully detached background process to never block git.
7
+ # It acquires a lock file to prevent concurrent indexing operations.
8
+
9
+ # Close all file descriptors to fully detach from git
10
+ exec 0<&- # Close stdin
11
+ exec 1>/dev/null # Close stdout
12
+ exec 2>/dev/null # Close stderr
13
+
14
+ # Check if contextual is available
15
+ if ! command -v contextual &> /dev/null; then
16
+ exit 0
17
+ fi
18
+
19
+ # Lock file to prevent concurrent indexing
20
+ LOCK_FILE=".git/contextual-index.lock"
21
+
22
+ # Try to acquire lock (non-blocking)
23
+ if ! mkdir "$LOCK_FILE" 2>/dev/null; then
24
+ # Another indexing process is running, skip
25
+ exit 0
26
+ fi
27
+
28
+ # Ensure lock is released on exit (even if script crashes)
29
+ trap 'rm -rf "$LOCK_FILE"' EXIT
30
+
31
+ # Run incremental indexing in background
32
+ # --incremental: only index changed files since last indexed commit
33
+ # --quiet: suppress output (we're detached anyway)
34
+ nohup contextual index --incremental --quiet &
35
+
36
+ # Disown the background process so it survives shell exit
37
+ disown
38
+
39
+ # Always exit 0 so git never fails
40
+ exit 0
@@ -0,0 +1,54 @@
1
+ #!/bin/bash
2
+ #
3
+ # Contextual post-rewrite hook
4
+ # Triggers full re-indexing after amend or rebase operations
5
+ #
6
+ # Git passes the rewrite type as $1 (either "amend" or "rebase").
7
+ # This hook runs as a fully detached background process to never block git.
8
+ # It acquires a lock file to prevent concurrent indexing operations.
9
+
10
+ # Close all file descriptors to fully detach from git
11
+ exec 0<&- # Close stdin
12
+ exec 1>/dev/null # Close stdout
13
+ exec 2>/dev/null # Close stderr
14
+
15
+ # Get rewrite type from git (either "amend" or "rebase")
16
+ REWRITE_TYPE="${1:-unknown}"
17
+
18
+ # Only process amend and rebase operations
19
+ case "$REWRITE_TYPE" in
20
+ amend|rebase)
21
+ ;;
22
+ *)
23
+ # Unknown rewrite type, skip indexing
24
+ exit 0
25
+ ;;
26
+ esac
27
+
28
+ # Check if contextual is available
29
+ if ! command -v contextual &> /dev/null; then
30
+ exit 0
31
+ fi
32
+
33
+ # Lock file to prevent concurrent indexing
34
+ LOCK_FILE=".git/contextual-index.lock"
35
+
36
+ # Try to acquire lock (non-blocking)
37
+ if ! mkdir "$LOCK_FILE" 2>/dev/null; then
38
+ # Another indexing process is running, skip
39
+ exit 0
40
+ fi
41
+
42
+ # Ensure lock is released on exit (even if script crashes)
43
+ trap 'rm -rf "$LOCK_FILE"' EXIT
44
+
45
+ # Run full re-indexing in background
46
+ # --force: force re-validation of entire index (amend/rebase can change history)
47
+ # --quiet: suppress output (we're detached anyway)
48
+ nohup contextual index --force --quiet &
49
+
50
+ # Disown the background process so it survives shell exit
51
+ disown
52
+
53
+ # Always exit 0 so git never fails
54
+ exit 0
@@ -0,0 +1,49 @@
1
+ name: CI
2
+
3
+ on:
4
+ push:
5
+ branches: [main]
6
+ pull_request:
7
+ branches: [main]
8
+
9
+ jobs:
10
+ checks:
11
+ name: ${{ matrix.os }} / py${{ matrix.python-version }}
12
+ runs-on: ${{ matrix.os }}
13
+ strategy:
14
+ fail-fast: false
15
+ matrix:
16
+ os: [ubuntu-latest, macos-14]
17
+ python-version: ["3.12", "3.13"]
18
+
19
+ steps:
20
+ - name: Checkout code
21
+ uses: actions/checkout@v4
22
+
23
+ - name: Set up Python
24
+ uses: actions/setup-python@v5
25
+ with:
26
+ python-version: ${{ matrix.python-version }}
27
+
28
+ - name: Install uv
29
+ uses: astral-sh/setup-uv@v7
30
+ with:
31
+ enable-cache: true
32
+ cache-dependency-glob: uv.lock
33
+
34
+ - name: Install dependencies
35
+ run: uv sync
36
+
37
+ - name: Ruff check
38
+ run: uv run ruff check .
39
+
40
+ - name: Ruff format check
41
+ run: uv run ruff format --check .
42
+
43
+ - name: Mypy
44
+ run: uv run mypy contextual/ --strict
45
+
46
+ - name: Pytest
47
+ env:
48
+ NUMBA_DISABLE_JIT: "1"
49
+ run: uv run pytest tests/
@@ -0,0 +1,105 @@
1
+ # Python
2
+ __pycache__/
3
+ *.py[cod]
4
+ *$py.class
5
+ *.so
6
+ .Python
7
+ build/
8
+ develop-eggs/
9
+ dist/
10
+ downloads/
11
+ eggs/
12
+ .eggs/
13
+ lib/
14
+ lib64/
15
+ parts/
16
+ sdist/
17
+ var/
18
+ wheels/
19
+ share/python-wheels/
20
+ *.egg-info/
21
+ .installed.cfg
22
+ *.egg
23
+ MANIFEST
24
+
25
+ # Virtual environments
26
+ .venv/
27
+ venv/
28
+ ENV/
29
+ env/
30
+
31
+ # IDEs
32
+ .vscode/
33
+ .idea/
34
+ *.swp
35
+ *.swo
36
+ *~
37
+ .DS_Store
38
+
39
+ # Type checking
40
+ .mypy_cache/
41
+ .dmypy.json
42
+ dmypy.json
43
+ .pyre/
44
+ .pytype/
45
+
46
+ # Linting
47
+ .ruff_cache/
48
+
49
+ # Testing
50
+ .pytest_cache/
51
+ .coverage
52
+ .coverage.*
53
+ htmlcov/
54
+ .tox/
55
+ .nox/
56
+ coverage.xml
57
+ *.cover
58
+ *.log
59
+
60
+ # Jupyter
61
+ .ipynb_checkpoints
62
+ *.ipynb
63
+
64
+ # Contextual-specific
65
+ .contextual/
66
+ *.db
67
+ *.db-shm
68
+ *.db-wal
69
+ lance/
70
+
71
+ # Documentation builds
72
+ docs/_build/
73
+ site/
74
+
75
+ # Environment files
76
+ .env
77
+ .env.local
78
+ .envrc
79
+
80
+ # macOS
81
+ .DS_Store
82
+ .AppleDouble
83
+ .LSOverride
84
+
85
+ # Temporary files
86
+ *.tmp
87
+ *.bak
88
+ *.swp
89
+ *~
90
+
91
+ # Distribution
92
+ *.tar.gz
93
+ *.whl
94
+ .pypirc
95
+
96
+ # CI/CD
97
+ .github/workflows/*.log
98
+
99
+ #development markdown files
100
+ AGENTS.md
101
+ CLAUDE.md
102
+ repo_structure.md
103
+ SCAFFOLD_README.md
104
+ output.md
105
+ audit_report.md
@@ -0,0 +1,20 @@
1
+ repos:
2
+ - repo: https://github.com/pre-commit/pre-commit-hooks
3
+ rev: v5.0.0
4
+ hooks:
5
+ - id: trailing-whitespace
6
+ - id: end-of-file-fixer
7
+ - id: check-yaml
8
+ - id: check-added-large-files
9
+
10
+ - repo: https://github.com/astral-sh/ruff-pre-commit
11
+ rev: v0.12.0
12
+ hooks:
13
+ - id: ruff
14
+ - id: ruff-format
15
+
16
+ - repo: https://github.com/pre-commit/mirrors-mypy
17
+ rev: v1.11.2
18
+ hooks:
19
+ - id: mypy
20
+ args: [--strict, contextual/]
@@ -0,0 +1 @@
1
+ 3.12
@@ -0,0 +1 @@
1
+ *
File without changes
@@ -0,0 +1 @@
1
+ Signature: 8a477f597d28d172789f06886806bc55
File without changes
File without changes
@@ -0,0 +1,111 @@
1
+ BUSINESS SOURCE LICENSE 1.1 (MODIFIED — PRODUCTION-GRADE TEMPLATE)
2
+
3
+ ---
4
+
5
+ PARAMETERS
6
+
7
+ Licensor: [AARJUN MAHULE]
8
+
9
+ Licensed Work: [CONTEXTUAL V0.1.0]
10
+ The Licensed Work is (c) [2026] [AARJUN MAHULE]
11
+
12
+ Additional Use Grant:
13
+ Production Use is permitted solely for:
14
+
15
+ * Individuals acting for personal, non-commercial purposes
16
+ * Non-commercial projects
17
+ * Organizations with fewer than [5] employees AND annual revenue below [500,000INR]
18
+
19
+ All other Production Use requires a separate commercial license from the Licensor.
20
+
21
+ Change Date: [2030-06-01] (typically four years from first public release)
22
+
23
+ Change License: Apache License, Version 2.0
24
+
25
+ Governing Law: This License shall be governed by and construed in accordance
26
+ with the laws of Republic of India.
27
+
28
+ Contact: [aarjun.mahule23@gmail.com]
29
+
30
+ ---
31
+
32
+ TERMS
33
+
34
+ 1. Grant of Rights
35
+
36
+ The Licensor hereby grants you the right to copy, modify, create derivative
37
+ works, and redistribute the Licensed Work, in whole or in part, for non-production use.
38
+
39
+ 2. Definition of Production Use
40
+
41
+ “Production Use” means any use of the Licensed Work in a live, operational,
42
+ or business environment, including but not limited to:
43
+
44
+ * Use in software-as-a-service (SaaS), platform-as-a-service (PaaS),
45
+ or hosted environments
46
+ * Internal business operations, tools, or workflows
47
+ * Revenue-generating systems or services
48
+ * Customer-facing applications or services
49
+ * Any environment serving real users, customers, or organizational functions
50
+
51
+ 3. Restriction on Production Use
52
+
53
+ You may not use the Licensed Work for Production Use except as expressly
54
+ permitted under the Additional Use Grant or through a separate commercial
55
+ license agreement with the Licensor.
56
+
57
+ If your use exceeds the scope of the Additional Use Grant, you must obtain
58
+ a commercial license from the Licensor or cease use immediately.
59
+
60
+ 4. Change License
61
+
62
+ Effective on the Change Date, or the fourth anniversary of the first publicly
63
+ available distribution of a specific version of the Licensed Work under this
64
+ License, whichever comes first, the Licensor grants you rights under the
65
+ terms of the Change License. On such date, the rights granted under this
66
+ License terminate and are replaced by the Change License.
67
+
68
+ 5. Version Scope
69
+
70
+ This License applies separately to each version of the Licensed Work.
71
+ Each version may have its own Change Date as specified by the Licensor.
72
+
73
+ 6. Redistribution and Attribution
74
+
75
+ You must conspicuously display this License and retain all copyright,
76
+ license notices, and attribution in any original or modified copies
77
+ of the Licensed Work.
78
+
79
+ 7. Termination
80
+
81
+ Any use of the Licensed Work in violation of this License will automatically
82
+ terminate your rights under this License for the current and all other
83
+ versions of the Licensed Work.
84
+
85
+ 8. Trademarks
86
+
87
+ This License does not grant you any rights to use the Licensor’s trademarks,
88
+ service marks, or logos, except as required for reasonable and customary use
89
+ in describing the Licensed Work.
90
+
91
+ 9. Disclaimer of Warranty
92
+
93
+ TO THE EXTENT PERMITTED BY APPLICABLE LAW, THE LICENSED WORK IS PROVIDED
94
+ ON AN "AS IS" BASIS. LICENSOR HEREBY DISCLAIMS ALL WARRANTIES AND CONDITIONS,
95
+ EXPRESS OR IMPLIED, INCLUDING (WITHOUT LIMITATION) WARRANTIES OF
96
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, NON-INFRINGEMENT, AND TITLE.
97
+
98
+ 10. Limitation of Liability
99
+
100
+ TO THE MAXIMUM EXTENT PERMITTED BY APPLICABLE LAW, IN NO EVENT SHALL THE
101
+ LICENSOR BE LIABLE FOR ANY CLAIM, DAMAGES, OR OTHER LIABILITY, WHETHER IN
102
+ AN ACTION OF CONTRACT, TORT, OR OTHERWISE, ARISING FROM, OUT OF, OR IN
103
+ CONNECTION WITH THE LICENSED WORK OR THE USE OR OTHER DEALINGS IN THE
104
+ LICENSED WORK.
105
+
106
+ 11. Governing Law
107
+
108
+ This License shall be governed by and construed in accordance with the laws
109
+ of Republic of India, without regard to conflict of law principles.
110
+
111
+ ---