symengine 0.14.0__tar.gz → 0.15.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 (120) hide show
  1. {symengine-0.14.0 → symengine-0.15.0}/.github/workflows/ci.yml +59 -39
  2. {symengine-0.14.0 → symengine-0.15.0}/.gitignore +7 -0
  3. {symengine-0.14.0 → symengine-0.15.0}/.mailmap +1 -0
  4. {symengine-0.14.0 → symengine-0.15.0}/AUTHORS +2 -0
  5. {symengine-0.14.0 → symengine-0.15.0}/CMakeLists.txt +24 -13
  6. symengine-0.15.0/PKG-INFO +143 -0
  7. {symengine-0.14.0 → symengine-0.15.0}/README.md +19 -18
  8. symengine-0.15.0/appveyor.yml +111 -0
  9. symengine-0.15.0/asd.c +9 -0
  10. {symengine-0.14.0 → symengine-0.15.0}/bin/install_travis.sh +6 -3
  11. {symengine-0.14.0 → symengine-0.15.0}/bin/test_symengine_unix.sh +1 -1
  12. symengine-0.15.0/bin/test_travis.sh +26 -0
  13. symengine-0.15.0/pyproject.toml +41 -0
  14. symengine-0.15.0/qwe.c +5 -0
  15. symengine-0.15.0/symengine/CMakeLists.txt +13 -0
  16. {symengine-0.14.0 → symengine-0.15.0}/symengine/__init__.py +2 -1
  17. symengine-0.15.0/symengine/_version.py +24 -0
  18. symengine-0.15.0/symengine/lib/CMakeLists.txt +112 -0
  19. {symengine-0.14.0 → symengine-0.15.0}/symengine/lib/symengine.pxd +25 -3
  20. {symengine-0.14.0 → symengine-0.15.0}/symengine/lib/symengine_wrapper.in.pyx +35 -21
  21. {symengine-0.14.0 → symengine-0.15.0}/symengine/tests/CMakeLists.txt +12 -8
  22. {symengine-0.14.0 → symengine-0.15.0}/symengine/tests/test_expr.py +16 -1
  23. {symengine-0.14.0 → symengine-0.15.0}/symengine/tests/test_functions.py +1 -0
  24. {symengine-0.14.0 → symengine-0.15.0}/symengine/tests/test_number.py +1 -0
  25. {symengine-0.14.0 → symengine-0.15.0}/symengine/tests/test_pickling.py +17 -1
  26. {symengine-0.14.0 → symengine-0.15.0}/symengine/tests/test_symbol.py +3 -0
  27. {symengine-0.14.0 → symengine-0.15.0}/symengine/tests/test_sympy_conv.py +22 -1
  28. symengine-0.15.0/symengine_version.txt +1 -0
  29. symengine-0.14.0/PKG-INFO +0 -31
  30. symengine-0.14.0/appveyor.yml +0 -146
  31. symengine-0.14.0/bin/test_travis.sh +0 -21
  32. symengine-0.14.0/cmake/FindCython.cmake +0 -75
  33. symengine-0.14.0/cmake/FindNumPy.cmake +0 -19
  34. symengine-0.14.0/cmake/FindPython.cmake +0 -147
  35. symengine-0.14.0/cmake/cython_test.cpp +0 -4195
  36. symengine-0.14.0/cmake/cython_test.pyx +0 -82
  37. symengine-0.14.0/cmake/get_suffix.py +0 -6
  38. symengine-0.14.0/cmake/version_script.txt +0 -4
  39. symengine-0.14.0/setup.cfg +0 -4
  40. symengine-0.14.0/setup.py +0 -250
  41. symengine-0.14.0/symengine/CMakeFiles/CMakeDirectoryInformation.cmake +0 -16
  42. symengine-0.14.0/symengine/CMakeLists.txt +0 -10
  43. symengine-0.14.0/symengine/cmake_install.cmake +0 -50
  44. symengine-0.14.0/symengine/lib/CMakeFiles/CMakeDirectoryInformation.cmake +0 -16
  45. symengine-0.14.0/symengine/lib/CMakeFiles/symengine_wrapper.dir/DependInfo.cmake +0 -20
  46. symengine-0.14.0/symengine/lib/CMakeFiles/symengine_wrapper.dir/cmake_clean.cmake +0 -16
  47. symengine-0.14.0/symengine/lib/CMakeLists.txt +0 -83
  48. symengine-0.14.0/symengine/lib/cmake_install.cmake +0 -87
  49. symengine-0.14.0/symengine/lib/symengine_wrapper.cpp +0 -236987
  50. symengine-0.14.0/symengine/lib/symengine_wrapper.pxd +0 -64
  51. symengine-0.14.0/symengine/lib/symengine_wrapper.pyx +0 -5503
  52. symengine-0.14.0/symengine.egg-info/PKG-INFO +0 -31
  53. symengine-0.14.0/symengine.egg-info/SOURCES.txt +0 -108
  54. symengine-0.14.0/symengine.egg-info/dependency_links.txt +0 -1
  55. symengine-0.14.0/symengine.egg-info/not-zip-safe +0 -1
  56. symengine-0.14.0/symengine.egg-info/top_level.txt +0 -1
  57. symengine-0.14.0/symengine_version.txt +0 -1
  58. {symengine-0.14.0 → symengine-0.15.0}/LICENSE +0 -0
  59. {symengine-0.14.0 → symengine-0.15.0}/MANIFEST.in +0 -0
  60. {symengine-0.14.0 → symengine-0.15.0}/benchmarks/6_links_rhs.txt +0 -0
  61. {symengine-0.14.0 → symengine-0.15.0}/benchmarks/Lambdify.py +0 -0
  62. {symengine-0.14.0 → symengine-0.15.0}/benchmarks/Lambdify_reference.pyx +0 -0
  63. {symengine-0.14.0 → symengine-0.15.0}/benchmarks/expand1.py +0 -0
  64. {symengine-0.14.0 → symengine-0.15.0}/benchmarks/expand1_sage.py +0 -0
  65. {symengine-0.14.0 → symengine-0.15.0}/benchmarks/expand2.py +0 -0
  66. {symengine-0.14.0 → symengine-0.15.0}/benchmarks/expand2_sage.py +0 -0
  67. {symengine-0.14.0 → symengine-0.15.0}/benchmarks/expand2b_sage.sage +0 -0
  68. {symengine-0.14.0 → symengine-0.15.0}/benchmarks/expand2b_sympy.py +0 -0
  69. {symengine-0.14.0 → symengine-0.15.0}/benchmarks/expand3.py +0 -0
  70. {symengine-0.14.0 → symengine-0.15.0}/benchmarks/expand3_sage.py +0 -0
  71. {symengine-0.14.0 → symengine-0.15.0}/benchmarks/expand4.py +0 -0
  72. {symengine-0.14.0 → symengine-0.15.0}/benchmarks/expand4_sage.py +0 -0
  73. {symengine-0.14.0 → symengine-0.15.0}/benchmarks/expand5.py +0 -0
  74. {symengine-0.14.0 → symengine-0.15.0}/benchmarks/expand5_sage.py +0 -0
  75. {symengine-0.14.0 → symengine-0.15.0}/benchmarks/expand6.py +0 -0
  76. {symengine-0.14.0 → symengine-0.15.0}/benchmarks/expand6b.py +0 -0
  77. {symengine-0.14.0 → symengine-0.15.0}/benchmarks/expand7.py +0 -0
  78. {symengine-0.14.0 → symengine-0.15.0}/benchmarks/expr.txt +0 -0
  79. {symengine-0.14.0 → symengine-0.15.0}/benchmarks/heterogeneous_output_Lambdify.py +0 -0
  80. {symengine-0.14.0 → symengine-0.15.0}/benchmarks/kane.py +0 -0
  81. {symengine-0.14.0 → symengine-0.15.0}/benchmarks/kane_generate.py +0 -0
  82. {symengine-0.14.0 → symengine-0.15.0}/benchmarks/legendre1.py +0 -0
  83. {symengine-0.14.0 → symengine-0.15.0}/benchmarks/legendre1_sage.py +0 -0
  84. {symengine-0.14.0 → symengine-0.15.0}/benchmarks/pydy_pendulum.py +0 -0
  85. {symengine-0.14.0 → symengine-0.15.0}/benchmarks/symbench.py +0 -0
  86. {symengine-0.14.0 → symengine-0.15.0}/benchmarks/symbench_def.py +0 -0
  87. {symengine-0.14.0 → symengine-0.15.0}/benchmarks/symbench_sage.py +0 -0
  88. {symengine-0.14.0 → symengine-0.15.0}/bin/test_python.py +0 -0
  89. {symengine-0.14.0 → symengine-0.15.0}/bin/trigger_feedstock.sh +0 -0
  90. {symengine-0.14.0 → symengine-0.15.0}/cmake/check_python_hypot.cpp +0 -0
  91. {symengine-0.14.0 → symengine-0.15.0}/cmake/preprocess.py +0 -0
  92. {symengine-0.14.0 → symengine-0.15.0}/docs/conf.py +0 -0
  93. {symengine-0.14.0 → symengine-0.15.0}/docs/index.rst +0 -0
  94. {symengine-0.14.0 → symengine-0.15.0}/symengine/functions.py +0 -0
  95. {symengine-0.14.0 → symengine-0.15.0}/symengine/lib/__init__.py +0 -0
  96. {symengine-0.14.0 → symengine-0.15.0}/symengine/lib/pywrapper.cpp +0 -0
  97. {symengine-0.14.0 → symengine-0.15.0}/symengine/lib/pywrapper.h +0 -0
  98. {symengine-0.14.0 → symengine-0.15.0}/symengine/lib/symengine_wrapper.in.pxd +0 -0
  99. {symengine-0.14.0 → symengine-0.15.0}/symengine/printing.py +0 -0
  100. {symengine-0.14.0 → symengine-0.15.0}/symengine/sympy_compat.py +0 -0
  101. {symengine-0.14.0 → symengine-0.15.0}/symengine/test_utilities.py +0 -0
  102. {symengine-0.14.0 → symengine-0.15.0}/symengine/tests/__init__.py +0 -0
  103. {symengine-0.14.0 → symengine-0.15.0}/symengine/tests/test_arit.py +0 -0
  104. {symengine-0.14.0 → symengine-0.15.0}/symengine/tests/test_cse.py +0 -0
  105. {symengine-0.14.0 → symengine-0.15.0}/symengine/tests/test_dict_basic.py +0 -0
  106. {symengine-0.14.0 → symengine-0.15.0}/symengine/tests/test_eval.py +0 -0
  107. {symengine-0.14.0 → symengine-0.15.0}/symengine/tests/test_lambdify.py +0 -0
  108. {symengine-0.14.0 → symengine-0.15.0}/symengine/tests/test_logic.py +0 -0
  109. {symengine-0.14.0 → symengine-0.15.0}/symengine/tests/test_matrices.py +0 -0
  110. {symengine-0.14.0 → symengine-0.15.0}/symengine/tests/test_ntheory.py +0 -0
  111. {symengine-0.14.0 → symengine-0.15.0}/symengine/tests/test_printing.py +0 -0
  112. {symengine-0.14.0 → symengine-0.15.0}/symengine/tests/test_sage.py +0 -0
  113. {symengine-0.14.0 → symengine-0.15.0}/symengine/tests/test_series_expansion.py +0 -0
  114. {symengine-0.14.0 → symengine-0.15.0}/symengine/tests/test_sets.py +0 -0
  115. {symengine-0.14.0 → symengine-0.15.0}/symengine/tests/test_solve.py +0 -0
  116. {symengine-0.14.0 → symengine-0.15.0}/symengine/tests/test_subs.py +0 -0
  117. {symengine-0.14.0 → symengine-0.15.0}/symengine/tests/test_sympify.py +0 -0
  118. {symengine-0.14.0 → symengine-0.15.0}/symengine/tests/test_sympy_compat.py +0 -0
  119. {symengine-0.14.0 → symengine-0.15.0}/symengine/tests/test_var.py +0 -0
  120. {symengine-0.14.0 → symengine-0.15.0}/symengine/utilities.py +0 -0
@@ -8,132 +8,141 @@ jobs:
8
8
  fail-fast: false
9
9
  matrix:
10
10
  include:
11
+ - BUILD_TYPE: Release
12
+ PYTHON_VERSION: '3.13'
13
+ BUILD_SHARED_LIBS: yes
14
+ SYMENGINE_PY_LIMITED_API: '3.11'
15
+ OS: ubuntu-22.04
16
+ CC: gcc
17
+
11
18
  - BUILD_TYPE: Debug
12
19
  WITH_BFD: yes
13
20
  PYTHON_VERSION: '3.12'
14
21
  TEST_SYMPY: yes
15
- OS: ubuntu-20.04
22
+ OS: ubuntu-22.04
16
23
  CC: gcc
17
24
 
18
25
  - BUILD_TYPE: Debug
19
26
  WITH_BFD: yes
20
27
  PYTHON_VERSION: '3.11'
21
28
  TEST_SYMPY: yes
22
- OS: ubuntu-20.04
29
+ OS: ubuntu-22.04
23
30
  CC: gcc
24
31
 
25
32
  - BUILD_TYPE: Debug
26
33
  WITH_BFD: yes
27
- PYTHON_VERSION: '3.10'
34
+ PYTHON_VERSION: '3.14'
28
35
  TEST_SYMPY: yes
29
- OS: ubuntu-20.04
36
+ OS: ubuntu-22.04
30
37
  CC: gcc
31
38
 
32
39
  - BUILD_TYPE: Debug
33
40
  WITH_BFD: yes
34
- PYTHON_VERSION: '3.9'
41
+ PYTHON_VERSION: '3.14'
35
42
  TEST_SYMPY: yes
36
- OS: ubuntu-20.04
43
+ OS: ubuntu-22.04
37
44
  CC: gcc
38
45
 
39
46
  - BUILD_TYPE: Release
40
- PYTHON_VERSION: '3.8'
47
+ PYTHON_VERSION: '3.13'
41
48
  BUILD_SHARED_LIBS: yes
42
- OS: ubuntu-20.04
49
+ OS: ubuntu-22.04
43
50
  CC: gcc
44
51
 
45
52
  - BUILD_TYPE: Release
46
- PYTHON_VERSION: '3.8'
53
+ PYTHON_VERSION: '3.13'
47
54
  WITH_MPFR: yes
48
55
  INTEGER_CLASS: gmpxx
49
56
  WITH_NUMPY: no
50
- OS: ubuntu-20.04
57
+ OS: ubuntu-22.04
51
58
  CC: gcc
52
59
 
53
60
  - BUILD_TYPE: Release
54
- PYTHON_VERSION: '3.8'
61
+ PYTHON_VERSION: '3.13'
55
62
  WITH_MPC: yes
56
- OS: ubuntu-20.04
63
+ OS: ubuntu-22.04
57
64
  CC: gcc
58
65
 
59
66
  - BUILD_TYPE: Release
60
67
  WITH_MPFR: yes
61
- PYTHON_VERSION: '3.8'
62
- OS: ubuntu-20.04
68
+ PYTHON_VERSION: '3.13'
69
+ OS: ubuntu-22.04
63
70
  CC: gcc
64
71
 
65
72
  - BUILD_TYPE: Release
66
- PYTHON_VERSION: '3.9'
73
+ PYTHON_VERSION: '3.14'
67
74
  WITH_MPC: yes
68
- OS: ubuntu-20.04
75
+ OS: ubuntu-22.04
69
76
  CC: gcc
70
77
 
71
78
  - BUILD_TYPE: Release
72
- PYTHON_VERSION: '3.9'
79
+ PYTHON_VERSION: '3.11'
73
80
  WITH_MPC: yes
74
81
  INTEGER_CLASS: flint
75
82
  WITH_FLINT: yes
76
- OS: ubuntu-20.04
83
+ OS: ubuntu-22.04
77
84
  CC: gcc
78
85
 
79
86
  #- BUILD_TYPE: Debug
80
- # PYTHON_VERSION: '3.9'
87
+ # PYTHON_VERSION: '3.12'
81
88
  # WITH_BFD: yes
82
89
  # WITH_PIRANHA: yes
83
- # OS: ubuntu-20.04
90
+ # OS: ubuntu-22.04
84
91
  # CC: gcc
85
92
 
86
93
  - BUILD_TYPE: Debug
87
- PYTHON_VERSION: '3.8'
94
+ PYTHON_VERSION: '3.13'
88
95
  WITH_BFD: yes
89
96
  BUILD_SHARED_LIBS: yes
90
- OS: ubuntu-20.04
97
+ OS: ubuntu-22.04
91
98
  CC: clang
92
99
 
93
100
  - BUILD_TYPE: Release
94
- PYTHON_VERSION: '3.8'
101
+ PYTHON_VERSION: '3.13'
95
102
  WITH_NUMPY: yes
96
- OS: ubuntu-20.04
103
+ OS: ubuntu-22.04
97
104
  CC: clang
98
105
 
99
106
  - BUILD_TYPE: Debug
100
- PYTHON_VERSION: '3.10'
107
+ PYTHON_VERSION: '3.12'
101
108
  WITH_SYMPY: yes
102
- WITH_LLVM: 14
109
+ WITH_LLVM: 18
103
110
  WITH_SCIPY: yes
111
+ WITH_LATEST_GCC: yes
104
112
  INTEGER_CLASS: 'boostmp'
105
113
  PYTEST_ADDOPTS: '-k "not integer_nthroot"'
106
- OS: ubuntu-22.04
107
- EXTRA_APT_REPOSITORY: 'deb http://apt.llvm.org/jammy/ llvm-toolchain-jammy-14 main'
108
- EXTRA_APT_PACKAGES: 'llvm-14'
114
+ OS: ubuntu-24.04
115
+ CC: gcc # ubuntu nobel uses gcc-13
116
+ #EXTRA_APT_REPOSITORY: 'deb http://apt.llvm.org/jammy/ llvm-toolchain-nobel-18 main'
117
+ EXTRA_APT_PACKAGES: 'llvm-18'
109
118
 
110
119
  - BUILD_TYPE: Debug
111
- PYTHON_VERSION: '3.8'
120
+ PYTHON_VERSION: '3.13'
112
121
  WITH_SCIPY: yes
113
122
  WITH_LLVM: 5.0
114
- OS: macos-13
123
+ OS: macos-15-intel
115
124
  CC: clang
116
125
 
117
126
  - BUILD_TYPE: Release
118
- PYTHON_VERSION: '3.9'
127
+ PYTHON_VERSION: '3.14'
119
128
  WITH_NUMPY: no
120
- OS: macos-13
129
+ OS: macos-15-intel
121
130
  CC: clang
122
131
 
123
132
  - BUILD_TYPE: Debug
124
- PYTHON_VERSION: '3.8'
133
+ PYTHON_VERSION: '3.13'
125
134
  WITH_NUMPY: no
126
- OS: macos-13
135
+ OS: macos-15-intel
127
136
  CC: gcc
128
137
 
129
138
  - BUILD_TYPE: Release
130
- PYTHON_VERSION: '3.8'
131
- OS: macos-13
139
+ PYTHON_VERSION: '3.13'
140
+ OS: macos-15-intel
132
141
  CC: gcc
133
142
 
134
143
  - BUILD_TYPE: Release
135
144
  PYTHON_VERSION: '3.11'
136
- OS: ubuntu-20.04
145
+ OS: ubuntu-22.04
137
146
  WITH_MPC: yes
138
147
  WITH_MPFR: yes
139
148
  WITH_FLINT: yes
@@ -145,11 +154,21 @@ jobs:
145
154
  CC: gcc
146
155
 
147
156
  steps:
157
+
158
+ - uses: conda-incubator/setup-miniconda@v3
159
+ if: matrix.MSYS_ENV == ''
160
+ with:
161
+ activate-environment: symengine
162
+ channel-priority: strict
163
+ architecture: x86_64
164
+ channels: conda-forge
165
+ conda-remove-defaults: "true"
166
+
148
167
  - name: Checkout code
149
168
  uses: actions/checkout@v4
150
169
 
151
170
  - name: Build and test symengine
152
- shell: bash
171
+ shell: bash -el {0}
153
172
  run: |
154
173
  source bin/test_symengine_unix.sh
155
174
  env:
@@ -185,6 +204,7 @@ jobs:
185
204
  MAKEFLAGS: ${{ matrix.MAKEFLAGS }}
186
205
  BUILD_SHARED_LIBS: ${{ matrix.BUILD_SHARED_LIBS }}
187
206
  PYTHON_VERSION: ${{ matrix.PYTHON_VERSION }}
207
+ SYMENGINE_PY_LIMITED_API: ${{ matrix.SYMENGINE_PY_LIMITED_API }}
188
208
 
189
209
  - name: Deploy Documentation
190
210
  if: ${{ (github.ref == 'refs/heads/main' && github.repository == 'Symengine/symengine.py') || (github.ref == 'refs/heads/master' && github.repository == 'Symengine/symengine.py')}}
@@ -20,6 +20,7 @@ cython_test.cpp
20
20
  symengine/lib/symengine_wrapper.cpp
21
21
  symengine/lib/symengine_wrapper.pyx
22
22
  symengine/lib/symengine_wrapper.pxd
23
+ symengine/_version.py
23
24
 
24
25
  # Config Files
25
26
  symengine/lib/config.pxi
@@ -33,6 +34,12 @@ MANIFEST
33
34
  dist/
34
35
  .*cache/
35
36
  symengine.egg-info/
37
+ .cmake/
38
+ .ninja_deps
39
+ .ninja_log
40
+ .skbuild-info.json
41
+ CMakeInit.txt
42
+ symengine/lib/symengine_wrapper.cpp.dep
36
43
 
37
44
  # Temp files
38
45
  *~
@@ -22,3 +22,4 @@ Nilay Pochhi <pochhi.nilay@gmail.com>
22
22
  Björn Dahlgren <bjodah@gmail.com>
23
23
  Richard Otis <richard.otis@outlook.com> richardotis
24
24
  Firat Bezir <bezir.1@osu.edu>
25
+ Adrian Ostrowski <adrian.ostrowski@intel.com> <81568391+aostrowski-hbn@users.noreply.github.com>
@@ -38,3 +38,5 @@ Christian Clauss <cclauss@me.com>
38
38
  Moraxyc <i@qaq.li>
39
39
  Aaron Miller <78561124+aaron-skydio@users.noreply.github.com>
40
40
  Firat Bezir <bezir.1@osu.edu>
41
+ Adrian Ostrowski <adrian.ostrowski@intel.com>
42
+ Liam Keegan <liam@keegan.ch>
@@ -1,4 +1,4 @@
1
- cmake_minimum_required(VERSION 2.8.12)
1
+ cmake_minimum_required(VERSION 3.21...4.0.0)
2
2
 
3
3
  if (POLICY CMP0057)
4
4
  cmake_policy(SET CMP0057 NEW) # needed for llvm >= 16
@@ -7,13 +7,13 @@ if (POLICY CMP0074)
7
7
  cmake_policy(SET CMP0074 NEW) # allow user to set *_ROOT variables
8
8
  endif()
9
9
 
10
- project(python_wrapper)
10
+ project(${SKBUILD_PROJECT_NAME} LANGUAGES C CXX)
11
11
 
12
12
  set(CMAKE_PREFIX_PATH ${SymEngine_DIR} ${CMAKE_PREFIX_PATH})
13
13
 
14
14
  include(GNUInstallDirs)
15
15
 
16
- find_package(SymEngine 0.14.0 REQUIRED CONFIG
16
+ find_package(SymEngine 0.15.0 REQUIRED CONFIG
17
17
  PATH_SUFFIXES lib/cmake/symengine cmake/symengine CMake/)
18
18
  message("SymEngine_DIR : " ${SymEngine_DIR})
19
19
  message("SymEngine Version : " ${SymEngine_VERSION})
@@ -21,12 +21,28 @@ set(CMAKE_BUILD_TYPE ${SYMENGINE_BUILD_TYPE})
21
21
  set(CMAKE_CXX_FLAGS_RELEASE ${SYMENGINE_CXX_FLAGS_RELEASE})
22
22
  set(CMAKE_CXX_FLAGS_DEBUG ${SYMENGINE_CXX_FLAGS_DEBUG})
23
23
  set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${SYMENGINE_CXX_FLAGS}")
24
- include_directories(${SYMENGINE_INCLUDE_DIRS})
25
24
 
26
- set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_CURRENT_SOURCE_DIR}/cmake/")
27
- find_package(Python REQUIRED)
28
- find_package(Cython REQUIRED)
29
- include_directories(${PYTHON_INCLUDE_PATH})
25
+ find_package(
26
+ Python
27
+ COMPONENTS
28
+ Interpreter
29
+ Development.Module
30
+ ${SKBUILD_SABI_COMPONENT}
31
+ REQUIRED
32
+ )
33
+
34
+ if ("${SKBUILD_SABI_VERSION}" STREQUAL "")
35
+ set(CYTHON_MIN "0.29")
36
+ else()
37
+ set(CYTHON_MIN "3.1")
38
+ endif()
39
+
40
+ find_package(Cython ${CYTHON_MIN} MODULE REQUIRED)
41
+ include(UseCython)
42
+
43
+ if ("${CYTHON_VERSION}" VERSION_LESS "${CYTHON_MIN}")
44
+ message(FATAL_ERROR "Cython version found: ${CYTHON_VERSION}. Minimum required: ${CYTHON_MIN}")
45
+ endif()
30
46
 
31
47
  if (MINGW AND ("${CMAKE_SIZEOF_VOID_P}" STREQUAL "8"))
32
48
  set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -DMS_WIN64")
@@ -55,7 +71,6 @@ foreach (PKG MPC MPFR PIRANHA FLINT LLVM)
55
71
  set(HAVE_SYMENGINE_${PKG} False)
56
72
  endif()
57
73
  endforeach()
58
- option(SYMENGINE_INSTALL_PY_FILES "Install python files" ON)
59
74
 
60
75
  message("CMAKE_SYSTEM_PROCESSOR : ${CMAKE_SYSTEM_PROCESSOR}")
61
76
  message("CMAKE_BUILD_TYPE : ${CMAKE_BUILD_TYPE}")
@@ -68,9 +83,5 @@ message("HAVE_SYMENGINE_PIRANHA : ${HAVE_SYMENGINE_PIRANHA}")
68
83
  message("HAVE_SYMENGINE_FLINT : ${HAVE_SYMENGINE_FLINT}")
69
84
  message("HAVE_SYMENGINE_LLVM : ${HAVE_SYMENGINE_LLVM}")
70
85
  message("HAVE_SYMENGINE_LLVM_LONG_DOUBLE : ${HAVE_SYMENGINE_LLVM_LONG_DOUBLE}")
71
- message("SYMENGINE_COPY_EXTENSION : ${SYMENGINE_COPY_EXTENSION}")
72
-
73
- message("Copying source of python wrappers into: ${CMAKE_CURRENT_BINARY_DIR}")
74
- file(COPY symengine/ DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/symengine)
75
86
 
76
87
  add_subdirectory(symengine)
@@ -0,0 +1,143 @@
1
+ Metadata-Version: 2.4
2
+ Name: symengine
3
+ Version: 0.15.0
4
+ Summary: Python library providing wrappers to SymEngine
5
+ Author-Email: SymEngine development team <symengine@googlegroups.com>
6
+ License-Expression: MIT
7
+ License-File: LICENSE
8
+ Classifier: Operating System :: OS Independent
9
+ Classifier: Programming Language :: Python
10
+ Classifier: Topic :: Scientific/Engineering
11
+ Classifier: Topic :: Scientific/Engineering :: Mathematics
12
+ Classifier: Topic :: Scientific/Engineering :: Physics
13
+ Classifier: Programming Language :: Python :: 3.11
14
+ Classifier: Programming Language :: Python :: 3.12
15
+ Classifier: Programming Language :: Python :: 3.13
16
+ Classifier: Programming Language :: Python :: 3.14
17
+ Classifier: Programming Language :: Python :: 3.15
18
+ Project-URL: Homepage, https://symengine.org
19
+ Project-URL: Documentation, https://symengine.org/symengine.py
20
+ Project-URL: Repository, https://github.com/symengine/symengine.py
21
+ Project-URL: Issues, https://github.com/symengine/symengine.py/issues
22
+ Requires-Python: >=3.11
23
+ Description-Content-Type: text/markdown
24
+
25
+ # SymEngine Python Wrappers
26
+
27
+ Python wrappers to the C++ library [SymEngine](https://github.com/symengine/symengine),
28
+ a fast C++ symbolic manipulation library.
29
+
30
+ [![Build Status](https://travis-ci.org/symengine/symengine.py.svg)](https://travis-ci.org/symengine/symengine.py)
31
+ [![Build status](https://ci.appveyor.com/api/projects/status/sl189l9ck3gd8qvk/branch/master?svg=true)](https://ci.appveyor.com/project/symengine/symengine-py/branch/master)
32
+
33
+ ## Installation
34
+
35
+ ### Pip
36
+
37
+ See License section for information about wheels
38
+
39
+ ```bash
40
+ pip install symengine --user
41
+ ```
42
+
43
+ ### Conda package manager
44
+
45
+ ```bash
46
+ conda install python-symengine -c conda-forge
47
+ ```
48
+
49
+ ### Build from source
50
+
51
+ Install prerequisites.
52
+
53
+ ```bash
54
+ CMake >= 3.21
55
+ Python3 >= 3.11
56
+ SymEngine >= 0.15.0
57
+ pip
58
+ setuptools_scm # will be automatically downloaded by pip
59
+ scikit-build-core # will be automatically downloaded by pip
60
+ cython >= 0.29.24 # will be automatically downloaded by pip
61
+ cython-cmake # will be automatically downloaded by pip
62
+ ```
63
+
64
+ For **SymEngine**, only a specific commit/tag (see `symengine_version.txt`) is
65
+ supported. The latest git master branch may not work as there may be breaking
66
+ changes in **SymEngine**.
67
+
68
+ Python wrappers can be installed by,
69
+
70
+ ```bash
71
+ pip install . -vv
72
+ ```
73
+
74
+ If you are building SymEngine for development, you should implement
75
+ the dependencies automatically installed by pip and do,
76
+ ```bash
77
+ pip install -e . -vv --no-build-isolation
78
+ ```
79
+
80
+ A few additional options to scikit-build-core are mentioned here:
81
+
82
+ ```bash
83
+ pip install -e . -vv --no-build-isolation
84
+ -Ccmake.build-type=Release|Debug # Set build-type for multi-configuration generators like MSVC
85
+ -Ccmake.define.SymEngine_DIR=/path/to/symengine/install/dir # Path to SymEngine install directory or build directory
86
+ ```
87
+
88
+ ### Notes on Dependencies
89
+
90
+ If you intend to evaluate floating-point expressions (using **lambdify**),
91
+ you should consider linking against **LLVM**. Many users might also benefit
92
+ from linking against **FLINT**, as it is now LGPL-licensed.
93
+
94
+ In general, **sudo** is only required if you are installing to the default
95
+ prefix (`/usr/local`). We recommend specifying a custom prefix
96
+ (`--prefix=$HOME/.local`) to avoid requiring administrative privileges,
97
+ which most users can do without using **sudo**.
98
+
99
+ If you're uncomfortable specifying the prefix manually, we suggest using
100
+ **Conda** or installing the pre-built wheels via **pip** instead of building
101
+ from source.
102
+
103
+ ## Verification
104
+
105
+ You can verify the installation of **SymEngine** by using the provided code
106
+ snippet in this README. This snippet ensures that the installation works as
107
+ expected and that basic functionality is available.
108
+
109
+ ```python
110
+ from symengine import var
111
+ x, y, z = var('x y z')
112
+ e = (x + y + z)**2
113
+ expanded_e = e.expand()
114
+ print(expanded_e)
115
+ ```
116
+ This will output:
117
+ ```python
118
+ x**2 + y**2 + z**2 + 2*x*y + 2*x*z + 2*y*z
119
+ ```
120
+
121
+ Note: The verification code provided above checks the functionality of
122
+ SymEngine. For additional verification specific to SymEngine, please refer to
123
+ the [official SymEngine Python bindings repository](https://github.com/symengine/symengine.py)
124
+ for further tests and examples.
125
+
126
+ ## License
127
+
128
+ symengine.py is MIT licensed and uses several LGPL, BSD-3, and MIT licensed
129
+ libraries.
130
+
131
+ Licenses for the dependencies of pip wheels are as follows:
132
+
133
+ - pip wheels on Unix use **GMP** (LGPL-3.0-or-later),
134
+ **MPFR** (LGPL-3.0-or-later), **MPC** (LGPL-3.0-or-later),
135
+ **LLVM** (Apache-2.0), **zlib** (Zlib), **libxml2** (MIT),
136
+ **zstd** (BSD-3-Clause), and **symengine** (MIT AND BSD-3-Clause).
137
+ - pip wheels on Windows use **MPIR** (LGPL-3.0-or-later) instead of **GMP**
138
+ above and **pthreads-win32** (LGPL-3.0-or-later) additionally.
139
+ - **NumPy** (BSD-3-Clause) and **SymPy** (BSD-3-Clause) are optional
140
+ dependencies.
141
+ - Sources for these binary dependencies can be found on
142
+ [symengine-wheels](https://github.com/symengine/symengine-wheels/releases).
143
+
@@ -27,10 +27,14 @@ conda install python-symengine -c conda-forge
27
27
  Install prerequisites.
28
28
 
29
29
  ```bash
30
- CMake >= 2.8.12
31
- Python3 >= 3.8
32
- Cython >= 0.29.24
33
- SymEngine >= 0.7.0
30
+ CMake >= 3.21
31
+ Python3 >= 3.11
32
+ SymEngine >= 0.15.0
33
+ pip
34
+ setuptools_scm # will be automatically downloaded by pip
35
+ scikit-build-core # will be automatically downloaded by pip
36
+ cython >= 0.29.24 # will be automatically downloaded by pip
37
+ cython-cmake # will be automatically downloaded by pip
34
38
  ```
35
39
 
36
40
  For **SymEngine**, only a specific commit/tag (see `symengine_version.txt`) is
@@ -40,25 +44,22 @@ changes in **SymEngine**.
40
44
  Python wrappers can be installed by,
41
45
 
42
46
  ```bash
43
- python setup.py install
47
+ pip install . -vv
44
48
  ```
45
49
 
46
- Additional options to `setup.py` are:
47
-
50
+ If you are building SymEngine for development, you should implement
51
+ the dependencies automatically installed by pip and do,
48
52
  ```bash
49
- python setup.py install build_ext
50
- --symengine-dir=/path/to/symengine/install/dir # Path to SymEngine install directory or build directory
51
- --compiler=mingw32|msvc|cygwin # Select the compiler for Windows
52
- --generator=cmake-generator # CMake Generator
53
- --build-type=Release|Debug # Set build-type for multi-configuration generators like MSVC
54
- --define="var1=value1;var2=value2" # Give options to CMake
55
- --inplace # Build the extension in source tree
53
+ pip install -e . -vv --no-build-isolation
56
54
  ```
57
55
 
58
- Standard options to `setup.py` like `--user`, `--prefix` can be used to
59
- configure install location. NumPy is used if found by default, if you wish
60
- to make your choice of NumPy use explicit: then add
61
- e.g. `WITH_NUMPY=False` to `--define`.
56
+ A few additional options to scikit-build-core are mentioned here:
57
+
58
+ ```bash
59
+ pip install -e . -vv --no-build-isolation
60
+ -Ccmake.build-type=Release|Debug # Set build-type for multi-configuration generators like MSVC
61
+ -Ccmake.define.SymEngine_DIR=/path/to/symengine/install/dir # Path to SymEngine install directory or build directory
62
+ ```
62
63
 
63
64
  ### Notes on Dependencies
64
65
 
@@ -0,0 +1,111 @@
1
+ version: '{build}'
2
+
3
+ image: "Visual Studio 2019"
4
+
5
+ environment:
6
+ global:
7
+ PLATFORMTOOLSET: "v142"
8
+
9
+ matrix:
10
+ - BUILD_TYPE: "Release"
11
+ COMPILER: MSVC15
12
+ PLATFORM: "x64"
13
+ PYTHON_VERSION: 314-x64
14
+ CONDA_INSTALL_LOCN: C:\\Miniconda38-x64
15
+ WITH_MPFR: yes
16
+ WITH_MPC: yes
17
+ WITH_LLVM: yes
18
+ - BUILD_TYPE: "Release"
19
+ COMPILER: MSVC15
20
+ PLATFORM: "Win32"
21
+ PYTHON_VERSION: 311
22
+ CONDA_INSTALL_LOCN: C:\\Miniconda38-x64
23
+ WITH_MPFR: yes
24
+ WITH_MPC: yes
25
+ - BUILD_TYPE: "Release"
26
+ COMPILER: MSVC15
27
+ PLATFORM: "x64"
28
+ PYTHON_VERSION: 313-x64
29
+ CONDA_INSTALL_LOCN: C:\\Miniconda38-x64
30
+ WITH_MPFR: yes
31
+ WITH_MPC: yes
32
+ - BUILD_TYPE: "Release"
33
+ COMPILER: MSVC15
34
+ PLATFORM: "x64"
35
+ PYTHON_VERSION: 312-x64
36
+ CONDA_INSTALL_LOCN: C:\\Miniconda38-x64
37
+ - BUILD_TYPE: "Release"
38
+ COMPILER: MSVC15
39
+ PLATFORM: "x64"
40
+ PYTHON_VERSION: 314-x64
41
+ WITH_SYMPY: no
42
+ CONDA_INSTALL_LOCN: C:\\Miniconda38-x64
43
+ - BUILD_TYPE: "Release"
44
+ COMPILER: MSVC15
45
+ PLATFORM: "x64"
46
+ PYTHON_VERSION: 311-x64
47
+ WITH_NUMPY: no
48
+ CONDA_INSTALL_LOCN: C:\\Miniconda38-x64
49
+
50
+ install:
51
+ - set PYTHON_SOURCE_DIR=%CD%
52
+ - git clone https://github.com/sympy/symengine symengine-cpp
53
+ - if [%PLATFORM%]==[Win32] set "CONDA_SUBDIR=win-32"
54
+
55
+ - call %CONDA_INSTALL_LOCN%\Scripts\activate.bat
56
+ - set "CONDA_DEPS=mpir=3.0.0 vc=14"
57
+ - if [%WITH_MPFR%]==[yes] set "CONDA_DEPS=%CONDA_DEPS% mpfr=3.1.5"
58
+ - if [%WITH_MPC%]==[yes] set "CONDA_DEPS=%CONDA_DEPS% mpc=1.0.3"
59
+ - if [%WITH_LLVM%]==[yes] set "CONDA_DEPS=%CONDA_DEPS% llvmdev=5.0"
60
+ - set "CONDA_DEPS=%CONDA_DEPS% -c conda-forge"
61
+ - if [%BUILD_TYPE%]==[Debug] set "CONDA_DEPS=%CONDA_DEPS% -c symengine/label/debug"
62
+ - conda create -n deps --yes %CONDA_DEPS%
63
+ - call conda activate deps
64
+ - echo %CONDA_PREFIX%
65
+ - echo %PATH%
66
+ - set "PATH=%PATH%;%CONDA_PREFIX%\\Library\\bin;%CONDA_PREFIX%"
67
+ - echo %PATH%
68
+
69
+ - set "PATH=C:\Python%PYTHON_VERSION%;C:\Python%PYTHON_VERSION%\Scripts;%PATH%"
70
+ - echo %PATH%
71
+ - pip install pytest cython scikit-build-core cython-cmake setuptools_scm
72
+ - if NOT [%WITH_NUMPY%]==[no] pip install numpy
73
+ - if NOT [%WITH_SYMPY%]==[no] pip install sympy
74
+
75
+ - set /p commit=<symengine_version.txt
76
+ - cd symengine-cpp
77
+ - git checkout %commit%
78
+ - mkdir build
79
+ - cd build
80
+
81
+ - set "CMAKE_GENERATOR=Visual Studio 16 2019"
82
+ - set "CMAKE_GENERATOR_PLATFORM=%PLATFORM%"
83
+
84
+ - set "CMAKE_ARGS=-DCMAKE_PREFIX_PATH=%CONDA_PREFIX%\\Library"
85
+
86
+ - if [%WITH_MPFR%]==[yes] set "CMAKE_ARGS=%CMAKE_ARGS% -DWITH_MPFR=yes"
87
+ - if [%WITH_MPC%]==[yes] set "CMAKE_ARGS=%CMAKE_ARGS% -DWITH_MPC=yes"
88
+ - if [%WITH_LLVM%]==[yes] set "CMAKE_ARGS=%CMAKE_ARGS% -DWITH_LLVM=yes -DMSVC_USE_MT=no"
89
+
90
+ - echo "CMAKE_ARGS=%CMAKE_ARGS%"
91
+ - cmake %CMAKE_ARGS% -DBUILD_SHARED_LIBS=yes -DBUILD_TESTS=no -DBUILD_BENCHMARKS=no -DCMAKE_INSTALL_PREFIX=C:\symengine ..
92
+
93
+ - cmake --build . --config %BUILD_TYPE% --target install
94
+ - cd ../../
95
+
96
+ build_script:
97
+ - set "PATH=C:\symengine\bin\;%PATH%"
98
+ - set "SYMENGINE_PY_ADD_PATH_TO_SEARCH_DIRS=1"
99
+ - echo %PATH%
100
+ - set "CMAKE_ARGS="
101
+ - python -m pip install -e . --no-build-isolation -Ccmake.build-type=%BUILD_TYPE% -vv
102
+
103
+ test_script:
104
+ - mkdir empty && cd empty
105
+ - python %PYTHON_SOURCE_DIR%\bin\test_python.py
106
+
107
+ # Enable this to be able to login to the build worker. You can use the
108
+ # `remmina` program in Ubuntu, use the login information that the line below
109
+ # prints into the log.
110
+ # #on_finish:
111
+ #- ps: $blockRdp = $true; iex ((new-object net.webclient).DownloadString('https://raw.githubusercontent.com/appveyor/ci/master/scripts/enable-rdp.ps1'))
symengine-0.15.0/asd.c ADDED
@@ -0,0 +1,9 @@
1
+ #define Py_LIMITED_API
2
+ #include <Python.h>
3
+ #include <stdio.h>
4
+
5
+ void foo() {
6
+ char* ver = Py_GetVersion();
7
+ printf("Py version: %s", ver);
8
+ }
9
+
@@ -2,7 +2,7 @@
2
2
 
3
3
  # symengine's bin/install_travis.sh will install miniconda
4
4
 
5
- export conda_pkgs="python=${PYTHON_VERSION} pip pytest gmp mpfr"
5
+ export conda_pkgs="python=${PYTHON_VERSION} pip pytest python-build scikit-build-core ninja cython-cmake cython setuptools-scm gmp mpfr"
6
6
 
7
7
  if [[ "${WITH_NUMPY}" != "no" ]]; then
8
8
  export conda_pkgs="${conda_pkgs} numpy";
@@ -20,6 +20,10 @@ if [[ "${WITH_FLINT_PY}" == "yes" ]]; then
20
20
  export conda_pkgs="${conda_pkgs} python-flint"; # python-flint affects sympy, see e.g. sympy/sympy#26645
21
21
  fi
22
22
 
23
+ if [[ "${SYMENGINE_PY_LIMITED_API}" != "" ]]; then
24
+ export conda_pkgs="${conda_pkgs} abi3audit"
25
+ fi
26
+
23
27
  if [[ "${WITH_SAGE}" == "yes" ]]; then
24
28
  # This is split to avoid the 10 minute limit
25
29
  conda install -q sagelib=8.1
@@ -27,11 +31,10 @@ if [[ "${WITH_SAGE}" == "yes" ]]; then
27
31
  export conda_pkgs="${conda_pkgs} sage=8.1";
28
32
  fi
29
33
 
30
- conda install -q ${conda_pkgs} "cython>=0.29.24"
34
+ conda install -q ${conda_pkgs}
31
35
 
32
36
  if [[ "${WITH_SYMPY}" != "no" ]]; then
33
37
  pip install sympy;
34
38
  fi
35
39
 
36
40
  conda clean --all
37
- source activate $our_install_dir;
@@ -10,7 +10,7 @@ cd ..
10
10
 
11
11
  # Setup travis for C++ library
12
12
  cd $SOURCE_DIR
13
- source bin/test_symengine_unix.sh
13
+ source bin/test_symengine.sh
14
14
 
15
15
  # Setup travis for Python wrappers
16
16
  cd $PYTHON_SOURCE_DIR