|
1 |
| -# encoding: utf8 |
2 |
| - |
| 1 | +import os |
| 2 | +from datetime import datetime, MAXYEAR |
| 3 | +from dateutil.relativedelta import relativedelta |
3 | 4 | from setuptools import setup
|
4 | 5 |
|
5 | 6 |
|
6 |
| -setup( |
7 |
| - author='UNKNOWN', |
8 |
| - author_email="UNKNOWN\nblas_opt_info:\nblas_mkl_info:\n FOUND:\n libraries = ['mkl_intel_lp64', 'mkl_intel_thread', 'mkl_core', 'iomp5', 'pthread']\n library_dirs = ['/Users/filo/anaconda/lib']\n define_macros = [('SCIPY_MKL_H', None)]\n include_dirs = ['/Users/filo/anaconda/include']\n\n FOUND:\n libraries = ['mkl_intel_lp64', 'mkl_intel_thread', 'mkl_core', 'iomp5', 'pthread']\n library_dirs = ['/Users/filo/anaconda/lib']\n define_macros = [('SCIPY_MKL_H', None)]\n include_dirs = ['/Users/filo/anaconda/include']\n\nUNKNOWN", |
9 |
| - description='A set of python modules for machine learning and data mining', |
10 |
| - install_requires=['scikit-learn'], |
11 |
| - long_description='''Use `scikit-learn <https://pypi.python.org/pypi/scikit-learn/>`_ instead.''', |
12 |
| - maintainer='UNKNOWN', |
13 |
| - maintainer_email="UNKNOWN\nblas_opt_info:\nblas_mkl_info:\n FOUND:\n libraries = ['mkl_intel_lp64', 'mkl_intel_thread', 'mkl_core', 'iomp5', 'pthread']\n library_dirs = ['/Users/filo/anaconda/lib']\n define_macros = [('SCIPY_MKL_H', None)]\n include_dirs = ['/Users/filo/anaconda/include']\n\n FOUND:\n libraries = ['mkl_intel_lp64', 'mkl_intel_thread', 'mkl_core', 'iomp5', 'pthread']\n library_dirs = ['/Users/filo/anaconda/lib']\n define_macros = [('SCIPY_MKL_H', None)]\n include_dirs = ['/Users/filo/anaconda/include']\n\nUNKNOWN", |
14 |
| - name='sklearn', |
15 |
| - platforms=['all'], |
16 |
| - py_modules=['wheel-platform-tag-is-broken-on-empty-wheels-see-issue-141'], |
17 |
| - url='https://pypi.python.org/pypi/scikit-learn/', |
18 |
| - version="0.0", |
19 |
| - zip_safe=False, |
20 |
| -) |
| 7 | +with open("README.md") as f: |
| 8 | + LONG_DESCRIPTION = f.read() |
| 9 | + |
| 10 | + |
| 11 | +def maybe_raise_error(checked_datetime): |
| 12 | + accept_deprecated_sklearn_package_install = os.environ.get( |
| 13 | + "SKLEARN_ALLOW_DEPRECATED_SKLEARN_PACKAGE_INSTALL", "use-brownout-schedule" |
| 14 | + ) |
| 15 | + accept_deprecated_sklearn_package_install = ( |
| 16 | + accept_deprecated_sklearn_package_install.lower() |
| 17 | + ) |
| 18 | + |
| 19 | + if accept_deprecated_sklearn_package_install == "true": |
| 20 | + return |
| 21 | + |
| 22 | + if accept_deprecated_sklearn_package_install == "false": |
| 23 | + raise SystemExit( |
| 24 | + "Refusing to install the deprecated sklearn package, " |
| 25 | + "because SKLEARN_ALLOW_DEPRECATED_SKLEARN_PACKAGE_INSTALL=False is set" |
| 26 | + ) |
| 27 | + |
| 28 | + start_date = datetime(2022, 11, 1) |
| 29 | + all_start_dates = [start_date + relativedelta(months=2 * i) for i in range(7)] |
| 30 | + date_in_the_far_future = datetime(MAXYEAR, 12, 31, 23, 59, 59) |
| 31 | + all_end_dates = all_start_dates[1:] + [date_in_the_far_future] |
| 32 | + all_check_functions = [ |
| 33 | + lambda dt: dt.minute < 5, |
| 34 | + lambda dt: dt.minute < 10, |
| 35 | + lambda dt: dt.minute < 15, |
| 36 | + lambda dt: (dt.minute < 10) or (30 < dt.minute < 40), |
| 37 | + lambda dt: (dt.minute < 15) or (30 < dt.minute < 45), |
| 38 | + lambda dt: (dt.minute < 20) or (30 < dt.minute < 50), |
| 39 | + lambda dt: True, |
| 40 | + ] |
| 41 | + brownout_schedule = zip(all_start_dates, all_end_dates, all_check_functions) |
| 42 | + |
| 43 | + error_message = "\n".join( |
| 44 | + [ |
| 45 | + "The 'sklearn' PyPI package is deprecated, use 'scikit-learn' ", |
| 46 | + "rather than 'sklearn' for pip commands. ", |
| 47 | + "", |
| 48 | + "The brownout schedule for sklearn deprecation can be found at ", |
| 49 | + "https://github.com/scikit-learn/sklearn-pypi-package#brownout-schedule", |
| 50 | + "", |
| 51 | + "Here is how to fix this error in the main use cases:", |
| 52 | + "- use 'pip install scikit-learn' rather than 'pip install sklearn'", |
| 53 | + "- replace sklearn by scikit-learn in your pip requirements files", |
| 54 | + " (requirements.txt, setup.py, setup.cfg, Pipfile, etc ...)", |
| 55 | + "- if the sklearn package is used by one of your dependencies, ", |
| 56 | + " it would be great if you take some time to track which pakage uses ", |
| 57 | + " sklearn instead of scikit-learn and report it to their issue tracker", |
| 58 | + "- as last resort, set the environment variable ", |
| 59 | + " SKLEARN_ALLOW_DEPRECATED_SKLEARN_PACKAGE_INSTALL=True to avoid this error", |
| 60 | + "", |
| 61 | + "If the previous advice does not cover your use case, feel free to report it at:", |
| 62 | + "https://github.com/scikit-learn/sklearn-pypi-package/issues/new", |
| 63 | + ] |
| 64 | + ) |
| 65 | + for start_date, end_date, check_function in brownout_schedule: |
| 66 | + if (start_date <= checked_datetime < end_date) and check_function( |
| 67 | + checked_datetime |
| 68 | + ): |
| 69 | + raise SystemExit(error_message) |
| 70 | + |
| 71 | + |
| 72 | +def main(): |
| 73 | + now = datetime.now() |
| 74 | + now = datetime(2022, 11, 1) |
| 75 | + maybe_raise_error(now) |
| 76 | + |
| 77 | + setup( |
| 78 | + description="deprecated sklearn package, use scikit-learn instead", |
| 79 | + long_description=LONG_DESCRIPTION, |
| 80 | + long_description_content_type="text/markdown", |
| 81 | + name="sklearn", |
| 82 | + version="0.1.0a1", |
| 83 | + ) |
| 84 | + |
| 85 | + |
| 86 | +if __name__ == "__main__": |
| 87 | + main() |
0 commit comments