Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -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'
18 changes: 18 additions & 0 deletions easybuild/easyconfigs/o/Orange3-bundle/gwyfile_configparser.patch
Original file line number Diff line number Diff line change
@@ -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):
Original file line number Diff line number Diff line change
@@ -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):
Loading
Loading