diff --git a/easybuild/easyconfigs/o/Orange3-bundle/Orange3-bundle-2026.02-foss-2024a.eb b/easybuild/easyconfigs/o/Orange3-bundle/Orange3-bundle-2026.02-foss-2024a.eb new file mode 100644 index 000000000000..8a7582c84c72 --- /dev/null +++ b/easybuild/easyconfigs/o/Orange3-bundle/Orange3-bundle-2026.02-foss-2024a.eb @@ -0,0 +1,352 @@ +# Author: J. Saßmannshausen (Imperial College London/UK) + +easyblock = 'PythonBundle' + +name = 'Orange3-bundle' +version = '2026.02' + +homepage = 'https://orangedatamining.com/' +description = """ +Bundle of most common Orange3 extensions. +""" + +toolchain = {'name': 'foss', 'version': '2024a'} + +builddependencies = [ + ('hatchling', '1.24.2'), + ('poetry', '1.8.3'), + ('Cython', '3.0.10'), + ('setuptools', '80.9.0'), + ('flit-core', '3.12.0'), +] + +dependencies = [ + ('Python', '3.12.3'), + ('Orange3', '3.40.0'), + ('Biopython', '1.84'), + ('h5py', '3.12.1'), + ('LMfit', '1.3.3'), + ('scikit-image', '0.25.0'), + ('numba', '0.60.0'), + ('SHAP', '0.49.1'), + ('anndata', '0.10.9'), + ('loompy', '3.0.8'), + ('boto3', '1.35.36'), + ('statsmodels', '0.14.4'), + ('protobuf', '28.0'), + ('cURL', '8.7.1'), + ('gensim', '4.4.0'), + ('lifelines', '0.30.1'), + ('tiktoken', '0.9.0'), + ('openai-python', '2.24.0'), + ('trimesh', '4.5.3'), + ('Shapely', '2.0.6'), + ('NLTK', '3.9.1'), + ('jellyfish', '1.2.1'), + ('GEOS', '3.12.2'), + ('protobuf-python', '5.28.0'), + ('pyproj', '3.7.0'), + ('pybind11', '2.12.0'), # required for lemmagen3 +] + +exts_list = [ + ('orange3_associate', '1.4.0', { + 'modulename': 'associate', + 'checksums': ['7c34f7ac6ddc2f66fa2ee91b017d5eb8a1e1f08eca9a790ea82ca5e7ed98b38d'], + }), + ('Genesis-PyAPI', '1.2.1', { + 'modulename': 'genesis', + 'checksums': ['2989f582eb619cd18c0fda10c69d38404781ddc4161a77f18c29d02fbdee577c'], + }), + ('point-annotator', '2.0.0', { + 'modulename': 'pointannotator', + 'checksums': ['0bae70fc5aa67e39c230b56a7e10cea46d8fef3a52770721da3d382307fe33ef'], + }), + ('pyclipper', '1.4.0', { + 'checksums': ['9882bd889f27da78add4dd6f881d25697efc740bf840274e749988d25496c8e1'], + }), + ('tzlocal', '5.3.1', { + 'checksums': ['cceffc7edecefea1f595541dbd6e990cb1ea3d19bf01b2809f362a03dd7921fd'], + }), + ('botocore_stubs', '1.42.41', { + 'postinstallcmds': [('cd %(installdir)s/lib/python%(pyshortver)s/site-packages && ' + 'ln -s botocore-stubs botocore_stubs')], + 'checksums': ['dbeac2f744df6b814ce83ec3f3777b299a015cbea57a2efc41c33b8c38265825'], + }), + ('types_s3transfer', '0.16.0', { + 'modulename': 's3transfer_stubs', + 'postinstallcmds': [('cd %(installdir)s/lib/python%(pyshortver)s/site-packages && ' + 'ln -s s3transfer-stubs s3transfer_stubs')], + 'checksums': ['b4636472024c5e2b62278c5b759661efeb52a81851cde5f092f24100b1ecb443'], + }), + ('types_awscrt', '0.31.0', { + 'modulename': 'awscrt_stubs', + 'postinstallcmds': [('cd %(installdir)s/lib/python%(pyshortver)s/site-packages && ' + 'ln -s awscrt-stubs awscrt_stubs')], + 'checksums': ['aa8b42148af0847be14e2b8ea3637a3518ffab038f8d3be7083950f3ce87d3ff'], + }), + ('boto3_stubs', '1.42.59', { + 'modulename': 'boto3_stubs', + 'postinstallcmds': [('cd %(installdir)s/lib/python%(pyshortver)s/site-packages && ' + 'ln -s boto3-stubs boto3_stubs')], + 'checksums': ['4a6fc520560ee6a2cb9e05bdfcd45d4e07d9fb91cf483dfbd3a5ab87efe6b860'], + }), + ('slumber', '0.7.1', { + 'checksums': ['96899ce914f8d7862ce34f4e50af3a82e35588ab61b4912b85844479f4d177cb'], + }), + ('mypy-boto3-s3', '1.42.37', { + 'checksums': ['628a4652f727870a07e1c3854d6f30dc545a7dd5a4b719a2c59c32a95d92e4c1'], + }), + ('resdk', '22.2.1', { + 'checksums': ['9a71ee97934632622c421d8abd44ec67483c58af849fb3c8c04aec051766052c'], + }), + ('single-sample-gsea', '0.2.0', { + 'checksums': ['47c971c449b1711ce653c2db09299f3bef720ddf137895f502f5ee0e72290026'], + }), + ('orange3_bioinformatics', '4.8.5', { + 'modulename': 'bioinformatics', + 'checksums': ['55ff15e2a5155cf360322d82ff6361451d87501b58dccc050048dcf902fa4ff2'], + }), + ('orange3_educational', '0.8.1', { + 'modulename': 'educational', + 'checksums': ['41b40ccc18f84217ede98e95d7044bcb6cd274010b2fa18d9a432ceaa6c295c0'], + }), + ('Orange3-Explain', '0.6.9', { + 'modulename': 'explain', + 'checksums': ['b822ebcba646d627246d2db3809ee85a34071eee6bfff39ed677f374188cae23'], + }), + ('aif360', '0.6.1', { + 'checksums': ['635afc0bbe785e08fa242eee5e5080238193d0583bc0f5006a132050d4fb77f2'], + }), + ('orange3_fairness', '1.0.2', { + 'modulename': 'fairness', + 'checksums': ['a843ed3fbc092485e9465f6762a657d8b4f030bbfdb1331f490251fec5051100'], + }), + ('shapely', '2.1.2', { + 'checksums': ['2ed4ecb28320a433db18a5bf029986aa8afcfd740745e78847e330d5d94922a9'], + }), + ('orange3_geo', '0.5', { + 'modulename': 'geo', + 'checksums': ['b669479835e16cf9bda02881c9715e13919075d52361634a981cb0461d43cee3'], + }), + ('ndf', '0.1.4', { + 'checksums': ['a87c0bd2cccbc438d24859cbe64de34157b432f104d0e7b59b0610264b538522'], + }), + ('orange3-imageanalytics', '0.13.0', { + 'modulename': 'imageanalytics', + 'checksums': ['4bbc65202dc6f3c83969319f62f5153ae7e05b3fd69db18caf869cdf8bb7859f'], + }), + ('orange3-network', '1.10.2', { + 'modulename': 'network', + 'checksums': ['02710f651bcd6793e81f7e50add15058216c396953068ff88da55500c4758652'], + }), + ('Orange3-Prototypes', '0.21.2', { + 'modulename': 'prototypes', + 'checksums': ['0f248dcb78d7aeacb4b5b0646102e47730acbce796c33530011e593f1c379dfc'], + }), + ('orange3_pumice', '1.2.1', { + 'modulename': 'pumice', + 'checksums': ['ccd7bf81d8b2918efedb6d0fad6ed2c946a2061dc66103c89ef440d7edb67ae8'], + }), + ('fastdtw', '0.3.2', { + 'checksums': ['09a24d62a8eb72f87c03692dffae4b8d8499b53f503e9abce5e717c5b705dff9'], + }), + ('orange3_singlecell', '1.7.3', { + 'modulename': 'single_cell', + 'checksums': ['0847025aff1f00dd701df80758766b165b244245bbbf0a6fb186396fd4741a3c'], + }), + ('colorcet', '3.1.0', { + 'checksums': ['2921b3cd81a2288aaf2d63dbc0ce3c26dcd882e8c389cc505d6886bf7aa9a4eb'], + }), + ('agilent-format', '0.4.7', { + 'checksums': ['938546a57d4be4ab41737ca617bd7d8edb8cb4c38e067aa74a14fd590ac186e9'], + }), + ('extranormal3', '0.0.3', { + 'checksums': ['3a37612c1be26043f9790ebc45f1e5cc75e4ecb8864b1bb679cdd547b09cdbff'], + }), + ('gsffile', '0.5.4', { + 'checksums': ['851a20d64cbeda3310d32d2cf7bce28955523dc45f31d7d4e1c292ac32e41469'], + }), + ('gwyfile', '0.2.0', { + 'patches': ['gwyfile_configparser.patch'], + 'checksums': [ + {'gwyfile-0.2.0.tar.gz': 'cf72fedd6af15c952067dbbe87978a4a6262b4e2cd3aa9f2e7bee4ced4071e40'}, + {'gwyfile_configparser.patch': '5aeef27094075160979f013838730a7b8133a5773ba2d75328ed9bac45ce4daf'}, + ], + }), + ('pysnom', '0.3.0', { + 'modulename': 'pySNOM', + 'checksums': ['b1403ef431821203b0cd1fcfb64999775264c8c2f1d730d9d5847c40bfd0d792'], + }), + ('renishawWiRE', '0.1.16', { + 'modulename': 'renishawWiRE', + 'checksums': ['5372ac568487c042a96ee57342281e21eedce9d73a9cd9d93e551240033b940b'], + }), + ('spectral', '0.24', { + 'checksums': ['d10fbdd39715e0b91f1e816f59b0f80423c60c77b87727451721df86d4b28911'], + }), + ('Pebble', '5.1.0', { + 'checksums': ['5c30376f1827b21ecec4126ff90e7f22ad5501cac1ff2b32c86ff2601681f932'], + }), + ('orange_spectroscopy', '0.9.1', { + 'modulename': 'spectroscopy', + 'checksums': ['2cbaacb504995dcc3d995ceea81458261c6ca19c771aaf09e605bfca03d95d19'], + }), + ('orange3_survival_analysis', '0.6.3', { + 'modulename': 'survival_analysis', + 'checksums': ['0afd196d0c36b9337f7d40473c6bda6be7890a718e3be3f1aba039498b736b3f'], + }), + ('conllu', '6.0.0', { + 'checksums': ['bc6072d49d00e77f4454039519118c0500fafa0d0eb509f53793081084f50aba'], + }), + ('docx2txt', '0.9', { + 'checksums': ['18013f6229b14909028b19aa7bf4f8f3d6e4632d7b089ab29f7f0a4d1f660e28'], + }), + ('langdetect', '1.0.9', { + 'checksums': ['cbc1fef89f8d062739774bd51eda3da3274006b3661d199c2655f6b3f6d605a0'], + }), + ('lemmagen3', '3.5.1', { + 'checksums': ['11b7244cf7f71cde6a3a1d7d1b2b9fbd6d6a15bf9e9b5eab3933d930bfa69e57'], + }), + ('odfpy', '1.4.1', { + 'modulename': 'odf', + 'checksums': ['db766a6e59c5103212f3cc92ec8dd50a0f3a02790233ed0b52148b70d3c438ec'], + }), + ('owlready2', '0.50', { + 'checksums': ['7be74c53a35497df138c8223dddcf65510def9b38494ae1fac4aa2a61c4677eb'], + }), + ('pypdf', '6.7.4', { + 'checksums': ['9edd1cd47938bb35ec87795f61225fd58a07cfaf0c5699018ae1a47d6f8ab0e3'], + }), + ('simhash', '2.1.2', { + 'checksums': ['533bc8cf41e4e6dd83f0b1847363516bf3323e0fa92e63d9e6df4e281e882e1b'], + }), + ('requests-oauthlib', '2.0.0', { + 'checksums': ['b3dffaebd884d8cd778494369603a9e7b58d29111bf6b41bdc2dcd87203af4e9'], + }), + ('tweepy', '4.16.0', { + 'checksums': ['1d95cbdc50bf6353a387f881f2584eaf60d14e00dbbdd8872a73de79c66878e3'], + }), + ('ufal_udpipe', '1.4.0.1', { + 'modulename': 'ufal', + 'checksums': ['42b3c19888f3228ffb6d91c0991c949e378c5dafecc12008c089a1f4182357d7'], + }), + ('wikipedia', '1.4.0', { + 'checksums': ['db0fad1829fdd441b1852306e9856398204dc0786d2996dd2e0c8bb8e26133b2'], + }), + ('segtok', '1.5.11', { + 'checksums': ['8ab2dd44245bcbfec25b575dc4618473bbdf2af8c2649698cd5a370f42f3db23'], + }), + ('yake', '0.7.3', { + 'checksums': ['8778fb2832e58d26d838d6d7ac967b4947521f1fe8cdf23dd872636161fc53ed'], + }), + ('orange3_text', '1.16.3', { + 'modulename': 'text', + 'checksums': ['57fc6d212173ca59544ce5ed1d9473c37324b39e346191c211ef81743711d497'], + }), + ('lttl', '2.1.0', { + 'modulename': 'LTTL', + 'checksums': ['bdbaca62631e2caae5ed6471930b4819e4ea3e8ccd77c4ed4df7eb40866609c6'], + }), + # Problem with setuptools? + ('pycountry', '26.2.16', { + 'source_tmpl': '%(name)s-%(version)s-py3-none-any.whl', + 'checksums': ['115c4baf7cceaa30f59a4694d79483c9167dbce7a9de4d3d571c5f3ea77c305a'], + }), + ('treetaggerwrapper', '2.3', { + 'patches': ['treetaggerwrapper_configparser.patch'], + 'checksums': [ + {'treetaggerwrapper-2.3.tar.gz': '8d4a291fef263ee8b546e6368e407e984ba466d5afa56e6ffc2ae495f3414b67'}, + {'treetaggerwrapper_configparser.patch': + 'a7d7c85a346ed83099dc74ab5b6be0925c113c3f295107658c5f13879bde6d3c'}, + ], + }), + # Problem with setuptools? + ('orange3_textable', '3.2.7', { + 'modulename': '_textable', + 'source_tmpl': '%(name)s-%(version)s-py3-none-any.whl', + 'checksums': ['2758987393e7a54a6c80d630a619b6a4527b87ebbc43140fdecacec4dd048c65'], + }), + ('pandas-datareader', '0.10.0', { + 'patches': ['pandas-datareader_configparser.patch'], + 'checksums': [ + {'pandas-datareader-0.10.0.tar.gz': '9fc3c63d39bc0c10c2683f1c6d503ff625020383e38f6cbe14134826b454d5a6'}, + {'pandas-datareader_configparser.patch': + '16a3d52506db2709e1cc075193dcd5125e15b06ec07a74925dbc3432b0339018'}, + ], + }), + ('yfinance', '1.2.0', { + 'checksums': ['80cec643eb983330ca63debab1b5492334fa1e6338d82cb17dd4e7b95079cfab'], + }), + # Complex to build. Maybe separate module? + ('curl_cffi', '0.13.0', { + 'source_tmpl': '%(name)s-%(version)s-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl', + 'checksums': ['8eb4083371bbb94e9470d782de235fb5268bf43520de020c9e5e6be8f395443f'], + }), + ('frozendict', '2.4.7', { + 'checksums': ['e478fb2a1391a56c8a6e10cc97c4a9002b410ecd1ac28c18d780661762e271bd'], + }), + ('multitasking', '0.0.12', { + 'checksums': ['2fba2fa8ed8c4b85e227c5dd7dc41c7d658de3b6f247927316175a57349b84d1'], + }), + ('peewee', '4.0.0', { + 'checksums': ['bc2722abf32a8074362c346fc8a95f2d34a9587873e81025b6429676c32044b6'], + }), + ('websockets', '15.0.1', { + 'checksums': ['82544de02076bafba038ce055ee6412d68da13ab47f0c60cab827346de828dee'], + }), + ('Orange3-Timeseries', '0.6.3', { + 'modulename': 'timeseries', + 'checksums': ['504135f946633419d17cadd12f91d1f1a6fb6e080acef349e4da33b8425b2c3c'], + }), + ('pymongo', '4.10.1', { + 'checksums': ['a9de02be53b6bb98efe0b9eda84ffa1ec027fcb23a2de62c4f941d9a2f2f3330'], + }), + ('dnspython', '2.7.0', { + 'modulename': 'dns', + 'checksums': ['ce9c432eda0dc91cf618a5cedf1a4e142651196bbcd2c80e89ed5a907e5cfaf1'], + }), + ('wbgapi', '1.0.14', { + 'checksums': ['7bbf81cc58a2848f218e3d1cf54a3e0e1e9595aaeb5dfb3fe99a2dc0ab6ab03b'], + }), + ('orange3_worldhappiness', '0.1.12', { + 'modulename': 'worldhappiness', + 'checksums': ['238e9b7bd15357d0246ff1626efc1f77a9bd2c97aa5fc89979aae3ddb3e7a5b6'], + }), + ('snompy', '0.1.9', { + 'checksums': ['aed85e217e32bfb31eae000ecfb1923f7610b290732e910bbbdc308c7e485d2a'], + }), + ('orange_snom', '0.1.0', { + 'modulename': 'snom', + 'checksums': ['e16921d796f76ea0e98b68b031cab847a399dcf75637b90693c9959e53f62b04'], + }), + # They are added via Pypi + # Quite old version, so wheel seems to be best + ('Orange3_Chemometry', '0.0.6', { + 'modulename': 'chemometry', + 'source_tmpl': '%(name)s-%(version)s-py3-none-any.whl', + 'checksums': ['ac2a9944a387592aded835691a60c016b4fba6fa6ca8f67b791c4c348d5434b8'], + }), + # No source code available: + ('opusfc', '1.5.0', { + 'modulename': 'opusFC', + 'source_tmpl': '%(name)s-%(version)s-cp312-cp312-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl', + 'checksums': ['14dbc77756e51345f989add9741fb327976d38f1513606ae2113e4ed41fa0b06'], + }), + ('Orange3-spectroscopy-plus', '0.1.0', { + 'modulename': 'spectroscopy_plus', + 'checksums': ['cb8dc6384855411900b811365e2beeaac643f2bfa075d5ff5eae2190d1fb42e3'], + }), + ('Orange3-Conformal', '1.1.3', { + 'modulename': 'conformal', + 'checksums': ['62c1975c2bdc2937ceeb7e16f81f2cbd3881fb73633b84a01200df4e09712b0e'], + }), + ('Orange3-Chemometry', '0.0.6', { + 'modulename': 'chemometry', + 'checksums': ['2b266cb0b889e9e4b02a5f300142c790d41c7ca0778490b71515a7f7b2e6b3cf'], + }), +] + +modextrapaths = {'PYTHONPATH': 'lib/python%(pyshortver)s/site-packages/orangecontrib'} + +moduleclass = 'ai' diff --git a/easybuild/easyconfigs/o/Orange3-bundle/gwyfile_configparser.patch b/easybuild/easyconfigs/o/Orange3-bundle/gwyfile_configparser.patch new file mode 100644 index 000000000000..45363260ab5c --- /dev/null +++ b/easybuild/easyconfigs/o/Orange3-bundle/gwyfile_configparser.patch @@ -0,0 +1,18 @@ +Dealing with changes of configparser in Python-3.12 +Author: J. Saßmannshausen (Imperial College London/UK) +diff --git a/gwyfile-0.2.0.orig/versioneer.py b/gwyfile-0.2.0/versioneer.py +index 64fea1c..89c032a 100644 +--- a/gwyfile-0.2.0.orig/versioneer.py ++++ b/gwyfile-0.2.0/versioneer.py +@@ -339,9 +339,9 @@ def get_config_from_root(root): + # configparser.NoOptionError (if it lacks "VCS="). See the docstring at + # the top of versioneer.py for instructions on writing your setup.cfg . + setup_cfg = os.path.join(root, "setup.cfg") +- parser = configparser.SafeConfigParser() ++ parser = configparser.RawConfigParser() + with open(setup_cfg, "r") as f: +- parser.readfp(f) ++ parser.read_file(f) + VCS = parser.get("versioneer", "VCS") # mandatory + + def get(parser, name): diff --git a/easybuild/easyconfigs/o/Orange3-bundle/pandas-datareader_configparser.patch b/easybuild/easyconfigs/o/Orange3-bundle/pandas-datareader_configparser.patch new file mode 100644 index 000000000000..2d2945a9d4c4 --- /dev/null +++ b/easybuild/easyconfigs/o/Orange3-bundle/pandas-datareader_configparser.patch @@ -0,0 +1,18 @@ +Dealing with changes of configparser in Python-3.12 +Author: J. Saßmannshausen (Imperial College London/UK) +diff --git a/pandas-datareader-0.10.0.orig/versioneer.py b/pandas-datareader-0.10.0/versioneer.py +index 5b31829..708f8bf 100644 +--- a/pandas-datareader-0.10.0.orig/versioneer.py ++++ b/pandas-datareader-0.10.0/versioneer.py +@@ -344,9 +344,9 @@ def get_config_from_root(root): + # configparser.NoOptionError (if it lacks "VCS="). See the docstring at + # the top of versioneer.py for instructions on writing your setup.cfg . + setup_cfg = os.path.join(root, "setup.cfg") +- parser = configparser.SafeConfigParser() ++ parser = configparser.RawConfigParser() + with open(setup_cfg, "r") as f: +- parser.readfp(f) ++ parser.read_file(f) + VCS = parser.get("versioneer", "VCS") # mandatory + + def get(parser, name): diff --git a/easybuild/easyconfigs/o/Orange3-bundle/treetaggerwrapper_configparser.patch b/easybuild/easyconfigs/o/Orange3-bundle/treetaggerwrapper_configparser.patch new file mode 100644 index 000000000000..682e4f0e177b --- /dev/null +++ b/easybuild/easyconfigs/o/Orange3-bundle/treetaggerwrapper_configparser.patch @@ -0,0 +1,15 @@ +Dealing with changes of configparser in Python-3.12 +Author: J. Saßmannshausen (Imperial College London/UK) +diff --git a/treetaggerwrapper-2.3.orig/treetaggerwrapper.py b/treetaggerwrapper-2.3/treetaggerwrapper.py +index 18236c3..7440f40 100644 +--- a/treetaggerwrapper-2.3.orig/treetaggerwrapper.py ++++ b/treetaggerwrapper-2.3/treetaggerwrapper.py +@@ -541,7 +541,7 @@ ON_MACOSX = (platform.system() == "Darwin") + ON_POSIX = (os.name == "posix") # Care: true also under MACOSX. + + # Extra configuration storage within a config file. +-g_config = configparser.SafeConfigParser() ++g_config = configparser.RawConfigParser() + + # The config file is stored following XDG rules. + CONFIG_FILENAME = "treetagger_wrapper.cfg"