cppkh-interface 0.2.0__tar.gz → 0.2.1__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.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: cppkh-interface
3
- Version: 0.2.0
3
+ Version: 0.2.1
4
4
  Summary: Dependency-free Python interface for cppkh with runtime C++ compilation.
5
5
  License-Expression: MIT
6
6
  Author: GGN_2015
@@ -22,7 +22,7 @@ Description-Content-Type: text/markdown
22
22
  `cppkh-interface` is a Python package for computing integer Khovanov homology
23
23
  with the C++ `cppkh` implementation.
24
24
 
25
- Version `0.1.3` has no runtime Python-package dependencies. Link crossing signs,
25
+ The package has no runtime Python-package dependencies. Link crossing signs,
26
26
  PD validation, R1 removal, and nugatory-crossing removal all use the bundled
27
27
  canonical `cppkh` C++ source and its SageMath-compatible orientation rules.
28
28
 
@@ -36,6 +36,23 @@ print(cppkh_interface.solve_khovanov(pd_code, de_r1=True, de_k8=True))
36
36
  print(cppkh_interface.solve_many_khovanov([pd_code, pd_code]))
37
37
  ```
38
38
 
39
+ For a multi-component oriented link, callers can compute several explicit
40
+ crossing-sign variants without changing the existing APIs:
41
+
42
+ ```python
43
+ from cppkh_interface import compute_signed_variants
44
+
45
+ hopf = [[2, 3, 1, 4], [4, 1, 3, 2]]
46
+ results = compute_signed_variants(hopf, [[-1, -1], [1, 1]])
47
+ assert len(results) == 2
48
+ ```
49
+
50
+ Each sign row must contain exactly one `-1` or `1` for every crossing. This
51
+ operation deliberately disables PD simplification because removing a crossing
52
+ would invalidate the positional sign mapping. `solve_khovanov` and
53
+ `solve_many_khovanov` retain their original signatures, inferred-sign behavior,
54
+ and simplification defaults.
55
+
39
56
  Unlike wrappers that ship a prebuilt DLL or shared object, this package ships
40
57
  the `cppkh` C++ source file in built distributions and compiles a local
41
58
  executable on first use using only Python's standard library. The compiled
@@ -3,7 +3,7 @@
3
3
  `cppkh-interface` is a Python package for computing integer Khovanov homology
4
4
  with the C++ `cppkh` implementation.
5
5
 
6
- Version `0.1.3` has no runtime Python-package dependencies. Link crossing signs,
6
+ The package has no runtime Python-package dependencies. Link crossing signs,
7
7
  PD validation, R1 removal, and nugatory-crossing removal all use the bundled
8
8
  canonical `cppkh` C++ source and its SageMath-compatible orientation rules.
9
9
 
@@ -14,8 +14,25 @@ import cppkh_interface
14
14
 
15
15
  pd_code = [[1, 5, 2, 4], [3, 1, 4, 6], [5, 3, 6, 2]]
16
16
  print(cppkh_interface.solve_khovanov(pd_code, de_r1=True, de_k8=True))
17
- print(cppkh_interface.solve_many_khovanov([pd_code, pd_code]))
18
- ```
17
+ print(cppkh_interface.solve_many_khovanov([pd_code, pd_code]))
18
+ ```
19
+
20
+ For a multi-component oriented link, callers can compute several explicit
21
+ crossing-sign variants without changing the existing APIs:
22
+
23
+ ```python
24
+ from cppkh_interface import compute_signed_variants
25
+
26
+ hopf = [[2, 3, 1, 4], [4, 1, 3, 2]]
27
+ results = compute_signed_variants(hopf, [[-1, -1], [1, 1]])
28
+ assert len(results) == 2
29
+ ```
30
+
31
+ Each sign row must contain exactly one `-1` or `1` for every crossing. This
32
+ operation deliberately disables PD simplification because removing a crossing
33
+ would invalidate the positional sign mapping. `solve_khovanov` and
34
+ `solve_many_khovanov` retain their original signatures, inferred-sign behavior,
35
+ and simplification defaults.
19
36
 
20
37
  Unlike wrappers that ship a prebuilt DLL or shared object, this package ships
21
38
  the `cppkh` C++ source file in built distributions and compiles a local