Release Notes#

v1.31.0 May 14, 2024#

  • Enhancements
    • Add support for Python 3.12 (GH#2713)

  • Fixes
    • Move flatten_list util function into feature_discovery module to fix import bug (GH#2702)

  • Changes
    • Temporarily restrict Dask version (GH#2694)

    • Remove support for creating EntitySets from Dask or Pyspark dataframes (GH#2705)

    • Bump minimum versions of tqdm and pip in requirements files (GH#2716)

    • Use filter arg in call to tarfile.extractall to safely deserialize EntitySets (GH#2722)

  • Testing Changes
    • Fix serialization test to work with pytest 8.1.1 (GH#2694)

    • Update to allow minimum dependency checker to run properly (GH#2709)

    • Update pull request check CI action (GH#2720)

    • Update release notes updated check CI action (GH#2726)

Thanks to the following people for contributing to this release: @thehomebrewnerd

Breaking Changes#

  • With this release of Featuretools, EntitySets can no longer be created from Dask or Pyspark dataframes. The behavior when using pandas dataframes to create EntitySets remains unchanged.

v1.30.0 Feb 26, 2024#

  • Changes
    • Update min requirements for numpy, pandas and Woodwork (GH#2681)

    • Update release notes version for release(GH#2689)

  • Testing Changes
    • Update make_ecommerce_entityset to work without Dask (GH#2677)

Thanks to the following people for contributing to this release: @tamargrey, @thehomebrewnerd

v1.29.0 Feb 16, 2024#

Warning

This release of Featuretools will not support Python 3.8

  • Fixes
    • Fix dependency issues (GH#2644, GH#2656)

    • Add workaround for pandas 2.2.0 bug with nunique and unpin pandas deps (GH#2657)

  • Changes
    • Fix deprecation warnings with is_categorical_dtype (GH#2641)

    • Remove woodwork, pyarrow, numpy, and pandas pins for spark installation (GH#2661)

  • Documentation Changes
    • Update Featuretools logo to display properly in dark mode (GH#2632)

    • Remove references to premium primitives while release isnt possible (GH#2674)

  • Testing Changes
    • Update tests for compatibility with new versions of holidays (GH#2636)

    • Update ruff to 0.1.6 and use ruff linter/formatter (GH#2639)

    • Update release.yaml to use trusted publisher for PyPI releases (GH#2646, GH#2653, GH#2654)

    • Update dependency checkers and tests to include Dask (GH#2658)

    • Fix the tests that run with Woodwork main so they can be triggered (GH#2657)

    • Fix minimum dependency checker action (GH#2664)

    • Fix Slack alert for tests with Woodwork main branch (GH#2668)

Thanks to the following people for contributing to this release: @gsheni, @thehomebrewnerd, @tamargrey, @LakshmanKishore

v1.28.0 Oct 26, 2023#

  • Fixes
    • Fix bug with default value in PercentTrue primitive (GH#2627)

  • Changes
    • Refactor featuretools/tests/primitive_tests/utils.py to leverage list comprehensions for improved Pythonic quality (GH#2607)

    • Refactor can_stack_primitive_on_inputs (GH#2522)

    • Update s3 bucket for docs image (GH#2593)

    • Temporarily restrict pandas max version to <2.1.0 and pyarrow to <13.0.0 (GH#2609)

    • Update for compatibility with pandas version 2.1.0 and remove pandas upper version restriction (GH#2616)

  • Documentation Changes
    • Fix badge on README for tests (GH#2598)

    • Update readthedocs config to use build.os (GH#2601)

  • Testing Changes
    • Update airflow looking glass performance tests workflow (GH#2615)

    • Removed old performance testing workflow (GH#2620)

Thanks to the following people for contributing to this release: @gsheni, @petejanuszewski1, @thehomebrewnerd, @tosemml

v1.27.0 Jul 24, 2023#

  • Enhancements
    • Add support for Python 3.11 (GH#2583)

    • Add support for pandas v2.0 (GH#2585)

  • Changes
    • Remove natural language primitives add-on (GH#2570)

    • Updates to address various warnings (GH#2589)

  • Testing Changes
    • Run looking glass performance tests on merge via Airflow (GH#2575)

Thanks to the following people for contributing to this release: @gsheni, @petejanuszewski1, @sbadithe, @thehomebrewnerd

v1.26.0 Apr 27, 2023#

  • Enhancements
    • Introduce New Single-Table DFS Algorithm (GH#2516). This includes experimental functionality and is not officially supported.

    • Add premium primitives install command (GH#2545)

  • Fixes
    • Fix Description of DaysInMonth (GH#2547)

  • Changes
    • Make Dask an optional dependency (GH#2560)

Thanks to the following people for contributing to this release: @dvreed77, @gsheni, @thehomebrewnerd

Breaking Changes#

  • Dask is now an optional dependency of Featuretools. Users that run calculate_feature_matrix with n_jobs set to anything other than 1, will now need to install Dask prior to running calculate_feature_matrix. The required Dask dependencies can be installed with pip install "featuretools[dask]".

v1.25.0 Apr 13, 2023#

  • Enhancements
    • Add MaxCount, MedianCount, MaxMinDelta, NUniqueDays, NMostCommonFrequency,

      NUniqueDaysOfCalendarYear, NUniqueDaysOfMonth, NUniqueMonths, NUniqueWeeks, IsFirstWeekOfMonth (GH#2533)

    • Add HasNoDuplicates, NthWeekOfMonth, IsMonotonicallyDecreasing, IsMonotonicallyIncreasing,

      IsUnique (GH#2537)

  • Fixes
    • Fix release notes header version (GH#2544)

  • Changes
    • Restrict pandas to < 2.0.0 (GH#2533)

    • Upgrade minimum pandas to 1.5.0 (GH#2537)

    • Removed the Correlation and AutoCorrelation primitive as these could lead to data leakage (GH#2537)

    • Remove IntegerNullable support for Kurtosis primitive (GH#2537)

Thanks to the following people for contributing to this release: @gsheni

v1.24.0 Mar 28, 2023#

  • Enhancements
    • Add AverageCountPerUnique, CountryCodeToContinent, FileExtension, FirstLastTimeDelta, SavgolFilter,

      CumulativeTimeSinceLastFalse, CumulativeTimeSinceLastTrue, PercentChange, PercentUnique (GH#2485)

    • Add FullNameToFirstName, FullNameToLastName, FullNameToTitle, AutoCorrelation,

      Correlation, DateFirstEvent (GH#2507)

    • Add Kurtosis, MinCount, NumFalseSinceLastTrue, NumPeaks,

      NumTrueSinceLastFalse, NumZeroCrossings (GH#2514)

  • Fixes
    • Pin github-action-check-linked-issues to 1.4.5 (GH#2497)

    • Support Woodwork’s update numeric inference (integers as strings) (GH#2505)

    • Update SubtractNumeric Primitive with commutative class property (GH#2527)

  • Changes
    • Separate Makefile command for core requirements, test requirements and dev requirements (GH#2518)

Thanks to the following people for contributing to this release: @dvreed77, @gsheni, @ozzieD

v1.23.0 Feb 15, 2023#

  • Changes
    • Change TotalWordLength and UpperCaseWordCount to return IntegerNullable (GH#2474)

  • Testing Changes
    • Add GitHub Actions cache to speed up workflows (GH#2475)

    • Fix latest dependency checker install command (GH#2476)

    • Add pull request check for linked issues to CI workflow (GH#2477, GH#2481)

    • Remove make package from lint workflow (GH#2479)

Thanks to the following people for contributing to this release: @dvreed77, @gsheni, @sbadithe

v1.22.0 Jan 31, 2023#

  • Enhancements
    • Add AbsoluteDiff, SameAsPrevious, Variance, Season, UpperCaseWordCount transform primitives (GH#2460)

  • Fixes
    • Fix bug with consecutive spaces in NumWords (GH#2459)

    • Fix for compatibility with holidays v0.19.0 (GH#2471)

  • Changes
    • Specify black and ruff config arguments in pre-commit-config (GH#2456)

    • NumCharacters returns null given null input (GH#2463)

  • Documentation Changes
    • Update release.md with instructions for launching Looking Glass performance test runs (GH#2461)

    • Pin jupyter-client==7.4.9 to fix broken documentation build (GH#2463)

    • Unpin jupyter-client documentation requirement (GH#2468)

  • Testing Changes
    • Add test suites for NumWords and NumCharacters primitives (GH#2459, GH#2463)

Thanks to the following people for contributing to this release: @gsheni, @rwedge, @sbadithe, @thehomebrewnerd

v1.21.0 Jan 18, 2023#

  • Enhancements
    • Add get_recommended_primitives function to featuretools (GH#2398)

  • Changes
    • Update build_docs workflow to only run for Python 3.8 and Python 3.10 (GH#2447)

  • Documentation Changes
    • Minor fix to release notes (GH#2444)

  • Testing Changes
    • Add test that checks for Natural Language primitives timing out against edge-case input (GH#2429)

    • Fix test compatibility with composeml 0.10 (GH#2439)

    • Minimum dependency unit test jobs do not abort if one job fails (GH#2437)

    • Run Looking Glass performance tests on merge to main (GH#2440, GH#2441)

    • Add ruff for linting and replace isort/flake8 (GH#2448)

Thanks to the following people for contributing to this release: @gsheni, @ozzieD, @rwedge, @sbadithe, @thehomebrewnerd

v1.20.0 Jan 5, 2023#

  • Enhancements
    • Add TimeSinceLastFalse, TimeSinceLastMax, TimeSinceLastMin, and TimeSinceLastTrue primitives (GH#2418)

    • Add MaxConsecutiveFalse, MaxConsecutiveNegatives, MaxConsecutivePositives, MaxConsecutiveTrue, MaxConsecutiveZeros, NumConsecutiveGreaterMean, NumConsecutiveLessMean (GH#2420)

  • Fixes
    • Fix typo in _handle_binary_comparison function name and update set_feature_names docstring (GH#2388)

    • Only allow Datetime time index as input to RateOfChange primitive (GH#2408)

    • Prevent catastrophic backtracking in regex for NumberOfWordsInQuotes (GH#2413)

    • Fix to eliminate fragmentation PerformanceWarning in feature_set_calculator.py (GH#2424)

    • Fix serialization of NumberOfCommonWords feature with custom word_set (GH#2432)

    • Improve edge case handling in NaturalLanguage primitives by standardizing delimiter regex (GH#2423)

    • Remove support for Datetime and Ordinal inputs in several primitives to prevent creation of Features that cannot be calculated (GH#2434)

  • Changes
    • Refactor _all_direct_and_same_path by deleting call to _features_have_same_path (GH#2400)

    • Refactor _build_transform_features by iterating over input_features once (GH#2400)

    • Iterate only once over ignore_columns in DeepFeatureSynthesis init (GH#2397)

    • Resolve empty Pandas series warnings (GH#2403)

    • Initialize Woodwork with init_with_partial_schama instead of init in EntitySet.add_last_time_indexes (GH#2409)

    • Updates for compatibility with numpy 1.24.0 (GH#2414)

    • The delimiter_regex parameter for TotalWordLength has been renamed to do_not_count (GH#2423)

  • Documentation Changes
    • Remove unused sections from 1.19.0 notes (GH#2396)

Thanks to the following people for contributing to this release: @gsheni, @rwedge, @sbadithe, @thehomebrewnerd

Breaking Changes#

  • The delimiter_regex parameter for TotalWordLength has been renamed to do_not_count. Old saved features that had a non-default value for the parameter will no longer load.

  • Support for Datetime and Ordinal inputs has been removed from the LessThanScalar, GreaterThanScalar, LessThanEqualToScalar and GreaterThanEqualToScalar primitives.

v1.19.0 Dec 9, 2022#

  • Enhancements
    • Add OneDigitPostalCode and TwoDigitPostalCode primitives (GH#2365)

    • Add ExpandingCount, ExpandingMin, ExpandingMean, ExpandingMax, ExpandingSTD, and ExpandingTrend primitives (GH#2343)

  • Fixes
    • Fix DeepFeatureSynthesis to consider the base_of_exclude family of attributes when creating transform features(GH#2380)

    • Fix bug with negative version numbers in test_version (GH#2389)

    • Fix bug in MultiplyNumericBoolean primitive that can cause an error with certain input dtype combinations (GH#2393)

  • Testing Changes
    • Fix version comparison in test_holiday_out_of_range (GH#2382)

Thanks to the following people for contributing to this release: @sbadithe, @thehomebrewnerd

v1.18.0 Nov 15, 2022#

  • Enhancements
    • Add RollingOutlierCount primitive (GH#2129)

    • Add RateOfChange primitive (GH#2359)

  • Fixes
    • Sets uses_full_dataframe for Rolling* and Exponential* primitives (GH#2354)

    • Updates for compatibility with upcoming Woodwork release 0.21.0 (GH#2363)

    • Updates demo dataset location to use new links (GH#2366)

    • Fix test_holiday_out_of_range after holidays release 0.17 (GH#2373)

  • Changes
    • Remove click and CLI functions (list-primitives, info) (GH#2353, GH#2358)

  • Documentation Changes
    • Build docs in parallel with Sphinx (GH#2351)

    • Use non-editable install to allow local docs build (GH#2367)

    • Remove primitives.featurelabs.com website from documentation (GH#2369)

  • Testing Changes
    • Replace use of pytest’s tmpdir fixture with tmp_path (GH#2344)

Thanks to the following people for contributing to this release: @gsheni, @rwedge, @sbadithe, @tamargrey, @thehomebrewnerd

Breaking Changes#

  • The featuretools CLI has been completely removed.

v1.17.0 Oct 31, 2022#

  • Enhancements
    • Add featuretools-sklearn-transformer as an extra installation option (GH#2335)

    • Add CountAboveMean, CountBelowMean, CountGreaterThan, CountInsideNthSTD, CountInsideRange, CountLessThan, CountOutsideNthSTD, CountOutsideRange (GH#2336)

  • Changes
    • Restructure primitives directory to use individual primitives files (GH#2331)

    • Restrict 2022.10.1 for dask and distributed (GH#2347)

  • Documentation Changes
    • Add Featuretools-SQL to Install page on documentation (GH#2337)

    • Fixes broken link in Featuretools documentation (GH#2339)

Thanks to the following people for contributing to this release: @gsheni, @rwedge, @sbadithe, @thehomebrewnerd

v1.16.0 Oct 24, 2022#

  • Enhancements
    • Add ExponentialWeighted primitives and DateToTimeZone primitive (GH#2318)

    • Add 14 natural language primitives from nlp_primitives library (GH#2328)

  • Documentation Changes
    • Fix typos in aggregation_primitive_base.py and features_deserializer.py (GH#2317) (GH#2324)

    • Update SQL integration documentation to reflect Snowflake compatibility (GH#2313)

  • Testing Changes
    • Add Windows install test (GH#2330)

Thanks to the following people for contributing to this release: @gsheni, @sbadithe, @thehomebrewnerd

v1.15.0 Oct 6, 2022#

  • Enhancements
    • Add series_library attribute to EntitySet dictionary (GH#2257)

    • Leverage Library Enum inheriting from str (GH#2275)

  • Changes
    • Change default gap for Rolling* primitives from 0 to 1 to prevent accidental leakage (GH#2282)

    • Updates for pandas 1.5.0 compatibility (GH#2290, GH#2291, GH#2308)

    • Exclude documentation files from release workflow (GH#2295)

    • Bump requirements for optional pyspark dependency (GH#2299)

    • Bump scipy and woodwork[spark] dependencies (GH#2306)

  • Documentation Changes
    • Add documentation describing how to use featuretools_sql with featuretools (GH#2262)

    • Remove featuretools_sql as a docs requirement (GH#2302)

    • Fix typo in DiffDatetime doctest (GH#2314)

    • Fix typo in EntitySet documentation (GH#2315)

  • Testing Changes
    • Remove graphviz version restrictions in Windows CI tests (GH#2285)

    • Run CI tests with pytest -n auto (GH#2298, GH#2310)

Thanks to the following people for contributing to this release: @gsheni, @rwedge, @sbadithe, @thehomebrewnerd

Breaking Changes#

  • The EntitySet schema has been updated to include a series_library attribute

  • The default behavior of the Rolling* primitives has changed in this release. If this primitive was used without defining the gap value, the feature values returned with this release will be different than feature values from prior releases.

v1.14.0 Sep 1, 2022#

  • Enhancements
    • Replace NumericLag with Lag primitive (GH#2252)

    • Refactor build_features to speed up long running DFS calls by 50% (GH#2224)

  • Fixes
    • Fix compatibility issues with holidays 0.15 (GH#2254)

  • Changes
    • Update release notes to make clear conda release portion (GH#2249)

    • Use pyproject.toml only (move away from setup.cfg) (GH#2260, GH#2263, GH#2265)

    • Add entry point instructions for pyproject.toml project (GH#2272)

  • Documentation Changes
    • Fix to remove warning from Using Spark EntitySets Guide (GH#2258)

  • Testing Changes
    • Add tests/profiling/dfs_profile.py (GH#2224)

    • Add workflow to test featuretools without test dependencies (GH#2274)

Thanks to the following people for contributing to this release: @cp2boston, @gsheni, @ozzieD, @stefaniesmith, @thehomebrewnerd

v1.13.0 Aug 18, 2022#

  • Fixes
    • Allow boolean columns to be included in remove_highly_correlated_features (GH#2231)

  • Changes
    • Refactor schema version checking to use packaging method (GH#2230)

    • Extract duplicated logic for Rolling primitives into a general utility function (GH#2218)

    • Set pandas version to >=1.4.0 (GH#2246)

    • Remove workaround in roll_series_with_gap caused by pandas version < 1.4.0 (GH#2246)

  • Documentation Changes
    • Add line breaks between sections of IsFederalHoliday primitive docstring (GH#2235)

  • Testing Changes
    • Update create feedstock PR forked repo to use (GH#2223, GH#2237)

    • Update development requirements and use latest for documentation (GH#2225)

Thanks to the following people for contributing to this release: @gsheni, @ozzieD, @sbadithe, @tamargrey

v1.12.1 Aug 4, 2022#

  • Fixes
    • Update Trend and RollingTrend primitives to work with IntegerNullable inputs (GH#2204)

    • camel_and_title_to_snake handles snake case strings with numbers (GH#2220)

    • Change _get_description to split on blank lines to avoid truncating primitive descriptions (GH#2219)

  • Documentation Changes
    • Add instructions to add new users to featuretools feedstock (GH#2215)

  • Testing Changes
    • Add create feedstock PR workflow (GH#2181)

    • Add performance tests for python 3.9 and 3.10 (GH#2198, GH#2208)

    • Add test to ensure primitive docstrings use standardized verbs (GH#2200)

    • Configure codecov to avoid premature PR comments (GH#2209)

Thanks to the following people for contributing to this release: @gsheni, @rwedge, @sbadithe, @tamargrey, @thehomebrewnerd

v1.12.0 Jul 19, 2022#

Warning

This release of Featuretools will not support Python 3.7

  • Enhancements
    • Add IsWorkingHours and IsLunchTime transform primitives (GH#2130)

    • Add periods parameter to Diff and add DiffDatetime primitive (GH#2155)

    • Add RollingTrend primitive (GH#2170)

  • Fixes
    • Resolves Woodwork integration test failure and removes Python version check for codecov (GH#2182)

  • Changes
  • Documentation Changes
    • Augment single table entry in DFS to include information about passing in a dictionary for dataframes argument (GH#2160)

  • Testing Changes
    • Standardize imports across test files to simplify accessing featuretools functions (GH#2166)

    • Split spark tests into multiple CI jobs to speed up runtime (GH#2183)

Thanks to the following people for contributing to this release: @dvreed77, @gsheni, @ozzieD, @rwedge, @sbadithe

v1.11.1 Jul 5, 2022#

  • Fixes
    • Remove 24th hour from PartOfDay primitive and add 0th hour (GH#2167)

Thanks to the following people for contributing to this release: @tamargrey

v1.11.0 Jun 30, 2022#

  • Enhancements
    • Add datetime and string types as valid arguments to dfs cutoff_time (GH#2147)

    • Add PartOfDay transform primitive (GH#2128)

    • Add IsYearEnd, IsYearStart transform primitives (GH#2124)

    • Add Feature.set_feature_names method to directly set output column names for multi-output features (GH#2142)

    • Include np.nan testing for DayOfYear and DaysInMonth primitives (GH#2146)

    • Allow dfs kwargs to be passed into get_valid_primitives (GH#2157)

  • Changes
    • Improve serialization and deserialization to reduce storage of duplicate primitive information (GH#2136, GH#2127, GH#2144)

    • Sort core requirements and test requirements in setup cfg (GH#2152)

  • Testing Changes
    • Fix pandas warning and reduce dask .apply warnings (GH#2145)

    • Pin graphviz version used in windows tests (GH#2159)

Thanks to the following people for contributing to this release: @gsheni, @ozzieD, @rwedge, @sbadithe, @tamargrey, @thehomebrewnerd

v1.10.0 Jun 23, 2022#

  • Enhancements
    • Add DayOfYear, DaysInMonth, Quarter, IsLeapYear, IsQuarterEnd, IsQuarterStart transform primitives (GH#2110, GH#2117)

    • Add IsMonthEnd, IsMonthStart transform primitives (GH#2121)

    • Move Quarter test cases (GH#2123)

    • Add summarize_primitives function for getting metrics about available primitives (GH#2099)

  • Changes
  • Documentation Changes
    • Update contributing.md to add pandoc (GH#2103, GH#2104)

    • Update NLP primitives section of API reference (GH#2109)

    • Fixing release notes formatting (GH#2139)

  • Testing Changes
    • Latest dependency checker installs spark dependencies (GH#2112)

    • Fix test failures with pyspark v3.3.0 (GH#2114, GH#2120)

Thanks to the following people for contributing to this release: @gsheni, @ozzieD, @rwedge, @sbadithe, @thehomebrewnerd

v1.9.2 Jun 10, 2022#

  • Fixes
    • Add feature origin information to all multi-output feature columns (GH#2102)

  • Documentation Changes
    • Update contributing.md to add pandoc (GH#2103)

Thanks to the following people for contributing to this release: @gsheni, @thehomebrewnerd

v1.9.1 May 27, 2022#

  • Enhancements
    • Update DateToHoliday and DistanceToHoliday primitives to work with timezone-aware inputs (GH#2056)

  • Changes
    • Delete setup.py, MANIFEST.in and move configuration to pyproject.toml (GH#2046)

  • Documentation Changes
    • Update slack invite link to new (GH#2044)

    • Add slack and stackoverflow icon to footer (GH#2087)

    • Update dead links in docs and docstrings (GH#2092, GH#2095)

  • Testing Changes
    • Skip test for normalize_dataframe due to different error coming from Woodwork in 0.16.3 (GH#2052)

    • Fix Woodwork install in test with Woodwork main branch (GH#2055)

    • Use codecov action v3 (GH#2039)

    • Add workflow to kickoff EvalML unit tests with Featuretools main (GH#2072)

    • Rename yml to yaml for GitHub Actions workflows (GH#2073, GH#2077)

    • Update Dask test fixtures to prevent flaky behavior (GH#2079)

    • Update Makefile with better pkg command (GH#2081)

    • Add scheduled workflow that checks for broken links in documentation (GH#2084)

Thanks to the following people for contributing to this release: @gsheni, @rwedge, @thehomebrewnerd

v1.9.0 Apr 27, 2022#

  • Enhancements
    • Improve UnusedPrimitiveWarning with additional information (GH#2003)

    • Update DFS primitive matching to use all inputs defined in primitive input_types (GH#2019)

    • Add MultiplyNumericBoolean primitive (GH#2035)

  • Fixes
    • Fix issue with Ordinal inputs to binary comparison primitives (GH#2024, GH#2025)

  • Changes
    • Updated autonormalize version requirement (GH#2002)

    • Remove extra NaN checking in LatLong primitives (GH#1924)

    • Normalize LatLong NaN values during EntitySet creation (GH#1924)

    • Pass primitive dictionaries into check_primitive to avoid repetitive calls (GH#2016)

    • Remove Boolean and BooleanNullable from MultiplyNumeric primitive inputs (GH#2022)

    • Update serialization for compatibility with Woodwork version 0.16.1 (GH#2030)

  • Documentation Changes
  • Testing Changes
    • Update unit tests with Woodwork main branch workflow name (GH#2033)

    • Add slack alert for failing unit tests with Woodwork main branch (GH#2040)

Thanks to the following people for contributing to this release: @dvreed77, @gsheni, @ozzieD, @rwedge, @thehomebrewnerd

Note#

  • The update to the DFS algorithm in this release may cause the number of features returned by ft.dfs to increase in some cases.

v1.8.0 Mar 31, 2022#

  • Changes
    • Removed make_trans_primitive and make_agg_primitive utility functions (GH#1970)

  • Documentation Changes
    • Update project urls in setup cfg to include Twitter and Slack (GH#1981)

    • Update nbconvert to version 6.4.5 to fix docs build issue (GH#1984)

    • Update ReadMe to have centered badges and add docs badge (GH#1993)

    • Add M1 installation instructions to docs and contributing (GH#1997)

  • Testing Changes
    • Updated scheduled workflows to only run on Alteryx owned repos (GH#1973)

    • Updated minimum dependency checker to use new version with write file support (GH#1975, GH#1976)

    • Add black linting package and remove autopep8 (GH#1978)

    • Update tests for compatibility with Woodwork version 0.15.0 (GH#1984)

Thanks to the following people for contributing to this release: @gsheni, @thehomebrewnerd

Breaking Changes#

  • The utility functions make_trans_primitive and make_agg_primitive have been removed. To create custom primitives, define the primitive class directly.

v1.7.0 Mar 16, 2022#

  • Enhancements
    • Add support for Python 3.10 (GH#1940)

    • Added the SquareRoot, NaturalLogarithm, Sine, Cosine and Tangent primitives (GH#1948)

  • Fixes
    • Updated the conda install commands to specify the channel (GH#1917)

  • Changes
    • Update error message when DFS returns an empty list of features (GH#1919)

    • Remove list_variable_types and related directories (GH#1929)

    • Transition to use pyproject.toml and setup.cfg (moving away from setup.py) (GH#1941, GH#1950, GH#1952, GH#1954, GH#1957, GH#1964)

    • Replace Koalas with pandas API on Spark (GH#1949)

  • Documentation Changes
    • Add time series guide (GH#1896)

    • Update minimum nlp_primitives requirement for docs (GH#1925)

    • Add GitHub URL for PyPi (GH#1928)

    • Add backport release support (GH#1932)

    • Update instructions in release.md (GH#1963)

  • Testing Changes
    • Update test cases to cover __main__.py file (GH#1927)

    • Upgrade moto requirement (GH#1929, GH#1938)

    • Add Python 3.9 linting, install complete, and docs build CI tests (GH#1934)

    • Add CI workflow to test with latest woodwork main branch (GH#1936)

    • Add lower bound for wheel for minimum dependency checker and limit lint CI tests to Python 3.10 (GH#1945)

    • Fix non-deterministic test in test_es.py (GH#1961)

Thanks to the following people for contributing to this release: @andriyor, @gsheni, @jeff-hernandez, @kushal-gopal, @mingdavidqi, @rwedge, @tamargrey, @thehomebrewnerd, @tvdboom

Breaking Changes#

  • The deprecated utility list_variable_types has been removed from Featuretools.

v1.6.0 Feb 17, 2022#

  • Enhancements
    • Add IsFederalHoliday transform primitive (GH#1912)

  • Fixes
    • Fix to catch new NotImplementedError raised by holidays library for unknown country (GH#1907)

  • Changes
    • Remove outdated pandas workaround code (GH#1906)

  • Documentation Changes
    • Add in-line tabs and copy-paste functionality to docs (GH#1905)

  • Testing Changes
    • Fix URL deserialization file (GH#1909)

Thanks to the following people for contributing to this release: @jeff-hernandez, @rwedge, @thehomebrewnerd

v1.5.0 Feb 14, 2022#

Warning

Featuretools may not support Python 3.7 in next non-bugfix release.

  • Enhancements
    • Add ability to use offset alias strings as inputs to rolling primitives (GH#1809)

    • Update to add support for pandas version 1.4.0 (GH#1881, GH#1895)

  • Fixes
    • Fix featuretools_primitives entry point (GH#1891)

  • Changes
    • Allow only snake camel and title case for primitives (GH#1854)

    • Add autonormalize as an add-on library (GH#1840)

    • Add DateToHoliday Transform Primitive (GH#1848)

    • Add DistanceToHoliday Transform Primitive (GH#1853)

    • Temporarily restrict pandas and koalas max versions (GH#1863)

    • Add __setitem__ method to overload add_dataframe method on EntitySet (GH#1862)

    • Add support for woodwork 0.12.0 (GH#1872, GH#1897)

    • Split Datetime and LatLong primitives into separate files (GH#1861)

    • Null values will not be included in index of normalized dataframe (GH#1897)

  • Documentation Changes
    • Bump ipython version (GH#1857)

    • Update README.md with Alteryx link (GH#1886)

  • Testing Changes
    • Add check for package conflicts with install workflow (GH#1843)

    • Change auto approve workflow to use assignee (GH#1843)

    • Update auto approve workflow to delete branch and change on trigger (GH#1852)

    • Upgrade tests to use compose version 0.8.0 (GH#1856)

    • Updated deep feature synthesis and feature serialization tests to use new primitive files (GH#1861)

Thanks to the following people for contributing to this release: @dvreed77, @gsheni, @jacobboney, @jeff-hernandez, @rwedge, @tamargrey, @thehomebrewnerd, @tuethan1999

Breaking Changes#

  • When using normalize_dataframe to create a new dataframe, the new dataframe’s index will not include a null value.

v1.4.0 Jan 10, 2022#

  • Enhancements
    • Add LatLong transform primitives - GeoMidpoint, IsInGeoBox, CityblockDistance (GH#1814)

    • Add issue templates for bugs, feature requests and documentation improvements (GH#1834)

  • Fixes
    • Fix bug where Woodwork initialization could fail on feature matrix if cutoff times caused null values to be introduced (GH#1810)

  • Changes
    • Skip code coverage for specific dask usage lines (GH#1829)

    • Increase minimum required numpy version to 1.21.0, scipy to 1.3.3, koalas to 1.8.1 (GH#1833)

    • Remove pyyaml as a requirement (GH#1833)

  • Documentation Changes
    • Remove testing on conda forge in release.md (GH#1811)

  • Testing Changes
    • Enable auto-merge for minimum and latest dependency merge requests (GH#1818, GH#1821, GH#1822)

    • Change auto approve workfow to use PR number and run every 30 minutes (GH#1827)

    • Add auto approve workflow to run when unit tests complete (GH#1837)

    • Test deserializing from S3 with mocked S3 fixtures only (GH#1825)

    • Remove fastparquet as a test requirement (GH#1833)

Thanks to the following people for contributing to this release: @davesque, @gsheni, @rwedge, @thehomebrewnerd

v1.3.0 Dec 2, 2021#

  • Enhancements
    • Add NumericLag transform primitive (GH#1797)

  • Changes
    • Update pip to 21.3.1 for test requirements (GH#1789)

  • Documentation Changes
    • Add Docker install instructions and documentation on the install page. (GH#1785)

    • Update install page on documentation with correct python version (GH#1784)

    • Fix formatting in Improving Computational Performance guide (GH#1786)

Thanks to the following people for contributing to this release: @gsheni, @HenryRocha, @tamargrey @thehomebrewnerd

v1.2.0 Nov 15, 2021#

  • Enhancements
    • Add Rolling Transform primitives with integer parameters (GH#1770)

  • Fixes
    • Handle new graphviz FORMATS import (GH#1770)

  • Changes
    • Add new version of featuretools_tsfresh_primitives as an add-on library (GH#1772)

    • Add load_weather as demo dataset for time series GH#1777

Thanks to the following people for contributing to this release: @gsheni, @tamargrey

v1.1.0 Nov 2, 2021#

  • Fixes
    • Check base_of_exclude attribute on primitive instead feature class (GH#1749)

    • Pin upper bound for pyspark (GH#1748)

    • Fix get_unused_primitives only recognizes lowercase primitive strings (GH#1733)

    • Require newer versions of dask and distributed (GH#1762)

    • Fix bug with pass-through columns of cutoff_time df when n_jobs > 1 (GH#1765)

  • Changes
    • Add new version of nlp_primitives as an add-on library (GH#1743)

    • Change name of date_of_birth (column name) to birthday in mock dataset (GH#1754)

  • Documentation Changes
    • Upgrade Sphinx and fix docs configuration error (GH#1760)

  • Testing Changes
    • Modify CI to run unit test with latest dependencies on python 3.9 (GH#1738)

    • Added Python version standardizer to Jupyter notebook linting (GH#1741)

Thanks to the following people for contributing to this release: @bchen1116, @gsheni, @HenryRocha, @jeff-hernandez, @ridicolos, @rwedge

v1.0.0 Oct 12, 2021#

  • Enhancements
    • Add support for creating EntitySets from Woodwork DataTables (GH#1277)

    • Add EntitySet.__deepcopy__ that retains Woodwork typing information (GH#1465)

    • Add EntitySet.__getstate__ and EntitySet.__setstate__ to preserve typing when pickling (GH#1581)

    • Returned feature matrix has woodwork typing information (GH#1664)

  • Fixes
    • Fix DFSTransformer Documentation for Featuretools 1.0 (GH#1605)

    • Fix calculate_feature_matrix time type check and encode_features for synthesis tests (GH#1580)

    • Revert reordering of categories in Equal and NotEqual primitives (GH#1640)

    • Fix bug in EntitySet.add_relationship that caused foreign_key tag to be lost (GH#1675)

    • Update DFS to not build features on last time index columns in dataframes (GH#1695)

  • Changes
    • Remove add_interesting_values from Entity (GH#1269)

    • Move set_secondary_time_index method from Entity to EntitySet (GH#1280)

    • Refactor Relationship creation process (GH#1370)

    • Replaced Entity.update_data with EntitySet.update_dataframe (GH#1398)

    • Move validation check for uniform time index to EntitySet (GH#1400)

    • Replace Entity objects in EntitySet with Woodwork dataframes (GH#1405)

    • Refactor EntitySet.plot to work with Woodwork dataframes (GH#1468)

    • Move last_time_index to be a column on the DataFrame (GH#1456)

    • Update serialization/deserialization to work with Woodwork (GH#1452)

    • Refactor EntitySet.query_by_values to work with Woodwork dataframes (GH#1467)

    • Replace list_variable_types with list_logical_types (GH#1477)

    • Allow deep EntitySet equality check (GH#1480)

    • Update EntitySet.concat to work with Woodwork DataFrames (GH#1490)

    • Add function to list semantic tags (GH#1486)

    • Initialize Woodwork on feature matrix in remove_highly_correlated_features if necessary (GH#1618)

    • Remove categorical-encoding as an add-on library (will be added back later) (GH#1632)

    • Remove autonormalize as an add-on library (will be added back later) (GH#1636)

    • Remove tsfresh, nlp_primitives, sklearn_transformer as an add-on library (will be added back later) (GH#1638)

    • Update input and return types for CumCount primitive (GH#1651)

    • Standardize imports of Woodwork (GH#1526)

    • Rename target entity to target dataframe (GH#1506)

    • Replace entity_from_dataframe with add_dataframe (GH#1504)

    • Create features from Woodwork columns (GH#1582)

    • Move default variable description logic to generate_description (GH#1403)

    • Update Woodwork to version 0.4.0 with LogicalType.transform and LogicalType instances (GH#1451)

    • Update Woodwork to version 0.4.1 with Ordinal order values and whitespace serialization fix (GH#1478)

    • Use ColumnSchema for primitive input and return types (GH#1411)

    • Update features to use Woodwork and remove Entity and Variable classes (GH#1501)

    • Re-add make_index functionality to EntitySet (GH#1507)

    • Use ColumnSchema in DFS primitive matching (GH#1523)

    • Updates from Featuretools v0.26.0 (GH#1539)

    • Leverage Woodwork better in add_interesting_values (GH#1550)

    • Update calculate_feature_matrix to use Woodwork (GH#1533)

    • Update Woodwork to version 0.6.0 with changed categorical inference (GH#1597)

    • Update nlp-primitives requirement for Featuretools 1.0 (GH#1609)

    • Remove remaining references to Entity and Variable in code (GH#1612)

    • Update Woodwork to version 0.7.1 with changed initialization (GH#1648)

    • Removes outdated workaround code related to a since-resolved pandas issue (GH#1677)

    • Remove unused _dataframes_equal and camel_to_snake functions (GH#1683)

    • Update Woodwork to version 0.8.0 for improved performance (GH#1689)

    • Remove redundant typecasting in encode_features (GH#1694)

    • Speed up encode_features if not inplace, some space cost (GH#1699)

    • Clean up comments and commented out code (GH#1701)

    • Update Woodwork to version 0.8.1 for improved performance (GH#1702)

  • Documentation Changes
    • Add a Woodwork Typing in Featuretools guide (GH#1589)

    • Add a resource guide for transitioning to Featuretools 1.0 (GH#1627)

    • Update using_entitysets page to use Woodwork (GH#1532)

    • Update FAQ page to use Woodwork integration (GH#1649)

    • Update DFS page to be Jupyter notebook and use Woodwork integration (GH#1557)

    • Update Feature Primitives page to be Jupyter notebook and use Woodwork integration (GH#1556)

    • Update Handling Time page to be Jupyter notebook and use Woodwork integration (GH#1552)

    • Update Advanced Custom Primitives page to be Jupyter notebook and use Woodwork integration (GH#1587)

    • Update Deployment page to use Woodwork integration (GH#1588)

    • Update Using Dask EntitySets page to be Jupyter notebook and use Woodwork integration (GH#1590)

    • Update Specifying Primitive Options page to be Jupyter notebook and use Woodwork integration (GH#1593)

    • Update API Reference to match Featuretools 1.0 API (GH#1600)

    • Update Index page to be Jupyter notebook and use Woodwork integration (GH#1602)

    • Update Feature Descriptions page to be Jupyter notebook and use Woodwork integration (GH#1603)

    • Update Using Koalas EntitySets page to be Jupyter notebook and use Woodwork integration (GH#1604)

    • Update Glossary to use Woodwork integration (GH#1608)

    • Update Tuning DFS page to be Jupyter notebook and use Woodwork integration (GH#1610)

    • Fix small formatting issues in Documentation (GH#1607)

    • Remove Variables page and more references to variables (GH#1629)

    • Update Feature Selection page to use Woodwork integration (GH#1618)

    • Update Improving Performance page to be Jupyter notebook and use Woodwork integration (GH#1591)

    • Fix typos in transition guide (GH#1672)

    • Update installation instructions for 1.0.0rc1 announcement in docs (GH#1707, GH#1708, GH#1713, GH#1716)

    • Fixed broken link for Demo notebook in README.md (GH#1728)

    • Update contributing.md to improve instructions for external contributors (GH#1723)

    • Manually revert changes made by GH#1677 and GH#1679. The related bug in pandas still exists. (GH#1731)

  • Testing Changes
    • Remove entity tests (GH#1521)

    • Fix broken EntitySet tests (GH#1548)

    • Fix broken primitive tests (GH#1568)

    • Added Jupyter notebook cleaner to the linters (GH#1719)

    • Update reviewers for minimum and latest dependency checkers (GH#1715)

    • Full coverage for EntitySet.__eq__ method (GH#1725)

    • Add tests to verify all primitives can be initialized without parameter values (GH#1726)

Thanks to the following people for contributing to this release: @bchen1116, @gsheni, @HenryRocha, @jeff-hernandez, @rwedge, @tamargrey, @thehomebrewnerd, @VaishnaviNandakumar

Breaking Changes#

  • Entity.add_interesting_values has been removed. To add interesting values for a single entity, call EntitySet.add_interesting_values and pass the name of the dataframe for which to add interesting values in the dataframe_name parameter (GH#1405, GH#1370).

  • Entity.set_secondary_time_index has been removed and replaced by EntitySet.set_secondary_time_index with an added dataframe_name parameter to specify the dataframe on which to set the secondary time index (GH#1405, GH#1370).

  • Relationship initialization has been updated to accept four name values for the parent dataframe, parent column, child dataframe and child column instead of accepting two Variable objects (GH#1405, GH#1370).

  • EntitySet.add_relationship has been updated to accept dataframe and column name values or a Relationship object. Adding a relationship from a Relationship object now requires passing the relationship as a keyword argument (GH#1405, GH#1370).

  • Entity.update_data has been removed. To update the dataframe, call EntitySet.replace_dataframe and use the dataframe_name parameter (GH#1630, GH#1522).

  • The data in an EntitySet is no longer stored in Entity objects. Instead, dataframes with Woodwork typing information are used. Accordingly, most language referring to “entities” will now refer to “dataframes”, references to “variables” will now refer to “columns”, and “variable types” will use the Woodwork type system’s “logical types” and “semantic tags” (GH#1405).

  • The dictionary of tuples passed to EntitySet.__init__ has replaced the variable_types element with separate logical_types and semantic_tags dictionaries (GH#1405).

  • EntitySet.entity_from_dataframe no longer exists. To add new tables to an entityset, use``EntitySet.add_dataframe`` (GH#1405).

  • EntitySet.normalize_entity has been renamed to EntitySet.normalize_dataframe (GH#1405).

  • Instead of raising an error at EntitySet.add_relationship when the dtypes of parent and child columns do not match, Featuretools will now check whether the Woodwork logical type of the parent and child columns match. If they do not match, there will now be a warning raised, and Featuretools will attempt to update the logical type of the child column to match the parent’s (GH#1405).

  • If no index is specified at EntitySet.add_dataframe, the first column will only be used as index if Woodwork has not been initialized on the DataFrame. When adding a dataframe that already has Woodwork initialized, if there is no index set, an error will be raised (GH#1405).

  • Featuretools will no longer re-order columns in DataFrames so that the index column is the first column of the DataFrame (GH#1405).

  • Type inference can now be performed on Dask and Koalas dataframes, though a warning will be issued indicating that this may be computationally intensive (GH#1405).

  • EntitySet.time_type is no longer stored as Variable objects. Instead, Woodwork typing is used, and a numeric time type will be indicated by the 'numeric' semantic tag string, and a datetime time type will be indicated by the Datetime logical type (GH#1405).

  • last_time_index, secondary_time_index, and interesting_values are no longer attributes of an entityset’s tables that can be accessed directly. Now they must be accessed through the metadata of the Woodwork DataFrame, which is a dictionary (GH#1405).

  • The helper function list_variable_types will be removed in a future release and replaced by list_logical_types. In the meantime, list_variable_types will return the same output as list_logical_types (GH#1447).

What’s New in this Release#

Adding Interesting Values

To add interesting values for a single entity, call EntitySet.add_interesting_values passing the id of the dataframe for which interesting values should be added.

>>> es.add_interesting_values(dataframe_name='log')

Setting a Secondary Time Index

To set a secondary time index for a specific dataframe, call EntitySet.set_secondary_time_index passing the dataframe name for which to set the secondary time index along with the dictionary mapping the secondary time index column to the for which the secondary time index applies.

>>> customers_secondary_time_index = {'cancel_date': ['cancel_reason']}
>>> es.set_secondary_time_index(dataframe_name='customers', customers_secondary_time_index)

Creating a Relationship and Adding to an EntitySet

Relationships are now created by passing parameters identifying the entityset along with four string values specifying the parent dataframe, parent column, child dataframe and child column. Specifying parameter names is optional.

>>> new_relationship = Relationship(
...     entityset=es,
...     parent_dataframe_name='customers',
...     parent_column_name='id',
...     child_dataframe_name='sessions',
...     child_column_name='customer_id'
... )

Relationships can now be added to EntitySets in one of two ways. The first approach is to pass in name values for the parent dataframe, parent column, child dataframe and child column. Specifying parameter names is optional with this approach.

>>> es.add_relationship(
...     parent_dataframe_name='customers',
...     parent_column_name='id',
...     child_dataframe_name='sessions',
...     child_column_name='customer_id'
... )

Relationships can also be added by passing in a previously created Relationship object. When using this approach the relationship parameter name must be included.

>>> es.add_relationship(relationship=new_relationship)

Replace DataFrame

To replace a dataframe in an EntitySet with a new dataframe, call EntitySet.replace_dataframe and pass in the name of the dataframe to replace along with the new data.

>>> es.replace_dataframe(dataframe_name='log', df=df)

List Logical Types and Semantic Tags

Logical types and semantic tags have replaced variable types to parse and interpret columns. You can list all the available logical types by calling featuretools.list_logical_types.

>>> ft.list_logical_types()

You can list all the available semantic tags by calling featuretools.list_semantic_tags.

>>> ft.list_semantic_tags()

v0.27.1 Sep 2, 2021#

  • Documentation Changes
    • Add banner to docs about upcoming Featuretools 1.0 release (GH#1669)

Thanks to the following people for contributing to this release: @thehomebrewnerd

v0.27.0 Aug 31, 2021#

  • Changes
    • Remove autonormalize, tsfresh, nlp_primitives, sklearn_transformer, caegorical_encoding as an add-on libraries (will be added back later) (GH#1644)

    • Emit a warning message when a featuretools_primitives entrypoint throws an exception (GH#1662)

    • Throw a RuntimeError when two primitives with the same name are encountered during featuretools_primitives entrypoint handling (GH#1662)

    • Prevent the featuretools_primitives entrypoint loader from loading non-class objects as well as the AggregationPrimitive and TransformPrimitive base classes (GH#1662)

  • Testing Changes
    • Update latest dependency checker with proper install command (GH#1652)

    • Update isort dependency (GH#1654)

Thanks to the following people for contributing to this release: @davesque, @gsheni, @jeff-hernandez, @rwedge

v0.26.2 Aug 17, 2021#

  • Documentation Changes
    • Specify conda channel and Windows exe in graphviz installation instructions (GH#1611)

    • Remove GA token from the layout html (GH#1622)

  • Testing Changes

Thanks to the following people for contributing to this release: @gsheni, @simha104

v0.26.1 Jul 23, 2021#

  • Fixes
    • Set name attribute for EmailAddressToDomain primitive (GH#1543)

  • Documentation Changes
    • Remove and ignore unnecessary graph files (GH#1544)

Thanks to the following people for contributing to this release: @davesque, @rwedge

v0.26.0 Jul 15, 2021#

  • Enhancements
    • Add replace_inf_values utility function for replacing inf values in a feature matrix (GH#1505)

    • Add URLToProtocol, URLToDomain, URLToTLD, EmailAddressToDomain, IsFreeEmailDomain as transform primitives (GH#1508, GH#1531)

  • Fixes
    • include_entities correctly overrides exclude_entities in primitive_options (GH#1518)

  • Documentation Changes
    • Prevent logging on build (GH#1498)

  • Testing Changes
    • Test featuretools on pandas 1.3.0 release candidate and make fixes (GH#1492)

Thanks to the following people for contributing to this release: @frances-h, @gsheni, @rwedge, @tamargrey, @thehomebrewnerd, @tuethan1999

v0.25.0 Jun 11, 2021#

  • Enhancements
    • Add get_valid_primitives function (GH#1462)

    • Add EntitySet.dataframe_type attribute (GH#1473)

  • Changes
    • Upgrade minimum alteryx open source update checker to 2.0.0 (GH#1460)

  • Testing Changes
    • Upgrade minimum pip requirement for testing to 21.1.2 (GH#1475)

Thanks to the following people for contributing to this release: @gsheni, @rwedge

v0.24.1 May 26, 2021#

  • Fixes
    • Update minimum pyyaml requirement to 5.4 (GH#1433)

    • Update minimum psutil requirement to 5.6.6 (GH#1438)

  • Documentation Changes
    • Update nbsphinx version to fix docs build issue (GH#1436)

  • Testing Changes
    • Create separate worksflows for each CI job (GH#1422)

    • Add minimum dependency checker to generate minimum requirement files (GH#1428)

    • Add unit tests against minimum dependencies for python 3.7 on PRs and main (GH#1432, GH#1445)

    • Update minimum urllib3 requirement to 1.26.5 (GH#1457)

Thanks to the following people for contributing to this release: @gsheni, @jeff-hernandez, @rwedge, @thehomebrewnerd

v0.24.0 Apr 30, 2021#

  • Changes
    • Add auto assign bot on GitHub (GH#1380)

    • Reduce DFS max_depth to 1 if single entity in entityset (GH#1412)

    • Drop Python 3.6 support (GH#1413)

  • Documentation Changes
    • Improve formatting of release notes (GH#1396)

  • Testing Changes
    • Update Dask/Koalas test fixtures (GH#1382)

    • Update Spark config in test fixtures and docs (GH#1387, GH#1389)

    • Don’t cancel other CI jobs if one fails (GH#1386)

    • Update boto3 and urllib3 version requirements (GH#1394)

    • Update token for dependency checker PR creation (GH#1402, GH#1407, GH#1409)

Thanks to the following people for contributing to this release: @gsheni, @jeff-hernandez, @rwedge, @tamargrey, @thehomebrewnerd

v0.23.3 Mar 31, 2021#

Warning

The next non-bugfix release of Featuretools will not support Python 3.6

  • Changes
    • Minor updates to work with Koalas version 1.7.0 (GH#1351)

    • Explicitly mention Python 3.8 support in setup.py classifiers (GH#1371)

    • Fix issue with smart-open version 5.0.0 (GH#1372, GH#1376)

  • Testing Changes
    • Make release notes updated check separate from unit tests (GH#1347)

    • Performance tests now specify which commit to check (GH#1354)

Thanks to the following people for contributing to this release: @gsheni, @rwedge, @thehomebrewnerd

v0.23.2 Feb 26, 2021#

Warning

The next non-bugfix release of Featuretools will not support Python 3.6

  • Enhancements
    • The list_primitives function returns valid input types and the return type (GH#1341)

  • Fixes
    • Restrict numpy version when installing koalas (GH#1329)

  • Changes
    • Warn python 3.6 users support will be dropped in future release (GH#1344)

  • Documentation Changes
    • Update docs for defining custom primitives (GH#1332)

    • Update featuretools release instructions (GH#1345)

Thanks to the following people for contributing to this release: @gsheni, @jeff-hernandez, @rwedge

v0.23.1 Jan 29, 2021#

  • Fixes
    • Calculate direct features uses default value if parent missing (GH#1312)

    • Fix bug and improve tests for EntitySet.__eq__ and Entity.__eq__ (GH#1323)

  • Documentation Changes
    • Update Twitter link to documentation toolbar (GH#1322)

  • Testing Changes

Thanks to the following people for contributing to this release: @gsheni, @jeff-hernandez, @rwedge, @seriallazer, @thehomebrewnerd

v0.23.0 Dec 31, 2020#

  • Fixes
    • Fix logic for inferring variable type from unusual dtype (GH#1273)

    • Allow passing entities without relationships to calculate_feature_matrix (GH#1290)

  • Changes
    • Move query_by_values method from Entity to EntitySet (GH#1251)

    • Move _handle_time method from Entity to EntitySet (GH#1276)

    • Remove usage of ravel to resolve unexpected warning with pandas 1.2.0 (GH#1286)

  • Documentation Changes
    • Fix installation command for Add-ons (GH#1279)

    • Fix various broken links in documentation (GH#1313)

  • Testing Changes
    • Use repository-scoped token for dependency check (GH#1245:, GH#1248)

    • Fix install error during docs CI test (GH#1250)

Thanks to the following people for contributing to this release: @gsheni, @jeff-hernandez, @rwedge, @thehomebrewnerd

Breaking Changes#

  • Entity.query_by_values has been removed and replaced by EntitySet.query_by_values with an added entity_id parameter to specify which entity in the entityset should be used for the query.

v0.22.0 Nov 30, 2020#

  • Enhancements
    • Allow variable descriptions to be set directly on variable (GH#1207)

    • Add ability to add feature description captions to feature lineage graphs (GH#1212)

    • Add support for local tar file in read_entityset (GH#1228)

  • Fixes
  • Documentation Changes
    • Removed link to unused feedback board (GH#1220)

    • Update footer with Alteryx Innovation Labs (GH#1221)

    • Update links to repo in documentation to use alteryx org url (GH#1224)

  • Testing Changes
    • Update release notes check to use new repo url (GH#1222)

    • Use new version of pull request Github Action (GH#1234)

    • Upgrade pip during featuretools[complete] test (GH#1236)

    • Migrated CI tests to github actions (GH#1226, GH#1237, GH#1239)

Thanks to the following people for contributing to this release: @frances-h, @gsheni, @jeff-hernandez, @kmax12, @rwedge, @thehomebrewnerd

v0.21.0 Oct 30, 2020#

  • Enhancements
    • Add describe_feature to generate an English language feature description for a given feature (GH#1201)

  • Fixes
    • Update EntitySet.add_last_time_indexes to work with Koalas 1.3.0 (GH#1192, GH#1202)

  • Changes
    • Keep koalas requirements in separate file (GH#1195)

  • Documentation Changes
    • Added footer to the documentation (GH#1189)

    • Add guide for feature selection functions (GH#1184)

    • Fix README.md badge with correct link (GH#1200)

  • Testing Changes
    • Add pyspark and koalas to automated dependency checks (GH#1191)

    • Add DockerHub credentials to CI testing environment (GH#1204)

    • Update premium primitives job name on CI (GH#1205)

Thanks to the following people for contributing to this release: @frances-h, @gsheni, @jeff-hernandez, @rwedge, @tamargrey, @thehomebrewnerd

v0.20.0 Sep 30, 2020#

Warning

The Text variable type has been deprecated and been replaced with the NaturalLanguage variable type. The Text variable type will be removed in a future release.

  • Fixes
    • Allow FeatureOutputSlice features to be serialized (GH#1150)

    • Fix duplicate label column generation when labels are passed in cutoff times and approximate is being used (GH#1160)

    • Determine calculate_feature_matrix behavior with approximate and a cutoff df that is a subclass of a pandas DataFrame (GH#1166)

  • Changes
    • Text variable type has been replaced with NaturalLanguage (GH#1159)

  • Documentation Changes
    • Update release doc for clarity and to add Future Release template (GH#1151)

    • Use the PyData Sphinx theme (GH#1169)

  • Testing Changes
    • Stop requiring single-threaded dask scheduler in tests (GH#1163, GH#1170)

Thanks to the following people for contributing to this release: @gsheni, @rwedge, @tamargrey, @tuethan1999

v0.19.0 Sep 8, 2020#

  • Enhancements
    • Support use of Koalas DataFrames in entitysets (GH#1031)

    • Add feature selection functions for null, correlated, and single value features (GH#1126)

  • Fixes
    • Fix encode_features converting excluded feature columns to a numeric dtype (GH#1123)

    • Improve performance of unused primitive check in dfs (GH#1140)

  • Changes
    • Remove the ability to stack transform primitives (GH#1119, GH#1145)

    • Sort primitives passed to dfs to get consistent ordering of features* (GH#1119)

  • Documentation Changes
    • Added return values to dfs and calculate_feature_matrix (GH#1125)

  • Testing Changes
    • Better test case for normalizing from no time index to time index (GH#1113)

* When passing multiple instances of a primitive built with make_trans_primitive or maxe_agg_primitive, those instances must have the same relative order when passed to dfs to ensure a consistent ordering of features.

Thanks to the following people for contributing to this release: @frances-h, @gsheni, @rwedge, @tamargrey, @thehomebrewnerd, @tuethan1999

Breaking Changes#

  • ft.dfs will no longer build features from Transform primitives where one of the inputs is a Transform feature, a GroupByTransform feature, or a Direct Feature of a Transform / GroupByTransform feature. This will make some features that would previously be generated by ft.dfs only possible if explicitly specified in seed_features.

v0.18.1 Aug 12, 2020#

  • Fixes
    • Fix EntitySet.plot() when given a dask entityset (GH#1086)

  • Changes
    • Use nlp-primitives[complete] install for nlp_primitives extra in setup.py (GH#1103)

  • Documentation Changes
    • Fix broken downloads badge in README.md (GH#1107)

  • Testing Changes
    • Use CircleCI matrix jobs in config to trigger multiple runs of same job with different parameters (GH#1105)

Thanks to the following people for contributing to this release: @gsheni, @systemshift, @thehomebrewnerd

v0.18.0 Jul 31, 2020#

  • Enhancements
    • Warn user if supplied primitives are not used during dfs (GH#1073)

  • Fixes
    • Use more consistent and uniform warnings (GH#1040)

    • Fix issue with missing instance ids and categorical entity index (GH#1050)

    • Remove warnings.simplefilter in feature_set_calculator to un-silence warnings (GH#1053)

    • Fix feature visualization for features with ‘>’ or ‘<’ in name (GH#1055)

    • Fix boolean dtype mismatch between encode_features and dfs and calculate_feature_matrix (GH#1082)

    • Update primitive options to check reversed inputs if primitive is commutative (GH#1085)

    • Fix inconsistent ordering of features between kernel restarts (GH#1088)

  • Changes
    • Make DFS match TimeSince primitive with all Datetime types (GH#1048)

    • Change default branch to main (GH#1038)

    • Raise TypeError if improper input is supplied to Entity.delete_variables() (GH#1064)

    • Updates for compatibility with pandas 1.1.0 (GH#1079, GH#1089)

    • Set pandas version to pandas>=0.24.1,<2.0.0. Filter pandas deprecation warning in Week primitive. (GH#1094)

  • Documentation Changes
    • Remove benchmarks folder (GH#1049)

    • Add custom variables types section to variables page (GH#1066)

  • Testing Changes
    • Add fixture for ft.demo.load_mock_customer (GH#1036)

    • Refactor Dask test units (GH#1052)

    • Implement automated process for checking critical dependencies (GH#1045, GH#1054, GH#1081)

    • Don’t run changelog check for release PRs or automated dependency PRs (GH#1057)

    • Fix non-deterministic behavior in Dask test causing codecov issues (GH#1070)

Thanks to the following people for contributing to this release: @frances-h, @gsheni, @monti-python, @rwedge, @systemshift, @tamargrey, @thehomebrewnerd, @wsankey

v0.17.0 Jun 30, 2020#

  • Enhancements
    • Add list_variable_types and graph_variable_types for Variable Types (GH#1013)

    • Add graph_feature to generate a feature lineage graph for a given feature (GH#1032)

  • Fixes
    • Improve warnings when using a Dask dataframe for cutoff times (GH#1026)

    • Error if attempting to add entityset relationship where child variable is also child index (GH#1034)

  • Changes
    • Remove Feature.get_names (GH#1021)

    • Remove unnecessary pd.Series and pd.DatetimeIndex calls from primitives (GH#1020, GH#1024)

    • Improve cutoff time handling when a single value or no value is passed (GH#1028)

    • Moved find_variable_types to Variable utils (GH#1013)

  • Documentation Changes
    • Add page on Variable Types to describe some Variable Types, and util functions (GH#1013)

    • Remove featuretools enterprise from documentation (GH#1022)

    • Add development install instructions to contributing.md (GH#1030)

  • Testing Changes
    • Add required flag to CircleCI codecov upload command (GH#1035)

Thanks to the following people for contributing to this release: @frances-h, @gsheni, @kmax12, @rwedge, @thehomebrewnerd, @tuethan1999

Breaking Changes#

  • Removed Feature.get_names, Feature.get_feature_names should be used instead

v0.16.0 Jun 5, 2020#

  • Enhancements
    • Support use of Dask DataFrames in entitysets (GH#783)

    • Add make_index when initializing an EntitySet by passing in an entities dictionary (GH#1010)

    • Add ability to use primitive classes and instances as keys in primitive_options dictionary (GH#993)

  • Fixes
    • Cleanly close tqdm instance (GH#1018)

    • Resolve issue with NaN values in LatLong columns (GH#1007)

  • Testing Changes
    • Update tests for numpy v1.19.0 compatability (GH#1016)

Thanks to the following people for contributing to this release: @Alex-Monahan, @frances-h, @gsheni, @rwedge, @thehomebrewnerd

v0.15.0 May 29, 2020#

  • Enhancements
    • Add get_default_aggregation_primitives and get_default_transform_primitives (GH#945)

    • Allow cutoff time dataframe columns to be in any order (GH#969, GH#995)

    • Add Age primitive, and make it a default transform primitive for DFS (GH#987)

    • Add include_cutoff_time arg - control whether data at cutoff times are included in feature calculations (GH#959)

    • Allow variables_types to be referenced by their type_string for the entity_from_dataframe function (GH#988)

  • Fixes
    • Fix errors with Equals and NotEquals primitives when comparing categoricals or different dtypes (GH#968)

    • Normalized type_strings of Variable classes so that the find_variable_types function produces a dictionary with a clear key to name transition (GH#982, GH#996)

    • Remove pandas.datetime in test_calculate_feature_matrix due to deprecation (GH#998)

  • Documentation Changes
    • Add python 3.8 support for docs (GH#983)

    • Adds consistent Entityset Docstrings (GH#986)

  • Testing Changes
    • Add automated tests for python 3.8 environment (GH#847)

    • Update testing dependencies (GH#976)

Thanks to the following people for contributing to this release: @ctduffy, @frances-h, @gsheni, @jeff-hernandez, @rightx2, @rwedge, @sebrahimi1988, @thehomebrewnerd, @tuethan1999

Breaking Changes#

  • Calls to featuretools.dfs or featuretools.calculate_feature_matrix that use a cutoff time dataframe, but do not label the time column with either the target entity time index variable name or as time, will now result in an AttributeError. Previously, the time column was selected to be the first column that was not the instance id column. With this update, the position of the column in the dataframe is no longer used to determine the time column. Now, both instance id columns and time columns in a cutoff time dataframe can be in any order as long as they are named properly.

  • The type_string attributes of all Variable subclasses are now a snake case conversion of their class names. This changes the type_string of the Unknown, IPAddress, EmailAddress, SubRegionCode, FilePath, LatLong, and ZIPcode classes. Old saved entitysets that used these variables may load incorrectly.

v0.14.0 Apr 30, 2020#

  • Enhancements
    • ft.encode_features - use less memory for one-hot encoded columns (GH#876)

  • Fixes
    • Use logger.warning to fix deprecated logger.warn (GH#871)

    • Add dtype to interesting_values to fix deprecated empty Series with no dtype (GH#933)

    • Remove overlap in training windows (GH#930)

    • Fix progress bar in notebook (GH#932)

  • Changes
    • Change premium primitives CI test to Python 3.6 (GH#916)

    • Remove Python 3.5 support (GH#917)

  • Documentation Changes
    • Fix README links to docs (GH#872)

    • Fix Github links with correct organizations (GH#908)

    • Fix hyperlinks in docs and docstrings with updated address (GH#910)

    • Remove unused script for uploading docs to AWS (GH#911)

Thanks to the following people for contributing to this release: @frances-h, @gsheni, @jeff-hernandez, @rwedge

Breaking Changes#

  • Using training windows in feature calculations can result in different values than previous versions. This was done to prevent consecutive training windows from overlapping by excluding data at the oldest point in time. For example, if we use a cutoff time at the first minute of the hour with a one hour training window, the first minute of the previous hour will no longer be included in the feature calculation.

v0.13.4 Mar 27, 2020#

Warning

The next non-bugfix release of Featuretools will not support Python 3.5

  • Fixes
    • Fix ft.show_info() not displaying in Jupyter notebooks (GH#863)

  • Changes
  • Documentation Changes
    • Add links to primitives.featurelabs.com (GH#860)

    • Add source code links to API reference (GH#862)

    • Update links for testing Dask/Spark integrations (GH#867)

    • Update release documentation for featuretools (GH#868)

  • Testing Changes
    • Miscellaneous changes (GH#861)

Thanks to the following people for contributing to this release: @frances-h, @FreshLeaf8865, @jeff-hernandez, @rwedge, @thehomebrewnerd

v0.13.3 Feb 28, 2020#

  • Fixes
    • Fix a connection closed error when using n_jobs (GH#853)

  • Changes
    • Pin msgpack dependency for Python 3.5; remove dataframe from Dask dependency (GH#851)

  • Documentation Changes
    • Update link to help documentation page in Github issue template (GH#855)

Thanks to the following people for contributing to this release: @frances-h, @rwedge

v0.13.2 Jan 31, 2020#

  • Enhancements
    • Support for Pandas 1.0.0 (GH#844)

  • Changes
    • Remove dependency on s3fs library for anonymous downloads from S3 (GH#825)

  • Testing Changes
    • Added GitHub Action to automatically run performance tests (GH#840)

Thanks to the following people for contributing to this release: @frances-h, @rwedge

v0.13.1 Dec 28, 2019#

  • Fixes
    • Raise error when given wrong input for ignore_variables (GH#826)

    • Fix multi-output features not created when there is no child data (GH#834)

    • Removing type casting in Equals and NotEquals primitives (GH#504)

  • Changes
    • Replace pd.timedelta time units that were deprecated (GH#822)

    • Move sklearn wrapper to separate library (GH#835, GH#837)

  • Testing Changes
    • Run unit tests in windows environment (GH#790)

    • Update boto3 version requirement for tests (GH#838)

Thanks to the following people for contributing to this release: @jeffzi, @kmax12, @rwedge, @systemshift

v0.13.0 Nov 30, 2019#

  • Enhancements
    • Added GitHub Action to auto upload releases to PyPI (GH#816)

  • Fixes
    • Fix issue where some primitive options would not be applied (GH#807)

    • Fix issue with converting to pickle or parquet after adding interesting features (GH#798, GH#823)

    • Diff primitive now calculates using all available data (GH#824)

    • Prevent DFS from creating Identity Features of globally ignored variables (GH#819)

  • Changes
    • Remove python 2.7 support from serialize.py (GH#812)

    • Make smart_open, boto3, and s3fs optional dependencies (GH#827)

  • Documentation Changes
    • remove python 2.7 support and add 3.7 in install.rst (GH#805)

    • Fix import error in docs (GH#803)

    • Fix release title formatting in changelog (GH#806)

  • Testing Changes
    • Use multiple CPUS to run tests on CI (GH#811)

    • Refactor test entityset creation to avoid saving to disk (GH#813, GH#821)

    • Remove get_values() from test_es.py to remove warnings (GH#820)

Thanks to the following people for contributing to this release: @frances-h, @jeff-hernandez, @rwedge, @systemshift

Breaking Changes#

  • The libraries used for downloading or uploading from S3 or URLs are now optional and will no longer be installed by default. To use this functionality they will need to be installed separately.

  • The fix to how the Diff primitive is calculated may slow down the overall calculation time of feature lists that use this primitive.

v0.12.0 Oct 31, 2019#

  • Enhancements
    • Added First primitive (GH#770)

    • Added Entropy aggregation primitive (GH#779)

    • Allow custom naming for multi-output primitives (GH#780)

  • Fixes
    • Prevents user from removing base entity time index using additional_variables (GH#768)

    • Fixes error when a multioutput primitive was supplied to dfs as a groupby trans primitive (GH#786)

  • Changes
    • Drop Python 2 support (GH#759)

    • Add unit parameter to AvgTimeBetween (GH#771)

    • Require Pandas 0.24.1 or higher (GH#787)

  • Documentation Changes
    • Update featuretools slack link (GH#765)

    • Set up repo to use Read the Docs (GH#776)

    • Add First primitive to API reference docs (GH#782)

  • Testing Changes
    • CircleCI fixes (GH#774)

    • Disable PIP progress bars (GH#775)

Thanks to the following people for contributing to this release: @ablacke-ayx, @BoopBoopBeepBoop, @jeffzi, @kmax12, @rwedge, @thehomebrewnerd, @twdobson

v0.11.0 Sep 30, 2019#

Warning

The next non-bugfix release of Featuretools will not support Python 2

  • Enhancements
    • Improve how files are copied and written (GH#721)

    • Add number of rows to graph in entityset.plot (GH#727)

    • Added support for pandas DateOffsets in DFS and Timedelta (GH#732)

    • Enable feature-specific top_n value using a dictionary in encode_features (GH#735)

    • Added progress_callback parameter to dfs() and calculate_feature_matrix() (GH#739, GH#745)

    • Enable specifying primitives on a per column or per entity basis (GH#748)

  • Fixes
    • Fixed entity set deserialization (GH#720)

    • Added error message when DateTimeIndex is a variable but not set as the time_index (GH#723)

    • Fixed CumCount and other group-by transform primitives that take ID as input (GH#733, GH#754)

    • Fix progress bar undercounting (GH#743)

    • Updated training_window error assertion to only check against observations (GH#728)

    • Don’t delete the whole destination folder while saving entityset (GH#717)

  • Changes
    • Raise warning and not error on schema version mismatch (GH#718)

    • Change feature calculation to return in order of instance ids provided (GH#676)

    • Removed time remaining from displayed progress bar in dfs() and calculate_feature_matrix() (GH#739)

    • Raise warning in normalize_entity() when time_index of base_entity has an invalid type (GH#749)

    • Remove toolz as a direct dependency (GH#755)

    • Allow boolean variable types to be used in the Multiply primitive (GH#756)

  • Documentation Changes
    • Updated URL for Compose (GH#716)

  • Testing Changes

Thanks to the following people for contributing to this release: @angela97lin, @chidauri, @christopherbunn, @frances-h, @jeff-hernandez, @kmax12, @MarcoGorelli, @rwedge, @thehomebrewnerd

Breaking Changes#

  • Feature calculations will return in the order of instance ids provided instead of the order of time points instances are calculated at.

v0.10.1 Aug 25, 2019#

  • Fixes
    • Fix serialized LatLong data being loaded as strings (GH#712)

  • Documentation Changes
    • Fixed FAQ cell output (GH#710)

Thanks to the following people for contributing to this release: @gsheni, @rwedge

v0.10.0 Aug 19, 2019#

Warning

The next non-bugfix release of Featuretools will not support Python 2

  • Enhancements
    • Give more frequent progress bar updates and update chunk size behavior (GH#631, GH#696)

    • Added drop_first as param in encode_features (GH#647)

    • Added support for stacking multi-output primitives (GH#679)

    • Generate transform features of direct features (GH#623)

    • Added serializing and deserializing from S3 and deserializing from URLs (GH#685)

    • Added nlp_primitives as an add-on library (GH#704)

    • Added AutoNormalize to Featuretools plugins (GH#699)

    • Added functionality for relative units (month/year) in Timedelta (GH#692)

    • Added categorical-encoding as an add-on library (GH#700)

  • Fixes
    • Fix performance regression in DFS (GH#637)

    • Fix deserialization of feature relationship path (GH#665)

    • Set index after adding ancestor relationship variables (GH#668)

    • Fix user-supplied variable_types modification in Entity init (GH#675)

    • Don’t calculate dependencies of unnecessary features (GH#667)

    • Prevent normalize entity’s new entity having same index as base entity (GH#681)

    • Update variable type inference to better check for string values (GH#683)

  • Changes
    • Moved dask, distributed imports (GH#634)

  • Documentation Changes
  • Testing Changes

Thanks to the following people for contributing to this release: @alexjwang, @allisonportis, @ayushpatidar, @CJStadler, @ctduffy, @gsheni, @jeff-hernandez, @jeremyliweishih, @kmax12, @rwedge, @zhxt95,

v0.9.1 Jul 3, 2019#

  • Enhancements
    • Speedup groupby transform calculations (GH#609)

    • Generate features along all paths when there are multiple paths between entities (GH#600, GH#608)

  • Fixes
    • Select columns of dataframe using a list (GH#615)

    • Change type of features calculated on Index features to Categorical (GH#602)

    • Filter dataframes through forward relationships (GH#625)

    • Specify Dask version in requirements for python 2 (GH#627)

    • Keep dataframe sorted by time during feature calculation (GH#626)

    • Fix bug in encode_features that created duplicate columns of features with multiple outputs (GH#622)

  • Changes
    • Remove unused variance_selection.py file (GH#613)

    • Remove Timedelta data param (GH#619)

    • Remove DaysSince primitive (GH#628)

  • Documentation Changes
    • Add installation instructions for add-on libraries (GH#617)

    • Clarification of Multi Output Feature Creation (GH#638)

    • Miscellaneous changes (GH#632, GH#639)

  • Testing Changes

Thanks to the following people for contributing to this release: @CJStadler, @kmax12, @rwedge, @gsheni, @kkleidal, @ctduffy

v0.9.0 Jun 19, 2019#

  • Enhancements
    • Add unit parameter to timesince primitives (GH#558)

    • Add ability to install optional add on libraries (GH#551)

    • Load and save features from open files and strings (GH#566)

    • Support custom variable types (GH#571)

    • Support entitysets which have multiple paths between two entities (GH#572, GH#544)

    • Added show_info function, more output information added to CLI featuretools info (GH#525)

  • Fixes
    • Normalize_entity specifies error when ‘make_time_index’ is an invalid string (GH#550)

    • Schema version added for entityset serialization (GH#586)

    • Renamed features have names correctly serialized (GH#585)

    • Improved error message for index/time_index being the same column in normalize_entity and entity_from_dataframe (GH#583)

    • Removed all mentions of allow_where (GH#587, GH#588)

    • Removed unused variable in normalize entity (GH#589)

    • Change time since return type to numeric (GH#606)

  • Changes
    • Refactor get_pandas_data_slice to take single entity (GH#547)

    • Updates TimeSincePrevious and Diff Primitives (GH#561)

    • Remove unecessary time_last variable (GH#546)

  • Documentation Changes
  • Testing Changes

Thanks to the following people for contributing to this release: @alexjwang, @allisonportis, @CJStadler, @ctduffy, @gsheni, @kmax12, @rwedge

v0.8.0 May 17, 2019#

  • Rename NUnique to NumUnique (GH#510)

  • Serialize features as JSON (GH#532)

  • Drop all variables at once in normalize_entity (GH#533)

  • Remove unnecessary sorting from normalize_entity (GH#535)

  • Features cache their names (GH#536)

  • Only calculate features for instances before cutoff (GH#523)

  • Remove all relative imports (GH#530)

  • Added FullName Variable Type (GH#506)

  • Add error message when target entity does not exist (GH#520)

  • New demo links (GH#542)

  • Remove duplicate features check in DFS (GH#538)

  • featuretools_primitives entry point expects list of primitive classes (GH#529)

  • Update ALL_VARIABLE_TYPES list (GH#526)

  • More Informative N Jobs Prints and Warnings (GH#511)

  • Update sklearn version requirements (GH#541)

  • Update Makefile (GH#519)

  • Remove unused parameter in Entity._handle_time (GH#524)

  • Remove build_ext code from setup.py (GH#513)

  • Documentation updates (GH#512, GH#514, GH#515, GH#521, GH#522, GH#527, GH#545)

  • Testing updates (GH#509, GH#516, GH#517, GH#539)

Thanks to the following people for contributing to this release: @bphi, @CharlesBradshaw, @CJStadler, @glentennis, @gsheni, @kmax12, @rwedge

Breaking Changes#

  • NUnique has been renamed to NumUnique.

    Previous behavior

    from featuretools.primitives import NUnique
    

    New behavior

    from featuretools.primitives import NumUnique
    

v0.7.1 Apr 24, 2019#

  • Automatically generate feature name for controllable primitives (GH#481)

  • Primitive docstring updates (GH#489, GH#492, GH#494, GH#495)

  • Change primitive functions that returned strings to return functions (GH#499)

  • CLI customizable via entrypoints (GH#493)

  • Improve calculation of aggregation features on grandchildren (GH#479)

  • Refactor entrypoints to use decorator (GH#483)

  • Include doctests in testing suite (GH#491)

  • Documentation updates (GH#490)

  • Update how standard primitives are imported internally (GH#482)

Thanks to the following people for contributing to this release: @bukosabino, @CharlesBradshaw, @glentennis, @gsheni, @jeff-hernandez, @kmax12, @minkvsky, @rwedge, @thehomebrewnerd

v0.7.0 Mar 29, 2019#

  • Improve Entity Set Serialization (GH#361)

  • Support calling a primitive instance’s function directly (GH#461, GH#468)

  • Support other libraries extending featuretools functionality via entrypoints (GH#452)

  • Remove featuretools install command (GH#475)

  • Add GroupByTransformFeature (GH#455, GH#472, GH#476)

  • Update Haversine Primitive (GH#435, GH#462)

  • Add commutative argument to SubtractNumeric and DivideNumeric primitives (GH#457)

  • Add FilePath variable_type (GH#470)

  • Add PhoneNumber, DateOfBirth, URL variable types (GH#447)

  • Generalize infer_variable_type, convert_variable_data and convert_all_variable_data methods (GH#423)

  • Documentation updates (GH#438, GH#446, GH#458, GH#469)

  • Testing updates (GH#440, GH#444, GH#445, GH#459)

Thanks to the following people for contributing to this release: @bukosabino, @CharlesBradshaw, @ColCarroll, @glentennis, @grayskripko, @gsheni, @jeff-hernandez, @jrkinley, @kmax12, @RogerTangos, @rwedge

Breaking Changes#

  • ft.dfs now has a groupby_trans_primitives parameter that DFS uses to automatically construct features that group by an ID column and then apply a transform primitive to search group. This change applies to the following primitives: CumSum, CumCount, CumMean, CumMin, and CumMax.

    Previous behavior

    ft.dfs(entityset=es,
           target_entity='customers',
           trans_primitives=["cum_mean"])
    

    New behavior

    ft.dfs(entityset=es,
           target_entity='customers',
           groupby_trans_primitives=["cum_mean"])
    
  • Related to the above change, cumulative transform features are now defined using a new feature class, GroupByTransformFeature.

    Previous behavior

    ft.Feature([base_feature, groupby_feature], primitive=CumulativePrimitive)
    

    New behavior

    ft.Feature(base_feature, groupby=groupby_feature, primitive=CumulativePrimitive)
    

v0.6.1 Feb 15, 2019#

  • Cumulative primitives (GH#410)

  • Entity.query_by_values now preserves row order of underlying data (GH#428)

  • Implementing Country Code and Sub Region Codes as variable types (GH#430)

  • Added IPAddress and EmailAddress variable types (GH#426)

  • Install data and dependencies (GH#403)

  • Add TimeSinceFirst, fix TimeSinceLast (GH#388)

  • Allow user to pass in desired feature return types (GH#372)

  • Add new configuration object (GH#401)

  • Replace NUnique get_function (GH#434)

  • _calculate_idenity_features now only returns the features asked for, instead of the entire entity (GH#429)

  • Primitive function name uniqueness (GH#424)

  • Update NumCharacters and NumWords primitives (GH#419)

  • Removed Variable.dtype (GH#416, GH#433)

  • Change to zipcode rep, str for pandas (GH#418)

  • Remove pandas version upper bound (GH#408)

  • Make S3 dependencies optional (GH#404)

  • Check that agg_primitives and trans_primitives are right primitive type (GH#397)

  • Mean primitive changes (GH#395)

  • Fix transform stacking on multi-output aggregation (GH#394)

  • Fix list_primitives (GH#391)

  • Handle graphviz dependency (GH#389, GH#396, GH#398)

  • Testing updates (GH#402, GH#417, GH#433)

  • Documentation updates (GH#400, GH#409, GH#415, GH#417, GH#420, GH#421, GH#422, GH#431)

Thanks to the following people for contributing to this release: @CharlesBradshaw, @csala, @floscha, @gsheni, @jxwolstenholme, @kmax12, @RogerTangos, @rwedge

v0.6.0 Jan 30, 2018#

Thanks to the following people for contributing to this release: @floscha, @gsheni, @kmax12, @RogerTangos, @rwedge

v0.5.1 Dec 17, 2018#

  • Add missing dependencies (GH#353)

  • Move comment to note in documentation (GH#352)

v0.5.0 Dec 17, 2018#

  • Add specific error for duplicate additional/copy_variables in normalize_entity (GH#348)

  • Removed EntitySet._import_from_dataframe (GH#346)

  • Removed time_index_reduce parameter (GH#344)

  • Allow installation of additional primitives (GH#326)

  • Fix DatetimeIndex variable conversion (GH#342)

  • Update Sklearn DFS Transformer (GH#343)

  • Clean up entity creation logic (GH#336)

  • remove casting to list in transform feature calculation (GH#330)

  • Fix sklearn wrapper (GH#335)

  • Add readme to pypi

  • Update conda docs after move to conda-forge (GH#334)

  • Add wrapper for scikit-learn Pipelines (GH#323)

  • Remove parse_date_cols parameter from EntitySet._import_from_dataframe (GH#333)

Thanks to the following people for contributing to this release: @bukosabino, @georgewambold, @gsheni, @jeff-hernandez, @kmax12, and @rwedge.

v0.4.1 Nov 29, 2018#

  • Resolve bug preventing using first column as index by default (GH#308)

  • Handle return type when creating features from Id variables (GH#318)

  • Make id an optional parameter of EntitySet constructor (GH#324)

  • Handle primitives with same function being applied to same column (GH#321)

  • Update requirements (GH#328)

  • Clean up DFS arguments (GH#319)

  • Clean up Pandas Backend (GH#302)

  • Update properties of cumulative transform primitives (GH#320)

  • Feature stability between versions documentation (GH#316)

  • Add download count to GitHub readme (GH#310)

  • Fixed #297 update tests to check error strings (GH#303)

  • Remove usage of fixtures in agg primitive tests (GH#325)

v0.4.0 Oct 31, 2018#

  • Remove ft.utils.gen_utils.getsize and make pympler a test requirement (GH#299)

  • Update requirements.txt (GH#298)

  • Refactor EntitySet.find_path(…) (GH#295)

  • Clean up unused methods (GH#293)

  • Remove unused parents property of Entity (GH#283)

  • Removed relationships parameter (GH#284)

  • Improve time index validation (GH#285)

  • Encode features with “unknown” class in categorical (GH#287)

  • Allow where clauses on direct features in Deep Feature Synthesis (GH#279)

  • Change to fullargsspec (GH#288)

  • Parallel verbose fixes (GH#282)

  • Update tests for python 3.7 (GH#277)

  • Check duplicate rows cutoff times (GH#276)

  • Load retail demo data using compressed file (GH#271)

v0.3.1 Sep 28, 2018#

  • Handling time rewrite (GH#245)

  • Update deep_feature_synthesis.py (GH#249)

  • Handling return type when creating features from DatetimeTimeIndex (GH#266)

  • Update retail.py (GH#259)

  • Improve Consistency of Transform Primitives (GH#236)

  • Update demo docstrings (GH#268)

  • Handle non-string column names (GH#255)

  • Clean up merging of aggregation primitives (GH#250)

  • Add tests for Entity methods (GH#262)

  • Handle no child data when calculating aggregation features with multiple arguments (GH#264)

  • Add is_string utils function (GH#260)

  • Update python versions to match docker container (GH#261)

  • Handle where clause when no child data (GH#258)

  • No longer cache demo csvs, remove config file (GH#257)

  • Avoid stacking “expanding” primitives (GH#238)

  • Use randomly generated names in retail csv (GH#233)

  • Update README.md (GH#243)

v0.3.0 Aug 27, 2018#

  • Improve performance of all feature calculations (GH#224)

  • Update agg primitives to use more efficient functions (GH#215)

  • Optimize metadata calculation (GH#229)

  • More robust handling when no data at a cutoff time (GH#234)

  • Workaround categorical merge (GH#231)

  • Switch which CSV is associated with which variable (GH#228)

  • Remove unused kwargs from query_by_values, filter_and_sort (GH#225)

  • Remove convert_links_to_integers (GH#219)

  • Add conda install instructions (GH#223, GH#227)

  • Add example of using Dask to parallelize to docs (GH#221)

v0.2.2 Aug 20, 2018#

  • Remove unnecessary check no related instances call and refactor (GH#209)

  • Improve memory usage through support for pandas categorical types (GH#196)

  • Bump minimum pandas version from 0.20.3 to 0.23.0 (GH#216)

  • Better parallel memory warnings (GH#208, GH#214)

  • Update demo datasets (GH#187, GH#201, GH#207)

  • Make primitive lookup case insensitive (GH#213)

  • Use capital name (GH#211)

  • Set class name for Min (GH#206)

  • Remove variable_types from normalize entity (GH#205)

  • Handle parquet serialization with last time index (GH#204)

  • Reset index of cutoff times in calculate feature matrix (GH#198)

  • Check argument types for .normalize_entity (GH#195)

  • Type checking ignore entities. (GH#193)

v0.2.1 Jul 2, 2018#

  • Cpu count fix (GH#176)

  • Update flight (GH#175)

  • Move feature matrix calculation helper functions to separate file (GH#177)

v0.2.0 Jun 22, 2018#

  • Multiprocessing (GH#170)

  • Handle unicode encoding in repr throughout Featuretools (GH#161)

  • Clean up EntitySet class (GH#145)

  • Add support for building and uploading conda package (GH#167)

  • Parquet serialization (GH#152)

  • Remove variable stats (GH#171)

  • Make sure index variable comes first (GH#168)

  • No last time index update on normalize (GH#169)

  • Remove list of times as on option for cutoff_time in calculate_feature_matrix (GH#165)

  • Config does error checking to see if it can write to disk (GH#162)

v0.1.21 May 30, 2018#

v0.1.20 Apr 13, 2018#

  • Primitives as strings in DFS parameters (GH#129)

  • Integer time index bugfixes (GH#128)

  • Add make_temporal_cutoffs utility function (GH#126)

  • Show all entities, switch shape display to row/col (GH#124)

  • Improved chunking when calculating feature matrices (GH#121)

  • fixed num characters nan fix (GH#118)

  • modify ignore_variables docstring (GH#117)

v0.1.19 Mar 21, 2018#

  • More descriptive DFS progress bar (GH#69)

  • Convert text variable to string before NumWords (GH#106)

  • EntitySet.concat() reindexes relationships (GH#96)

  • Keep non-feature columns when encoding feature matrix (GH#111)

  • Uses full entity update for dependencies of uses_full_entity features (GH#110)

  • Update column names in retail demo (GH#104)

  • Handle Transform features that need access to all values of entity (GH#91)

v0.1.18 Feb 27, 2018#

  • fixes related instances bug (GH#97)

  • Adding non-feature columns to calculated feature matrix (GH#78)

  • Relax numpy version req (GH#82)

  • Remove entity_from_csv, tests, and lint (GH#71)

v0.1.17 Jan 18, 2018#

  • LatLong type (GH#57)

  • Last time index fixes (GH#70)

  • Make median agg primitives ignore nans by default (GH#61)

  • Remove Python 3.4 support (GH#64)

  • Change normalize_entity to update secondary_time_index (GH#59)

  • Unpin requirements (GH#53)

  • associative -> commutative (GH#56)

  • Add Words and Chars primitives (GH#51)

v0.1.16 Dec 19, 2017#

  • fix EntitySet.combine_variables and standardize encode_features (GH#47)

  • Python 3 compatibility (GH#16)

v0.1.15 Dec 18, 2017#

  • Fix variable type in demo data (GH#37)

  • Custom primitive kwarg fix (GH#38)

  • Changed order and text of arguments in make_trans_primitive docstring (GH#42)

v0.1.14 Nov 20, 2017#

  • Last time index (GH#33)

  • Update Scipy version to 1.0.0 (GH#31)

v0.1.13 Nov 1, 2017#

  • Add MANIFEST.in (GH#26)

v0.1.11 Oct 31, 2017#

  • Package linting (GH#7)

  • Custom primitive creation functions (GH#13)

  • Split requirements to separate files and pin to latest versions (GH#15)

  • Select low information features (GH#18)

  • Fix docs typos (GH#19)

  • Fixed Diff primitive for rare nan case (GH#21)

  • added some mising doc strings (GH#23)

  • Trend fix (GH#22)

  • Remove as_dir=False option from EntitySet.to_pickle() (GH#20)

  • Entity Normalization Preserves Types of Copy & Additional Variables (GH#25)

v0.1.10 Oct 12, 2017#

  • NumTrue primitive added and docstring of other primitives updated (GH#11)

  • fixed hash issue with same base features (GH#8)

  • Head fix (GH#9)

  • Fix training window (GH#10)

  • Add associative attribute to primitives (GH#3)

  • Add status badges, fix license in setup.py (GH#1)

  • fixed head printout and flight demo index (GH#2)

v0.1.9 Sep 8, 2017#

  • Documentation improvements

  • New featuretools.demo.load_mock_customer function

v0.1.8 Sep 1, 2017#

  • Bug fixes

  • Added Percentile transform primitive

v0.1.7 Aug 17, 2017#

  • Performance improvements for approximate in calculate_feature_matrix and dfs

  • Added Week transform primitive

v0.1.6 Jul 26, 2017#

  • Added load_features and save_features to persist and reload features

  • Added save_progress argument to calculate_feature_matrix

  • Added approximate parameter to calculate_feature_matrix and dfs

  • Added load_flight to ft.demo

v0.1.5 Jul 11, 2017#

  • Windows support

v0.1.3 Jul 10, 2017#

  • Renamed feature submodule to primitives

  • Renamed prediction_entity arguments to target_entity

  • Added training_window parameter to calculate_feature_matrix

v0.1.2 Jul 3rd, 2017#

  • Initial release