diff --git a/.github/fork_workflows/fork_pr_integration_tests_aws.yml b/.github/fork_workflows/fork_pr_integration_tests_aws.yml index 7261833ae6b..49fd16ef5d4 100644 --- a/.github/fork_workflows/fork_pr_integration_tests_aws.yml +++ b/.github/fork_workflows/fork_pr_integration_tests_aws.yml @@ -67,7 +67,7 @@ jobs: strategy: fail-fast: false matrix: - python-version: [ "3.8" ] + python-version: [ "3.9" ] os: [ ubuntu-latest ] env: OS: ${{ matrix.os }} diff --git a/.github/fork_workflows/fork_pr_integration_tests_gcp.yml b/.github/fork_workflows/fork_pr_integration_tests_gcp.yml index 1a05c068b50..cf85cc8873f 100644 --- a/.github/fork_workflows/fork_pr_integration_tests_gcp.yml +++ b/.github/fork_workflows/fork_pr_integration_tests_gcp.yml @@ -9,7 +9,7 @@ jobs: strategy: fail-fast: false matrix: - python-version: [ "3.8" ] + python-version: [ "3.9" ] os: [ ubuntu-latest ] env: OS: ${{ matrix.os }} diff --git a/.github/fork_workflows/fork_pr_integration_tests_snowflake.yml b/.github/fork_workflows/fork_pr_integration_tests_snowflake.yml index 9327f5c7294..0b1c8a48ced 100644 --- a/.github/fork_workflows/fork_pr_integration_tests_snowflake.yml +++ b/.github/fork_workflows/fork_pr_integration_tests_snowflake.yml @@ -9,7 +9,7 @@ jobs: strategy: fail-fast: false matrix: - python-version: [ "3.8" ] + python-version: [ "3.9" ] os: [ ubuntu-latest ] env: OS: ${{ matrix.os }} diff --git a/.github/workflows/build_wheels.yml b/.github/workflows/build_wheels.yml index 6e6539cf9e4..f0851f5bb04 100644 --- a/.github/workflows/build_wheels.yml +++ b/.github/workflows/build_wheels.yml @@ -59,7 +59,7 @@ jobs: - name: Setup Python uses: actions/setup-python@v3 with: - python-version: "3.8" + python-version: "3.9" architecture: x64 - name: Setup Node uses: actions/setup-node@v3 @@ -137,7 +137,7 @@ jobs: strategy: matrix: os: [ubuntu-latest, macos-latest ] - python-version: [ "3.8", "3.9", "3.10"] + python-version: ["3.9", "3.10"] from-source: [ True, False ] env: # this script is for testing servers diff --git a/.github/workflows/java_master_only.yml b/.github/workflows/java_master_only.yml index d82f69dd3cb..79b456e571e 100644 --- a/.github/workflows/java_master_only.yml +++ b/.github/workflows/java_master_only.yml @@ -25,7 +25,7 @@ jobs: uses: actions/setup-python@v3 id: setup-python with: - python-version: "3.8" + python-version: "3.9" architecture: x64 - name: Authenticate to Google Cloud uses: 'google-github-actions/auth@v1' @@ -95,7 +95,7 @@ jobs: if: github.repository == 'feast-dev/feast' runs-on: ubuntu-latest env: - PYTHON: 3.8 + PYTHON: 3.9 steps: - uses: actions/checkout@v3 with: @@ -110,7 +110,7 @@ jobs: uses: actions/setup-python@v3 id: setup-python with: - python-version: 3.8 + python-version: 3.9 architecture: x64 - name: Get pip cache dir id: pip-cache diff --git a/.github/workflows/java_pr.yml b/.github/workflows/java_pr.yml index d362a6bb540..b78b5297d22 100644 --- a/.github/workflows/java_pr.yml +++ b/.github/workflows/java_pr.yml @@ -88,7 +88,7 @@ jobs: uses: actions/setup-python@v3 id: setup-python with: - python-version: "3.8" + python-version: "3.9" architecture: x64 - name: Authenticate to Google Cloud uses: 'google-github-actions/auth@v1' @@ -111,7 +111,7 @@ jobs: runs-on: ubuntu-latest needs: unit-test-java env: - PYTHON: 3.8 + PYTHON: 3.9 steps: - uses: actions/checkout@v3 with: @@ -128,7 +128,7 @@ jobs: architecture: x64 - uses: actions/setup-python@v3 with: - python-version: '3.8' + python-version: '3.9' architecture: 'x64' - uses: actions/cache@v2 with: @@ -158,7 +158,7 @@ jobs: uses: actions/setup-python@v3 id: setup-python with: - python-version: 3.8 + python-version: 3.9 architecture: x64 - name: Get pip cache dir id: pip-cache diff --git a/.github/workflows/linter.yml b/.github/workflows/linter.yml index a4a42a11edb..a1747db1356 100644 --- a/.github/workflows/linter.yml +++ b/.github/workflows/linter.yml @@ -6,14 +6,14 @@ jobs: lint-python: runs-on: [ubuntu-latest] env: - PYTHON: 3.8 + PYTHON: 3.9 steps: - uses: actions/checkout@v3 - name: Setup Python id: setup-python uses: actions/setup-python@v3 with: - python-version: "3.8" + python-version: "3.9" architecture: x64 - name: Get pip cache dir id: pip-cache diff --git a/.github/workflows/master_only.yml b/.github/workflows/master_only.yml index 580ea3171b3..ded5310b50c 100644 --- a/.github/workflows/master_only.yml +++ b/.github/workflows/master_only.yml @@ -65,7 +65,7 @@ jobs: strategy: fail-fast: false matrix: - python-version: [ "3.8", "3.9", "3.10" ] + python-version: ["3.9", "3.10" ] os: [ ubuntu-latest ] env: OS: ${{ matrix.os }} diff --git a/.github/workflows/nightly-ci.yml b/.github/workflows/nightly-ci.yml index 0e1df81262d..e39f2e1c007 100644 --- a/.github/workflows/nightly-ci.yml +++ b/.github/workflows/nightly-ci.yml @@ -36,7 +36,7 @@ jobs: uses: actions/setup-python@v3 id: setup-python with: - python-version: "3.8" + python-version: "3.9" architecture: x64 - name: Set up AWS SDK uses: aws-actions/configure-aws-credentials@v1 @@ -124,7 +124,7 @@ jobs: strategy: fail-fast: false matrix: - python-version: [ "3.8" ] + python-version: [ "3.9" ] os: [ ubuntu-latest ] env: OS: ${{ matrix.os }} diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index 135d1d3a8df..432ab4bb585 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -160,7 +160,7 @@ jobs: architecture: x64 - uses: actions/setup-python@v3 with: - python-version: '3.7' + python-version: '3.9' architecture: 'x64' - uses: actions/cache@v2 with: diff --git a/environment-setup.md b/environment-setup.md new file mode 100644 index 00000000000..a6c30c2aa22 --- /dev/null +++ b/environment-setup.md @@ -0,0 +1,23 @@ +1. install anaconda, install docker +2. create an environment for feast, selecting python 3.9. Activate the environment: +```bash +conda create --name feast python=3.9 +conda activate feast +``` +3. install dependencies: +```bash +pip install pip-tools +brew install mysql +brew install xz protobuf openssl zlib +pip install cryptography -U +conda install protobuf +conda install pymssql +pip install -e ".[dev]" +make install-protoc-dependencies PYTHON=3.9 +make install-python-ci-dependencies PYTHON=3.9 +``` +4. start the docker daemon +5. run unit tests: +```bash +make test-python +``` \ No newline at end of file diff --git a/java/serving/src/test/resources/docker-compose/feast10/Dockerfile b/java/serving/src/test/resources/docker-compose/feast10/Dockerfile index dee7dcf84c4..7e36658caef 100644 --- a/java/serving/src/test/resources/docker-compose/feast10/Dockerfile +++ b/java/serving/src/test/resources/docker-compose/feast10/Dockerfile @@ -1,4 +1,4 @@ -FROM python:3.8 +FROM python:3.9 WORKDIR /usr/src/ diff --git a/sdk/python/feast/infra/feature_servers/multicloud/Dockerfile b/sdk/python/feast/infra/feature_servers/multicloud/Dockerfile index 4527c5b1566..5d2d425cda4 100644 --- a/sdk/python/feast/infra/feature_servers/multicloud/Dockerfile +++ b/sdk/python/feast/infra/feature_servers/multicloud/Dockerfile @@ -1,4 +1,4 @@ -FROM python:3.8 +FROM python:3.9 # Input the feast version to install # This requires feast package to be available in pypi before building this image diff --git a/sdk/python/feast/infra/feature_servers/multicloud/Dockerfile.dev b/sdk/python/feast/infra/feature_servers/multicloud/Dockerfile.dev index 015e3c7ee82..900578f55db 100644 --- a/sdk/python/feast/infra/feature_servers/multicloud/Dockerfile.dev +++ b/sdk/python/feast/infra/feature_servers/multicloud/Dockerfile.dev @@ -1,4 +1,4 @@ -FROM python:3.8 +FROM python:3.9 # Input the feast version to install # This requires feast package to be available in pypi before building this image diff --git a/sdk/python/feast/infra/utils/snowflake/snowpark/snowflake_python_udfs_creation.sql b/sdk/python/feast/infra/utils/snowflake/snowpark/snowflake_python_udfs_creation.sql index a444c0b7c5c..e39b12c1f79 100644 --- a/sdk/python/feast/infra/utils/snowflake/snowpark/snowflake_python_udfs_creation.sql +++ b/sdk/python/feast/infra/utils/snowflake/snowpark/snowflake_python_udfs_creation.sql @@ -1,7 +1,7 @@ CREATE FUNCTION IF NOT EXISTS feast_PROJECT_NAME_snowflake_binary_to_bytes_proto(df BINARY) RETURNS BINARY LANGUAGE PYTHON - RUNTIME_VERSION = '3.8' + RUNTIME_VERSION = '3.9' PACKAGES = ('protobuf', 'pandas') HANDLER = 'feast.infra.utils.snowflake.snowpark.snowflake_udfs.feast_snowflake_binary_to_bytes_proto' IMPORTS = ('@STAGE_HOLDER/feast.zip'); @@ -9,7 +9,7 @@ CREATE FUNCTION IF NOT EXISTS feast_PROJECT_NAME_snowflake_binary_to_bytes_proto CREATE FUNCTION IF NOT EXISTS feast_PROJECT_NAME_snowflake_varchar_to_string_proto(df VARCHAR) RETURNS BINARY LANGUAGE PYTHON - RUNTIME_VERSION = '3.8' + RUNTIME_VERSION = '3.9' PACKAGES = ('protobuf', 'pandas') HANDLER = 'feast.infra.utils.snowflake.snowpark.snowflake_udfs.feast_snowflake_varchar_to_string_proto' IMPORTS = ('@STAGE_HOLDER/feast.zip'); @@ -17,7 +17,7 @@ CREATE FUNCTION IF NOT EXISTS feast_PROJECT_NAME_snowflake_varchar_to_string_pro CREATE FUNCTION IF NOT EXISTS feast_PROJECT_NAME_snowflake_array_bytes_to_list_bytes_proto(df ARRAY) RETURNS BINARY LANGUAGE PYTHON - RUNTIME_VERSION = '3.8' + RUNTIME_VERSION = '3.9' PACKAGES = ('protobuf', 'pandas') HANDLER = 'feast.infra.utils.snowflake.snowpark.snowflake_udfs.feast_snowflake_array_bytes_to_list_bytes_proto' IMPORTS = ('@STAGE_HOLDER/feast.zip'); @@ -25,7 +25,7 @@ CREATE FUNCTION IF NOT EXISTS feast_PROJECT_NAME_snowflake_array_bytes_to_list_b CREATE FUNCTION IF NOT EXISTS feast_PROJECT_NAME_snowflake_array_varchar_to_list_string_proto(df ARRAY) RETURNS BINARY LANGUAGE PYTHON - RUNTIME_VERSION = '3.8' + RUNTIME_VERSION = '3.9' PACKAGES = ('protobuf', 'pandas') HANDLER = 'feast.infra.utils.snowflake.snowpark.snowflake_udfs.feast_snowflake_array_varchar_to_list_string_proto' IMPORTS = ('@STAGE_HOLDER/feast.zip'); @@ -33,7 +33,7 @@ CREATE FUNCTION IF NOT EXISTS feast_PROJECT_NAME_snowflake_array_varchar_to_list CREATE FUNCTION IF NOT EXISTS feast_PROJECT_NAME_snowflake_array_number_to_list_int32_proto(df ARRAY) RETURNS BINARY LANGUAGE PYTHON - RUNTIME_VERSION = '3.8' + RUNTIME_VERSION = '3.9' PACKAGES = ('protobuf', 'pandas') HANDLER = 'feast.infra.utils.snowflake.snowpark.snowflake_udfs.feast_snowflake_array_number_to_list_int32_proto' IMPORTS = ('@STAGE_HOLDER/feast.zip'); @@ -41,7 +41,7 @@ CREATE FUNCTION IF NOT EXISTS feast_PROJECT_NAME_snowflake_array_number_to_list_ CREATE FUNCTION IF NOT EXISTS feast_PROJECT_NAME_snowflake_array_number_to_list_int64_proto(df ARRAY) RETURNS BINARY LANGUAGE PYTHON - RUNTIME_VERSION = '3.8' + RUNTIME_VERSION = '3.9' PACKAGES = ('protobuf', 'pandas') HANDLER = 'feast.infra.utils.snowflake.snowpark.snowflake_udfs.feast_snowflake_array_number_to_list_int64_proto' IMPORTS = ('@STAGE_HOLDER/feast.zip'); @@ -49,7 +49,7 @@ CREATE FUNCTION IF NOT EXISTS feast_PROJECT_NAME_snowflake_array_number_to_list_ CREATE FUNCTION IF NOT EXISTS feast_PROJECT_NAME_snowflake_array_float_to_list_double_proto(df ARRAY) RETURNS BINARY LANGUAGE PYTHON - RUNTIME_VERSION = '3.8' + RUNTIME_VERSION = '3.9' PACKAGES = ('protobuf', 'pandas') HANDLER = 'feast.infra.utils.snowflake.snowpark.snowflake_udfs.feast_snowflake_array_float_to_list_double_proto' IMPORTS = ('@STAGE_HOLDER/feast.zip'); @@ -57,7 +57,7 @@ CREATE FUNCTION IF NOT EXISTS feast_PROJECT_NAME_snowflake_array_float_to_list_d CREATE FUNCTION IF NOT EXISTS feast_PROJECT_NAME_snowflake_array_boolean_to_list_bool_proto(df ARRAY) RETURNS BINARY LANGUAGE PYTHON - RUNTIME_VERSION = '3.8' + RUNTIME_VERSION = '3.9' PACKAGES = ('protobuf', 'pandas') HANDLER = 'feast.infra.utils.snowflake.snowpark.snowflake_udfs.feast_snowflake_array_boolean_to_list_bool_proto' IMPORTS = ('@STAGE_HOLDER/feast.zip'); @@ -65,7 +65,7 @@ CREATE FUNCTION IF NOT EXISTS feast_PROJECT_NAME_snowflake_array_boolean_to_list CREATE FUNCTION IF NOT EXISTS feast_PROJECT_NAME_snowflake_array_timestamp_to_list_unix_timestamp_proto(df ARRAY) RETURNS BINARY LANGUAGE PYTHON - RUNTIME_VERSION = '3.8' + RUNTIME_VERSION = '3.9' PACKAGES = ('protobuf', 'pandas') HANDLER = 'feast.infra.utils.snowflake.snowpark.snowflake_udfs.feast_snowflake_array_timestamp_to_list_unix_timestamp_proto' IMPORTS = ('@STAGE_HOLDER/feast.zip'); @@ -73,7 +73,7 @@ CREATE FUNCTION IF NOT EXISTS feast_PROJECT_NAME_snowflake_array_timestamp_to_li CREATE FUNCTION IF NOT EXISTS feast_PROJECT_NAME_snowflake_number_to_int32_proto(df NUMBER) RETURNS BINARY LANGUAGE PYTHON - RUNTIME_VERSION = '3.8' + RUNTIME_VERSION = '3.9' PACKAGES = ('protobuf', 'pandas') HANDLER = 'feast.infra.utils.snowflake.snowpark.snowflake_udfs.feast_snowflake_number_to_int32_proto' IMPORTS = ('@STAGE_HOLDER/feast.zip'); @@ -81,7 +81,7 @@ CREATE FUNCTION IF NOT EXISTS feast_PROJECT_NAME_snowflake_number_to_int32_proto CREATE FUNCTION IF NOT EXISTS feast_PROJECT_NAME_snowflake_number_to_int64_proto(df NUMBER) RETURNS BINARY LANGUAGE PYTHON - RUNTIME_VERSION = '3.8' + RUNTIME_VERSION = '3.9' PACKAGES = ('protobuf', 'pandas') HANDLER = 'feast.infra.utils.snowflake.snowpark.snowflake_udfs.feast_snowflake_number_to_int64_proto' IMPORTS = ('@STAGE_HOLDER/feast.zip'); @@ -89,7 +89,7 @@ CREATE FUNCTION IF NOT EXISTS feast_PROJECT_NAME_snowflake_number_to_int64_proto CREATE FUNCTION IF NOT EXISTS feast_PROJECT_NAME_snowflake_float_to_double_proto(df DOUBLE) RETURNS BINARY LANGUAGE PYTHON - RUNTIME_VERSION = '3.8' + RUNTIME_VERSION = '3.9' PACKAGES = ('protobuf', 'pandas') HANDLER = 'feast.infra.utils.snowflake.snowpark.snowflake_udfs.feast_snowflake_float_to_double_proto' IMPORTS = ('@STAGE_HOLDER/feast.zip'); @@ -97,7 +97,7 @@ CREATE FUNCTION IF NOT EXISTS feast_PROJECT_NAME_snowflake_float_to_double_proto CREATE FUNCTION IF NOT EXISTS feast_PROJECT_NAME_snowflake_boolean_to_bool_proto(df BOOLEAN) RETURNS BINARY LANGUAGE PYTHON - RUNTIME_VERSION = '3.8' + RUNTIME_VERSION = '3.9' PACKAGES = ('protobuf', 'pandas') HANDLER = 'feast.infra.utils.snowflake.snowpark.snowflake_udfs.feast_snowflake_boolean_to_bool_boolean_proto' IMPORTS = ('@STAGE_HOLDER/feast.zip'); @@ -105,7 +105,7 @@ CREATE FUNCTION IF NOT EXISTS feast_PROJECT_NAME_snowflake_boolean_to_bool_proto CREATE FUNCTION IF NOT EXISTS feast_PROJECT_NAME_snowflake_timestamp_to_unix_timestamp_proto(df NUMBER) RETURNS BINARY LANGUAGE PYTHON - RUNTIME_VERSION = '3.8' + RUNTIME_VERSION = '3.9' PACKAGES = ('protobuf', 'pandas') HANDLER = 'feast.infra.utils.snowflake.snowpark.snowflake_udfs.feast_snowflake_timestamp_to_unix_timestamp_proto' IMPORTS = ('@STAGE_HOLDER/feast.zip'); @@ -113,7 +113,7 @@ CREATE FUNCTION IF NOT EXISTS feast_PROJECT_NAME_snowflake_timestamp_to_unix_tim CREATE FUNCTION IF NOT EXISTS feast_PROJECT_NAME_serialize_entity_keys(names ARRAY, data ARRAY, types ARRAY) RETURNS BINARY LANGUAGE PYTHON - RUNTIME_VERSION = '3.8' + RUNTIME_VERSION = '3.9' PACKAGES = ('protobuf', 'pandas') HANDLER = 'feast.infra.utils.snowflake.snowpark.snowflake_udfs.feast_serialize_entity_keys' IMPORTS = ('@STAGE_HOLDER/feast.zip'); @@ -121,7 +121,7 @@ CREATE FUNCTION IF NOT EXISTS feast_PROJECT_NAME_serialize_entity_keys(names ARR CREATE FUNCTION IF NOT EXISTS feast_PROJECT_NAME_entity_key_proto_to_string(names ARRAY, data ARRAY, types ARRAY) RETURNS BINARY LANGUAGE PYTHON - RUNTIME_VERSION = '3.8' + RUNTIME_VERSION = '3.9' PACKAGES = ('protobuf', 'pandas') HANDLER = 'feast.infra.utils.snowflake.snowpark.snowflake_udfs.feast_entity_key_proto_to_string' IMPORTS = ('@STAGE_HOLDER/feast.zip') diff --git a/sdk/python/feast/infra/utils/snowflake/snowpark/snowflake_udfs.py b/sdk/python/feast/infra/utils/snowflake/snowpark/snowflake_udfs.py index f5d5f10631f..ebba3e9b84e 100644 --- a/sdk/python/feast/infra/utils/snowflake/snowpark/snowflake_udfs.py +++ b/sdk/python/feast/infra/utils/snowflake/snowpark/snowflake_udfs.py @@ -18,7 +18,7 @@ CREATE OR REPLACE FUNCTION feast_snowflake_binary_to_bytes_proto(df BINARY) RETURNS BINARY LANGUAGE PYTHON - RUNTIME_VERSION = '3.8' + RUNTIME_VERSION = '3.9' PACKAGES = ('protobuf', 'pandas') HANDLER = 'feast.infra.utils.snowflake.snowpark.snowflake_udfs.feast_snowflake_binary_to_bytes_proto' IMPORTS = ('@feast_stage/feast.zip'); @@ -41,7 +41,7 @@ def feast_snowflake_binary_to_bytes_proto(df): CREATE OR REPLACE FUNCTION feast_snowflake_varchar_to_string_proto(df VARCHAR) RETURNS BINARY LANGUAGE PYTHON - RUNTIME_VERSION = '3.8' + RUNTIME_VERSION = '3.9' PACKAGES = ('protobuf', 'pandas') HANDLER = 'feast.infra.utils.snowflake.snowpark.snowflake_udfs.feast_snowflake_varchar_to_string_proto' IMPORTS = ('@feast_stage/feast.zip'); @@ -64,7 +64,7 @@ def feast_snowflake_varchar_to_string_proto(df): CREATE OR REPLACE FUNCTION feast_snowflake_array_bytes_to_list_bytes_proto(df ARRAY) RETURNS BINARY LANGUAGE PYTHON - RUNTIME_VERSION = '3.8' + RUNTIME_VERSION = '3.9' PACKAGES = ('protobuf', 'pandas') HANDLER = 'feast.infra.utils.snowflake.snowpark.snowflake_udfs.feast_snowflake_array_bytes_to_list_bytes_proto' IMPORTS = ('@feast_stage/feast.zip'); @@ -90,7 +90,7 @@ def feast_snowflake_array_bytes_to_list_bytes_proto(df): CREATE OR REPLACE FUNCTION feast_snowflake_array_varchar_to_list_string_proto(df ARRAY) RETURNS BINARY LANGUAGE PYTHON - RUNTIME_VERSION = '3.8' + RUNTIME_VERSION = '3.9' PACKAGES = ('protobuf', 'pandas') HANDLER = 'feast.infra.utils.snowflake.snowpark.snowflake_udfs.feast_snowflake_array_varchar_to_list_string_proto' IMPORTS = ('@feast_stage/feast.zip'); @@ -114,7 +114,7 @@ def feast_snowflake_array_varchar_to_list_string_proto(df): CREATE OR REPLACE FUNCTION feast_snowflake_array_number_to_list_int32_proto(df ARRAY) RETURNS BINARY LANGUAGE PYTHON - RUNTIME_VERSION = '3.8' + RUNTIME_VERSION = '3.9' PACKAGES = ('protobuf', 'pandas') HANDLER = 'feast.infra.utils.snowflake.snowpark.snowflake_udfs.feast_snowflake_array_number_to_list_int32_proto' IMPORTS = ('@feast_stage/feast.zip'); @@ -138,7 +138,7 @@ def feast_snowflake_array_number_to_list_int32_proto(df): CREATE OR REPLACE FUNCTION feast_snowflake_array_number_to_list_int64_proto(df ARRAY) RETURNS BINARY LANGUAGE PYTHON - RUNTIME_VERSION = '3.8' + RUNTIME_VERSION = '3.9' PACKAGES = ('protobuf', 'pandas') HANDLER = 'feast.infra.utils.snowflake.snowpark.snowflake_udfs.feast_snowflake_array_number_to_list_int64_proto' IMPORTS = ('@feast_stage/feast.zip'); @@ -162,7 +162,7 @@ def feast_snowflake_array_number_to_list_int64_proto(df): CREATE OR REPLACE FUNCTION feast_snowflake_array_float_to_list_double_proto(df ARRAY) RETURNS BINARY LANGUAGE PYTHON - RUNTIME_VERSION = '3.8' + RUNTIME_VERSION = '3.9' PACKAGES = ('protobuf', 'pandas') HANDLER = 'feast.infra.utils.snowflake.snowpark.snowflake_udfs.feast_snowflake_array_float_to_list_double_proto' IMPORTS = ('@feast_stage/feast.zip'); @@ -188,7 +188,7 @@ def feast_snowflake_array_float_to_list_double_proto(df): CREATE OR REPLACE FUNCTION feast_snowflake_array_boolean_to_list_bool_proto(df ARRAY) RETURNS BINARY LANGUAGE PYTHON - RUNTIME_VERSION = '3.8' + RUNTIME_VERSION = '3.9' PACKAGES = ('protobuf', 'pandas') HANDLER = 'feast.infra.utils.snowflake.snowpark.snowflake_udfs.feast_snowflake_array_boolean_to_list_bool_proto' IMPORTS = ('@feast_stage/feast.zip'); @@ -212,7 +212,7 @@ def feast_snowflake_array_boolean_to_list_bool_proto(df): CREATE OR REPLACE FUNCTION feast_snowflake_array_timestamp_to_list_unix_timestamp_proto(df ARRAY) RETURNS BINARY LANGUAGE PYTHON - RUNTIME_VERSION = '3.8' + RUNTIME_VERSION = '3.9' PACKAGES = ('protobuf', 'pandas') HANDLER = 'feast.infra.utils.snowflake.snowpark.snowflake_udfs.feast_snowflake_array_timestamp_to_list_unix_timestamp_proto' IMPORTS = ('@feast_stage/feast.zip'); @@ -238,7 +238,7 @@ def feast_snowflake_array_timestamp_to_list_unix_timestamp_proto(df): CREATE OR REPLACE FUNCTION feast_snowflake_number_to_int32_proto(df NUMBER) RETURNS BINARY LANGUAGE PYTHON - RUNTIME_VERSION = '3.8' + RUNTIME_VERSION = '3.9' PACKAGES = ('protobuf', 'pandas') HANDLER = 'feast.infra.utils.snowflake.snowpark.snowflake_udfs.feast_snowflake_number_to_int32_proto' IMPORTS = ('@feast_stage/feast.zip'); @@ -261,7 +261,7 @@ def feast_snowflake_number_to_int32_proto(df): CREATE OR REPLACE FUNCTION feast_snowflake_number_to_int64_proto(df NUMBER) RETURNS BINARY LANGUAGE PYTHON - RUNTIME_VERSION = '3.8' + RUNTIME_VERSION = '3.9' PACKAGES = ('protobuf', 'pandas') HANDLER = 'feast.infra.utils.snowflake.snowpark.snowflake_udfs.feast_snowflake_number_to_int64_proto' IMPORTS = ('@feast_stage/feast.zip'); @@ -286,7 +286,7 @@ def feast_snowflake_number_to_int64_proto(df): CREATE OR REPLACE FUNCTION feast_snowflake_float_to_double_proto(df DOUBLE) RETURNS BINARY LANGUAGE PYTHON - RUNTIME_VERSION = '3.8' + RUNTIME_VERSION = '3.9' PACKAGES = ('protobuf', 'pandas') HANDLER = 'feast.infra.utils.snowflake.snowpark.snowflake_udfs.feast_snowflake_float_to_double_proto' IMPORTS = ('@feast_stage/feast.zip'); @@ -309,7 +309,7 @@ def feast_snowflake_float_to_double_proto(df): CREATE OR REPLACE FUNCTION feast_snowflake_boolean_to_bool_proto(df BOOLEAN) RETURNS BINARY LANGUAGE PYTHON - RUNTIME_VERSION = '3.8' + RUNTIME_VERSION = '3.9' PACKAGES = ('protobuf', 'pandas') HANDLER = 'feast.infra.utils.snowflake.snowpark.snowflake_udfs.feast_snowflake_boolean_to_bool_boolean_proto' IMPORTS = ('@feast_stage/feast.zip'); @@ -332,7 +332,7 @@ def feast_snowflake_boolean_to_bool_boolean_proto(df): CREATE OR REPLACE FUNCTION feast_snowflake_timestamp_to_unix_timestamp_proto(df NUMBER) RETURNS BINARY LANGUAGE PYTHON - RUNTIME_VERSION = '3.8' + RUNTIME_VERSION = '3.9' PACKAGES = ('protobuf', 'pandas') HANDLER = 'feast.infra.utils.snowflake.snowpark.snowflake_udfs.feast_snowflake_timestamp_to_unix_timestamp_proto' IMPORTS = ('@feast_stage/feast.zip'); @@ -358,7 +358,7 @@ def feast_snowflake_timestamp_to_unix_timestamp_proto(df): CREATE OR REPLACE FUNCTION feast_serialize_entity_keys(names ARRAY, data ARRAY, types ARRAY) RETURNS BINARY LANGUAGE PYTHON - RUNTIME_VERSION = '3.8' + RUNTIME_VERSION = '3.9' PACKAGES = ('protobuf', 'pandas') HANDLER = 'feast.infra.utils.snowflake.snowpark.snowflake_udfs.feast_serialize_entity_keys' IMPORTS = ('@feast_stage/feast.zip') @@ -405,7 +405,7 @@ def feast_serialize_entity_keys(df): CREATE OR REPLACE FUNCTION feast_entity_key_proto_to_string(names ARRAY, data ARRAY, types ARRAY) RETURNS BINARY LANGUAGE PYTHON - RUNTIME_VERSION = '3.8' + RUNTIME_VERSION = '3.9' PACKAGES = ('protobuf', 'pandas') HANDLER = 'feast.infra.utils.snowflake.snowpark.snowflake_udfs.feast_entity_key_proto_to_string' IMPORTS = ('@feast_stage/feast.zip') diff --git a/setup.py b/setup.py index b3ed889e0be..92d73564113 100644 --- a/setup.py +++ b/setup.py @@ -38,7 +38,7 @@ DESCRIPTION = "Python SDK for Feast" URL = "https://github.com/feast-dev/feast" AUTHOR = "Feast" -REQUIRES_PYTHON = ">=3.8.0" +REQUIRES_PYTHON = ">=3.9.0" REQUIRED = [ "click>=7.0.0,<9.0.0", @@ -195,7 +195,6 @@ "types-setuptools", "types-tabulate", "virtualenv<20.24.2", - "pandas>=1.4.3,<2; python_version < '3.9'", ] + GCP_REQUIRED + REDIS_REQUIRED