Release: PyCaret 3.0
This is a major update introducing multiple new features and bug fixes as well as breaking API changes. Please refer to the documentation and tutorials for more information.
PyCaret 2.0 code will most likely not run without changes!
Main changes
- New Time Series Forecasting module
- Far-reaching internal refactor for better performance, consistency and developer productivity
- New object-oriented API that can be used alongside the functional API
- Completely refactored preprocessing
- Prevented target leakage by using pipelines in cross-validation
- Compatibility with latest scikit-learn
- Support for scikit-learn-intelex for better performance on CPU
- New experiment logging API with MLFLow, Weights & Biases, DagsHub and CometML support
- Distributed parallel computation with Fugue
- Reworked tutorials and documentation
- Removal of outdated NLP and ARules modules
- Multiple other fixes and improvements
Full Changelog
- Black by @Yard1 in #836
- Black by @Yard1 in #838
- Added unit tests for simple imputer and fixed minor issues by @wkuopt in #974
- Added imputation strategy for time columns for simple imputer by @wkuopt in #978
- Fixed the cutoff of long text in png graphs by @wkuopt in #992
- Fixed Dummify for satisfying sklearn pipeline structure by @wkuopt in #1004
- added initial dataset per #1038 by @ngupta23 in #1044
- Time series metrics by @TremaMiguel in #1067
- Fixed Reduce_Dimensions_For_Supervised_Path for satisfying sklearn pipeline by @wkuopt in #1006
- Time series splitter by @TremaMiguel in #1082
- Time Series (create_model) - Initial PR by @ngupta23 in #1068
- Added more model types by @ngupta23 in #1089
- Time series ensemble models by @TremaMiguel in #1105
- tune_model + create_model updates by @ngupta23 in #1114
- Time Series metrics cleanup by @ngupta23 in #1119
- Time series seasonal parameter and fh splitting data. by @TremaMiguel in #1129
- Initial additions for Random Grid Search for Time Series by @ngupta23 in #1164
- Better Grid Search by @ngupta23 in #1173
- feat: compare time series models by @TremaMiguel in #1174
- Break up PycaretExperiment by @Yard1 in #1175
- Fixes circular imports by @ngupta23 in #1177
- Alternative approach to TS scikit models by @Yard1 in #1196
- added more scikit models along with proper grid search (previously placeholder only) by @ngupta23 in #1195
- Seasonality check Flag by @TremaMiguel in #1199
- Ts scikit models by @ngupta23 in #1198
- Improve create model + change seasonal_parameter to seasonal_period by @ngupta23 in #1210
- feat: Tbats and bats models by @TremaMiguel in #1243
- improved defaults and improved flow demonstration by @ngupta23 in #1242
- Ts datasets by @ngupta23 in #1247
- Ts moez feedback by @ngupta23 in #1256
- Cleaning up models by @ngupta23 in #1265
- Fold Strategy Updates by @ngupta23 in #1282
- Added catboost model by @ngupta23 in #1286
- [FEAT] Auto ARIMA by @ngupta23 in #1294
- tune_model fixes and cleanup by @ngupta23 in #1306
- Time Series predict_model by @ngupta23 in #1332
- finalize_model by @ngupta23 in #1340
- added dummylogger by @tvdboom in #1341
- Support for negative values in time series by @ngupta23 in #1347
- Support for custom folds by @ngupta23 in #1353
- fix for non default optimize metric by @ngupta23 in #1361
- added display for test metrics in predict model by @ngupta23 in #1363
- Added cutoffs to score dataframe by @ngupta23 in #1370
- fix: time series model types available by @TremaMiguel in #1354
- fix: Blend model voting with weight Uniforms by @TremaMiguel in #1375
- fix for compare_model folds by @ngupta23 in #1378
- Added R2 metric container by @ngupta23 in #1380
- feat: Prophet model by @TremaMiguel in #1279
- Add polynomial_features to preprocessing by @IncubatorShokuhou in #1434
- initial changes until splitters by @ngupta23 in #1462
- more updates to make sktime 0.7.0 compatible. Disabled ensemble/blend for now by @ngupta23 in #1466
- fix: blending compatible with sktime 0.7.0 by @TremaMiguel in #1469
- Add transformation by @IncubatorShokuhou in #1451
- Ts sktime 0p7 by @ngupta23 in #1493
- Added test_model functionality by @ngupta23 in #1495
- [timeseries] Fix
_fit_and_score
metrics not getting their kwargs by @Yard1 in #1512 - Use
__getattr__
in pipeline for fit vars by @Yard1 in #1511 - Added Time Series Plots by @satya-pattnaik in #1544
- plot_model functionality by @ngupta23 in #1513
- Multiple Time Series Fixes and Enhancements by @ngupta23 in #1585
- Update Plots by @ngupta23 in #1587
- Time series fix #1558, #1556, bad assert in
compare_models
, etc. by @Yard1 in #1586 - Ts plot modifications by @satya-pattnaik in #1614
- Further fixes to time series module by @ngupta23 in #1615
- Fix
load_model()
not working without runningsetup()
first by @Yard1 in #1617 - Fix Stats Index by @ngupta23 in #1619
- Multiple Fixes and Residual Analysis Added by @ngupta23 in #1620
- Pycaret time series - Added Decomp Plots(classical/STL) by @satya-pattnaik in #1657
- Added decomposition plot by @satya-pattnaik in #1647
- added decomp wrapper per #1580 and cleanup by @ngupta23 in #1661
- Option to enforce Predicton Interval by @ngupta23 in #1662
- chanegs per #1663 by @ngupta23 in #1664
- Time Series Bug Fixes and Error Handling by @ngupta23 in #1668
- Fix MLFlow logging for Time Series by @Yard1 in #1673
- Refactor unit tests by @ngupta23 in #1687
- Time Series fixes before Beta Release by @ngupta23 in #1704
- Datasets + Plot Model fixes by @ngupta23 in #1712
master
totime_series
by @Yard1 in #1706- Fix mlflow params logging by @Yard1 in #1718
- fix added for #1713 which broke because of prev fix for #1702 by @ngupta23 in #1719
- update docstrings for pycaret.time_series by @moezali1 in #1717
- more updates to time_series docstring by @moezali1 in #1729
- Update requirements.txt by @Yard1 in #1733
- Update requirements.txt by @Yard1 in #1734
- Fix
log_plots
functionality by @Yard1 in #1737 - Pin statsmodels, plotly by @Yard1 in #1738
- TS beta fixes by @ngupta23 in #1742
- Time series Beta Release updates by @ngupta23 in #1743
- Fix custom grids for time series by @Yard1 in #1776
- Ts fixes by @ngupta23 in #1774
- Time series fixes to push to beta release by @ngupta23 in #1784
- Logging and MLFlow enhancements & fixes by @ngupta23 in #1789
- Dataset fixes by @ngupta23 in #1781
- streamlit support per #1783 by @ngupta23 in #1798
- Grand Means Model + tune_model choose_better default value change by @ngupta23 in #1806
- Time series docs by @Yard1 in #1815
- streamlit fix by @ngupta23 in #1820
- Time series updated Beta Release by @ngupta23 in #1823
- Fixes for Time Series Beta Release by @ngupta23 in #1824
- Revert "Fixes for Time Series Beta Release" by @ngupta23 in #1826
- fix for no fig.show and added return_fig arg per #1699 by @ngupta23 in #1831
- Time series by @ngupta23 in #1841
- improved default grid definition for CdsCt per #1846 by @ngupta23 in #1861
- fix to eq functions for naive models per #1812 by @ngupta23 in #1860
- added column for point estimate within pi (outlier or not) in support of #1836 by @ngupta23 in #1863
- Revert "added column for point estimate within pi (outlier or not) in support of #1836" by @ngupta23 in #1869
- fix for wrong arguments to create model by @ngupta23 in #1879
- Fixed tuning of custom models by @ngupta23 in #1878
- fix for non-continuous fh per #1865 by @ngupta23 in #1880
- Add support for metrics with custom arguments like MASE, INPI by @Yard1 in #1891
- Metrics fix for INPI by @ngupta23 in #1903
- Time series Beta Release Update by @ngupta23 in #1908
- add RMSSE by @ltsaprounis in #1924
- Added support for alphanumeric frequencies by @sayantan1410 in #1912
- Add
IterativeImputer
by @Yard1 in #1948 - refactored time series tests per #1892 by @ngupta23 in #1958
- Croston by @AJarman in #1960
sp_to_use
for time series decomposition plot. by @satya-pattnaik in #1994- Fixed return_data parameter for a few functions by @sayantan1410 in #1966
- completed fix for correct seasonal fix in decomp plots by @ngupta23 in #2028
- made unit tests more modular per #2029 by @ngupta23 in #2030
- Refactor Time Series Experiment setup method by @ngupta23 in #2036
- Changed name INPI to Cov_Prob by @sayantan1410 in #2066
- Fix for short time series - recommended_D test failure closes #2068 by @ngupta23 in #2076
- Added Time Series difference plot by @ngupta23 in #2040
- fix for COV_PROB metric by @ngupta23 in #2087
- Enhance Time Series Difference Plots - Closes #1654 by @ngupta23 in #2086
- cleaned up 101, added new features and reran by @ngupta23 in #2095
- Time series Jan 2022 Release by @ngupta23 in #2099
- Support for univariate forecasting with exogenous variables by @ngupta23 in #2064
- Time series models to use sp_to_use by @drmario-gh in #2101
- Add Test for lags Closes #1655 by @ngupta23 in #2100
- Time Series changed X to integer based indexing in _fit_and_score by @ngupta23 in #2108
- Fix for breaking release by @ngupta23 in #2119
- Fix for Prophet with Exogenous Variables by @ngupta23 in #2109
- Added plotting of frequency components by @ngupta23 in #2130
- fix for sktime 0.10 + major refactor (cleanup) by @ngupta23 in #2131
- Added show_versions Closes #2132 by @ngupta23 in #2135
- Plotting updates + Bug Fixes for Univariate Forecasting with exogenous variables by @ngupta23 in #2149
- Allows to specify a list as seasonal_period and uses multiple seasonalities in TBATS by @drmario-gh in #2152
- Making rendering of plots faster by @ngupta23 in #2164
- Provide option to enforce models that support exogenous variables only by @ngupta23 in #2171
- Multiple changes for Time Series Experiment & Plotting by @ngupta23 in #2182
- fixed value error when dataset address was given by @sayantan1410 in #2185
- Alphanumeric frequency support in Time Series by @ngupta23 in #2201
- Ts fix feb by @ngupta23 in #2212
- Fix and Enhancement for Feb Time Series release by @ngupta23 in #2220
- Fix for PACF & Global Imports by @ngupta23 in #2227
- Rename
sp_to_use
variables by @ngupta23 in #2250 - Refactored Time Series Forecasting by @ngupta23 in #2251
- Preprocess time series by @ngupta23 in #1921
- Preprocess revamping by @tvdboom in #1492
- improved imputation strategies by @tvdboom in #2256
- Time Series Plotting Enhancements by @ngupta23 in #2262
- Refactor Functional and OOP modules for all tasks by @ngupta23 in #2271
- Time Series Preprocessing - Imputing & Exogenous model extension by @ngupta23 in #2274
- Refactor dependencies by @tvdboom in #2272
- TS Transform, Scale, Save, Load, Refactor by @ngupta23 in #2279
- added support for multiple model forecasts per #1616 by @ngupta23 in #2306
- Refactored predict_model, unified fh handling by @ngupta23 in #2328
- Refactor dependencies by @tvdboom in #2336
- Updated ACF and PACF plots to reuse subplot logic directly by @ryanxjhan in #2346
- Added warning for not running setup before other functions by @ryanxjhan in #2354
- Fix for prediction intervals with pipelines by @ngupta23 in #2360
- Time Series Notebooks by @ngupta23 in #2363
- Use PyCaret's Display class instead of IPython by @Yard1 in #2365
- support for business week plus more seasonal periods per #1854 by @ngupta23 in #2367
- Multiple fixes by @ngupta23 in #2389
- Time Series - Metrics with missing data by @ngupta23 in #2395
- Time Series plotting enhancement by @ngupta23 in #2405
- implemented changes for #2368 and added unit tests by @ngupta23 in #2407
- Missing Data plot fixes by @ngupta23 in #2413
- Ts plot miss data by @ngupta23 in #2416
- Refactor import * reference to only import necessary functions #2423 by @NeptuneN in #2433
- Refactor import * reference to only import explicit functions #2434 by @NeptuneN in #2435
- changes to
check_stats
,setup
display & arguments by @ngupta23 in #2429 - implemented some plots for multiple estimators per #2418 by @ngupta23 in #2436
- Cleanup: Dependencies, Soft Dependencies & Version Documentation by @ngupta23 in #2422
- Support custom metric in ParallelBackend by @goodwanghan in #2448
- Create lock_old_threads workflow by @Yard1 in #2456
- Limit test concurrency & only run push test on master by @Yard1 in #2457
- Merge
master
totime_series
by @Yard1 in #2453 - Merge
time_series
to develop (3.0) by @Yard1 in #2468 - Fix
check_fairness
for multiclass by @Yard1 in #2472 - Upgrade to sktime 0.11.3 + changes for prediction deprecations by @ngupta23 in #2481
- Updated logging in
show_versions
by @ngupta23 in #2484 - Added setup checks in all base libraries instead of Time Series by @ngupta23 in #2485
- Initialize pycaret with numpy array or sparse matrix by @tvdboom in #2504
- fixes by @tvdboom in #2503
- Better error message by @ngupta23 in #2486
- Updated pipeline to use sktime directly by @ngupta23 in #2517
- Fix test data by @tvdboom in #2530
- Styling by @tvdboom in #2531
- Create PyCaret for Machine Learning.md by @Abonia1 in #2471
- Fixes clustering anomaly by @ngupta23 in #2545
- Fix #2547 by @Yard1 in #2550
- Update the regression-tutorial notebook in Japanese by @caron14 in #2515
- updated requirements to fix #2542 for 3.0.0rc1 release by @ngupta23 in #2551
- Fix #2534 by @Yard1 in #2549
- Time Series default metric updated by @ngupta23 in #2544
- Small fixes and notebook updates by @ngupta23 in #2555
- fix github issues by @tvdboom in #2558
- Fix plotting returns (#2547) by @Yard1 in #2557
- added pipeline plot by @tvdboom in #2566
- added feature_names_in by @tvdboom in #2569
- fix for unsupervised experiment plotting by @ngupta23 in #2574
- Implements engines per #2323 (without aggregators) by @ngupta23 in #2552
- refactor_plot_pipeline by @tvdboom in #2571
- Fix
predict_model
without first runningsetup
by @Yard1 in #2572 - convert model doc fix by @moezali1 in #2576
- addset docstring to oop setup for clf and reg by @moezali1 in #2595
- Display Enhancements by @Yard1 in #2598
- Add private versions of some methods, fix plots by @Yard1 in #2597
- Time Series - fix index checks by @ngupta23 in #2609
- Fugue for PyCaret3 by @goodwanghan in #2604
- Improve persistence by @Yard1 in #2612
- Fix imbalance by @tvdboom in #2606
- Ensure docstring consistency, remove
silent
arg by @Yard1 in #2611 - Fugue: Fix session id and display by @goodwanghan in #2620
- Fix colab install by @Yard1 in #2623
- Pycaret 3.0 RC1 by @Yard1 in #2624
- Lazily show versions of optional imports by @Yard1 in #2632
- add portuguese tutorial (CLF101) by @LucasSerra in #2619
- Fix text features by @tvdboom in #2643
- Remove
n_jobs
from ARIMA by @Yard1 in #2664 - Pin
sktime~=0.11.4
by @Yard1 in #2672 - Created an enum class for allowed time series plot data types and replaced string usages with TSAllowedPlotDataTypes Enum instances by @desaizeeshan22 in #2655
- Fix bad
choose_better
output by @Yard1 in #2679 - Corrected output timing of model successfully loaded messages by @rhoboro in #2678
- Fix type hints by @daikikatsuragawa in #2663
- [ENH] ✨ integrate plotly-resampler within time-series
plot_model
by @jonasvdd in #2671 - added sklearnex engine (initial intel extension for scikit-learn support) by @PivovarA in #2677
- fold_strategy_docfix by @moezali1 in #2699
- docfix anomaly by @moezali1 in #2698
- fix finalize_model by @tvdboom in #2647
- add validation case for timeseries split by @ykskks in #2705
- Add verbose conditional to the print() statements. Closes #2703 by @chrimaho in #2715
- fixes 3 issues by @tvdboom in #2722
- Added additional library to resolve importing error by @dubeyakshat07 in #2709
- Fix edge case bug with memory issues by @tvdboom in #2752
- Update
create_api
to add pydantic input and output by @AnthonyA1223 in #2700 - Pin fugue~=0.6.6 by @Yard1 in #2776
- added rare category grouping by @tvdboom in #2768
- Improve dependency checking by @Yard1 in #2782
- updated to sktime 13.0 by @ngupta23 in #2792
- Add
create_date_columns
, replace column names inpredict_model
by @tvdboom in #2798 - Fix iterative imputation clustering by @tvdboom in #2812
- Add ML library versions to pickle file for compatibility by @rhoboro in #2751
- Fix for time series forecast horizon with gaps and exogenous variables by @ngupta23 in #2820
- added index handling by @tvdboom in #2826
- fix error catb by @tvdboom in #2841
- Move tests by @tvdboom in #2839
- fix by @tvdboom in #2846
- Updated sktime to 0.13.1 to fix #2771 by @ngupta23 in #2847
- totally run of tutorial by @ArtificialZeng in #2762
- Fix typo by @cspartalis in #2845
- fix for failing time series tests due to pmdarima 2.0.0 by @ngupta23 in #2901
- Documentation update - fixed broken links by @vladocodes in #2892
- adding stand alone docker files for slim and full version. by @mfahadakbar in #2909
- Added Intel Accelarator support for Time Series by @ngupta23 in #2898
- Translate 2 CLF tutorials in Greek and fix very few typos. by @cspartalis in #2858
- fix for
use_gpu
by @ngupta23 in #2896 - fix bugs in preprocessing, predict_model and create_app by @tvdboom in #2866
- fix create_api and wrong engine bug by @tvdboom in #2922
- Updates Time Series Section by @ngupta23 in #2925
- Added python version 3.10 by @ngupta23 in #2802
- Do not print logging output in Jupyter by @Yard1 in #2956
- Change engine param name and fix create_api by @tvdboom in #2962
- flake8 except line length by @tvdboom in #2968
- Log experiment USI in MLFlow correctly by @Yard1 in #2982
- Remove the duplicate word "the" by @huangzhhui in #2973
- Time Series test fix by @ngupta23 in #3026
- Fix for prediction limits (time series) by @ngupta23 in #3031
- Update optuna to v3 by @keisuke-umezawa in #2932
- Fixes time series setup issue on Colab by @ngupta23 in #3028
- Modularize customization of time series plots by @ryankarlos in #3009
- Relaxes library versions for dependencies by @ngupta23 in #3030
- cat imputation default to mode by @tvdboom in #3035
- Update requirements.txt by @celestinoxp in #3013
- fix import and train test split bugs by @tvdboom in #3056
- Add mlflow EDA logging in setup by @ryankarlos in #3010
- fix groups by @tvdboom in #3057
- add deepcheks, fix groups and pin fairlearn by @tvdboom in #3070
- Fix
automl
withuse_holdout
(#2924) by @Yard1 in #3086 - Update sktime links, add tuning grids for Dummy models by @celestinoxp in #3074
- removing extra auc plot checking by @qubiit in #3000
- Remove extra renderer check in _resolve_renderer by @Yard1 in #3098
- Resolve blockers to using cuML as a computational backend by @beckernick in #3096
- updated to match sktime by @ngupta23 in #3100
- Updates to Reduced Regression Models by @ngupta23 in #3109
- fix groups in plots by @tvdboom in #3101
- Custom feature engineering in time series by @ngupta23 in #3110
- Fix for time series pipeline order and renamed argument by @ngupta23 in #3119
- Aligning
get_config
with class attributes by @ngupta23 in #3117 - fix unsupervised predict_model by @tvdboom in #3127
- small fixes by @moezali1 in #3115
- Enforce X86 platform spec for scikit-learn-intelex package by @napetrov in #3136
- added deprecation warnings by @ngupta23 in #3146
- finalize model fix by @ngupta23 in #3145
- resolved FutureWarning by @ngupta23 in #3148
- time tests to improve runtimes later by @ngupta23 in #3149
- removing old time series class from library by @ngupta23 in #3153
- Auto Seasonal Period Detection by @ngupta23 in #3151
- Fix model equality functions, add test by @Yard1 in #3147
- Fix wandb artifacts by @Yard1 in #3165
- fix docs by @tvdboom in #3157
- Close display in
get_leaderboard
by @Yard1 in #3171 - Added ability to filter out harmonics in seasonal detection by @ngupta23 in #3169
- Persistence rework by @Yard1 in #3170
- Allow None in
get_config
by @Yard1 in #3185 - fix for sktime 0.15.0 by @ngupta23 in #3198
- Fix display detection on non-jupyter Colab by @Yard1 in #3206
- Pin pydantic, remove Ray python requirements by @Yard1 in #3216
- Fixed Time Series Plotting for some cases by @ngupta23 in #3213
- initial implementation for #3202 by @ngupta23 in #3214
- Return unmodified dataframe in
predict_model
by @Yard1 in #3207 - Fix IterativeImputer if only one data type is used by @Yard1 in #3231
- Added DagsHub Logger Support by @jinensetpal in #3211
- Less restrictive column character validation by @tvdboom in #3238
- Update checkout version in GH workflows by @Yard1 in #3248
- Break up skelarnex engine tests, disable SVM in CI by @Yard1 in #3240
- Fix/return all cols in predict_model() by @erwanlc in #3251
- initial class isolation by @ngupta23 in #3257
- Optimize threshold improvement by @Yard1 in #3280
- Upgrade Fugue to 0.8.0 by @goodwanghan in #3275
- Update sklearnex requirements by @Alexsandruss in #3267
- Drift report rework by @Yard1 in #3262
- removed deprecated arguments in sklearn 1.2 by @ngupta23 in #3258
- Improve memory/hashing performance by @Yard1 in #3236
- Seasonal Period Detection Improvements by @ngupta23 in #3284
- [Time Series] Fixed handling of integer indices through data frame column by @ngupta23 in #3282
- Fix incompatible types by @daikikatsuragawa in #3081
- Update Tutorial: Add Japanese Binary Classification Tutorial - Beginner by @caron14 in #3274
- Pin black, isort, flake8 versions in CI by @Yard1 in #3294
- Fix issues with RAPIDS models by @Yard1 in #3286
- Add support for Comet Logging by @sherpan in #3289
- Fix yellowbrick plots being saved without legend by @Yard1 in #3297
- Remove
tune_model
from unsupervised by @Yard1 in #3298 - Fix nested mlflow logging by @Yard1 in #3261
- Update Binary Classification Tutorial Level Beginner (中文) - CLF101.i… by @Danpilz in #3290
- sklearnex clustering compatibility by @ethanglaser in #3300
- Remove NLP and ARules modules by @Yard1 in #3299
- added notebook tests and pre-commit-hooks for isort and flake8 by @tvdboom in #3252
- fix for sktime 0.16.1 release by @ngupta23 in #3312
- Fix errors detected by mypy by @daikikatsuragawa in #3334
- Time Series Cutoff presentation fix by @ngupta23 in #3335
- Added option to force usage of a seasonal period by @ngupta23 in #3336
- Fix weights not being set in
blend_models
by @kumar21120 in #3343 - Update broken link by @haizadtarik in #3342
- Move
CleanColumnNames
to the end of pipeline by @Yard1 in #3346 - Pin plotly-resampler>=0.8.3.1 by @Yard1 in #3361
- Redirect C-level and child output, warn on metric failure by @Yard1 in #3359
- Ensure that binary metric arguments are correct by @Yard1 in #3360
- Update to pyod>=1.0.8 and remove patches by @Yard1 in #3381
- fix categorical columns when numerical by @tvdboom in #3367
- Fix all Time Series Notebooks by @ngupta23 in #3388
- Set upper limit of joblib memory at 10GB by @Yard1 in #3391
- Fix hashing of custom classes by @Yard1 in #3393
- Install Ray on Windows by @Yard1 in #3392
- Fix
predict_model
with target transformation by @Yard1 in #3379 - fix data attributes and add random_state to remove outliers by @tvdboom in #3382
- made oop and functional API same by @ngupta23 in #3408
- switched to static renderer to save space by @ngupta23 in #3409
- Remove nightly build, bump version to 3.0.0 by @Yard1 in #3411
New Contributors
- @tvdboom made their first contribution in #1341
- @satya-pattnaik made their first contribution in #1544
- @ltsaprounis made their first contribution in #1924
- @sayantan1410 made their first contribution in #1912
- @AJarman made their first contribution in #1960
- @drmario-gh made their first contribution in #2101
- @NeptuneN made their first contribution in #2433
- @Abonia1 made their first contribution in #2471
- @LucasSerra made their first contribution in #2619
- @desaizeeshan22 made their first contribution in #2655
- @rhoboro made their first contribution in #2678
- @jonasvdd made their first contribution in #2671
- @PivovarA made their first contribution in #2677
- @ykskks made their first contribution in #2705
- @chrimaho made their first contribution in #2715
- @AnthonyA1223 made their first contribution in #2700
- @ArtificialZeng made their first contribution in #2762
- @cspartalis made their first contribution in #2845
- @vladocodes made their first contribution in #2892
- @huangzhhui made their first contribution in #2973
- @keisuke-umezawa made their first contribution in #2932
- @ryankarlos made their first contribution in #3009
- @celestinoxp made their first contribution in #3013
- @qubiit made their first contribution in #3000
- @beckernick made their first contribution in #3096
- @napetrov made their first contribution in #3136
- @jinensetpal made their first contribution in #3211
- @erwanlc made their first contribution in #3251
- @Alexsandruss made their first contribution in #3267
- @sherpan made their first contribution in #3289
- @Danpilz made their first contribution in #3290
- @ethanglaser made their first contribution in #3300
- @kumar21120 made their first contribution in #3343
- @haizadtarik made their first contribution in #3342
Full Changelog: 2.3.10...3.0.0