maxframe 1.0.0rc2__tar.gz → 1.0.0rc4__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of maxframe might be problematic. Click here for more details.
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/PKG-INFO +2 -75
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/README.rst +0 -73
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/codegen.py +4 -2
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/config/config.py +28 -9
- maxframe-1.0.0rc4/maxframe/config/validators.py +88 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/core/__init__.py +2 -13
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/core/entity/__init__.py +0 -4
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/core/entity/executable.py +1 -1
- maxframe-1.0.0rc4/maxframe/core/entity/objects.py +101 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/core/entity/output_types.py +0 -3
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/core/entity/tileables.py +5 -78
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/core/graph/__init__.py +2 -2
- {maxframe-1.0.0rc2/maxframe/tensor/merge → maxframe-1.0.0rc4/maxframe/core/graph/builder}/__init__.py +1 -1
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/core/graph/builder/base.py +5 -4
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/core/graph/builder/tileable.py +4 -4
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/core/graph/builder/utils.py +4 -8
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/core/graph/entity.py +9 -33
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/core/operator/__init__.py +2 -9
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/core/operator/base.py +3 -5
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/core/operator/objects.py +0 -9
- maxframe-1.0.0rc4/maxframe/core/operator/utils.py +55 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/dataframe/arithmetic/docstring.py +26 -2
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/dataframe/arithmetic/equal.py +4 -2
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/dataframe/arithmetic/greater.py +4 -2
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/dataframe/arithmetic/greater_equal.py +4 -2
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/dataframe/arithmetic/less.py +2 -2
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/dataframe/arithmetic/less_equal.py +4 -2
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/dataframe/arithmetic/not_equal.py +4 -2
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/dataframe/core.py +2 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/dataframe/datasource/read_odps_query.py +67 -8
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/dataframe/datasource/read_odps_table.py +4 -2
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/dataframe/datastore/to_odps.py +8 -1
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/dataframe/extensions/__init__.py +3 -0
- maxframe-1.0.0rc4/maxframe/dataframe/extensions/flatmap.py +326 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/dataframe/indexing/add_prefix_suffix.py +1 -1
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/dataframe/indexing/rename.py +11 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/dataframe/initializer.py +11 -1
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/dataframe/misc/drop_duplicates.py +18 -1
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/dataframe/operators.py +1 -17
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/dataframe/reduction/core.py +2 -2
- maxframe-1.0.0rc4/maxframe/io/objects/__init__.py +24 -0
- maxframe-1.0.0rc4/maxframe/io/objects/core.py +140 -0
- maxframe-1.0.0rc4/maxframe/io/objects/tensor.py +76 -0
- {maxframe-1.0.0rc2/maxframe → maxframe-1.0.0rc4/maxframe/io}/odpsio/__init__.py +2 -0
- {maxframe-1.0.0rc2/maxframe → maxframe-1.0.0rc4/maxframe/io}/odpsio/arrow.py +4 -4
- {maxframe-1.0.0rc2/maxframe → maxframe-1.0.0rc4/maxframe/io}/odpsio/schema.py +10 -8
- {maxframe-1.0.0rc2/maxframe → maxframe-1.0.0rc4/maxframe/io}/odpsio/tableio.py +50 -38
- maxframe-1.0.0rc4/maxframe/io/odpsio/volumeio.py +63 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/learn/contrib/__init__.py +2 -1
- maxframe-1.0.0rc4/maxframe/learn/contrib/graph/__init__.py +15 -0
- maxframe-1.0.0rc4/maxframe/learn/contrib/graph/connected_components.py +215 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/learn/contrib/xgboost/classifier.py +26 -2
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/learn/contrib/xgboost/core.py +87 -2
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/learn/contrib/xgboost/dmatrix.py +1 -4
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/learn/contrib/xgboost/predict.py +27 -44
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/learn/contrib/xgboost/regressor.py +3 -10
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/learn/contrib/xgboost/train.py +27 -16
- maxframe-1.0.0rc4/maxframe/learn/core.py +26 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/opcodes.py +3 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/protocol.py +7 -16
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/remote/core.py +4 -8
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/serialization/__init__.py +1 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/session.py +9 -2
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/tensor/__init__.py +10 -2
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/tensor/arithmetic/isclose.py +1 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/tensor/core.py +5 -136
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/tensor/datasource/array.py +3 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/tensor/datasource/full.py +1 -1
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/tensor/indexing/flatnonzero.py +1 -1
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/tensor/indexing/getitem.py +2 -0
- maxframe-1.0.0rc4/maxframe/tensor/merge/__init__.py +17 -0
- maxframe-1.0.0rc4/maxframe/tensor/merge/concatenate.py +101 -0
- maxframe-1.0.0rc4/maxframe/tensor/merge/vstack.py +74 -0
- {maxframe-1.0.0rc2/maxframe/tensor/base → maxframe-1.0.0rc4/maxframe/tensor/misc}/__init__.py +2 -0
- {maxframe-1.0.0rc2/maxframe/tensor/base → maxframe-1.0.0rc4/maxframe/tensor/misc}/atleast_1d.py +0 -2
- maxframe-1.0.0rc4/maxframe/tensor/misc/atleast_2d.py +70 -0
- maxframe-1.0.0rc4/maxframe/tensor/misc/atleast_3d.py +85 -0
- {maxframe-1.0.0rc2/maxframe/tensor/base → maxframe-1.0.0rc4/maxframe/tensor/misc}/transpose.py +22 -18
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/tensor/operators.py +1 -7
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/tensor/random/core.py +1 -1
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/tensor/reduction/count_nonzero.py +1 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/tensor/reduction/mean.py +1 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/tensor/reduction/nanmean.py +1 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/tensor/reduction/nanvar.py +2 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/tensor/reduction/var.py +2 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/tensor/utils.py +2 -22
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/typing_.py +4 -1
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/udf.py +8 -9
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/utils.py +49 -73
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe.egg-info/PKG-INFO +2 -75
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe.egg-info/SOURCES.txt +26 -17
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe.egg-info/requires.txt +1 -1
- maxframe-1.0.0rc4/maxframe_client/clients/__init__.py +13 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe_client/fetcher.py +33 -50
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe_client/session/consts.py +3 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe_client/session/graph.py +8 -2
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe_client/session/odps.py +134 -27
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe_client/session/task.py +58 -20
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/pyproject.toml +2 -2
- maxframe-1.0.0rc2/maxframe/config/validators.py +0 -58
- maxframe-1.0.0rc2/maxframe/core/entity/chunks.py +0 -68
- maxframe-1.0.0rc2/maxframe/core/entity/fuse.py +0 -73
- maxframe-1.0.0rc2/maxframe/core/entity/objects.py +0 -58
- maxframe-1.0.0rc2/maxframe/core/graph/builder/__init__.py +0 -16
- maxframe-1.0.0rc2/maxframe/core/graph/builder/chunk.py +0 -430
- maxframe-1.0.0rc2/maxframe/core/operator/fuse.py +0 -29
- maxframe-1.0.0rc2/maxframe/odpsio/volumeio.py +0 -95
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/MANIFEST.in +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/__init__.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/_utils.pxd +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/_utils.pyx +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/config/__init__.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/core/base.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/core/entity/core.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/core/entity/utils.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/core/graph/core.pyx +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/core/mode.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/core/operator/core.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/core/operator/fetch.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/core/operator/shuffle.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/dataframe/__init__.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/dataframe/arithmetic/__init__.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/dataframe/arithmetic/abs.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/dataframe/arithmetic/add.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/dataframe/arithmetic/arccos.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/dataframe/arithmetic/arccosh.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/dataframe/arithmetic/arcsin.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/dataframe/arithmetic/arcsinh.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/dataframe/arithmetic/arctan.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/dataframe/arithmetic/arctanh.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/dataframe/arithmetic/around.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/dataframe/arithmetic/bitwise_and.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/dataframe/arithmetic/bitwise_or.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/dataframe/arithmetic/bitwise_xor.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/dataframe/arithmetic/ceil.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/dataframe/arithmetic/core.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/dataframe/arithmetic/cos.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/dataframe/arithmetic/cosh.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/dataframe/arithmetic/degrees.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/dataframe/arithmetic/exp.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/dataframe/arithmetic/exp2.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/dataframe/arithmetic/expm1.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/dataframe/arithmetic/floor.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/dataframe/arithmetic/floordiv.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/dataframe/arithmetic/invert.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/dataframe/arithmetic/is_ufuncs.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/dataframe/arithmetic/log.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/dataframe/arithmetic/log10.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/dataframe/arithmetic/log2.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/dataframe/arithmetic/mod.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/dataframe/arithmetic/multiply.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/dataframe/arithmetic/negative.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/dataframe/arithmetic/power.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/dataframe/arithmetic/radians.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/dataframe/arithmetic/sin.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/dataframe/arithmetic/sinh.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/dataframe/arithmetic/sqrt.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/dataframe/arithmetic/subtract.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/dataframe/arithmetic/tan.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/dataframe/arithmetic/tanh.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/dataframe/arithmetic/truediv.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/dataframe/arithmetic/trunc.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/dataframe/arrays.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/dataframe/datasource/__init__.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/dataframe/datasource/core.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/dataframe/datasource/dataframe.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/dataframe/datasource/date_range.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/dataframe/datasource/from_index.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/dataframe/datasource/from_records.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/dataframe/datasource/from_tensor.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/dataframe/datasource/index.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/dataframe/datasource/read_csv.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/dataframe/datasource/read_parquet.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/dataframe/datasource/series.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/dataframe/datastore/__init__.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/dataframe/datastore/core.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/dataframe/datastore/to_csv.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/dataframe/extensions/accessor.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/dataframe/extensions/reshuffle.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/dataframe/fetch/__init__.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/dataframe/fetch/core.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/dataframe/groupby/__init__.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/dataframe/groupby/aggregation.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/dataframe/groupby/apply.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/dataframe/groupby/core.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/dataframe/groupby/cum.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/dataframe/groupby/fill.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/dataframe/groupby/getitem.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/dataframe/groupby/head.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/dataframe/groupby/sample.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/dataframe/groupby/transform.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/dataframe/indexing/__init__.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/dataframe/indexing/align.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/dataframe/indexing/at.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/dataframe/indexing/getitem.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/dataframe/indexing/iat.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/dataframe/indexing/iloc.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/dataframe/indexing/insert.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/dataframe/indexing/loc.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/dataframe/indexing/reindex.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/dataframe/indexing/rename_axis.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/dataframe/indexing/reset_index.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/dataframe/indexing/sample.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/dataframe/indexing/set_axis.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/dataframe/indexing/set_index.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/dataframe/indexing/setitem.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/dataframe/indexing/where.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/dataframe/merge/__init__.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/dataframe/merge/append.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/dataframe/merge/concat.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/dataframe/merge/merge.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/dataframe/misc/__init__.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/dataframe/misc/_duplicate.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/dataframe/misc/accessor.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/dataframe/misc/apply.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/dataframe/misc/astype.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/dataframe/misc/case_when.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/dataframe/misc/check_monotonic.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/dataframe/misc/cut.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/dataframe/misc/datetimes.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/dataframe/misc/describe.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/dataframe/misc/diff.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/dataframe/misc/drop.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/dataframe/misc/duplicated.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/dataframe/misc/eval.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/dataframe/misc/explode.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/dataframe/misc/get_dummies.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/dataframe/misc/isin.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/dataframe/misc/map.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/dataframe/misc/melt.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/dataframe/misc/memory_usage.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/dataframe/misc/pct_change.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/dataframe/misc/pivot_table.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/dataframe/misc/qcut.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/dataframe/misc/select_dtypes.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/dataframe/misc/shift.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/dataframe/misc/stack.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/dataframe/misc/string_.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/dataframe/misc/to_numeric.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/dataframe/misc/transform.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/dataframe/misc/transpose.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/dataframe/misc/value_counts.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/dataframe/missing/__init__.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/dataframe/missing/checkna.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/dataframe/missing/dropna.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/dataframe/missing/fillna.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/dataframe/missing/replace.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/dataframe/plotting/__init__.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/dataframe/plotting/core.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/dataframe/reduction/__init__.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/dataframe/reduction/aggregation.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/dataframe/reduction/all.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/dataframe/reduction/any.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/dataframe/reduction/count.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/dataframe/reduction/cummax.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/dataframe/reduction/cummin.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/dataframe/reduction/cumprod.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/dataframe/reduction/cumsum.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/dataframe/reduction/custom_reduction.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/dataframe/reduction/kurtosis.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/dataframe/reduction/max.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/dataframe/reduction/mean.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/dataframe/reduction/min.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/dataframe/reduction/nunique.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/dataframe/reduction/prod.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/dataframe/reduction/reduction_size.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/dataframe/reduction/sem.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/dataframe/reduction/skew.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/dataframe/reduction/std.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/dataframe/reduction/str_concat.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/dataframe/reduction/sum.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/dataframe/reduction/unique.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/dataframe/reduction/var.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/dataframe/sort/__init__.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/dataframe/sort/core.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/dataframe/sort/sort_index.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/dataframe/sort/sort_values.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/dataframe/statistics/__init__.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/dataframe/statistics/corr.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/dataframe/statistics/quantile.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/dataframe/tseries/__init__.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/dataframe/tseries/to_datetime.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/dataframe/ufunc/__init__.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/dataframe/ufunc/tensor.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/dataframe/ufunc/ufunc.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/dataframe/utils.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/dataframe/window/__init__.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/dataframe/window/aggregation.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/dataframe/window/core.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/dataframe/window/ewm.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/dataframe/window/expanding.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/dataframe/window/rolling.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/env.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/errors.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/extension.py +0 -0
- {maxframe-1.0.0rc2/maxframe/lib/cython → maxframe-1.0.0rc4/maxframe/io}/__init__.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/learn/__init__.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/learn/contrib/pytorch/__init__.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/learn/contrib/pytorch/run_function.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/learn/contrib/pytorch/run_script.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/learn/contrib/utils.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/learn/contrib/xgboost/__init__.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/learn/utils/__init__.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/learn/utils/core.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/lib/__init__.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/lib/aio/__init__.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/lib/aio/_runners.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/lib/aio/_threads.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/lib/aio/base.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/lib/aio/file.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/lib/aio/isolation.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/lib/aio/lru.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/lib/aio/parallelism.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/lib/compression.py +0 -0
- {maxframe-1.0.0rc2/maxframe/lib/filesystem/_oss_lib → maxframe-1.0.0rc4/maxframe/lib/cython}/__init__.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/lib/cython/libcpp.pxd +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/lib/filesystem/__init__.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/lib/filesystem/_glob.py +0 -0
- {maxframe-1.0.0rc2/maxframe/tensor/statistics → maxframe-1.0.0rc4/maxframe/lib/filesystem/_oss_lib}/__init__.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/lib/filesystem/_oss_lib/common.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/lib/filesystem/_oss_lib/glob.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/lib/filesystem/_oss_lib/handle.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/lib/filesystem/arrow.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/lib/filesystem/base.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/lib/filesystem/core.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/lib/filesystem/fsmap.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/lib/filesystem/hdfs.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/lib/filesystem/local.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/lib/filesystem/oss.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/lib/functools_compat.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/lib/mmh3.pyi +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/lib/mmh3_src/MurmurHash3.cpp +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/lib/mmh3_src/MurmurHash3.h +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/lib/mmh3_src/mmh3module.cpp +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/lib/sparse/__init__.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/lib/sparse/array.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/lib/sparse/core.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/lib/sparse/matrix.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/lib/sparse/vector.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/lib/tblib/LICENSE +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/lib/tblib/__init__.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/lib/tblib/cpython.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/lib/tblib/decorators.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/lib/tblib/pickling_support.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/lib/version.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/lib/wrapped_pickle.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/mixin.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/remote/__init__.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/remote/run_script.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/serialization/arrow.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/serialization/core.pxd +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/serialization/core.pyi +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/serialization/core.pyx +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/serialization/exception.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/serialization/maxframe_objects.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/serialization/numpy.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/serialization/pandas.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/serialization/scipy.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/serialization/serializables/__init__.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/serialization/serializables/core.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/serialization/serializables/field.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/serialization/serializables/field_type.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/tensor/arithmetic/__init__.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/tensor/arithmetic/abs.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/tensor/arithmetic/absolute.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/tensor/arithmetic/add.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/tensor/arithmetic/angle.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/tensor/arithmetic/arccos.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/tensor/arithmetic/arccosh.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/tensor/arithmetic/arcsin.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/tensor/arithmetic/arcsinh.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/tensor/arithmetic/arctan.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/tensor/arithmetic/arctan2.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/tensor/arithmetic/arctanh.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/tensor/arithmetic/around.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/tensor/arithmetic/bitand.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/tensor/arithmetic/bitor.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/tensor/arithmetic/bitxor.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/tensor/arithmetic/cbrt.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/tensor/arithmetic/ceil.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/tensor/arithmetic/clip.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/tensor/arithmetic/conj.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/tensor/arithmetic/copysign.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/tensor/arithmetic/core.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/tensor/arithmetic/cos.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/tensor/arithmetic/cosh.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/tensor/arithmetic/deg2rad.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/tensor/arithmetic/degrees.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/tensor/arithmetic/divide.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/tensor/arithmetic/equal.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/tensor/arithmetic/exp.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/tensor/arithmetic/exp2.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/tensor/arithmetic/expm1.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/tensor/arithmetic/fabs.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/tensor/arithmetic/fix.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/tensor/arithmetic/float_power.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/tensor/arithmetic/floor.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/tensor/arithmetic/floordiv.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/tensor/arithmetic/fmax.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/tensor/arithmetic/fmin.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/tensor/arithmetic/fmod.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/tensor/arithmetic/frexp.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/tensor/arithmetic/greater.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/tensor/arithmetic/greater_equal.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/tensor/arithmetic/hypot.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/tensor/arithmetic/i0.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/tensor/arithmetic/imag.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/tensor/arithmetic/invert.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/tensor/arithmetic/iscomplex.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/tensor/arithmetic/isfinite.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/tensor/arithmetic/isinf.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/tensor/arithmetic/isnan.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/tensor/arithmetic/isreal.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/tensor/arithmetic/ldexp.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/tensor/arithmetic/less.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/tensor/arithmetic/less_equal.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/tensor/arithmetic/log.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/tensor/arithmetic/log10.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/tensor/arithmetic/log1p.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/tensor/arithmetic/log2.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/tensor/arithmetic/logaddexp.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/tensor/arithmetic/logaddexp2.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/tensor/arithmetic/logical_and.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/tensor/arithmetic/logical_not.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/tensor/arithmetic/logical_or.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/tensor/arithmetic/logical_xor.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/tensor/arithmetic/lshift.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/tensor/arithmetic/maximum.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/tensor/arithmetic/minimum.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/tensor/arithmetic/mod.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/tensor/arithmetic/modf.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/tensor/arithmetic/multiply.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/tensor/arithmetic/nan_to_num.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/tensor/arithmetic/negative.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/tensor/arithmetic/nextafter.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/tensor/arithmetic/not_equal.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/tensor/arithmetic/positive.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/tensor/arithmetic/power.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/tensor/arithmetic/rad2deg.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/tensor/arithmetic/radians.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/tensor/arithmetic/real.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/tensor/arithmetic/reciprocal.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/tensor/arithmetic/rint.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/tensor/arithmetic/rshift.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/tensor/arithmetic/setimag.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/tensor/arithmetic/setreal.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/tensor/arithmetic/sign.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/tensor/arithmetic/signbit.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/tensor/arithmetic/sin.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/tensor/arithmetic/sinc.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/tensor/arithmetic/sinh.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/tensor/arithmetic/spacing.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/tensor/arithmetic/sqrt.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/tensor/arithmetic/square.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/tensor/arithmetic/subtract.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/tensor/arithmetic/tan.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/tensor/arithmetic/tanh.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/tensor/arithmetic/truediv.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/tensor/arithmetic/trunc.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/tensor/arithmetic/utils.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/tensor/array_utils.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/tensor/datasource/__init__.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/tensor/datasource/arange.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/tensor/datasource/core.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/tensor/datasource/empty.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/tensor/datasource/from_dataframe.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/tensor/datasource/from_dense.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/tensor/datasource/from_sparse.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/tensor/datasource/ones.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/tensor/datasource/scalar.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/tensor/datasource/zeros.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/tensor/fetch/__init__.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/tensor/fetch/core.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/tensor/indexing/__init__.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/tensor/indexing/choose.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/tensor/indexing/compress.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/tensor/indexing/core.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/tensor/indexing/extract.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/tensor/indexing/fill_diagonal.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/tensor/indexing/nonzero.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/tensor/indexing/setitem.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/tensor/indexing/slice.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/tensor/indexing/take.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/tensor/indexing/unravel_index.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/tensor/merge/stack.py +0 -0
- {maxframe-1.0.0rc2/maxframe/tensor/base → maxframe-1.0.0rc4/maxframe/tensor/misc}/astype.py +0 -0
- {maxframe-1.0.0rc2/maxframe/tensor/base → maxframe-1.0.0rc4/maxframe/tensor/misc}/broadcast_to.py +0 -0
- {maxframe-1.0.0rc2/maxframe/tensor/base → maxframe-1.0.0rc4/maxframe/tensor/misc}/ravel.py +0 -0
- {maxframe-1.0.0rc2/maxframe/tensor/base → maxframe-1.0.0rc4/maxframe/tensor/misc}/unique.py +0 -0
- {maxframe-1.0.0rc2/maxframe/tensor/base → maxframe-1.0.0rc4/maxframe/tensor/misc}/where.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/tensor/random/__init__.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/tensor/random/beta.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/tensor/random/binomial.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/tensor/random/bytes.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/tensor/random/chisquare.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/tensor/random/choice.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/tensor/random/dirichlet.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/tensor/random/exponential.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/tensor/random/f.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/tensor/random/gamma.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/tensor/random/geometric.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/tensor/random/gumbel.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/tensor/random/hypergeometric.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/tensor/random/laplace.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/tensor/random/logistic.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/tensor/random/lognormal.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/tensor/random/logseries.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/tensor/random/multinomial.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/tensor/random/multivariate_normal.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/tensor/random/negative_binomial.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/tensor/random/noncentral_chisquare.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/tensor/random/noncentral_f.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/tensor/random/normal.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/tensor/random/pareto.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/tensor/random/permutation.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/tensor/random/poisson.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/tensor/random/power.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/tensor/random/rand.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/tensor/random/randint.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/tensor/random/randn.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/tensor/random/random_integers.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/tensor/random/random_sample.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/tensor/random/rayleigh.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/tensor/random/shuffle.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/tensor/random/standard_cauchy.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/tensor/random/standard_exponential.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/tensor/random/standard_gamma.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/tensor/random/standard_normal.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/tensor/random/standard_t.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/tensor/random/triangular.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/tensor/random/uniform.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/tensor/random/vonmises.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/tensor/random/wald.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/tensor/random/weibull.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/tensor/random/zipf.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/tensor/rechunk/__init__.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/tensor/rechunk/rechunk.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/tensor/reduction/__init__.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/tensor/reduction/all.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/tensor/reduction/allclose.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/tensor/reduction/any.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/tensor/reduction/argmax.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/tensor/reduction/argmin.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/tensor/reduction/array_equal.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/tensor/reduction/core.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/tensor/reduction/cumprod.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/tensor/reduction/cumsum.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/tensor/reduction/max.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/tensor/reduction/min.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/tensor/reduction/nanargmax.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/tensor/reduction/nanargmin.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/tensor/reduction/nancumprod.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/tensor/reduction/nancumsum.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/tensor/reduction/nanmax.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/tensor/reduction/nanmin.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/tensor/reduction/nanprod.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/tensor/reduction/nanstd.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/tensor/reduction/nansum.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/tensor/reduction/prod.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/tensor/reduction/std.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/tensor/reduction/sum.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/tensor/reshape/__init__.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/tensor/reshape/reshape.py +0 -0
- {maxframe-1.0.0rc2/maxframe_client/clients → maxframe-1.0.0rc4/maxframe/tensor/statistics}/__init__.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/tensor/statistics/percentile.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/tensor/statistics/quantile.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/tensor/ufunc/__init__.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe/tensor/ufunc/ufunc.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe.egg-info/dependency_links.txt +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe.egg-info/top_level.txt +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe_client/__init__.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe_client/clients/framedriver.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/maxframe_client/session/__init__.py +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/setup.cfg +0 -0
- {maxframe-1.0.0rc2 → maxframe-1.0.0rc4}/setup.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: maxframe
|
|
3
|
-
Version: 1.0.
|
|
3
|
+
Version: 1.0.0rc4
|
|
4
4
|
Summary: MaxFrame operator-based data analyze framework
|
|
5
5
|
Requires-Dist: numpy<2.0.0,>=1.19.0
|
|
6
6
|
Requires-Dist: pandas>=1.0.0
|
|
@@ -9,7 +9,7 @@ Requires-Dist: scipy>=1.0
|
|
|
9
9
|
Requires-Dist: pyarrow>=1.0.0
|
|
10
10
|
Requires-Dist: msgpack>=1.0.0
|
|
11
11
|
Requires-Dist: traitlets>=5.0
|
|
12
|
-
Requires-Dist: cloudpickle
|
|
12
|
+
Requires-Dist: cloudpickle<3.0.0,>=1.5.0
|
|
13
13
|
Requires-Dist: pyyaml>=5.1
|
|
14
14
|
Requires-Dist: pickle5; python_version < "3.8"
|
|
15
15
|
Requires-Dist: tornado>=6.0
|
|
@@ -102,76 +102,3 @@ License
|
|
|
102
102
|
|
|
103
103
|
Licensed under the `Apache License
|
|
104
104
|
2.0 <https://www.apache.org/licenses/LICENSE-2.0.html>`__.
|
|
105
|
-
MaxCompute MaxFrame Client
|
|
106
|
-
==========================
|
|
107
|
-
|
|
108
|
-
MaxFrame is a computational framework created by Alibaba Cloud to
|
|
109
|
-
provide a way for Python developers to parallelize their code with
|
|
110
|
-
MaxCompute. It creates a runnable computation graph locally, submits it
|
|
111
|
-
to MaxCompute to execute and obtains results from MaxCompute.
|
|
112
|
-
|
|
113
|
-
MaxFrame client is the client of MaxFrame. Currently it provides a
|
|
114
|
-
DataFrame-based SDK with compatible APIs for pandas. In future, other
|
|
115
|
-
common Python libraries like numpy and scikit-learn will be added as
|
|
116
|
-
well. Python 3.7 is recommended for MaxFrame client to enable all
|
|
117
|
-
functionalities while supports for higher Python versions are on the
|
|
118
|
-
way.
|
|
119
|
-
|
|
120
|
-
Installation
|
|
121
|
-
------------
|
|
122
|
-
|
|
123
|
-
You may install MaxFrame client through PIP:
|
|
124
|
-
|
|
125
|
-
.. code:: bash
|
|
126
|
-
|
|
127
|
-
pip install maxframe
|
|
128
|
-
|
|
129
|
-
Latest beta version can be installed with ``--pre`` argument:
|
|
130
|
-
|
|
131
|
-
.. code:: bash
|
|
132
|
-
|
|
133
|
-
pip install --pre maxframe
|
|
134
|
-
|
|
135
|
-
You can also install MaxFrame client from source code:
|
|
136
|
-
|
|
137
|
-
.. code:: bash
|
|
138
|
-
|
|
139
|
-
pip install git+https://github.com/aliyun/alibabacloud-odps-maxframe-client.git
|
|
140
|
-
|
|
141
|
-
Getting started
|
|
142
|
-
---------------
|
|
143
|
-
|
|
144
|
-
We show a simple code example of MaxFrame client which read data from a
|
|
145
|
-
MaxCompute table, performs some simple data transform and writes back
|
|
146
|
-
into MaxCompute.
|
|
147
|
-
|
|
148
|
-
.. code:: python
|
|
149
|
-
|
|
150
|
-
import maxframe.dataframe as md
|
|
151
|
-
import os
|
|
152
|
-
from maxframe import new_session
|
|
153
|
-
from odps import ODPS
|
|
154
|
-
|
|
155
|
-
o = ODPS(
|
|
156
|
-
os.getenv('ALIBABA_CLOUD_ACCESS_KEY_ID'),
|
|
157
|
-
os.getenv('ALIBABA_CLOUD_ACCESS_KEY_SECRET'),
|
|
158
|
-
project='your-default-project',
|
|
159
|
-
endpoint='your-end-point',
|
|
160
|
-
)
|
|
161
|
-
session = new_session(o)
|
|
162
|
-
|
|
163
|
-
df = md.read_odps_table("source_table")
|
|
164
|
-
df["A"] = "prefix_" + df["A"]
|
|
165
|
-
md.to_odps_table(df, "prefix_source_table")
|
|
166
|
-
|
|
167
|
-
Documentation
|
|
168
|
-
-------------
|
|
169
|
-
|
|
170
|
-
Detailed documentations can be found
|
|
171
|
-
`here <https://maxframe.readthedocs.io>`__.
|
|
172
|
-
|
|
173
|
-
License
|
|
174
|
-
-------
|
|
175
|
-
|
|
176
|
-
Licensed under the `Apache License
|
|
177
|
-
2.0 <https://www.apache.org/licenses/LICENSE-2.0.html>`__.
|
|
@@ -71,76 +71,3 @@ License
|
|
|
71
71
|
|
|
72
72
|
Licensed under the `Apache License
|
|
73
73
|
2.0 <https://www.apache.org/licenses/LICENSE-2.0.html>`__.
|
|
74
|
-
MaxCompute MaxFrame Client
|
|
75
|
-
==========================
|
|
76
|
-
|
|
77
|
-
MaxFrame is a computational framework created by Alibaba Cloud to
|
|
78
|
-
provide a way for Python developers to parallelize their code with
|
|
79
|
-
MaxCompute. It creates a runnable computation graph locally, submits it
|
|
80
|
-
to MaxCompute to execute and obtains results from MaxCompute.
|
|
81
|
-
|
|
82
|
-
MaxFrame client is the client of MaxFrame. Currently it provides a
|
|
83
|
-
DataFrame-based SDK with compatible APIs for pandas. In future, other
|
|
84
|
-
common Python libraries like numpy and scikit-learn will be added as
|
|
85
|
-
well. Python 3.7 is recommended for MaxFrame client to enable all
|
|
86
|
-
functionalities while supports for higher Python versions are on the
|
|
87
|
-
way.
|
|
88
|
-
|
|
89
|
-
Installation
|
|
90
|
-
------------
|
|
91
|
-
|
|
92
|
-
You may install MaxFrame client through PIP:
|
|
93
|
-
|
|
94
|
-
.. code:: bash
|
|
95
|
-
|
|
96
|
-
pip install maxframe
|
|
97
|
-
|
|
98
|
-
Latest beta version can be installed with ``--pre`` argument:
|
|
99
|
-
|
|
100
|
-
.. code:: bash
|
|
101
|
-
|
|
102
|
-
pip install --pre maxframe
|
|
103
|
-
|
|
104
|
-
You can also install MaxFrame client from source code:
|
|
105
|
-
|
|
106
|
-
.. code:: bash
|
|
107
|
-
|
|
108
|
-
pip install git+https://github.com/aliyun/alibabacloud-odps-maxframe-client.git
|
|
109
|
-
|
|
110
|
-
Getting started
|
|
111
|
-
---------------
|
|
112
|
-
|
|
113
|
-
We show a simple code example of MaxFrame client which read data from a
|
|
114
|
-
MaxCompute table, performs some simple data transform and writes back
|
|
115
|
-
into MaxCompute.
|
|
116
|
-
|
|
117
|
-
.. code:: python
|
|
118
|
-
|
|
119
|
-
import maxframe.dataframe as md
|
|
120
|
-
import os
|
|
121
|
-
from maxframe import new_session
|
|
122
|
-
from odps import ODPS
|
|
123
|
-
|
|
124
|
-
o = ODPS(
|
|
125
|
-
os.getenv('ALIBABA_CLOUD_ACCESS_KEY_ID'),
|
|
126
|
-
os.getenv('ALIBABA_CLOUD_ACCESS_KEY_SECRET'),
|
|
127
|
-
project='your-default-project',
|
|
128
|
-
endpoint='your-end-point',
|
|
129
|
-
)
|
|
130
|
-
session = new_session(o)
|
|
131
|
-
|
|
132
|
-
df = md.read_odps_table("source_table")
|
|
133
|
-
df["A"] = "prefix_" + df["A"]
|
|
134
|
-
md.to_odps_table(df, "prefix_source_table")
|
|
135
|
-
|
|
136
|
-
Documentation
|
|
137
|
-
-------------
|
|
138
|
-
|
|
139
|
-
Detailed documentations can be found
|
|
140
|
-
`here <https://maxframe.readthedocs.io>`__.
|
|
141
|
-
|
|
142
|
-
License
|
|
143
|
-
-------
|
|
144
|
-
|
|
145
|
-
Licensed under the `Apache License
|
|
146
|
-
2.0 <https://www.apache.org/licenses/LICENSE-2.0.html>`__.
|
|
@@ -26,9 +26,9 @@ from odps.utils import camel_to_underline
|
|
|
26
26
|
from .core import OperatorType, Tileable, TileableGraph
|
|
27
27
|
from .core.operator import Fetch
|
|
28
28
|
from .extension import iter_extensions
|
|
29
|
+
from .io.odpsio import build_dataframe_table_meta
|
|
30
|
+
from .io.odpsio.schema import pandas_to_odps_schema
|
|
29
31
|
from .lib import wrapped_pickle as pickle
|
|
30
|
-
from .odpsio import build_dataframe_table_meta
|
|
31
|
-
from .odpsio.schema import pandas_to_odps_schema
|
|
32
32
|
from .protocol import DataFrameTableMeta, ResultInfo
|
|
33
33
|
from .serialization import PickleContainer
|
|
34
34
|
from .serialization.serializables import Serializable, StringField
|
|
@@ -347,6 +347,7 @@ BUILTIN_ENGINE_SPE = "SPE"
|
|
|
347
347
|
BUILTIN_ENGINE_MCSQL = "MCSQL"
|
|
348
348
|
|
|
349
349
|
FAST_RANGE_INDEX_ENABLED = "codegen.fast_range_index_enabled"
|
|
350
|
+
ROW_NUMBER_WINDOW_INDEX_ENABLED = "codegen.row_number_window_index_enabled"
|
|
350
351
|
|
|
351
352
|
|
|
352
353
|
class BigDagCodeGenerator(metaclass=abc.ABCMeta):
|
|
@@ -506,6 +507,7 @@ class BigDagCodeGenerator(metaclass=abc.ABCMeta):
|
|
|
506
507
|
prefer_binary=pack.prefer_binary,
|
|
507
508
|
pre_release=pack.pre_release,
|
|
508
509
|
force_rebuild=pack.force_rebuild,
|
|
510
|
+
no_audit_wheel=pack.no_audit_wheel,
|
|
509
511
|
python_tag=python_tag,
|
|
510
512
|
is_production=is_production,
|
|
511
513
|
schedule_id=schedule_id,
|
|
@@ -32,7 +32,6 @@ from ..utils import get_python_tag
|
|
|
32
32
|
from .validators import (
|
|
33
33
|
ValidatorType,
|
|
34
34
|
all_validator,
|
|
35
|
-
any_validator,
|
|
36
35
|
is_bool,
|
|
37
36
|
is_dict,
|
|
38
37
|
is_in,
|
|
@@ -41,6 +40,7 @@ from .validators import (
|
|
|
41
40
|
is_null,
|
|
42
41
|
is_numeric,
|
|
43
42
|
is_string,
|
|
43
|
+
is_valid_cache_path,
|
|
44
44
|
)
|
|
45
45
|
|
|
46
46
|
_DEFAULT_REDIRECT_WARN = "Option {source} has been replaced by {target} and might be removed in a future release."
|
|
@@ -327,7 +327,7 @@ default_options.register_option(
|
|
|
327
327
|
default_options.register_option(
|
|
328
328
|
"local_timezone",
|
|
329
329
|
_get_legal_local_tz_name(),
|
|
330
|
-
validator=
|
|
330
|
+
validator=is_null | is_in(set(available_timezones())),
|
|
331
331
|
remote=True,
|
|
332
332
|
)
|
|
333
333
|
default_options.register_option(
|
|
@@ -343,11 +343,25 @@ default_options.register_option("sql.enable_mcqa", True, validator=is_bool, remo
|
|
|
343
343
|
default_options.register_option(
|
|
344
344
|
"sql.generate_comments", True, validator=is_bool, remote=True
|
|
345
345
|
)
|
|
346
|
+
default_options.register_option(
|
|
347
|
+
"sql.auto_use_common_image", True, validator=is_bool, remote=True
|
|
348
|
+
)
|
|
346
349
|
default_options.register_option("sql.settings", {}, validator=is_dict, remote=True)
|
|
347
350
|
|
|
348
351
|
default_options.register_option("is_production", False, validator=is_bool, remote=True)
|
|
349
352
|
default_options.register_option("schedule_id", "", validator=is_string, remote=True)
|
|
350
353
|
|
|
354
|
+
default_options.register_option(
|
|
355
|
+
"service_role_arn", None, validator=is_null | is_string, remote=True
|
|
356
|
+
)
|
|
357
|
+
default_options.register_option(
|
|
358
|
+
"object_cache_url", None, validator=is_null | is_valid_cache_path, remote=True
|
|
359
|
+
)
|
|
360
|
+
|
|
361
|
+
default_options.register_option(
|
|
362
|
+
"chunk_size", None, validator=is_null | is_integer, remote=True
|
|
363
|
+
)
|
|
364
|
+
|
|
351
365
|
default_options.register_option(
|
|
352
366
|
"session.max_alive_seconds",
|
|
353
367
|
_DEFAULT_MAX_ALIVE_SECONDS,
|
|
@@ -360,15 +374,22 @@ default_options.register_option(
|
|
|
360
374
|
validator=is_numeric,
|
|
361
375
|
remote=True,
|
|
362
376
|
)
|
|
377
|
+
default_options.register_option(
|
|
378
|
+
"session.quota_name", None, validator=is_null | is_string, remote=True
|
|
379
|
+
)
|
|
380
|
+
default_options.register_option(
|
|
381
|
+
"session.enable_schema", None, validator=is_null | is_bool, remote=True
|
|
382
|
+
)
|
|
383
|
+
default_options.register_option(
|
|
384
|
+
"session.default_schema", None, validator=is_null | is_string, remote=True
|
|
385
|
+
)
|
|
363
386
|
default_options.register_option(
|
|
364
387
|
"session.upload_batch_size",
|
|
365
388
|
_DEFAULT_UPLOAD_BATCH_SIZE,
|
|
366
389
|
validator=is_integer,
|
|
367
390
|
)
|
|
368
391
|
default_options.register_option(
|
|
369
|
-
"session.table_lifecycle",
|
|
370
|
-
None,
|
|
371
|
-
validator=any_validator(is_null, is_integer),
|
|
392
|
+
"session.table_lifecycle", None, validator=is_null | is_integer, remote=True
|
|
372
393
|
)
|
|
373
394
|
default_options.register_option(
|
|
374
395
|
"session.temp_table_lifecycle",
|
|
@@ -379,7 +400,7 @@ default_options.register_option(
|
|
|
379
400
|
default_options.register_option(
|
|
380
401
|
"session.subinstance_priority",
|
|
381
402
|
None,
|
|
382
|
-
validator=
|
|
403
|
+
validator=is_null | is_integer,
|
|
383
404
|
remote=True,
|
|
384
405
|
)
|
|
385
406
|
|
|
@@ -391,9 +412,7 @@ default_options.register_option(
|
|
|
391
412
|
default_options.register_option(
|
|
392
413
|
"optimize.head_optimize_threshold", 1000, validator=is_integer
|
|
393
414
|
)
|
|
394
|
-
default_options.register_option(
|
|
395
|
-
"show_progress", "auto", validator=any_validator(is_bool, is_string)
|
|
396
|
-
)
|
|
415
|
+
default_options.register_option("show_progress", "auto", validator=is_bool | is_string)
|
|
397
416
|
default_options.register_option(
|
|
398
417
|
"dag.settings", value=dict(), validator=is_dict, remote=True
|
|
399
418
|
)
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
# Copyright 1999-2024 Alibaba Group Holding Ltd.
|
|
2
|
+
#
|
|
3
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
4
|
+
# you may not use this file except in compliance with the License.
|
|
5
|
+
# You may obtain a copy of the License at
|
|
6
|
+
#
|
|
7
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
8
|
+
#
|
|
9
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
10
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
11
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
|
+
# See the License for the specific language governing permissions and
|
|
13
|
+
# limitations under the License.
|
|
14
|
+
|
|
15
|
+
from typing import Callable
|
|
16
|
+
from urllib.parse import urlparse
|
|
17
|
+
|
|
18
|
+
ValidatorType = Callable[..., bool]
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
def any_validator(*validators: ValidatorType):
|
|
22
|
+
def validate(x):
|
|
23
|
+
return any(validator(x) for validator in validators)
|
|
24
|
+
|
|
25
|
+
return validate
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
def all_validator(*validators: ValidatorType):
|
|
29
|
+
def validate(x):
|
|
30
|
+
return all(validator(x) for validator in validators)
|
|
31
|
+
|
|
32
|
+
validate.validators = validators
|
|
33
|
+
return validate
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
class Validator:
|
|
37
|
+
def __init__(self, func: ValidatorType):
|
|
38
|
+
self._func = func
|
|
39
|
+
|
|
40
|
+
def __call__(self, arg) -> bool:
|
|
41
|
+
return self._func(arg)
|
|
42
|
+
|
|
43
|
+
def __or__(self, other):
|
|
44
|
+
return OrValidator(self, other)
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
class OrValidator(Validator):
|
|
48
|
+
def __init__(self, lhs: Validator, rhs: Validator):
|
|
49
|
+
super().__init__(lambda x: lhs(x) or rhs(x))
|
|
50
|
+
|
|
51
|
+
|
|
52
|
+
is_null = Validator(lambda x: x is None)
|
|
53
|
+
is_bool = Validator(lambda x: isinstance(x, bool))
|
|
54
|
+
is_float = Validator(lambda x: isinstance(x, float))
|
|
55
|
+
is_integer = Validator(lambda x: isinstance(x, int))
|
|
56
|
+
is_numeric = Validator(lambda x: isinstance(x, (int, float)))
|
|
57
|
+
is_string = Validator(lambda x: isinstance(x, str))
|
|
58
|
+
is_dict = Validator(lambda x: isinstance(x, dict))
|
|
59
|
+
is_positive_integer = Validator(lambda x: is_integer(x) and x > 0)
|
|
60
|
+
is_non_negative_integer = Validator(lambda x: is_integer(x) and x >= 0)
|
|
61
|
+
|
|
62
|
+
|
|
63
|
+
def is_in(vals):
|
|
64
|
+
return Validator(vals.__contains__)
|
|
65
|
+
|
|
66
|
+
|
|
67
|
+
def _is_valid_cache_path(path: str) -> bool:
|
|
68
|
+
"""
|
|
69
|
+
path should look like oss://oss_endpoint/oss_bucket/path
|
|
70
|
+
"""
|
|
71
|
+
parsed_url = urlparse(path)
|
|
72
|
+
return (
|
|
73
|
+
parsed_url.scheme == "oss"
|
|
74
|
+
and parsed_url.netloc
|
|
75
|
+
and parsed_url.path
|
|
76
|
+
and "/" in parsed_url.path
|
|
77
|
+
)
|
|
78
|
+
|
|
79
|
+
|
|
80
|
+
is_valid_cache_path = Validator(_is_valid_cache_path)
|
|
81
|
+
|
|
82
|
+
|
|
83
|
+
_invalid_char_in_yaml_str = {'"', "'", "\n", "\\"}
|
|
84
|
+
|
|
85
|
+
|
|
86
|
+
def simple_yaml_str_validator(name: str) -> bool:
|
|
87
|
+
chars = set(name)
|
|
88
|
+
return len(_invalid_char_in_yaml_str & chars) == 0
|
|
@@ -14,20 +14,14 @@
|
|
|
14
14
|
|
|
15
15
|
# noinspection PyUnresolvedReferences
|
|
16
16
|
from ..typing_ import ChunkType, EntityType, OperatorType, TileableType
|
|
17
|
-
from .base import ExecutionError
|
|
17
|
+
from .base import Base, ExecutionError
|
|
18
18
|
from .entity import (
|
|
19
|
-
CHUNK_TYPE,
|
|
20
19
|
ENTITY_TYPE,
|
|
21
|
-
FUSE_CHUNK_TYPE,
|
|
22
20
|
OBJECT_TYPE,
|
|
23
21
|
TILEABLE_TYPE,
|
|
24
|
-
Chunk,
|
|
25
|
-
ChunkData,
|
|
26
22
|
Entity,
|
|
27
23
|
EntityData,
|
|
28
24
|
ExecutableTuple,
|
|
29
|
-
FuseChunk,
|
|
30
|
-
FuseChunkData,
|
|
31
25
|
HasShapeTileable,
|
|
32
26
|
HasShapeTileableData,
|
|
33
27
|
NotSupportTile,
|
|
@@ -40,23 +34,18 @@ from .entity import (
|
|
|
40
34
|
get_fetch_class,
|
|
41
35
|
get_output_types,
|
|
42
36
|
get_tileable_types,
|
|
43
|
-
register,
|
|
44
37
|
register_fetch_class,
|
|
45
38
|
register_output_types,
|
|
46
|
-
unregister,
|
|
47
39
|
)
|
|
48
40
|
|
|
49
41
|
# noinspection PyUnresolvedReferences
|
|
50
42
|
from .graph import (
|
|
51
43
|
DAG,
|
|
52
|
-
ChunkGraph,
|
|
53
|
-
ChunkGraphBuilder,
|
|
54
44
|
DirectedGraph,
|
|
55
45
|
GraphContainsCycleError,
|
|
56
46
|
GraphSerializer,
|
|
57
47
|
TileableGraph,
|
|
58
48
|
TileableGraphBuilder,
|
|
59
|
-
TileContext,
|
|
60
|
-
TileStatus,
|
|
61
49
|
)
|
|
62
50
|
from .mode import enter_mode, is_build_mode, is_eager_mode, is_kernel_mode
|
|
51
|
+
from .operator import build_fetch
|
|
@@ -12,10 +12,8 @@
|
|
|
12
12
|
# See the License for the specific language governing permissions and
|
|
13
13
|
# limitations under the License.
|
|
14
14
|
|
|
15
|
-
from .chunks import CHUNK_TYPE, Chunk, ChunkData
|
|
16
15
|
from .core import ENTITY_TYPE, Entity, EntityData
|
|
17
16
|
from .executable import ExecutableTuple, _ExecuteAndFetchMixin
|
|
18
|
-
from .fuse import FUSE_CHUNK_TYPE, FuseChunk, FuseChunkData
|
|
19
17
|
from .objects import OBJECT_TYPE, Object, ObjectData
|
|
20
18
|
from .output_types import (
|
|
21
19
|
OutputType,
|
|
@@ -32,6 +30,4 @@ from .tileables import (
|
|
|
32
30
|
NotSupportTile,
|
|
33
31
|
Tileable,
|
|
34
32
|
TileableData,
|
|
35
|
-
register,
|
|
36
|
-
unregister,
|
|
37
33
|
)
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
# Copyright 1999-2024 Alibaba Group Holding Ltd.
|
|
2
|
+
#
|
|
3
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
4
|
+
# you may not use this file except in compliance with the License.
|
|
5
|
+
# You may obtain a copy of the License at
|
|
6
|
+
#
|
|
7
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
8
|
+
#
|
|
9
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
10
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
11
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
|
+
# See the License for the specific language governing permissions and
|
|
13
|
+
# limitations under the License.
|
|
14
|
+
|
|
15
|
+
from typing import Any, Dict, Type
|
|
16
|
+
|
|
17
|
+
from ...serialization import load_type
|
|
18
|
+
from ...serialization.serializables import StringField
|
|
19
|
+
from .core import Entity
|
|
20
|
+
from .executable import _ToObjectMixin
|
|
21
|
+
from .tileables import TileableData
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
class ObjectData(TileableData, _ToObjectMixin):
|
|
25
|
+
__slots__ = ()
|
|
26
|
+
type_name = "Object"
|
|
27
|
+
# workaround for removed field since v0.1.0b5
|
|
28
|
+
# todo remove this when all versions below v1.0.0rc1 is eliminated
|
|
29
|
+
_legacy_deprecated_non_primitives = ["_chunks"]
|
|
30
|
+
_legacy_new_non_primitives = ["object_class"]
|
|
31
|
+
|
|
32
|
+
object_class = StringField("object_class", default=None)
|
|
33
|
+
|
|
34
|
+
@classmethod
|
|
35
|
+
def get_entity_class(cls) -> Type["Object"]:
|
|
36
|
+
if getattr(cls, "_entity_class", None) is not None:
|
|
37
|
+
return cls._entity_class
|
|
38
|
+
assert cls.__qualname__[-4:] == "Data"
|
|
39
|
+
target_class_name = cls.__module__ + "#" + cls.__qualname__[:-4]
|
|
40
|
+
cls._entity_class = load_type(target_class_name, Object)
|
|
41
|
+
return cls._entity_class
|
|
42
|
+
|
|
43
|
+
def __new__(cls, op=None, nsplits=None, **kw):
|
|
44
|
+
if cls is ObjectData:
|
|
45
|
+
obj_cls = kw.get("object_class")
|
|
46
|
+
if isinstance(obj_cls, str):
|
|
47
|
+
obj_cls = load_type(obj_cls, (Object, ObjectData))
|
|
48
|
+
if isinstance(obj_cls, type) and issubclass(obj_cls, Object):
|
|
49
|
+
obj_cls = obj_cls.get_data_class()
|
|
50
|
+
|
|
51
|
+
if obj_cls is not None and cls is not obj_cls:
|
|
52
|
+
return obj_cls(op=op, nsplits=nsplits, **kw)
|
|
53
|
+
return super().__new__(cls)
|
|
54
|
+
|
|
55
|
+
def __init__(self, op=None, nsplits=None, **kw):
|
|
56
|
+
obj_cls = kw.pop("object_class", None)
|
|
57
|
+
if isinstance(obj_cls, type):
|
|
58
|
+
if isinstance(obj_cls, type) and issubclass(obj_cls, Object):
|
|
59
|
+
obj_cls = obj_cls.get_data_class()
|
|
60
|
+
kw["object_class"] = obj_cls.__module__ + "#" + obj_cls.__qualname__
|
|
61
|
+
|
|
62
|
+
super().__init__(_op=op, _nsplits=nsplits, **kw)
|
|
63
|
+
if self.object_class is None and type(self) is not ObjectData:
|
|
64
|
+
cls = type(self)
|
|
65
|
+
self.object_class = cls.__module__ + "#" + cls.__qualname__
|
|
66
|
+
|
|
67
|
+
def __repr__(self):
|
|
68
|
+
return f"Object <op={type(self.op).__name__}, key={self.key}>"
|
|
69
|
+
|
|
70
|
+
@property
|
|
71
|
+
def params(self):
|
|
72
|
+
# params return the properties which useful to rebuild a new tileable object
|
|
73
|
+
return dict(object_class=self.object_class)
|
|
74
|
+
|
|
75
|
+
@params.setter
|
|
76
|
+
def params(self, new_params: Dict[str, Any]):
|
|
77
|
+
params = new_params.copy()
|
|
78
|
+
if params: # pragma: no cover
|
|
79
|
+
raise TypeError(f"Unknown params: {list(params)}")
|
|
80
|
+
|
|
81
|
+
def refresh_params(self):
|
|
82
|
+
# refresh params when chunks updated
|
|
83
|
+
# nothing needs to do for Object
|
|
84
|
+
pass
|
|
85
|
+
|
|
86
|
+
|
|
87
|
+
class Object(Entity, _ToObjectMixin):
|
|
88
|
+
__slots__ = ()
|
|
89
|
+
_allow_data_type_ = (ObjectData,)
|
|
90
|
+
type_name = "Object"
|
|
91
|
+
|
|
92
|
+
@classmethod
|
|
93
|
+
def get_data_class(cls) -> Type[ObjectData]:
|
|
94
|
+
if getattr(cls, "_data_class", None) is not None:
|
|
95
|
+
return cls._data_class
|
|
96
|
+
target_class_name = cls.__module__ + "#" + cls.__qualname__ + "Data"
|
|
97
|
+
cls._data_class = load_type(target_class_name, ObjectData)
|
|
98
|
+
return cls._data_class
|
|
99
|
+
|
|
100
|
+
|
|
101
|
+
OBJECT_TYPE = (Object, ObjectData)
|
|
@@ -15,7 +15,6 @@
|
|
|
15
15
|
import functools
|
|
16
16
|
from enum import Enum
|
|
17
17
|
|
|
18
|
-
from .fuse import FUSE_CHUNK_TYPE
|
|
19
18
|
from .objects import OBJECT_TYPE
|
|
20
19
|
|
|
21
20
|
|
|
@@ -77,8 +76,6 @@ def get_output_types(*objs, unknown_as=None):
|
|
|
77
76
|
for obj in objs:
|
|
78
77
|
if obj is None:
|
|
79
78
|
continue
|
|
80
|
-
elif isinstance(obj, FUSE_CHUNK_TYPE):
|
|
81
|
-
obj = obj.chunk
|
|
82
79
|
|
|
83
80
|
try:
|
|
84
81
|
output_types.append(_get_output_type_by_cls(type(obj)))
|
|
@@ -15,17 +15,15 @@
|
|
|
15
15
|
import builtins
|
|
16
16
|
import itertools
|
|
17
17
|
from operator import attrgetter
|
|
18
|
-
from typing import Callable, List
|
|
19
18
|
from weakref import WeakKeyDictionary, WeakSet
|
|
20
19
|
|
|
21
20
|
import numpy as np
|
|
22
21
|
|
|
23
22
|
from ...serialization.serializables import BoolField, FieldTypes, TupleField
|
|
24
|
-
from ...typing_ import
|
|
23
|
+
from ...typing_ import TileableType
|
|
25
24
|
from ...utils import on_deserialize_shape, on_serialize_nsplits, on_serialize_shape
|
|
26
25
|
from ..base import Base
|
|
27
26
|
from ..mode import enter_mode
|
|
28
|
-
from .chunks import Chunk
|
|
29
27
|
from .core import Entity, EntityData
|
|
30
28
|
from .executable import _ExecutableMixin
|
|
31
29
|
|
|
@@ -34,79 +32,6 @@ class NotSupportTile(Exception):
|
|
|
34
32
|
pass
|
|
35
33
|
|
|
36
34
|
|
|
37
|
-
class OperatorTilesHandler:
|
|
38
|
-
_handlers = dict()
|
|
39
|
-
|
|
40
|
-
@classmethod
|
|
41
|
-
def _get_op_cls(cls, op: OperatorType):
|
|
42
|
-
if isinstance(op, type):
|
|
43
|
-
return op
|
|
44
|
-
return type(op)
|
|
45
|
-
|
|
46
|
-
@classmethod
|
|
47
|
-
def register(
|
|
48
|
-
cls, op: OperatorType, tile_handler: Callable[[OperatorType], TileableType]
|
|
49
|
-
):
|
|
50
|
-
cls._handlers[cls._get_op_cls(op)] = tile_handler
|
|
51
|
-
|
|
52
|
-
@classmethod
|
|
53
|
-
def unregister(cls, op: OperatorType):
|
|
54
|
-
del cls._handlers[cls._get_op_cls(op)]
|
|
55
|
-
|
|
56
|
-
@classmethod
|
|
57
|
-
def get_handler(
|
|
58
|
-
cls, op: OperatorType
|
|
59
|
-
) -> Callable[[OperatorType], List[TileableType]]:
|
|
60
|
-
op_cls = cls._get_op_cls(op)
|
|
61
|
-
return cls._handlers.get(op_cls, op_cls.tile)
|
|
62
|
-
|
|
63
|
-
@classmethod
|
|
64
|
-
def _assign_to(
|
|
65
|
-
cls,
|
|
66
|
-
tile_after_tensor_datas: List["TileableData"],
|
|
67
|
-
tile_before_tensor_datas: List["TileableData"],
|
|
68
|
-
):
|
|
69
|
-
assert len(tile_after_tensor_datas) == len(tile_before_tensor_datas)
|
|
70
|
-
|
|
71
|
-
for tile_after_tensor_data, tile_before_tensor_data in zip(
|
|
72
|
-
tile_after_tensor_datas, tile_before_tensor_datas
|
|
73
|
-
):
|
|
74
|
-
if tile_before_tensor_data is None:
|
|
75
|
-
# garbage collected
|
|
76
|
-
continue
|
|
77
|
-
tile_after_tensor_data.copy_to(tile_before_tensor_data)
|
|
78
|
-
tile_before_tensor_data.op.outputs = tile_before_tensor_datas
|
|
79
|
-
|
|
80
|
-
@enter_mode(kernel=True)
|
|
81
|
-
def dispatch(self, op: OperatorType):
|
|
82
|
-
op_cls = self._get_op_cls(op)
|
|
83
|
-
tiled = None
|
|
84
|
-
cause = None
|
|
85
|
-
|
|
86
|
-
if op_cls in self._handlers:
|
|
87
|
-
tiled = self._handlers[op_cls](op)
|
|
88
|
-
else:
|
|
89
|
-
try:
|
|
90
|
-
tiled = op_cls.tile(op)
|
|
91
|
-
except NotImplementedError as ex:
|
|
92
|
-
cause = ex
|
|
93
|
-
for super_cls in op_cls.__mro__:
|
|
94
|
-
if super_cls in self._handlers:
|
|
95
|
-
h = self._handlers[op_cls] = self._handlers[super_cls]
|
|
96
|
-
tiled = h(op)
|
|
97
|
-
break
|
|
98
|
-
|
|
99
|
-
if tiled is not None:
|
|
100
|
-
return tiled if isinstance(tiled, list) else [tiled]
|
|
101
|
-
else:
|
|
102
|
-
raise NotImplementedError(f"{type(op)} does not support tile") from cause
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
handler = OperatorTilesHandler()
|
|
106
|
-
register = OperatorTilesHandler.register
|
|
107
|
-
unregister = OperatorTilesHandler.unregister
|
|
108
|
-
|
|
109
|
-
|
|
110
35
|
class _ChunksIndexer:
|
|
111
36
|
__slots__ = ("_tileable",)
|
|
112
37
|
|
|
@@ -231,7 +156,7 @@ entity_view_handler = EntityDataModificationHandler()
|
|
|
231
156
|
|
|
232
157
|
|
|
233
158
|
class TileableData(EntityData, _ExecutableMixin):
|
|
234
|
-
__slots__ = "_cix", "_entities", "_executed_sessions"
|
|
159
|
+
__slots__ = "_chunks", "_cix", "_entities", "_executed_sessions"
|
|
235
160
|
_no_copy_attrs_ = Base._no_copy_attrs_ | {"_cix"}
|
|
236
161
|
|
|
237
162
|
# optional fields
|
|
@@ -245,6 +170,8 @@ class TileableData(EntityData, _ExecutableMixin):
|
|
|
245
170
|
cache = BoolField("cache", default=False)
|
|
246
171
|
|
|
247
172
|
def __init__(self: TileableType, *args, **kwargs):
|
|
173
|
+
if kwargs.get("chunks") is not None:
|
|
174
|
+
self._chunks = kwargs.pop("chunks")
|
|
248
175
|
if kwargs.get("_nsplits", None) is not None:
|
|
249
176
|
kwargs["_nsplits"] = tuple(tuple(s) for s in kwargs["_nsplits"])
|
|
250
177
|
|
|
@@ -270,7 +197,7 @@ class TileableData(EntityData, _ExecutableMixin):
|
|
|
270
197
|
return tuple(map(len, self._nsplits))
|
|
271
198
|
|
|
272
199
|
@property
|
|
273
|
-
def chunks(self) ->
|
|
200
|
+
def chunks(self) -> list:
|
|
274
201
|
return getattr(self, "_chunks", None)
|
|
275
202
|
|
|
276
203
|
@property
|