Skip to content

Commit affb97a

Browse files
authored
Merge pull request #767 from EducationalTestingService/release/5.0.0
Release v5.0.0
2 parents 382c818 + 3ffdea6 commit affb97a

12 files changed

+61
-28
lines changed

.readthedocs.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -20,4 +20,4 @@ python:
2020
build:
2121
os: "ubuntu-22.04"
2222
tools:
23-
python: "3.8"
23+
python: "3.11"

README.rst

+1-1
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ You can install using either ``pip`` or ``conda``. See details `here <https://sk
4949
Requirements
5050
~~~~~~~~~~~~
5151

52-
- Python 3.8, 3.9, 3.10, or 3.11
52+
- Python 3.10, 3.11, or 3.12.
5353
- `beautifulsoup4 <http://www.crummy.com/software/BeautifulSoup/>`__
5454
- `gridmap <https://pypi.org/project/gridmap/>`__ (only required if you plan
5555
to run things in parallel on a DRMAA-compatible cluster)

conda-recipe/README.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -6,5 +6,5 @@
66

77
3. Upload the package file to anaconda.org using `anaconda upload --user ets <path_to_file>`.
88

9-
4. Test the package: `conda create -n foobar -c ets -c conda-forge python=3.9 skll`. This should _always_ install the latest package from the ``ets`` conda channel.
9+
4. Test the package: `conda create -n foobar -c https://conda.anaconda.org/ets -c conda-forge python=3.11 skll`. This should _always_ install the latest package from the ``ets`` conda channel.
1010
Note that we are specifying the ``ets`` channel first since SKLL is now also in conda-forge but runs a version behind until we do the actual release on GitHub.

conda-recipe/skll/meta.yaml

+6-5
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
package:
22
name: skll
3-
version: 4.0.1
3+
version: 5.0.0
44

55
source:
66
path: ../../../skll
@@ -24,21 +24,22 @@ build:
2424

2525
requirements:
2626
host:
27-
- python >=3.8
27+
- python >=3.10
2828
- pip
2929
- setuptools
3030
run:
31-
- python >=3.8
31+
- python >=3.10
3232
- beautifulsoup4
3333
- joblib
34-
- numpy
34+
- numpy<2
3535
- pandas
3636
- ruamel.yaml
37-
- scikit-learn >=1.3.0,<1.4.0
37+
- scikit-learn >=1.4.0,<1.5.0
3838
- scipy
3939
- seaborn
4040
- tabulate
4141
- typing_extensions
42+
- wandb
4243

4344
test:
4445
# Python imports

doc/conf.py

+3-3
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@
3333

3434
# General information about the project.
3535
project = "SciKit-Learn Laboratory"
36-
copyright = "2012-2023, Educational Testing Service"
36+
copyright = "2012-2024, Educational Testing Service"
3737

3838
# The short X.Y version.
3939
version = __version__
@@ -70,7 +70,7 @@
7070
# The paper size ('letterpaper' or 'a4paper').
7171
"papersize": "letterpaper",
7272
# The font size ('10pt', '11pt' or '12pt').
73-
"pointsize": "12pt"
73+
"pointsize": "12pt",
7474
# Additional stuff for the LaTeX preamble.
7575
#'preamble': '',
7676
}
@@ -112,4 +112,4 @@
112112
epub_title = "SciKit-Learn Laboratory"
113113
epub_author = "Educational Testing Service"
114114
epub_publisher = "Educational Testing Service"
115-
epub_copyright = "2012-2023, Educational Testing Service"
115+
epub_copyright = "2012-2024, Educational Testing Service"

doc/contributing.rst

+2-2
Original file line numberDiff line numberDiff line change
@@ -78,11 +78,11 @@ There are three main entry points into the SKLL codebase:
7878
`run_experiment <https://skll.readthedocs.io/en/latest/run_experiment.html#using-run-experiment>`__ script. When you run the command
7979
``run_experiment <config_file>``, the following happens (at a high level):
8080

81-
- the configuration file is handed off to the `run_configuration() <https://github.com/EducationalTestingService/skll/blob/main/skll/experiments/__init__.py#L609>`__ function in ``experiments.py``.
81+
- the configuration file is handed off to the `run_configuration() <https://github.com/EducationalTestingService/skll/blob/main/skll/experiments/__init__.py#L613>`__ function in ``experiments.py``.
8282

8383
- a `SKLLConfigParser <https://github.com/EducationalTestingService/skll/blob/main/skll/config/__init__.py#L44>`__ object is instantiated from ``config.py`` that parses all of the relevant fields out of the given configuration file.
8484

85-
- the configuration fields are then passed to the `_classify_featureset() <https://github.com/EducationalTestingService/skll/blob/main/skll/experiments/__init__.py#L64>`__ function in ``experiments.py`` which instantiates the learners (using code from ``learner.py``), the featuresets (using code from ``reader.py`` & ``featureset.py``), and runs the experiments, collects the results, and writes them out to disk.
85+
- the configuration fields are then passed to the `_classify_featureset() <https://github.com/EducationalTestingService/skll/blob/main/skll/experiments/__init__.py#L65>`__ function in ``experiments.py`` which instantiates the learners (using code from ``learner.py``), the featuresets (using code from ``reader.py`` & ``featureset.py``), and runs the experiments, collects the results, and writes them out to disk.
8686

8787
2. **SKLL API**. Another way to interact with SKLL is via the SKLL API directly in your Python code rather than using configuration files. For example, you could use the `Learner.from_file() <https://github.com/EducationalTestingService/skll/blob/main/skll/learner/__init__.py#L384>`__ or `VotingLearner.from_file() <https://github.com/EducationalTestingService/skll/blob/main/skll/learner/voting.py#L243>`__ methods to load saved models of those types from disk and make predictions on new data. The documentation for the SKLL API can be found `here <https://skll.readthedocs.io/en/latest/api.html>`__.
8888

doc/run_experiment.rst

+36-7
Original file line numberDiff line numberDiff line change
@@ -595,11 +595,27 @@ fixed_parameters *(Optional)*
595595
"""""""""""""""""""""""""""""
596596

597597
List of dictionaries containing parameters you want to have fixed for each
598-
learner in :ref:`learners` list. Any empty ones will be ignored
599-
(and the defaults will be used). If :ref:`grid_search` is ``True``,
598+
learner in the :ref:`learners` list. Empty dictionaries will be ignored
599+
and the defaults will be used for these learners. If :ref:`grid_search<grid_search>` is ``True``,
600600
there is a potential for conflict with specified/default parameter grids
601601
and fixed parameters.
602602

603+
.. note::
604+
Tuples are not supported in the config file, and will lead to parsing errors.
605+
Make sure to replace tuples with lists when specifying fixed parameters.
606+
As an example, consider the following parameter that's usually defined as a tuple in scikit-learn:
607+
608+
.. code-block:: python
609+
610+
{'hidden_layer_sizes': (28, 28)}
611+
612+
To specify it in `fixed_parameters`, use a list instead:
613+
614+
.. code-block:: python
615+
616+
{'hidden_layer_sizes': [28, 28]}
617+
618+
603619
The default fixed parameters (beyond those that ``scikit-learn`` sets) are:
604620

605621
AdaBoostClassifier and AdaBoostRegressor
@@ -1190,11 +1206,24 @@ SVR
11901206
{'C': [0.01, 0.1, 1.0, 10.0, 100.0]}
11911207
11921208
.. note::
1193-
Note that learners not listed here do not have any default
1194-
parameter grids in SKLL either because there are no
1195-
hyper-parameters to tune or decisions about which parameters
1196-
to tune (and how) depend on the data being used for the
1197-
experiment and are best left up to the user.
1209+
1. Learners not listed here do not have any default
1210+
parameter grids in SKLL either because there are no
1211+
hyper-parameters to tune or decisions about which parameters
1212+
to tune (and how) depend on the data being used for the
1213+
experiment and are best left up to the user.
1214+
2. Tuples are not supported in the config file, and will lead to parsing errors.
1215+
Make sure to replace tuples with lists when specifying fixed parameters.
1216+
As an example, consider the following parameter that's usually defined as a tuple in scikit-learn:
1217+
1218+
.. code-block:: python
1219+
1220+
{'hidden_layer_sizes': (28, 28)}
1221+
1222+
To specify it in `param_grids`, use a list instead:
1223+
1224+
.. code-block:: python
1225+
1226+
{'hidden_layer_sizes': [28, 28]}
11981227
11991228
12001229
.. _pos_label:

doc/tutorial.rst

+1-1
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ this is in a virtual environment. For this tutorial, we will
3434
use `conda <https://conda.io/projects/conda/en/latest/user-guide/install/index.html>`__
3535
for creating our virtual environment as follows::
3636

37-
conda create -n skllenv -c conda-forge -c ets python=3.9 skll
37+
conda create -n skllenv -c conda-forge -c ets python=3.11 skll
3838

3939
This will create a new virtual environment named ``skllenv`` with the
4040
latest release of SKLL which you can then activate by running

pyproject.toml

+6-2
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,12 @@ line-length = 100
44
target-version = ['py38']
55

66
[tool.ruff]
7-
select = ["D", "E", "F", "I"]
8-
ignore = ["D212"]
7+
extend-exclude = ["setup.py"]
8+
lint.select = ["D", "E", "F", "I"]
9+
lint.ignore = ["D212"]
910
line-length = 100
1011
target-version = "py38"
1112
fix = true
13+
14+
[mypy]
15+
exclude = '^setup\.py$'

requirements.txt

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ beautifulsoup4
22
coverage
33
joblib
44
nose2
5-
numpy
5+
numpy<2
66
pandas
77
pre-commit
88
ruamel.yaml

setup.py

+2-3
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ def requirements():
2121

2222
setup(
2323
name="skll",
24-
version=__version__, # noqa: F821
24+
version=__version__, # type: ignore # noqa: F821
2525
description=(
2626
"SciKit-Learn Laboratory makes it easier to run machine "
2727
"learning experiments with scikit-learn."
@@ -59,10 +59,9 @@ def requirements():
5959
"Operating System :: Unix",
6060
"Operating System :: MacOS",
6161
"Programming Language :: Python :: 3",
62-
"Programming Language :: Python :: 3.8",
63-
"Programming Language :: Python :: 3.9",
6462
"Programming Language :: Python :: 3.10",
6563
"Programming Language :: Python :: 3.11",
64+
"Programming Language :: Python :: 3.12",
6665
],
6766
zip_safe=False,
6867
)

skll/version.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -10,5 +10,5 @@
1010
:organization: ETS
1111
"""
1212

13-
__version__ = "4.0.1"
13+
__version__ = "5.0.0"
1414
VERSION = tuple(int(x) for x in __version__.split("."))

0 commit comments

Comments
 (0)