scikit-misc 0.3.1__tar.gz → 0.5.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.
- {scikit_misc-0.3.1 → scikit_misc-0.5.0}/.spin/cmds.py +24 -1
- {scikit_misc-0.3.1 → scikit_misc-0.5.0}/Makefile +4 -4
- {scikit_misc-0.3.1 → scikit_misc-0.5.0}/PKG-INFO +7 -5
- {scikit_misc-0.3.1 → scikit_misc-0.5.0}/doc/changelog.rst +14 -0
- {scikit_misc-0.3.1 → scikit_misc-0.5.0}/doc/index.rst +2 -1
- {scikit_misc-0.3.1 → scikit_misc-0.5.0}/meson.build +35 -66
- {scikit_misc-0.3.1 → scikit_misc-0.5.0}/meson_options.txt +0 -4
- {scikit_misc-0.3.1 → scikit_misc-0.5.0}/pyproject.toml +47 -37
- scikit_misc-0.5.0/requirements/ci_requirements.txt +3 -0
- scikit_misc-0.5.0/requirements/openblas.txt +1 -0
- {scikit_misc-0.3.1 → scikit_misc-0.5.0}/skmisc/__config__.py.in +0 -20
- {scikit_misc-0.3.1 → scikit_misc-0.5.0}/skmisc/_version.py +1 -1
- {scikit_misc-0.3.1 → scikit_misc-0.5.0}/skmisc/loess/meson.build +11 -11
- {scikit_misc-0.3.1 → scikit_misc-0.5.0}/skmisc/loess/src/S.h +9 -14
- {scikit_misc-0.3.1 → scikit_misc-0.5.0}/skmisc/loess/src/_loess.pyx +7 -12
- scikit_misc-0.5.0/skmisc/loess/src/blas_lite.f +1260 -0
- {scikit_misc-0.3.1 → scikit_misc-0.5.0}/skmisc/loess/src/loessc.c +4 -4
- {scikit_misc-0.3.1 → scikit_misc-0.5.0}/skmisc/loess/src/loessf.f +1 -1
- {scikit_misc-0.3.1 → scikit_misc-0.5.0}/skmisc/loess/src/misc.c +1 -2
- {scikit_misc-0.3.1 → scikit_misc-0.5.0}/skmisc/loess/tests/meson.build +1 -1
- {scikit_misc-0.3.1 → scikit_misc-0.5.0}/skmisc/loess/tests/test_loess.py +4 -4
- {scikit_misc-0.3.1 → scikit_misc-0.5.0}/skmisc/meson.build +132 -119
- {scikit_misc-0.3.1 → scikit_misc-0.5.0}/tools/wheels/check_license.py +1 -2
- scikit_misc-0.5.0/tools/wheels/cibw_before_build.sh +25 -0
- scikit_misc-0.5.0/tools/wheels/cibw_test_command.sh +18 -0
- {scikit_misc-0.3.1 → scikit_misc-0.5.0}/tools/wheels/repair_windows.sh +6 -7
- scikit_misc-0.3.1/.cirrus.star +0 -53
- scikit_misc-0.3.1/tools/openblas_support.py +0 -379
- scikit_misc-0.3.1/tools/wheels/cibw_before_build_linux.sh +0 -13
- scikit_misc-0.3.1/tools/wheels/cibw_before_build_macos.sh +0 -80
- scikit_misc-0.3.1/tools/wheels/cibw_before_build_win.sh +0 -36
- scikit_misc-0.3.1/tools/wheels/cibw_test_command.sh +0 -12
- scikit_misc-0.3.1/tools/wheels/gfortran_utils.sh +0 -171
- {scikit_misc-0.3.1 → scikit_misc-0.5.0}/.gitattributes +0 -0
- {scikit_misc-0.3.1 → scikit_misc-0.5.0}/.gitignore +0 -0
- {scikit_misc-0.3.1 → scikit_misc-0.5.0}/.pre-commit-config.yaml +0 -0
- {scikit_misc-0.3.1 → scikit_misc-0.5.0}/LICENSE +0 -0
- {scikit_misc-0.3.1 → scikit_misc-0.5.0}/README.rst +0 -0
- {scikit_misc-0.3.1 → scikit_misc-0.5.0}/doc/Makefile +0 -0
- {scikit_misc-0.3.1 → scikit_misc-0.5.0}/doc/_static/copybutton.js +0 -0
- {scikit_misc-0.3.1 → scikit_misc-0.5.0}/doc/_static/custom.css +0 -0
- {scikit_misc-0.3.1 → scikit_misc-0.5.0}/doc/_templates/cython_class.rst +0 -0
- {scikit_misc-0.3.1 → scikit_misc-0.5.0}/doc/_templates/layout.html +0 -0
- {scikit_misc-0.3.1 → scikit_misc-0.5.0}/doc/api.rst +0 -0
- {scikit_misc-0.3.1 → scikit_misc-0.5.0}/doc/conf.py +0 -0
- {scikit_misc-0.3.1 → scikit_misc-0.5.0}/doc/installation.rst +0 -0
- {scikit_misc-0.3.1 → scikit_misc-0.5.0}/doc/loess.rst +0 -0
- {scikit_misc-0.3.1 → scikit_misc-0.5.0}/doc/sphinxext/__init__.py +0 -0
- {scikit_misc-0.3.1 → scikit_misc-0.5.0}/doc/sphinxext/inline_code_highlight.py +0 -0
- {scikit_misc-0.3.1 → scikit_misc-0.5.0}/doc/theme/globaltoc.html +0 -0
- {scikit_misc-0.3.1 → scikit_misc-0.5.0}/doc/theme/layout.html +0 -0
- {scikit_misc-0.3.1 → scikit_misc-0.5.0}/doc/theme/localtoc.html +0 -0
- {scikit_misc-0.3.1 → scikit_misc-0.5.0}/doc/theme/navbar-2.html +0 -0
- {scikit_misc-0.3.1 → scikit_misc-0.5.0}/doc/theme/navbar.html +0 -0
- {scikit_misc-0.3.1 → scikit_misc-0.5.0}/doc/theme/navbarsearchbox.html +0 -0
- {scikit_misc-0.3.1 → scikit_misc-0.5.0}/doc/theme/navbartoc.html +0 -0
- {scikit_misc-0.3.1 → scikit_misc-0.5.0}/doc/theme/relations.html +0 -0
- {scikit_misc-0.3.1 → scikit_misc-0.5.0}/doc/theme/search.html +0 -0
- {scikit_misc-0.3.1 → scikit_misc-0.5.0}/doc/theme/searchbox.html +0 -0
- {scikit_misc-0.3.1 → scikit_misc-0.5.0}/doc/theme/searchresults.html +0 -0
- {scikit_misc-0.3.1 → scikit_misc-0.5.0}/doc/theme/sourcelink.html +0 -0
- {scikit_misc-0.3.1 → scikit_misc-0.5.0}/doc/theme/static/bootstrap-3.4.1/css/bootstrap.min.css +0 -0
- {scikit_misc-0.3.1 → scikit_misc-0.5.0}/doc/theme/static/bootstrap-3.4.1/js/bootstrap.min.js +0 -0
- {scikit_misc-0.3.1 → scikit_misc-0.5.0}/doc/theme/static/bootstrap-sphinx.css_t +0 -0
- {scikit_misc-0.3.1 → scikit_misc-0.5.0}/doc/theme/static/bootstrap-sphinx.js_t +0 -0
- {scikit_misc-0.3.1 → scikit_misc-0.5.0}/doc/theme/static/js/jquery-1.12.4.min.js +0 -0
- {scikit_misc-0.3.1 → scikit_misc-0.5.0}/doc/theme/static/js/jquery-fix.js +0 -0
- {scikit_misc-0.3.1 → scikit_misc-0.5.0}/doc/theme/theme.conf +0 -0
- {scikit_misc-0.3.1 → scikit_misc-0.5.0}/examples/loess-basic-usage.ipynb +0 -0
- {scikit_misc-0.3.1 → scikit_misc-0.5.0}/examples/requirements-examples.txt +0 -0
- {scikit_misc-0.3.1 → scikit_misc-0.5.0}/requirements/build.txt +0 -0
- {scikit_misc-0.3.1 → scikit_misc-0.5.0}/requirements/dev.txt +0 -0
- {scikit_misc-0.3.1 → scikit_misc-0.5.0}/requirements/docs.txt +0 -0
- {scikit_misc-0.3.1 → scikit_misc-0.5.0}/requirements/release.txt +0 -0
- {scikit_misc-0.3.1 → scikit_misc-0.5.0}/skmisc/__init__.py +0 -0
- {scikit_misc-0.3.1 → scikit_misc-0.5.0}/skmisc/_build_utils/copy_version_to_dist.py +0 -0
- {scikit_misc-0.3.1 → scikit_misc-0.5.0}/skmisc/_build_utils/gcc_build_bitness.py +0 -0
- {scikit_misc-0.3.1 → scikit_misc-0.5.0}/skmisc/_build_utils/version_please.py +0 -0
- {scikit_misc-0.3.1 → scikit_misc-0.5.0}/skmisc/_distributor_init.py +0 -0
- {scikit_misc-0.3.1 → scikit_misc-0.5.0}/skmisc/_version.py.in +0 -0
- {scikit_misc-0.3.1 → scikit_misc-0.5.0}/skmisc/loess/LICENSE.txt +0 -0
- {scikit_misc-0.3.1 → scikit_misc-0.5.0}/skmisc/loess/__init__.py +0 -0
- {scikit_misc-0.3.1 → scikit_misc-0.5.0}/skmisc/loess/src/c_loess.pxd +0 -0
- {scikit_misc-0.3.1 → scikit_misc-0.5.0}/skmisc/loess/src/linpack_lite.f +0 -0
- {scikit_misc-0.3.1 → scikit_misc-0.5.0}/skmisc/loess/src/loess.c +0 -0
- {scikit_misc-0.3.1 → scikit_misc-0.5.0}/skmisc/loess/src/loess.h +0 -0
- {scikit_misc-0.3.1 → scikit_misc-0.5.0}/skmisc/loess/src/predict.c +0 -0
- {scikit_misc-0.3.1 → scikit_misc-0.5.0}/skmisc/loess/tests/__init__.py +0 -0
- {scikit_misc-0.3.1 → scikit_misc-0.5.0}/skmisc/loess/tests/co2_data +0 -0
- {scikit_misc-0.3.1 → scikit_misc-0.5.0}/skmisc/loess/tests/co2_results_double +0 -0
- {scikit_misc-0.3.1 → scikit_misc-0.5.0}/skmisc/loess/tests/co2_results_real +0 -0
- {scikit_misc-0.3.1 → scikit_misc-0.5.0}/skmisc/loess/tests/gas_data +0 -0
- {scikit_misc-0.3.1 → scikit_misc-0.5.0}/skmisc/loess/tests/gas_result +0 -0
- {scikit_misc-0.3.1 → scikit_misc-0.5.0}/skmisc/loess/tests/madeup_data +0 -0
- {scikit_misc-0.3.1 → scikit_misc-0.5.0}/skmisc/loess/tests/madeup_result +0 -0
- {scikit_misc-0.3.1 → scikit_misc-0.5.0}/spin +0 -0
- {scikit_misc-0.3.1 → scikit_misc-0.5.0}/tools/build_theme.sh +0 -0
- {scikit_misc-0.3.1 → scikit_misc-0.5.0}/tools/deploy_documentation.sh +0 -0
- {scikit_misc-0.3.1 → scikit_misc-0.5.0}/tools/wheels/LICENSE_linux.txt +0 -0
- {scikit_misc-0.3.1 → scikit_misc-0.5.0}/tools/wheels/LICENSE_osx.txt +0 -0
- {scikit_misc-0.3.1 → scikit_misc-0.5.0}/tools/wheels/LICENSE_win32.txt +0 -0
- {scikit_misc-0.3.1 → scikit_misc-0.5.0}/tools/wheels/howto.txt +0 -0
- {scikit_misc-0.3.1 → scikit_misc-0.5.0}/tools/wheels/test.f +0 -0
|
@@ -90,7 +90,7 @@ def sdist():
|
|
|
90
90
|
📦 Build a source distribution in `build/meson-dist/`.
|
|
91
91
|
"""
|
|
92
92
|
# Using the build module gives better results than using
|
|
93
|
-
# meson
|
|
93
|
+
# meson directly. It creates an sdist with PKG-INFO
|
|
94
94
|
util.run([
|
|
95
95
|
"python",
|
|
96
96
|
"-m",
|
|
@@ -100,3 +100,26 @@ def sdist():
|
|
|
100
100
|
"--sdist",
|
|
101
101
|
".",
|
|
102
102
|
], replace=True)
|
|
103
|
+
|
|
104
|
+
|
|
105
|
+
@click.option(
|
|
106
|
+
"--clean", is_flag=True,
|
|
107
|
+
help="Clean build directory before build"
|
|
108
|
+
)
|
|
109
|
+
@click.option(
|
|
110
|
+
"-v", "--verbose", is_flag=True,
|
|
111
|
+
help="Print all build output, even installation"
|
|
112
|
+
)
|
|
113
|
+
@click.argument("meson_args", nargs=-1)
|
|
114
|
+
@click.pass_context
|
|
115
|
+
def build(
|
|
116
|
+
ctx,
|
|
117
|
+
meson_args,
|
|
118
|
+
jobs=None,
|
|
119
|
+
clean=False,
|
|
120
|
+
verbose=False,
|
|
121
|
+
quiet=False,
|
|
122
|
+
*args,
|
|
123
|
+
**kwargs
|
|
124
|
+
):
|
|
125
|
+
ctx.forward(meson.build)
|
|
@@ -40,10 +40,10 @@ clean-test:
|
|
|
40
40
|
rm -fr htmlcov/
|
|
41
41
|
|
|
42
42
|
ruff:
|
|
43
|
-
ruff . $(args)
|
|
43
|
+
ruff check . $(args)
|
|
44
44
|
|
|
45
45
|
ruff-isort:
|
|
46
|
-
ruff --select I001 --quiet . $(args)
|
|
46
|
+
ruff check --select I001 --quiet . $(args)
|
|
47
47
|
|
|
48
48
|
|
|
49
49
|
lint: ruff ruff-isort
|
|
@@ -73,8 +73,8 @@ dist: clean sdist wheel
|
|
|
73
73
|
python -m build
|
|
74
74
|
|
|
75
75
|
develop: build
|
|
76
|
-
pip install
|
|
76
|
+
uv pip install -e ".[all]"
|
|
77
77
|
|
|
78
78
|
update:
|
|
79
|
-
pip list --outdated | cut -d ' ' -f1 | xargs -n1 pip install -U
|
|
79
|
+
uv pip list --outdated | cut -d ' ' -f1 | xargs -n1 pip install -U
|
|
80
80
|
pre-commit autoupdate
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: scikit-misc
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.5.0
|
|
4
4
|
Summary: Miscellaneous tools for scientific computing.
|
|
5
5
|
Home-page: https://has2k1.github.io/scikit-misc/stable
|
|
6
6
|
Author-Email: Hassan Kibirige <has2k1@gmail.com>
|
|
@@ -39,28 +39,30 @@ Classifier: Operating System :: POSIX
|
|
|
39
39
|
Classifier: Programming Language :: C
|
|
40
40
|
Classifier: Programming Language :: Fortran
|
|
41
41
|
Classifier: Programming Language :: Python :: 3
|
|
42
|
-
Classifier: Programming Language :: Python :: 3.9
|
|
43
42
|
Classifier: Programming Language :: Python :: 3.10
|
|
44
43
|
Classifier: Programming Language :: Python :: 3.11
|
|
45
44
|
Classifier: Programming Language :: Python :: 3.12
|
|
45
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
46
46
|
Classifier: Topic :: Scientific/Engineering
|
|
47
47
|
Project-URL: Homepage, https://has2k1.github.io/scikit-misc/stable
|
|
48
48
|
Project-URL: Repository, https://github.com/has2k1/scikit-misc
|
|
49
49
|
Project-URL: Documentation, https://has2k1.github.io/scikit-misc/stable
|
|
50
50
|
Project-URL: Changelog, https://has2k1.github.io/scikit-misc/stable/changelog.html
|
|
51
|
-
Requires-Python: >=3.
|
|
52
|
-
Requires-Dist: numpy>=1.
|
|
51
|
+
Requires-Python: >=3.10
|
|
52
|
+
Requires-Dist: numpy>=1.23.5
|
|
53
53
|
Requires-Dist: scikit-misc[doc]; extra == "all"
|
|
54
54
|
Requires-Dist: scikit-misc[build]; extra == "all"
|
|
55
55
|
Requires-Dist: scikit-misc[lint]; extra == "all"
|
|
56
56
|
Requires-Dist: scikit-misc[test]; extra == "all"
|
|
57
57
|
Requires-Dist: scikit-misc[dev]; extra == "all"
|
|
58
|
-
Requires-Dist:
|
|
58
|
+
Requires-Dist: numpydoc; extra == "doc"
|
|
59
59
|
Requires-Dist: sphinx; extra == "doc"
|
|
60
|
+
Requires-Dist: cython; extra == "build"
|
|
60
61
|
Requires-Dist: build; extra == "build"
|
|
61
62
|
Requires-Dist: spin; extra == "build"
|
|
62
63
|
Requires-Dist: meson; extra == "build"
|
|
63
64
|
Requires-Dist: meson-python; extra == "build"
|
|
65
|
+
Requires-Dist: ninja; extra == "build"
|
|
64
66
|
Requires-Dist: ruff; extra == "lint"
|
|
65
67
|
Requires-Dist: pytest-cov; extra == "test"
|
|
66
68
|
Requires-Dist: wheel; extra == "dev"
|
|
@@ -1,6 +1,20 @@
|
|
|
1
1
|
Changelog
|
|
2
2
|
=========
|
|
3
3
|
|
|
4
|
+
v0.5.0
|
|
5
|
+
------
|
|
6
|
+
*(2024-07-25)*
|
|
7
|
+
|
|
8
|
+
- Fixed support for numpy 2.0
|
|
9
|
+
|
|
10
|
+
v0.4.0
|
|
11
|
+
------
|
|
12
|
+
*(2024-06-22)*
|
|
13
|
+
|
|
14
|
+
- Dropped support for python==3.9
|
|
15
|
+
- Made compatible with numpy 2.0
|
|
16
|
+
- Include tools/ in the source distribution
|
|
17
|
+
|
|
4
18
|
v0.3.1
|
|
5
19
|
------
|
|
6
20
|
*(2023-12-14)*
|
|
@@ -7,7 +7,8 @@ A collection of scientific algorithms missing from scipy.
|
|
|
7
7
|
At some point some of the procedures were present in scipy in an
|
|
8
8
|
unstable form, hence their removal. These procedures have been
|
|
9
9
|
cleaned up some and the code made more stable. Please report issues
|
|
10
|
-
and file corrections
|
|
10
|
+
and file corrections at `scikit-misc GitHub repository <https://github.com/has2k1/scikit-misc>`_.
|
|
11
|
+
|
|
11
12
|
|
|
12
13
|
Documentation
|
|
13
14
|
-------------
|
|
@@ -4,84 +4,39 @@ project(
|
|
|
4
4
|
'c', 'cython',
|
|
5
5
|
version: run_command('skmisc/_build_utils/version_please.py', check: true).stdout().strip(),
|
|
6
6
|
license: 'BSD-3',
|
|
7
|
-
meson_version: '>= 1.
|
|
7
|
+
meson_version: '>= 1.2.99',
|
|
8
8
|
default_options: [
|
|
9
9
|
'buildtype=debugoptimized',
|
|
10
10
|
'c_std=c99',
|
|
11
11
|
'fortran_std=legacy',
|
|
12
|
-
'
|
|
13
|
-
'lapack=openblas'
|
|
12
|
+
'pkgconfig.relocatable=true',
|
|
14
13
|
],
|
|
15
14
|
)
|
|
16
15
|
|
|
17
|
-
# Adding at project level causes many spurious -lgfortran flags.
|
|
18
|
-
add_languages('fortran', native: false)
|
|
19
|
-
###
|
|
20
|
-
|
|
21
|
-
#### Configuration Information
|
|
22
|
-
conf_data = configuration_data()
|
|
23
|
-
|
|
24
|
-
# The object above is stored so that we can write it to
|
|
25
|
-
# a file.
|
|
26
|
-
conf_data.set('VERSION', meson.project_version())
|
|
27
16
|
###
|
|
28
17
|
|
|
29
18
|
#### Setup Python
|
|
30
19
|
# https://mesonbuild.com/Python-module.html
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
py_dep = py.dependency()
|
|
34
|
-
|
|
35
|
-
skmisc_dir = py.get_install_dir() / 'skmisc'
|
|
36
|
-
|
|
37
|
-
conf_data.set('PYTHON_PATH', py.full_path())
|
|
38
|
-
conf_data.set('PYTHON_VERSION', py.language_version())
|
|
20
|
+
py3 = import('python').find_installation(pure: false)
|
|
21
|
+
py3_dep = py3.dependency()
|
|
39
22
|
###
|
|
40
23
|
|
|
41
|
-
####
|
|
24
|
+
#### Define Compilers
|
|
42
25
|
cc = meson.get_compiler('c')
|
|
43
|
-
ff = meson.get_compiler('fortran')
|
|
44
|
-
# generator() doesn't accept compilers, only found programs. Cast it.
|
|
45
26
|
cy = meson.get_compiler('cython')
|
|
27
|
+
# generator() doesn't accept compilers, only found programs. Cast it.
|
|
46
28
|
cython = find_program(cy.cmd_array()[0])
|
|
47
|
-
|
|
48
|
-
compilers = {
|
|
49
|
-
'C': cc,
|
|
50
|
-
'CYTHON': cy,
|
|
51
|
-
'FORTRAN': ff
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
foreach name, compiler : compilers
|
|
55
|
-
# conf_data.set(name + '_COMP_CMD_ARRAY', compiler.cmd_array())
|
|
56
|
-
conf_data.set(name + '_COMP_CMD_ARRAY', compiler.get_id())
|
|
57
|
-
conf_data.set(name + '_COMP', compiler.get_id())
|
|
58
|
-
conf_data.set(name + '_COMP_LINKER_ID', compiler.get_linker_id())
|
|
59
|
-
conf_data.set(name + '_COMP_VERSION', compiler.version())
|
|
60
|
-
conf_data.set(name + '_COMP_CMD_ARRAY', ', '.join(compiler.cmd_array()))
|
|
61
|
-
endforeach
|
|
62
|
-
###
|
|
63
|
-
|
|
64
|
-
#### Setup Machine CPU & System Information
|
|
65
|
-
machines = {
|
|
66
|
-
'HOST': host_machine,
|
|
67
|
-
'BUILD': build_machine,
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
foreach name, machine : machines
|
|
71
|
-
conf_data.set(name + '_CPU', machine.cpu())
|
|
72
|
-
conf_data.set(name + '_CPU_FAMILY', machine.cpu_family())
|
|
73
|
-
conf_data.set(name + '_CPU_ENDIAN', machine.endian())
|
|
74
|
-
conf_data.set(name + '_CPU_SYSTEM', machine.system())
|
|
75
|
-
endforeach
|
|
76
|
-
|
|
77
|
-
conf_data.set('CROSS_COMPILED', meson.is_cross_build())
|
|
78
29
|
###
|
|
79
30
|
|
|
80
31
|
#### Compiler Arguments and Settings
|
|
81
32
|
# Check compiler is recent enough (see "Toolchain Roadmap" for details)
|
|
82
33
|
if cc.get_id() == 'gcc'
|
|
83
|
-
if not cc.version().version_compare('>=
|
|
84
|
-
error('scikit-misc requires GCC >=
|
|
34
|
+
if not cc.version().version_compare('>=9.1')
|
|
35
|
+
error('scikit-misc requires GCC >= 9.1')
|
|
36
|
+
endif
|
|
37
|
+
elif cc.get_id() == 'clang' or cc.get_id() == 'clang-cl'
|
|
38
|
+
if not cc.version().version_compare('>=12.0')
|
|
39
|
+
error('scikit-misc requires clang >= 12.0')
|
|
85
40
|
endif
|
|
86
41
|
elif cc.get_id() == 'msvc'
|
|
87
42
|
if not cc.version().version_compare('>=19.20')
|
|
@@ -90,21 +45,39 @@ elif cc.get_id() == 'msvc'
|
|
|
90
45
|
endif
|
|
91
46
|
endif
|
|
92
47
|
|
|
48
|
+
if not cy.version().version_compare('>=3.0.6')
|
|
49
|
+
error('NumPy requires Cython >= 3.0.6')
|
|
50
|
+
endif
|
|
51
|
+
|
|
52
|
+
# Add default compile flags for any compiler that supports them.
|
|
53
|
+
# Note that MSVC does not support strict aliasing at all, and neither do the
|
|
54
|
+
# Intel compilers on Windows, so the `-fno` flavor of the flag should be fine.
|
|
55
|
+
add_project_arguments(
|
|
56
|
+
cc.get_supported_arguments( '-fno-strict-aliasing'), language : 'c'
|
|
57
|
+
)
|
|
58
|
+
|
|
93
59
|
# link against the standard math library since we use it in c
|
|
94
60
|
m_dep = cc.find_library('m', required : false)
|
|
95
61
|
if m_dep.found()
|
|
96
62
|
add_project_link_arguments('-lm', language : 'c')
|
|
97
63
|
endif
|
|
98
64
|
|
|
65
|
+
# Adding at project level causes many spurious -lgfortran flags.
|
|
99
66
|
add_languages('fortran', native: false)
|
|
67
|
+
ff = meson.get_compiler('fortran')
|
|
100
68
|
if ff.has_argument('-Wno-conversion')
|
|
101
69
|
add_project_arguments('-Wno-conversion', language: 'fortran')
|
|
102
70
|
endif
|
|
103
71
|
|
|
104
|
-
|
|
105
72
|
is_windows = host_machine.system() == 'windows'
|
|
106
73
|
is_macos = host_machine.system() == 'darwin'
|
|
107
74
|
|
|
75
|
+
if is_macos and cc.has_link_argument('-Wl,-ld_classic')
|
|
76
|
+
# New linker introduced in macOS 14 not working yet with at least OpenBLAS in Spack,
|
|
77
|
+
# see gh-24964 (and linked scipy issue from there).
|
|
78
|
+
add_project_link_arguments('-Wl,-ld_classic', language : ['c', 'cpp'])
|
|
79
|
+
endif
|
|
80
|
+
|
|
108
81
|
# Intel compilers default to fast-math, so disable it if we detect Intel
|
|
109
82
|
# compilers. A word of warning: this may not work with the conda-forge
|
|
110
83
|
# compilers, because those have the annoying habit of including lots of flags
|
|
@@ -113,18 +86,18 @@ is_macos = host_machine.system() == 'darwin'
|
|
|
113
86
|
# is actually needed, everything else shouldn't be there).
|
|
114
87
|
_intel_cflags = []
|
|
115
88
|
_intel_fflags = []
|
|
116
|
-
if cc.get_id()
|
|
89
|
+
if cc.get_id() in ['intel', 'intel-llvm']
|
|
117
90
|
_intel_cflags += cc.get_supported_arguments('-fp-model=strict')
|
|
118
|
-
elif cc.get_id()
|
|
91
|
+
elif cc.get_id() in ['intel-cl', 'intel-llvm-cl']
|
|
119
92
|
_intel_cflags += cc.get_supported_arguments('/fp:strict')
|
|
120
93
|
endif
|
|
121
|
-
if ff.get_id()
|
|
94
|
+
if ff.get_id() in ['intel', 'intel-llvm']
|
|
122
95
|
_intel_fflags = ff.get_supported_arguments('-fp-model=strict')
|
|
123
96
|
minus0_arg = ['-assume', 'minus0']
|
|
124
97
|
if ff.has_multi_arguments(minus0_arg)
|
|
125
98
|
_intel_fflags += minus0_arg
|
|
126
99
|
endif
|
|
127
|
-
elif ff.get_id()
|
|
100
|
+
elif ff.get_id() in ['intel-cl', 'intel-llvm-cl']
|
|
128
101
|
# Intel Fortran on Windows does things differently, so deal with that
|
|
129
102
|
# (also specify dynamic linking and the right name mangling)
|
|
130
103
|
_intel_fflags = ff.get_supported_arguments(
|
|
@@ -134,10 +107,6 @@ elif ff.get_id() == 'intel-cl'
|
|
|
134
107
|
endif
|
|
135
108
|
add_project_arguments(_intel_cflags, language: ['c'])
|
|
136
109
|
add_project_arguments(_intel_fflags, language: 'fortran')
|
|
137
|
-
|
|
138
|
-
cython_c_args = []
|
|
139
|
-
cython_args = ['-3', '--fast-fail', '--output-file', '@OUTPUT@', '--include-dir', '@BUILD_ROOT@', '@INPUT@']
|
|
140
|
-
cython_c_link_args = []
|
|
141
110
|
###
|
|
142
111
|
|
|
143
112
|
#### Include Main Package
|
|
@@ -1,7 +1,3 @@
|
|
|
1
|
-
option('blas', type: 'string', value: 'openblas',
|
|
2
|
-
description: 'option for BLAS library switching')
|
|
3
|
-
option('lapack', type: 'string', value: 'openblas',
|
|
4
|
-
description: 'option for LAPACK library switching')
|
|
5
1
|
option('use-g77-abi', type: 'boolean', value: false,
|
|
6
2
|
description: 'If set to true, forces using g77 compatibility wrappers ' +
|
|
7
3
|
'for LAPACK functions. The default is to use gfortran ' +
|
|
@@ -3,14 +3,14 @@
|
|
|
3
3
|
name = "scikit-misc"
|
|
4
4
|
description = "Miscellaneous tools for scientific computing."
|
|
5
5
|
license = {file = "LICENSE"}
|
|
6
|
-
requires-python = ">=3.
|
|
6
|
+
requires-python = ">=3.10"
|
|
7
7
|
authors = [
|
|
8
8
|
{name = "Hassan Kibirige", email = "has2k1@gmail.com"},
|
|
9
9
|
]
|
|
10
10
|
dynamic = ['version']
|
|
11
11
|
readme = "README.rst"
|
|
12
12
|
dependencies = [
|
|
13
|
-
"numpy>=1.
|
|
13
|
+
"numpy>=1.23.5",
|
|
14
14
|
]
|
|
15
15
|
classifiers = [
|
|
16
16
|
"Intended Audience :: Science/Research",
|
|
@@ -22,10 +22,10 @@ classifiers = [
|
|
|
22
22
|
"Programming Language :: C",
|
|
23
23
|
"Programming Language :: Fortran",
|
|
24
24
|
"Programming Language :: Python :: 3",
|
|
25
|
-
"Programming Language :: Python :: 3.9",
|
|
26
25
|
"Programming Language :: Python :: 3.10",
|
|
27
26
|
"Programming Language :: Python :: 3.11",
|
|
28
27
|
"Programming Language :: Python :: 3.12",
|
|
28
|
+
"Programming Language :: Python :: 3.13",
|
|
29
29
|
"Topic :: Scientific/Engineering",
|
|
30
30
|
]
|
|
31
31
|
|
|
@@ -39,15 +39,17 @@ all = [
|
|
|
39
39
|
]
|
|
40
40
|
|
|
41
41
|
doc = [
|
|
42
|
-
"
|
|
42
|
+
"numpydoc",
|
|
43
43
|
"sphinx",
|
|
44
44
|
]
|
|
45
45
|
|
|
46
46
|
build = [
|
|
47
|
+
"cython",
|
|
47
48
|
"build",
|
|
48
49
|
"spin",
|
|
49
50
|
"meson",
|
|
50
|
-
"meson-python"
|
|
51
|
+
"meson-python",
|
|
52
|
+
"ninja",
|
|
51
53
|
]
|
|
52
54
|
|
|
53
55
|
lint = [
|
|
@@ -73,24 +75,16 @@ changelog = "https://has2k1.github.io/scikit-misc/stable/changelog.html"
|
|
|
73
75
|
[build-system]
|
|
74
76
|
build-backend = 'mesonpy'
|
|
75
77
|
requires = [
|
|
76
|
-
"meson-python>=0.
|
|
77
|
-
"Cython>=
|
|
78
|
+
"meson-python>=0.15.0",
|
|
79
|
+
"Cython>=3.0.8",
|
|
78
80
|
"setuptools",
|
|
79
81
|
"wheel",
|
|
80
82
|
|
|
81
|
-
# https://github.com/scipy/scipy/blob/main/pyproject.toml
|
|
82
83
|
# NumPy dependencies - to update these, sync from
|
|
83
|
-
# https://github.com/scipy/
|
|
84
|
-
#
|
|
85
|
-
#
|
|
86
|
-
|
|
87
|
-
# now matches minimum supported version, keep here as separate requirement
|
|
88
|
-
# to be able to sync more easily with oldest-supported-numpy
|
|
89
|
-
|
|
90
|
-
# default numpy requirements
|
|
91
|
-
"numpy==1.22.4; python_version<='3.10' and platform_python_implementation != 'PyPy'",
|
|
92
|
-
"numpy==1.23.2; python_version=='3.11' and platform_python_implementation != 'PyPy'",
|
|
93
|
-
"numpy>=1.26.0,<1.27; python_version=='3.12'",
|
|
84
|
+
# https://github.com/scipy/scipy/blob/main/pyproject.toml
|
|
85
|
+
# building against 2.x yields wheels that are also compatible with
|
|
86
|
+
# numpy 1.x at runtime.
|
|
87
|
+
"numpy>=2.0",
|
|
94
88
|
]
|
|
95
89
|
|
|
96
90
|
|
|
@@ -114,6 +108,8 @@ omit = [
|
|
|
114
108
|
########## Tool - Ruff ##########
|
|
115
109
|
[tool.ruff]
|
|
116
110
|
line-length = 79
|
|
111
|
+
|
|
112
|
+
[tool.ruff.lint]
|
|
117
113
|
select = ["E", "F", "C"]
|
|
118
114
|
ignore = [
|
|
119
115
|
"E741", # Ambiguous l
|
|
@@ -153,33 +149,47 @@ Environments = [
|
|
|
153
149
|
|
|
154
150
|
########## Tool - CIBuildWheel ##########
|
|
155
151
|
[tool.cibuildwheel]
|
|
156
|
-
skip
|
|
157
|
-
build
|
|
158
|
-
#
|
|
159
|
-
|
|
160
|
-
|
|
152
|
+
# Note: the below skip command doesn't do much currently, the platforms to
|
|
153
|
+
# build wheels for in CI are controlled in `.github/workflows/wheels.yml` and
|
|
154
|
+
# `tools/ci/cirrus_wheels.yml`.
|
|
155
|
+
build-frontend = "build"
|
|
156
|
+
skip = "cp36-* cp37-* cp-38* pp37-* *-manylinux_i686 *_ppc64le *_s390x *_universal2"
|
|
157
|
+
before-build = "bash {project}/tools/wheels/cibw_before_build.sh {project}"
|
|
161
158
|
test-command = "bash {project}/tools/wheels/cibw_test_command.sh {project}"
|
|
159
|
+
test-requires = [
|
|
160
|
+
"pytest",
|
|
161
|
+
"pytest-cov",
|
|
162
|
+
]
|
|
162
163
|
|
|
163
164
|
[tool.cibuildwheel.linux]
|
|
164
165
|
manylinux-x86_64-image = "manylinux2014"
|
|
165
166
|
manylinux-aarch64-image = "manylinux2014"
|
|
166
|
-
|
|
167
|
+
|
|
168
|
+
[tool.cibuildwheel.linux.environment]
|
|
169
|
+
# RUNNER_OS is a GitHub Actions specific env var; define it here so it works on Cirrus CI too
|
|
170
|
+
RUNNER_OS="Linux"
|
|
171
|
+
|
|
167
172
|
|
|
168
173
|
[tool.cibuildwheel.macos]
|
|
169
|
-
|
|
174
|
+
# universal2 wheels are not supported (see gh-21233), use `delocate-fuse` if you need them
|
|
175
|
+
# note that universal2 wheels are not built, they're listed in the tool.cibuildwheel.skip
|
|
176
|
+
# section
|
|
177
|
+
# Not clear why the DYLD_LIBRARY_PATH is not passed through from the environment
|
|
178
|
+
repair-wheel-command = [
|
|
179
|
+
"echo DYLD_LIBRARY_PATH $DYLD_LIBRARY_PATH",
|
|
180
|
+
"delocate-wheel --require-archs {delocate_archs} -w {dest_dir} -v {wheel}",
|
|
181
|
+
]
|
|
182
|
+
|
|
183
|
+
|
|
184
|
+
[tool.cibuildwheel.macos.environment]
|
|
185
|
+
PKG_CONFIG_PATH="{project}"
|
|
170
186
|
|
|
171
187
|
[tool.cibuildwheel.windows]
|
|
172
|
-
|
|
173
|
-
|
|
188
|
+
# This does not work, use CIBW_ENVIRONMENT_WINDOWS
|
|
189
|
+
config-settings = "setup-args=--vsenv build-dir=build"
|
|
190
|
+
repair-wheel-command = "bash -el ./tools/wheels/repair_windows.sh {wheel} {dest_dir}"
|
|
174
191
|
|
|
175
192
|
[[tool.cibuildwheel.overrides]]
|
|
176
193
|
select = "*-win32"
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
select = "*-win_amd64"
|
|
180
|
-
# can use pkg-config detection for win_amd64 because the installed rtools
|
|
181
|
-
# provide a working pkg-config.
|
|
182
|
-
# An alternative is to set CMAKE_PREFIX_PATH="c:/opt/openblas/if_32/32"
|
|
183
|
-
# Don't use double backslash for path separators, they don't get passed
|
|
184
|
-
# to the build correctly
|
|
185
|
-
environment = { PKG_CONFIG_PATH="c:/opt/64/lib/pkgconfig" }
|
|
194
|
+
config-settings = "setup-args=--vsenv build-dir=build"
|
|
195
|
+
repair-wheel-command = ""
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
scipy-openblas32==0.3.27.63.1
|
|
@@ -45,26 +45,6 @@ CONFIG = _cleanup(
|
|
|
45
45
|
},
|
|
46
46
|
},
|
|
47
47
|
"Build Dependencies": {
|
|
48
|
-
"blas": {
|
|
49
|
-
"name": "@BLAS_NAME@",
|
|
50
|
-
"found": bool("@BLAS_FOUND@".lower().replace('false', '')),
|
|
51
|
-
"version": "@BLAS_VERSION@",
|
|
52
|
-
"detection method": "@BLAS_TYPE_NAME@",
|
|
53
|
-
"include directory": r"@BLAS_INCLUDEDIR@",
|
|
54
|
-
"lib directory": r"@BLAS_LIBDIR@",
|
|
55
|
-
"openblas configuration": "@BLAS_OPENBLAS_CONFIG@",
|
|
56
|
-
"pc file directory": r"@BLAS_PCFILEDIR@",
|
|
57
|
-
},
|
|
58
|
-
"lapack": {
|
|
59
|
-
"name": "@LAPACK_NAME@",
|
|
60
|
-
"found": bool("@LAPACK_FOUND@".lower().replace('false', '')),
|
|
61
|
-
"version": "@LAPACK_VERSION@",
|
|
62
|
-
"detection method": "@LAPACK_TYPE_NAME@",
|
|
63
|
-
"include directory": r"@LAPACK_INCLUDEDIR@",
|
|
64
|
-
"lib directory": r"@LAPACK_LIBDIR@",
|
|
65
|
-
"openblas configuration": "@LAPACK_OPENBLAS_CONFIG@",
|
|
66
|
-
"pc file directory": r"@LAPACK_PCFILEDIR@",
|
|
67
|
-
},
|
|
68
48
|
},
|
|
69
49
|
"Machine Information": {
|
|
70
50
|
"host": {
|
|
@@ -16,21 +16,21 @@ loess_cython_gen = generator(
|
|
|
16
16
|
###
|
|
17
17
|
|
|
18
18
|
#### Fortran Loess into a static library
|
|
19
|
-
floess_sources = [
|
|
20
|
-
'src/loessf.f',
|
|
21
|
-
'src/linpack_lite.f'
|
|
22
|
-
]
|
|
23
19
|
|
|
24
20
|
floess_lib = static_library(
|
|
25
21
|
'floess',
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
22
|
+
sources: [
|
|
23
|
+
'src/loessf.f',
|
|
24
|
+
'src/linpack_lite.f',
|
|
25
|
+
'src/blas_lite.f'
|
|
26
|
+
],
|
|
27
|
+
fortran_args: [fortran_args, fortran_ignore_warnings],
|
|
28
|
+
link_args: [fortran_link_args],
|
|
29
29
|
)
|
|
30
30
|
###
|
|
31
31
|
|
|
32
32
|
#### Loess Extenstion Module
|
|
33
|
-
|
|
33
|
+
py3.extension_module(
|
|
34
34
|
'_loess',
|
|
35
35
|
sources: [
|
|
36
36
|
'src/loess.c',
|
|
@@ -39,8 +39,8 @@ py.extension_module(
|
|
|
39
39
|
'src/predict.c',
|
|
40
40
|
loess_cython_gen.process('src/_loess.pyx')
|
|
41
41
|
],
|
|
42
|
-
c_args: [
|
|
43
|
-
dependencies: [
|
|
42
|
+
c_args: [c_args, cython_c_args],
|
|
43
|
+
dependencies: [py3_dep, npymath_lib, np_dep],
|
|
44
44
|
link_with: [floess_lib],
|
|
45
45
|
link_args: [cython_c_link_args],
|
|
46
46
|
link_language: 'c',
|
|
@@ -55,7 +55,7 @@ python_sources = [
|
|
|
55
55
|
'__init__.py'
|
|
56
56
|
]
|
|
57
57
|
|
|
58
|
-
|
|
58
|
+
py3.install_sources(
|
|
59
59
|
python_sources,
|
|
60
60
|
subdir: 'skmisc/loess'
|
|
61
61
|
)
|
|
@@ -12,21 +12,16 @@
|
|
|
12
12
|
* handed to the local loader; e.g., "x_" in system V, Berkeley & 9th edition
|
|
13
13
|
*/
|
|
14
14
|
|
|
15
|
-
#ifdef
|
|
16
|
-
|
|
17
|
-
#define
|
|
15
|
+
#ifdef _MSC_VER
|
|
16
|
+
// Microsoft Visual C++
|
|
17
|
+
#define F77_SUB(x) x##_
|
|
18
18
|
#else
|
|
19
|
-
|
|
20
|
-
#
|
|
21
|
-
#define
|
|
22
|
-
#else
|
|
23
|
-
#define F77_SUB(x) x/**/_
|
|
24
|
-
#
|
|
25
|
-
#endif
|
|
19
|
+
// Other compilers
|
|
20
|
+
#ifdef __STDC__
|
|
21
|
+
#define F77_SUB(x) x##_
|
|
22
|
+
#else
|
|
23
|
+
#define F77_SUB(x) x/**/_
|
|
24
|
+
#endif
|
|
26
25
|
#endif
|
|
27
26
|
|
|
28
27
|
#define NULL_ENTRY ((int *)NULL)
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
@@ -76,10 +76,8 @@ cdef class loess_inputs:
|
|
|
76
76
|
# if none was allocated prior to the error.
|
|
77
77
|
self.allocated = False
|
|
78
78
|
|
|
79
|
-
x = np.
|
|
80
|
-
|
|
81
|
-
y = np.array(y, copy=False, subok=True,
|
|
82
|
-
dtype=np.float_, order='C')
|
|
79
|
+
x = np.asarray(x, dtype=np.float64, order='C')
|
|
80
|
+
y = np.asarray(y, dtype=np.float64, order='C')
|
|
83
81
|
n = len(x)
|
|
84
82
|
|
|
85
83
|
# Check the dimensions
|
|
@@ -100,13 +98,12 @@ cdef class loess_inputs:
|
|
|
100
98
|
"observations.")
|
|
101
99
|
|
|
102
100
|
if weights is None:
|
|
103
|
-
weights = np.ones((n,), dtype=np.
|
|
101
|
+
weights = np.ones((n,), dtype=np.float64)
|
|
104
102
|
|
|
105
103
|
if weights.ndim > 1 or weights.size != n:
|
|
106
104
|
raise ValueError("Invalid size of the 'weights' vector!")
|
|
107
105
|
|
|
108
|
-
weights = np.
|
|
109
|
-
dtype=np.float_, order='C')
|
|
106
|
+
weights = np.asarray(weights, dtype=np.float64, order='C')
|
|
110
107
|
|
|
111
108
|
# Python objects -> C structures -> *data in C structures
|
|
112
109
|
_x = x.ravel()
|
|
@@ -417,8 +414,7 @@ cdef class loess_model:
|
|
|
417
414
|
"of booleans with length equal to the number "
|
|
418
415
|
"of independent variables")
|
|
419
416
|
|
|
420
|
-
p_ndr = np.atleast_1d(np.
|
|
421
|
-
dtype=bool))
|
|
417
|
+
p_ndr = np.atleast_1d(np.asarray(value, dtype=bool))
|
|
422
418
|
for i in range(self.p):
|
|
423
419
|
self._base.parametric[i] = p_ndr[i]
|
|
424
420
|
|
|
@@ -438,8 +434,7 @@ cdef class loess_model:
|
|
|
438
434
|
"of booleans with length equal to the number "
|
|
439
435
|
"of independent variables")
|
|
440
436
|
|
|
441
|
-
d_ndr = np.atleast_1d(np.
|
|
442
|
-
subok=True, dtype=bool))
|
|
437
|
+
d_ndr = np.atleast_1d(np.asarray(value, dtype=bool))
|
|
443
438
|
for i in range(self.p):
|
|
444
439
|
self._base.drop_square[i] = d_ndr[i]
|
|
445
440
|
|
|
@@ -685,7 +680,7 @@ cdef class loess_prediction:
|
|
|
685
680
|
self.allocated = False
|
|
686
681
|
|
|
687
682
|
# Note : we need a copy as we may have to normalize
|
|
688
|
-
p_ndr = np.
|
|
683
|
+
p_ndr = np.asarray(newdata, copy=True, order='C')
|
|
689
684
|
p_ndr = p_ndr.astype(float)
|
|
690
685
|
|
|
691
686
|
# Dimensions should match those of the input
|