NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
PyPI · #4214 most downloaded on PyPI
ODPS Python SDK and data analysis framework
Last release 24 days ago
10 Sep 2026
Ships fairly regularly
a new release about every 2 months
Nearly every release is documented
notes for 55 of the last 60 stable releases
1 version withdrawn
withdrawn after publishing
11 years old
142 releases · first in 2015
odps.apis.storage_api_v2 removed - The deprecated v2 storage API module (client, models, stream_io, tests) has been removed. The maxstorage blob reade…
BATCH_COMPATIBLE write mode to odps.maxstorage, exposing TableBlockWriter, BlockWriteResult, and BatchCompatibleOptions for block-based ingestion through MaxStorageClient.create_table_write_session.TunnelRetryHandler that owns tunnel request retries with well-defined semantics: 308 (slot reassignment) / 429 (flow exceeded) retry with infinite exponential backoff capped at 64s; 5xx server errors retry 1s→64s up to 7 times; other 4xx fail fast. Adds stream-upload slot-route reload with throttling, upsert session background keepalive, and upsert flush retry.COLDARCHIVE storage tier to StorageTier, plus a forward-compatible UNKNOWN tier (via _missing_) so unrecognized server values no longer raise. StorageTierInfo parse callbacks are now null-safe.seek() is now supported for read-mode stream resources (previously raised UnsupportedOperation), honoring SEEK_SET, SEEK_CUR, and SEEK_END (end requires a known resource size).sql.skip_parse_merge_task option (default False); when enabled, MergeTask.parse returns None to skip parsing.odps.apis.storage_api_v2 removed - The deprecated v2 storage API module (client, models, stream_io, tests) has been removed. The maxstorage blob reader now consumes the v1 storage API. Please migrate any direct storage_api_v2 imports to odps.maxstorage.One column per quarter.
A record-based API with automatic blob upload support is also added. The odps.apis.storage_api_v2 module is now deprecated and will be removed in a re…
odps.maxstorage module, a pyodps-native flavor of the Storage API v2 support with a finalized end-user API surface. This adds full type annotations and ports blob support to the v2 Storage API including custom file names, nested blobs, and a BlobRecord dataclass. Blob uploads and reads are now streamed via chunked transfer-encoding instead of being materialized in memory, and download framing, compression defaults. A record-based API with automatic blob upload support is also added. The odps.apis.storage_api_v2 module is now deprecated and will be removed in a recent release.sts_token argument when constructing the ODPS entry, and fixes STS support for loading resources.HTTP_PROXY.require_stream_footer to detect stream truncation and avoid silent data loss in tunnel downloads. Also adds angle-bracket vector syntax (VECTOR<FLOAT,3>) test coverage.InternalServerError. Replaces mutable list closure hack with nonlocal declarations to meet Python 3 flavor.variant type.large_string/large_binary in the tunnel writer.IndexError that occurred when writing to sparse block IDs in the storage API.CloudAccount v4 signature key cache - CloudAccount caches the v4 signing key keyed by date; concurrent sign_request calls could race the check-then-set on _last_signature_date / _last_signature_key.odps.apis.storage_api_v2 deprecated - The odps.apis.storage_api_v2 module is now deprecated and will be removed in a recent release. Please migrate to odps.maxstorage, which provides the same Storage API v2 functionality with improved streaming, blob I/O, and nested-blob support.Storage API v2 - Introduces the new Storage API v2 interface for interacting with MaxCompute storage.
This release backports several fixes and features from the master branch to the 0.12.6 branch, introducing the Variant and Vector data types, improvin
This release backports several fixes and features from the master branch to the 0.12.6 branch, introducing the Variant and Vector data types, improving account signing mechanisms and concurrency safety, and fixing a RecordHasher crash in specific scenarios.
Variant and Vector primitive data type, allowing these two types to be declared. Note that this only supports type definitions. You need to upgrade to later PyODPS versions on Python 3 to truly use these types.sts_token constructor argument - Supports passing sts_token directly when constructing the ODPS entry object, which automatically creates an StsAccount, simplifying STS scenario initialization.RecordHasher IndexError when PK columns are not at the beginning of schema - The Cython version of RecordHasher would crash with an index out-of-bounds error when primary key columns were not located at the start of the schema. Replaced with an independent key_idx counter to map primary key columns, fixing the issue. (aliyun/aliyun-odps-python-sdk#324)CloudAccount v4 signature key cache - CloudAccount caches the v4 signing key keyed by date; concurrent sign_request calls could race the check-then-set on _last_signature_date / _last_signature_key._open_writer stored sub-writers indexed by block-id value while the rest of AbstractTableWriter indexes _blocks_writers by position, breaking open_writer(blocks=[3, 7]) ... write(3, ...). Threaded the positional idx through _open_writer and asserted the block_id/idx invariant at the storage point, restoring the v0.9 positional contract.Made pyodpswrapper available externally. When images of DataWorks are upgraded, users can upgrade features pyodpswrapper through pip install -U pyodps
pip install -U pyodpsEnhanceWriteCheck parameter to the CreateWriteSession interface in the storage APIpartition_spec argument support for open_reader and open_writer methodsCredentialProviderAccount objectswrite_table functionquotaName parameter in tunnel operationsODPS.get_xxx methodsFix pickling error of CredentialProviderAccount.
Allow using ODPS_REGION_NAME to pass region name in envs.
Lock when updating and retrieving access ids & keys in certain accounts.
write_sql_result_to_table.Add an option to allow casting to arrow dtypes on arrow tunnel.
write_table.infer_type_with_arrow to allow infering data type with pandas with write_table.to_pandas methods.tarfile module.mcqa_v2=True and quota is not returned from server side (for instance, requesting on a legacy quota).python-pack to make sure Python 3.7 is still available.datetime.utc if possible.write_table instead of DataFrame APIs if you only need to write your local pandas data to MaxCompute.options.use_legacy_logview = True if you do not expect this behavior.odps.accounts.AliyunAccount is renamed as odps.account.CloudAccount to meet the requirements of certain region. Please change your imports.options.enable_v4_sign = False to avoid request attempts with the new signature.python-pack is fixed. To utilize existing local manylinux images you can add an argument --use-default-image-tag.Mark PyODPS DataFrame as deprecated in documentation.
options.struct_as_dict == True.write_table with create_table == True.create_partition argument for tunnel APIs.dict instead of OrderedDict is used by default for structs when options.struct_as_dict == True for Python>=3.7. Change to legacy behavior by setting options.struct_as_ordered_dict = True.Fixes potential corruption of default global settings.
Add session refresh option for storage API.
(Experimental) Add support for MCQAv2 for sqlalchemy.
options.use_legacy_logview = False.odps.task.wlm.quota available for MCQAv2 to set quota name.Add an import to requests in odps.lib to resolve compatibility issue of legacy codes.
odps.lib to resolve compatibility issue of legacy codes.(Experimental) Add metrics interface for tunnel.
allow_schema_mismatch option and CDC info on tables and partitions.call_with_retry to support KeyboardInterrupt and ignoring exceptions.options.always_enable_schema is renamed as options.enable_schema and the former option is now marked as deprecated.
write_table with pandas to facilitate creating tables or partitions with pandas DataFrames.and to_pandas methods to facilitate converting from and to pandas DataFrames.to_pandas and iter_pandas methods.append_partitions argument on tunnel reader and writer.pyou.pyodps-pack.black lint for repository and unify quotes with double quotes if possible.pyarrow.compute if possible.task_name for instance methods.project_as_schema given tenant schema support in DBAPI support.raise_empty=True.options.always_enable_schema as options.enable_schema to make it consistent with MaxFrame configutations.TableTunnel.create_download_session to async_mode by default to reduce chances of failure when calling tunnel SDK directly.pyodps-pack with sudo under macOS. Show warning and error messages with colors as well.odps.merge.txn.table.compact argument of merge compact command.jieba to split words.open_pandas_reader and open_pandas_writer are removed from TableTunnel class to make wheels simple. Users who call these APIs should use to_pandas, write_table or arrow tunnel support instead.options.always_enable_schema is renamed as options.enable_schema and the former option is now marked as deprecated.--without-docker and --without-merge options in pyodps-pack are renamed as --no-docker and --no-merge to make them consistent with pip style.Switch TableTunnel.create_download_session to async_mode by default.
Fix error when uploading multiple batches with BufferedArrowWriter.
Fix CRC computation of arrow tunnel interfaces
Fix types support of json and timestamp_ntz in sqlalchemy
Allow opening resources with full resource path and temp hint
Add support for cluster info and views in tables and table DDL output.
Fix attribute errors for table preview and storage API.
Add support for arrow table preview reader
DataFrame(pd).persist if possible to reduce memory usageoptions.struct_as_dict = True.nullable property of columns is added for transactional tables, and default value for partition columns is False. If you use these column instances in some scenario, for instance, using them as common columns to create tables, non-nullable columns could be created and insertion of null values will result in errors. To ignore nullable flags in columns, try configuring sql.ignore_fields_not_null = True.Stop copying and caching for DataFrame(pd).persist if possible to reduce memory usage.
DataFrame(pd).persist if possible to reduce memory usage.Add support for arrow table preview reader
options.struct_as_dict = True.Reuse UDFs when code is same and without closures
Restrict urllib3 version to 1.x.
Using async_ arguments as position arguments is deprecated. Please use it as a keyword argument.
iter_xflow_subinstances.async_ arguments as position arguments is deprecated. Please use it as a keyword argument.BufferredRecordWriter is now renamed as BufferedRecordWriter. References to old class should be switched into new one.Add support for none-Docker mode for pyodps-pack. It now supports limited scenarios when Docker not available.
pyodps-pack. It now supports limited scenarios when Docker not available.to_pandas() on tunnels by converting to pandas in batchesto_pandas() on tunnelsodps.namespace.schema enabled on tenants, or options.always_enable_schema set to Truepd.NA is usedRemove dependencies of deprecated distutils package
pyodps-pack to pack third-party libraries, recommended as standard packing mechanismrun_sql_interactive_with_fallback interface in pyodpsget_max_partition for tables__getitem__distutils packagelast_modified_time with last_data_modified_time for clarityfillnaSchema object level is introduced, it is now discouraged to use schema for table schemas and warnings will be produced. Try using table_schema instead when you code with the new version.creation_time now uses local time instead of UTC time for consistency with other datetime attributes by default. Switch to old behavior by setting options.use_legacy_parsedate = True.last_modified_time on tables and partitions now renamed into last_data_modified_time for clarity. Warnings might be produced with old attribute names.Add new command line tool pyodps-pack to pack third-party libraries, recommended as standard packing mechanism
pyodps-pack to pack third-party libraries, recommended as standard packing mechanismrun_sql_interactive_with_fallback interface in pyodpsget_max_partition for tables__getitem__Schema object level is introduced, it is now discouraged to use schema for table schemas and warnings will be produced. Try using table_schema instead when you code with the new version.creation_time now uses local time instead of UTC time for consistency with other datetime attributes by default. Switch to old behavior by setting options.use_legacy_parsedate = True.Add retry on tunnel meta conflicts.
Supports interactive query with retry
Supports security queries returning instances
Nothing published for this version
Make public API for arrow tunnels
Upgrade Mars support to v0.9.0 and switch to different bases for different Python versions and archs
Fix compatibility for IPython>=0.8.0
Fix to_pandas error on Windows.
to_pandas error on Windows.Add more sqa features to support superset
Use split meta to estimate chunk size
Apply head optimization for read table
Config UDF python version if has UDF in query
Fix reduce kwargs in pandas backend
Switch deployment to Github Actions.
## Enhancements * Add support for StsAccount.
- Upgrade Mars to 0.5.2 - Support rescale workers - Fix memory issues
Add refresh mechanism for bearer token
Improvements and bug fixes for Mars integration
stored_as property for TableEnhancements in Mars integration.
Nothing published for this version
Enhancements in Mars integration.
Nothing published for this version
Nothing published for this version
## Enhancements * Add support for StsAccount.
Nothing published for this version
Fix pickle protocol inconsistent
Support running DataFrame customized functions under Python 3 backends
Support execute_merge_files to merge small files.
execute_merge_files to merge small files.Your coding agent can read these notes before it upgrades. Set up the MCP server →