maxframe 0.1.0b5__cp310-cp310-macosx_11_0_arm64.whl
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/__init__.py +32 -0
- maxframe/_utils.cpython-310-darwin.so +0 -0
- maxframe/_utils.pxd +33 -0
- maxframe/_utils.pyx +547 -0
- maxframe/codegen.py +528 -0
- maxframe/config/__init__.py +15 -0
- maxframe/config/config.py +443 -0
- maxframe/config/tests/__init__.py +13 -0
- maxframe/config/tests/test_config.py +103 -0
- maxframe/config/tests/test_validators.py +34 -0
- maxframe/config/validators.py +57 -0
- maxframe/conftest.py +139 -0
- maxframe/core/__init__.py +65 -0
- maxframe/core/base.py +156 -0
- maxframe/core/entity/__init__.py +44 -0
- maxframe/core/entity/chunks.py +68 -0
- maxframe/core/entity/core.py +152 -0
- maxframe/core/entity/executable.py +337 -0
- maxframe/core/entity/fuse.py +73 -0
- maxframe/core/entity/objects.py +100 -0
- maxframe/core/entity/output_types.py +90 -0
- maxframe/core/entity/tileables.py +438 -0
- maxframe/core/entity/utils.py +24 -0
- maxframe/core/graph/__init__.py +17 -0
- maxframe/core/graph/builder/__init__.py +16 -0
- maxframe/core/graph/builder/base.py +86 -0
- maxframe/core/graph/builder/chunk.py +430 -0
- maxframe/core/graph/builder/tileable.py +34 -0
- maxframe/core/graph/builder/utils.py +41 -0
- maxframe/core/graph/core.cpython-310-darwin.so +0 -0
- maxframe/core/graph/core.pyx +467 -0
- maxframe/core/graph/entity.py +171 -0
- maxframe/core/graph/tests/__init__.py +13 -0
- maxframe/core/graph/tests/test_graph.py +205 -0
- maxframe/core/mode.py +96 -0
- maxframe/core/operator/__init__.py +34 -0
- maxframe/core/operator/base.py +450 -0
- maxframe/core/operator/core.py +276 -0
- maxframe/core/operator/fetch.py +53 -0
- maxframe/core/operator/fuse.py +29 -0
- maxframe/core/operator/objects.py +72 -0
- maxframe/core/operator/shuffle.py +111 -0
- maxframe/core/operator/tests/__init__.py +13 -0
- maxframe/core/operator/tests/test_core.py +64 -0
- maxframe/core/tests/__init__.py +13 -0
- maxframe/core/tests/test_mode.py +75 -0
- maxframe/dataframe/__init__.py +81 -0
- maxframe/dataframe/arithmetic/__init__.py +359 -0
- maxframe/dataframe/arithmetic/abs.py +33 -0
- maxframe/dataframe/arithmetic/add.py +60 -0
- maxframe/dataframe/arithmetic/arccos.py +28 -0
- maxframe/dataframe/arithmetic/arccosh.py +28 -0
- maxframe/dataframe/arithmetic/arcsin.py +28 -0
- maxframe/dataframe/arithmetic/arcsinh.py +28 -0
- maxframe/dataframe/arithmetic/arctan.py +28 -0
- maxframe/dataframe/arithmetic/arctanh.py +28 -0
- maxframe/dataframe/arithmetic/around.py +152 -0
- maxframe/dataframe/arithmetic/bitwise_and.py +46 -0
- maxframe/dataframe/arithmetic/bitwise_or.py +50 -0
- maxframe/dataframe/arithmetic/bitwise_xor.py +46 -0
- maxframe/dataframe/arithmetic/ceil.py +28 -0
- maxframe/dataframe/arithmetic/core.py +342 -0
- maxframe/dataframe/arithmetic/cos.py +28 -0
- maxframe/dataframe/arithmetic/cosh.py +28 -0
- maxframe/dataframe/arithmetic/degrees.py +28 -0
- maxframe/dataframe/arithmetic/docstring.py +442 -0
- maxframe/dataframe/arithmetic/equal.py +56 -0
- maxframe/dataframe/arithmetic/exp.py +28 -0
- maxframe/dataframe/arithmetic/exp2.py +28 -0
- maxframe/dataframe/arithmetic/expm1.py +28 -0
- maxframe/dataframe/arithmetic/floor.py +28 -0
- maxframe/dataframe/arithmetic/floordiv.py +64 -0
- maxframe/dataframe/arithmetic/greater.py +57 -0
- maxframe/dataframe/arithmetic/greater_equal.py +57 -0
- maxframe/dataframe/arithmetic/invert.py +33 -0
- maxframe/dataframe/arithmetic/is_ufuncs.py +62 -0
- maxframe/dataframe/arithmetic/less.py +57 -0
- maxframe/dataframe/arithmetic/less_equal.py +57 -0
- maxframe/dataframe/arithmetic/log.py +28 -0
- maxframe/dataframe/arithmetic/log10.py +28 -0
- maxframe/dataframe/arithmetic/log2.py +28 -0
- maxframe/dataframe/arithmetic/mod.py +60 -0
- maxframe/dataframe/arithmetic/multiply.py +60 -0
- maxframe/dataframe/arithmetic/negative.py +33 -0
- maxframe/dataframe/arithmetic/not_equal.py +56 -0
- maxframe/dataframe/arithmetic/power.py +68 -0
- maxframe/dataframe/arithmetic/radians.py +28 -0
- maxframe/dataframe/arithmetic/sin.py +28 -0
- maxframe/dataframe/arithmetic/sinh.py +28 -0
- maxframe/dataframe/arithmetic/sqrt.py +28 -0
- maxframe/dataframe/arithmetic/subtract.py +64 -0
- maxframe/dataframe/arithmetic/tan.py +28 -0
- maxframe/dataframe/arithmetic/tanh.py +28 -0
- maxframe/dataframe/arithmetic/tests/__init__.py +13 -0
- maxframe/dataframe/arithmetic/tests/test_arithmetic.py +695 -0
- maxframe/dataframe/arithmetic/truediv.py +64 -0
- maxframe/dataframe/arithmetic/trunc.py +28 -0
- maxframe/dataframe/arrays.py +864 -0
- maxframe/dataframe/core.py +2417 -0
- maxframe/dataframe/datasource/__init__.py +15 -0
- maxframe/dataframe/datasource/core.py +81 -0
- maxframe/dataframe/datasource/dataframe.py +59 -0
- maxframe/dataframe/datasource/date_range.py +504 -0
- maxframe/dataframe/datasource/from_index.py +54 -0
- maxframe/dataframe/datasource/from_records.py +107 -0
- maxframe/dataframe/datasource/from_tensor.py +419 -0
- maxframe/dataframe/datasource/index.py +117 -0
- maxframe/dataframe/datasource/read_csv.py +528 -0
- maxframe/dataframe/datasource/read_odps_query.py +299 -0
- maxframe/dataframe/datasource/read_odps_table.py +253 -0
- maxframe/dataframe/datasource/read_parquet.py +421 -0
- maxframe/dataframe/datasource/series.py +55 -0
- maxframe/dataframe/datasource/tests/__init__.py +13 -0
- maxframe/dataframe/datasource/tests/test_datasource.py +401 -0
- maxframe/dataframe/datastore/__init__.py +26 -0
- maxframe/dataframe/datastore/core.py +19 -0
- maxframe/dataframe/datastore/to_csv.py +227 -0
- maxframe/dataframe/datastore/to_odps.py +162 -0
- maxframe/dataframe/extensions/__init__.py +41 -0
- maxframe/dataframe/extensions/accessor.py +50 -0
- maxframe/dataframe/extensions/reshuffle.py +83 -0
- maxframe/dataframe/extensions/tests/__init__.py +13 -0
- maxframe/dataframe/extensions/tests/test_extensions.py +38 -0
- maxframe/dataframe/fetch/__init__.py +15 -0
- maxframe/dataframe/fetch/core.py +86 -0
- maxframe/dataframe/groupby/__init__.py +82 -0
- maxframe/dataframe/groupby/aggregation.py +350 -0
- maxframe/dataframe/groupby/apply.py +251 -0
- maxframe/dataframe/groupby/core.py +179 -0
- maxframe/dataframe/groupby/cum.py +124 -0
- maxframe/dataframe/groupby/fill.py +141 -0
- maxframe/dataframe/groupby/getitem.py +92 -0
- maxframe/dataframe/groupby/head.py +105 -0
- maxframe/dataframe/groupby/sample.py +214 -0
- maxframe/dataframe/groupby/tests/__init__.py +13 -0
- maxframe/dataframe/groupby/tests/test_groupby.py +374 -0
- maxframe/dataframe/groupby/transform.py +255 -0
- maxframe/dataframe/indexing/__init__.py +84 -0
- maxframe/dataframe/indexing/add_prefix_suffix.py +110 -0
- maxframe/dataframe/indexing/align.py +349 -0
- maxframe/dataframe/indexing/at.py +83 -0
- maxframe/dataframe/indexing/getitem.py +204 -0
- maxframe/dataframe/indexing/iat.py +37 -0
- maxframe/dataframe/indexing/iloc.py +566 -0
- maxframe/dataframe/indexing/insert.py +86 -0
- maxframe/dataframe/indexing/loc.py +411 -0
- maxframe/dataframe/indexing/reindex.py +526 -0
- maxframe/dataframe/indexing/rename.py +462 -0
- maxframe/dataframe/indexing/rename_axis.py +209 -0
- maxframe/dataframe/indexing/reset_index.py +402 -0
- maxframe/dataframe/indexing/sample.py +221 -0
- maxframe/dataframe/indexing/set_axis.py +194 -0
- maxframe/dataframe/indexing/set_index.py +61 -0
- maxframe/dataframe/indexing/setitem.py +130 -0
- maxframe/dataframe/indexing/tests/__init__.py +13 -0
- maxframe/dataframe/indexing/tests/test_indexing.py +488 -0
- maxframe/dataframe/indexing/where.py +308 -0
- maxframe/dataframe/initializer.py +288 -0
- maxframe/dataframe/merge/__init__.py +32 -0
- maxframe/dataframe/merge/append.py +121 -0
- maxframe/dataframe/merge/concat.py +325 -0
- maxframe/dataframe/merge/merge.py +593 -0
- maxframe/dataframe/merge/tests/__init__.py +13 -0
- maxframe/dataframe/merge/tests/test_merge.py +215 -0
- maxframe/dataframe/misc/__init__.py +134 -0
- maxframe/dataframe/misc/_duplicate.py +46 -0
- maxframe/dataframe/misc/accessor.py +276 -0
- maxframe/dataframe/misc/apply.py +692 -0
- maxframe/dataframe/misc/astype.py +236 -0
- maxframe/dataframe/misc/case_when.py +141 -0
- maxframe/dataframe/misc/check_monotonic.py +84 -0
- maxframe/dataframe/misc/cut.py +383 -0
- maxframe/dataframe/misc/datetimes.py +79 -0
- maxframe/dataframe/misc/describe.py +108 -0
- maxframe/dataframe/misc/diff.py +210 -0
- maxframe/dataframe/misc/drop.py +440 -0
- maxframe/dataframe/misc/drop_duplicates.py +248 -0
- maxframe/dataframe/misc/duplicated.py +292 -0
- maxframe/dataframe/misc/eval.py +728 -0
- maxframe/dataframe/misc/explode.py +171 -0
- maxframe/dataframe/misc/get_dummies.py +208 -0
- maxframe/dataframe/misc/isin.py +217 -0
- maxframe/dataframe/misc/map.py +236 -0
- maxframe/dataframe/misc/melt.py +162 -0
- maxframe/dataframe/misc/memory_usage.py +248 -0
- maxframe/dataframe/misc/pct_change.py +150 -0
- maxframe/dataframe/misc/pivot_table.py +262 -0
- maxframe/dataframe/misc/qcut.py +104 -0
- maxframe/dataframe/misc/select_dtypes.py +104 -0
- maxframe/dataframe/misc/shift.py +256 -0
- maxframe/dataframe/misc/stack.py +238 -0
- maxframe/dataframe/misc/string_.py +221 -0
- maxframe/dataframe/misc/tests/__init__.py +13 -0
- maxframe/dataframe/misc/tests/test_misc.py +468 -0
- maxframe/dataframe/misc/to_numeric.py +178 -0
- maxframe/dataframe/misc/transform.py +361 -0
- maxframe/dataframe/misc/transpose.py +136 -0
- maxframe/dataframe/misc/value_counts.py +182 -0
- maxframe/dataframe/missing/__init__.py +53 -0
- maxframe/dataframe/missing/checkna.py +223 -0
- maxframe/dataframe/missing/dropna.py +280 -0
- maxframe/dataframe/missing/fillna.py +275 -0
- maxframe/dataframe/missing/replace.py +439 -0
- maxframe/dataframe/missing/tests/__init__.py +13 -0
- maxframe/dataframe/missing/tests/test_missing.py +89 -0
- maxframe/dataframe/operators.py +273 -0
- maxframe/dataframe/plotting/__init__.py +40 -0
- maxframe/dataframe/plotting/core.py +78 -0
- maxframe/dataframe/plotting/tests/__init__.py +13 -0
- maxframe/dataframe/plotting/tests/test_plotting.py +136 -0
- maxframe/dataframe/reduction/__init__.py +107 -0
- maxframe/dataframe/reduction/aggregation.py +344 -0
- maxframe/dataframe/reduction/all.py +78 -0
- maxframe/dataframe/reduction/any.py +78 -0
- maxframe/dataframe/reduction/core.py +837 -0
- maxframe/dataframe/reduction/count.py +59 -0
- maxframe/dataframe/reduction/cummax.py +30 -0
- maxframe/dataframe/reduction/cummin.py +30 -0
- maxframe/dataframe/reduction/cumprod.py +30 -0
- maxframe/dataframe/reduction/cumsum.py +30 -0
- maxframe/dataframe/reduction/custom_reduction.py +42 -0
- maxframe/dataframe/reduction/kurtosis.py +104 -0
- maxframe/dataframe/reduction/max.py +65 -0
- maxframe/dataframe/reduction/mean.py +61 -0
- maxframe/dataframe/reduction/min.py +65 -0
- maxframe/dataframe/reduction/nunique.py +141 -0
- maxframe/dataframe/reduction/prod.py +76 -0
- maxframe/dataframe/reduction/reduction_size.py +36 -0
- maxframe/dataframe/reduction/sem.py +69 -0
- maxframe/dataframe/reduction/skew.py +89 -0
- maxframe/dataframe/reduction/std.py +53 -0
- maxframe/dataframe/reduction/str_concat.py +48 -0
- maxframe/dataframe/reduction/sum.py +77 -0
- maxframe/dataframe/reduction/tests/__init__.py +13 -0
- maxframe/dataframe/reduction/tests/test_reduction.py +486 -0
- maxframe/dataframe/reduction/unique.py +90 -0
- maxframe/dataframe/reduction/var.py +72 -0
- maxframe/dataframe/sort/__init__.py +34 -0
- maxframe/dataframe/sort/core.py +36 -0
- maxframe/dataframe/sort/sort_index.py +153 -0
- maxframe/dataframe/sort/sort_values.py +311 -0
- maxframe/dataframe/sort/tests/__init__.py +13 -0
- maxframe/dataframe/sort/tests/test_sort.py +81 -0
- maxframe/dataframe/statistics/__init__.py +33 -0
- maxframe/dataframe/statistics/corr.py +280 -0
- maxframe/dataframe/statistics/quantile.py +341 -0
- maxframe/dataframe/statistics/tests/__init__.py +13 -0
- maxframe/dataframe/statistics/tests/test_statistics.py +82 -0
- maxframe/dataframe/tests/__init__.py +13 -0
- maxframe/dataframe/tests/test_initializer.py +29 -0
- maxframe/dataframe/tseries/__init__.py +13 -0
- maxframe/dataframe/tseries/tests/__init__.py +13 -0
- maxframe/dataframe/tseries/tests/test_tseries.py +30 -0
- maxframe/dataframe/tseries/to_datetime.py +297 -0
- maxframe/dataframe/ufunc/__init__.py +27 -0
- maxframe/dataframe/ufunc/tensor.py +54 -0
- maxframe/dataframe/ufunc/ufunc.py +52 -0
- maxframe/dataframe/utils.py +1267 -0
- maxframe/dataframe/window/__init__.py +29 -0
- maxframe/dataframe/window/aggregation.py +96 -0
- maxframe/dataframe/window/core.py +69 -0
- maxframe/dataframe/window/ewm.py +249 -0
- maxframe/dataframe/window/expanding.py +147 -0
- maxframe/dataframe/window/rolling.py +376 -0
- maxframe/dataframe/window/tests/__init__.py +13 -0
- maxframe/dataframe/window/tests/test_ewm.py +70 -0
- maxframe/dataframe/window/tests/test_expanding.py +66 -0
- maxframe/dataframe/window/tests/test_rolling.py +57 -0
- maxframe/env.py +33 -0
- maxframe/errors.py +21 -0
- maxframe/extension.py +81 -0
- maxframe/learn/__init__.py +17 -0
- maxframe/learn/contrib/__init__.py +17 -0
- maxframe/learn/contrib/pytorch/__init__.py +16 -0
- maxframe/learn/contrib/pytorch/run_function.py +110 -0
- maxframe/learn/contrib/pytorch/run_script.py +102 -0
- maxframe/learn/contrib/pytorch/tests/__init__.py +13 -0
- maxframe/learn/contrib/pytorch/tests/test_pytorch.py +42 -0
- maxframe/learn/contrib/utils.py +52 -0
- maxframe/learn/contrib/xgboost/__init__.py +26 -0
- maxframe/learn/contrib/xgboost/classifier.py +86 -0
- maxframe/learn/contrib/xgboost/core.py +156 -0
- maxframe/learn/contrib/xgboost/dmatrix.py +150 -0
- maxframe/learn/contrib/xgboost/predict.py +138 -0
- maxframe/learn/contrib/xgboost/regressor.py +78 -0
- maxframe/learn/contrib/xgboost/tests/__init__.py +13 -0
- maxframe/learn/contrib/xgboost/tests/test_core.py +43 -0
- maxframe/learn/contrib/xgboost/train.py +121 -0
- maxframe/learn/utils/__init__.py +15 -0
- maxframe/learn/utils/core.py +29 -0
- maxframe/lib/__init__.py +15 -0
- maxframe/lib/aio/__init__.py +27 -0
- maxframe/lib/aio/_runners.py +162 -0
- maxframe/lib/aio/_threads.py +35 -0
- maxframe/lib/aio/base.py +82 -0
- maxframe/lib/aio/file.py +85 -0
- maxframe/lib/aio/isolation.py +100 -0
- maxframe/lib/aio/lru.py +242 -0
- maxframe/lib/aio/parallelism.py +37 -0
- maxframe/lib/aio/tests/__init__.py +13 -0
- maxframe/lib/aio/tests/test_aio_file.py +55 -0
- maxframe/lib/compression.py +55 -0
- maxframe/lib/cython/__init__.py +13 -0
- maxframe/lib/cython/libcpp.pxd +30 -0
- maxframe/lib/filesystem/__init__.py +21 -0
- maxframe/lib/filesystem/_glob.py +173 -0
- maxframe/lib/filesystem/_oss_lib/__init__.py +13 -0
- maxframe/lib/filesystem/_oss_lib/common.py +198 -0
- maxframe/lib/filesystem/_oss_lib/glob.py +147 -0
- maxframe/lib/filesystem/_oss_lib/handle.py +156 -0
- maxframe/lib/filesystem/arrow.py +236 -0
- maxframe/lib/filesystem/base.py +263 -0
- maxframe/lib/filesystem/core.py +95 -0
- maxframe/lib/filesystem/fsmap.py +164 -0
- maxframe/lib/filesystem/hdfs.py +31 -0
- maxframe/lib/filesystem/local.py +112 -0
- maxframe/lib/filesystem/oss.py +157 -0
- maxframe/lib/filesystem/tests/__init__.py +13 -0
- maxframe/lib/filesystem/tests/test_filesystem.py +223 -0
- maxframe/lib/filesystem/tests/test_oss.py +182 -0
- maxframe/lib/functools_compat.py +81 -0
- maxframe/lib/mmh3.cpython-310-darwin.so +0 -0
- maxframe/lib/mmh3_src/MurmurHash3.cpp +339 -0
- maxframe/lib/mmh3_src/MurmurHash3.h +43 -0
- maxframe/lib/mmh3_src/mmh3module.cpp +387 -0
- maxframe/lib/sparse/__init__.py +861 -0
- maxframe/lib/sparse/array.py +1604 -0
- maxframe/lib/sparse/core.py +92 -0
- maxframe/lib/sparse/matrix.py +241 -0
- maxframe/lib/sparse/tests/__init__.py +15 -0
- maxframe/lib/sparse/tests/test_sparse.py +476 -0
- maxframe/lib/sparse/vector.py +150 -0
- maxframe/lib/tblib/LICENSE +20 -0
- maxframe/lib/tblib/__init__.py +327 -0
- maxframe/lib/tblib/cpython.py +83 -0
- maxframe/lib/tblib/decorators.py +44 -0
- maxframe/lib/tblib/pickling_support.py +90 -0
- maxframe/lib/tests/__init__.py +13 -0
- maxframe/lib/tests/test_wrapped_pickle.py +51 -0
- maxframe/lib/version.py +620 -0
- maxframe/lib/wrapped_pickle.py +139 -0
- maxframe/mixin.py +100 -0
- maxframe/odpsio/__init__.py +21 -0
- maxframe/odpsio/arrow.py +91 -0
- maxframe/odpsio/schema.py +364 -0
- maxframe/odpsio/tableio.py +322 -0
- maxframe/odpsio/tests/__init__.py +13 -0
- maxframe/odpsio/tests/test_arrow.py +88 -0
- maxframe/odpsio/tests/test_schema.py +297 -0
- maxframe/odpsio/tests/test_tableio.py +136 -0
- maxframe/odpsio/tests/test_volumeio.py +90 -0
- maxframe/odpsio/volumeio.py +95 -0
- maxframe/opcodes.py +590 -0
- maxframe/protocol.py +415 -0
- maxframe/remote/__init__.py +18 -0
- maxframe/remote/core.py +210 -0
- maxframe/remote/run_script.py +121 -0
- maxframe/serialization/__init__.py +26 -0
- maxframe/serialization/arrow.py +95 -0
- maxframe/serialization/core.cpython-310-darwin.so +0 -0
- maxframe/serialization/core.pxd +44 -0
- maxframe/serialization/core.pyi +61 -0
- maxframe/serialization/core.pyx +1094 -0
- maxframe/serialization/exception.py +86 -0
- maxframe/serialization/maxframe_objects.py +39 -0
- maxframe/serialization/numpy.py +91 -0
- maxframe/serialization/pandas.py +202 -0
- maxframe/serialization/scipy.py +71 -0
- maxframe/serialization/serializables/__init__.py +55 -0
- maxframe/serialization/serializables/core.py +262 -0
- maxframe/serialization/serializables/field.py +624 -0
- maxframe/serialization/serializables/field_type.py +589 -0
- maxframe/serialization/serializables/tests/__init__.py +13 -0
- maxframe/serialization/serializables/tests/test_field_type.py +121 -0
- maxframe/serialization/serializables/tests/test_serializable.py +250 -0
- maxframe/serialization/tests/__init__.py +13 -0
- maxframe/serialization/tests/test_serial.py +412 -0
- maxframe/session.py +1310 -0
- maxframe/tensor/__init__.py +183 -0
- maxframe/tensor/arithmetic/__init__.py +315 -0
- maxframe/tensor/arithmetic/abs.py +68 -0
- maxframe/tensor/arithmetic/absolute.py +68 -0
- maxframe/tensor/arithmetic/add.py +82 -0
- maxframe/tensor/arithmetic/angle.py +72 -0
- maxframe/tensor/arithmetic/arccos.py +104 -0
- maxframe/tensor/arithmetic/arccosh.py +91 -0
- maxframe/tensor/arithmetic/arcsin.py +94 -0
- maxframe/tensor/arithmetic/arcsinh.py +86 -0
- maxframe/tensor/arithmetic/arctan.py +106 -0
- maxframe/tensor/arithmetic/arctan2.py +128 -0
- maxframe/tensor/arithmetic/arctanh.py +86 -0
- maxframe/tensor/arithmetic/around.py +114 -0
- maxframe/tensor/arithmetic/bitand.py +95 -0
- maxframe/tensor/arithmetic/bitor.py +102 -0
- maxframe/tensor/arithmetic/bitxor.py +95 -0
- maxframe/tensor/arithmetic/cbrt.py +66 -0
- maxframe/tensor/arithmetic/ceil.py +71 -0
- maxframe/tensor/arithmetic/clip.py +165 -0
- maxframe/tensor/arithmetic/conj.py +74 -0
- maxframe/tensor/arithmetic/copysign.py +78 -0
- maxframe/tensor/arithmetic/core.py +544 -0
- maxframe/tensor/arithmetic/cos.py +85 -0
- maxframe/tensor/arithmetic/cosh.py +72 -0
- maxframe/tensor/arithmetic/deg2rad.py +72 -0
- maxframe/tensor/arithmetic/degrees.py +77 -0
- maxframe/tensor/arithmetic/divide.py +114 -0
- maxframe/tensor/arithmetic/equal.py +76 -0
- maxframe/tensor/arithmetic/exp.py +106 -0
- maxframe/tensor/arithmetic/exp2.py +67 -0
- maxframe/tensor/arithmetic/expm1.py +79 -0
- maxframe/tensor/arithmetic/fabs.py +74 -0
- maxframe/tensor/arithmetic/fix.py +69 -0
- maxframe/tensor/arithmetic/float_power.py +103 -0
- maxframe/tensor/arithmetic/floor.py +77 -0
- maxframe/tensor/arithmetic/floordiv.py +94 -0
- maxframe/tensor/arithmetic/fmax.py +105 -0
- maxframe/tensor/arithmetic/fmin.py +106 -0
- maxframe/tensor/arithmetic/fmod.py +99 -0
- maxframe/tensor/arithmetic/frexp.py +92 -0
- maxframe/tensor/arithmetic/greater.py +77 -0
- maxframe/tensor/arithmetic/greater_equal.py +69 -0
- maxframe/tensor/arithmetic/hypot.py +77 -0
- maxframe/tensor/arithmetic/i0.py +89 -0
- maxframe/tensor/arithmetic/imag.py +67 -0
- maxframe/tensor/arithmetic/invert.py +110 -0
- maxframe/tensor/arithmetic/isclose.py +115 -0
- maxframe/tensor/arithmetic/iscomplex.py +64 -0
- maxframe/tensor/arithmetic/isfinite.py +106 -0
- maxframe/tensor/arithmetic/isinf.py +103 -0
- maxframe/tensor/arithmetic/isnan.py +82 -0
- maxframe/tensor/arithmetic/isreal.py +63 -0
- maxframe/tensor/arithmetic/ldexp.py +99 -0
- maxframe/tensor/arithmetic/less.py +69 -0
- maxframe/tensor/arithmetic/less_equal.py +69 -0
- maxframe/tensor/arithmetic/log.py +92 -0
- maxframe/tensor/arithmetic/log10.py +85 -0
- maxframe/tensor/arithmetic/log1p.py +95 -0
- maxframe/tensor/arithmetic/log2.py +85 -0
- maxframe/tensor/arithmetic/logaddexp.py +80 -0
- maxframe/tensor/arithmetic/logaddexp2.py +78 -0
- maxframe/tensor/arithmetic/logical_and.py +81 -0
- maxframe/tensor/arithmetic/logical_not.py +74 -0
- maxframe/tensor/arithmetic/logical_or.py +82 -0
- maxframe/tensor/arithmetic/logical_xor.py +88 -0
- maxframe/tensor/arithmetic/lshift.py +82 -0
- maxframe/tensor/arithmetic/maximum.py +108 -0
- maxframe/tensor/arithmetic/minimum.py +108 -0
- maxframe/tensor/arithmetic/mod.py +104 -0
- maxframe/tensor/arithmetic/modf.py +83 -0
- maxframe/tensor/arithmetic/multiply.py +81 -0
- maxframe/tensor/arithmetic/nan_to_num.py +99 -0
- maxframe/tensor/arithmetic/negative.py +65 -0
- maxframe/tensor/arithmetic/nextafter.py +68 -0
- maxframe/tensor/arithmetic/not_equal.py +72 -0
- maxframe/tensor/arithmetic/positive.py +47 -0
- maxframe/tensor/arithmetic/power.py +106 -0
- maxframe/tensor/arithmetic/rad2deg.py +71 -0
- maxframe/tensor/arithmetic/radians.py +77 -0
- maxframe/tensor/arithmetic/real.py +70 -0
- maxframe/tensor/arithmetic/reciprocal.py +76 -0
- maxframe/tensor/arithmetic/rint.py +68 -0
- maxframe/tensor/arithmetic/rshift.py +81 -0
- maxframe/tensor/arithmetic/setimag.py +29 -0
- maxframe/tensor/arithmetic/setreal.py +29 -0
- maxframe/tensor/arithmetic/sign.py +81 -0
- maxframe/tensor/arithmetic/signbit.py +65 -0
- maxframe/tensor/arithmetic/sin.py +98 -0
- maxframe/tensor/arithmetic/sinc.py +102 -0
- maxframe/tensor/arithmetic/sinh.py +93 -0
- maxframe/tensor/arithmetic/spacing.py +72 -0
- maxframe/tensor/arithmetic/sqrt.py +81 -0
- maxframe/tensor/arithmetic/square.py +69 -0
- maxframe/tensor/arithmetic/subtract.py +81 -0
- maxframe/tensor/arithmetic/tan.py +88 -0
- maxframe/tensor/arithmetic/tanh.py +92 -0
- maxframe/tensor/arithmetic/tests/__init__.py +15 -0
- maxframe/tensor/arithmetic/tests/test_arithmetic.py +414 -0
- maxframe/tensor/arithmetic/truediv.py +104 -0
- maxframe/tensor/arithmetic/trunc.py +72 -0
- maxframe/tensor/arithmetic/utils.py +65 -0
- maxframe/tensor/array_utils.py +186 -0
- maxframe/tensor/base/__init__.py +34 -0
- maxframe/tensor/base/astype.py +119 -0
- maxframe/tensor/base/atleast_1d.py +74 -0
- maxframe/tensor/base/broadcast_to.py +89 -0
- maxframe/tensor/base/ravel.py +92 -0
- maxframe/tensor/base/tests/__init__.py +13 -0
- maxframe/tensor/base/tests/test_base.py +114 -0
- maxframe/tensor/base/transpose.py +125 -0
- maxframe/tensor/base/unique.py +205 -0
- maxframe/tensor/base/where.py +127 -0
- maxframe/tensor/core.py +724 -0
- maxframe/tensor/datasource/__init__.py +32 -0
- maxframe/tensor/datasource/arange.py +156 -0
- maxframe/tensor/datasource/array.py +415 -0
- maxframe/tensor/datasource/core.py +109 -0
- maxframe/tensor/datasource/empty.py +169 -0
- maxframe/tensor/datasource/from_dataframe.py +70 -0
- maxframe/tensor/datasource/from_dense.py +54 -0
- maxframe/tensor/datasource/from_sparse.py +47 -0
- maxframe/tensor/datasource/full.py +186 -0
- maxframe/tensor/datasource/ones.py +173 -0
- maxframe/tensor/datasource/scalar.py +40 -0
- maxframe/tensor/datasource/tests/__init__.py +13 -0
- maxframe/tensor/datasource/tests/test_datasource.py +278 -0
- maxframe/tensor/datasource/zeros.py +188 -0
- maxframe/tensor/fetch/__init__.py +15 -0
- maxframe/tensor/fetch/core.py +54 -0
- maxframe/tensor/indexing/__init__.py +47 -0
- maxframe/tensor/indexing/choose.py +196 -0
- maxframe/tensor/indexing/compress.py +124 -0
- maxframe/tensor/indexing/core.py +190 -0
- maxframe/tensor/indexing/extract.py +71 -0
- maxframe/tensor/indexing/fill_diagonal.py +183 -0
- maxframe/tensor/indexing/flatnonzero.py +60 -0
- maxframe/tensor/indexing/getitem.py +175 -0
- maxframe/tensor/indexing/nonzero.py +120 -0
- maxframe/tensor/indexing/setitem.py +132 -0
- maxframe/tensor/indexing/slice.py +29 -0
- maxframe/tensor/indexing/take.py +130 -0
- maxframe/tensor/indexing/tests/__init__.py +15 -0
- maxframe/tensor/indexing/tests/test_indexing.py +234 -0
- maxframe/tensor/indexing/unravel_index.py +103 -0
- maxframe/tensor/merge/__init__.py +15 -0
- maxframe/tensor/merge/stack.py +132 -0
- maxframe/tensor/merge/tests/__init__.py +13 -0
- maxframe/tensor/merge/tests/test_merge.py +52 -0
- maxframe/tensor/operators.py +123 -0
- maxframe/tensor/random/__init__.py +168 -0
- maxframe/tensor/random/beta.py +87 -0
- maxframe/tensor/random/binomial.py +137 -0
- maxframe/tensor/random/bytes.py +39 -0
- maxframe/tensor/random/chisquare.py +110 -0
- maxframe/tensor/random/choice.py +186 -0
- maxframe/tensor/random/core.py +234 -0
- maxframe/tensor/random/dirichlet.py +123 -0
- maxframe/tensor/random/exponential.py +94 -0
- maxframe/tensor/random/f.py +135 -0
- maxframe/tensor/random/gamma.py +128 -0
- maxframe/tensor/random/geometric.py +93 -0
- maxframe/tensor/random/gumbel.py +167 -0
- maxframe/tensor/random/hypergeometric.py +148 -0
- maxframe/tensor/random/laplace.py +133 -0
- maxframe/tensor/random/logistic.py +129 -0
- maxframe/tensor/random/lognormal.py +159 -0
- maxframe/tensor/random/logseries.py +122 -0
- maxframe/tensor/random/multinomial.py +133 -0
- maxframe/tensor/random/multivariate_normal.py +192 -0
- maxframe/tensor/random/negative_binomial.py +125 -0
- maxframe/tensor/random/noncentral_chisquare.py +132 -0
- maxframe/tensor/random/noncentral_f.py +126 -0
- maxframe/tensor/random/normal.py +143 -0
- maxframe/tensor/random/pareto.py +140 -0
- maxframe/tensor/random/permutation.py +104 -0
- maxframe/tensor/random/poisson.py +111 -0
- maxframe/tensor/random/power.py +142 -0
- maxframe/tensor/random/rand.py +82 -0
- maxframe/tensor/random/randint.py +121 -0
- maxframe/tensor/random/randn.py +96 -0
- maxframe/tensor/random/random_integers.py +123 -0
- maxframe/tensor/random/random_sample.py +86 -0
- maxframe/tensor/random/rayleigh.py +110 -0
- maxframe/tensor/random/shuffle.py +61 -0
- maxframe/tensor/random/standard_cauchy.py +105 -0
- maxframe/tensor/random/standard_exponential.py +72 -0
- maxframe/tensor/random/standard_gamma.py +120 -0
- maxframe/tensor/random/standard_normal.py +74 -0
- maxframe/tensor/random/standard_t.py +135 -0
- maxframe/tensor/random/tests/__init__.py +15 -0
- maxframe/tensor/random/tests/test_random.py +167 -0
- maxframe/tensor/random/triangular.py +119 -0
- maxframe/tensor/random/uniform.py +131 -0
- maxframe/tensor/random/vonmises.py +131 -0
- maxframe/tensor/random/wald.py +114 -0
- maxframe/tensor/random/weibull.py +140 -0
- maxframe/tensor/random/zipf.py +122 -0
- maxframe/tensor/rechunk/__init__.py +26 -0
- maxframe/tensor/rechunk/rechunk.py +43 -0
- maxframe/tensor/reduction/__init__.py +66 -0
- maxframe/tensor/reduction/all.py +103 -0
- maxframe/tensor/reduction/allclose.py +88 -0
- maxframe/tensor/reduction/any.py +105 -0
- maxframe/tensor/reduction/argmax.py +103 -0
- maxframe/tensor/reduction/argmin.py +103 -0
- maxframe/tensor/reduction/array_equal.py +64 -0
- maxframe/tensor/reduction/core.py +168 -0
- maxframe/tensor/reduction/count_nonzero.py +81 -0
- maxframe/tensor/reduction/cumprod.py +97 -0
- maxframe/tensor/reduction/cumsum.py +101 -0
- maxframe/tensor/reduction/max.py +120 -0
- maxframe/tensor/reduction/mean.py +123 -0
- maxframe/tensor/reduction/min.py +120 -0
- maxframe/tensor/reduction/nanargmax.py +82 -0
- maxframe/tensor/reduction/nanargmin.py +76 -0
- maxframe/tensor/reduction/nancumprod.py +91 -0
- maxframe/tensor/reduction/nancumsum.py +94 -0
- maxframe/tensor/reduction/nanmax.py +111 -0
- maxframe/tensor/reduction/nanmean.py +106 -0
- maxframe/tensor/reduction/nanmin.py +111 -0
- maxframe/tensor/reduction/nanprod.py +94 -0
- maxframe/tensor/reduction/nanstd.py +126 -0
- maxframe/tensor/reduction/nansum.py +115 -0
- maxframe/tensor/reduction/nanvar.py +149 -0
- maxframe/tensor/reduction/prod.py +130 -0
- maxframe/tensor/reduction/std.py +134 -0
- maxframe/tensor/reduction/sum.py +125 -0
- maxframe/tensor/reduction/tests/__init__.py +13 -0
- maxframe/tensor/reduction/tests/test_reduction.py +181 -0
- maxframe/tensor/reduction/var.py +176 -0
- maxframe/tensor/reshape/__init__.py +17 -0
- maxframe/tensor/reshape/reshape.py +188 -0
- maxframe/tensor/reshape/tests/__init__.py +15 -0
- maxframe/tensor/reshape/tests/test_reshape.py +37 -0
- maxframe/tensor/statistics/__init__.py +13 -0
- maxframe/tensor/statistics/percentile.py +175 -0
- maxframe/tensor/statistics/quantile.py +288 -0
- maxframe/tensor/ufunc/__init__.py +26 -0
- maxframe/tensor/ufunc/ufunc.py +200 -0
- maxframe/tensor/utils.py +718 -0
- maxframe/tests/__init__.py +13 -0
- maxframe/tests/test_codegen.py +69 -0
- maxframe/tests/test_protocol.py +144 -0
- maxframe/tests/test_utils.py +376 -0
- maxframe/tests/utils.py +164 -0
- maxframe/typing_.py +37 -0
- maxframe/udf.py +134 -0
- maxframe/utils.py +1114 -0
- maxframe-0.1.0b5.dist-info/METADATA +104 -0
- maxframe-0.1.0b5.dist-info/RECORD +647 -0
- maxframe-0.1.0b5.dist-info/WHEEL +5 -0
- maxframe-0.1.0b5.dist-info/top_level.txt +3 -0
- maxframe_client/__init__.py +17 -0
- maxframe_client/clients/__init__.py +13 -0
- maxframe_client/clients/framedriver.py +118 -0
- maxframe_client/clients/spe.py +104 -0
- maxframe_client/conftest.py +15 -0
- maxframe_client/fetcher.py +264 -0
- maxframe_client/session/__init__.py +22 -0
- maxframe_client/session/consts.py +36 -0
- maxframe_client/session/graph.py +119 -0
- maxframe_client/session/odps.py +482 -0
- maxframe_client/session/task.py +280 -0
- maxframe_client/session/tests/__init__.py +13 -0
- maxframe_client/session/tests/test_task.py +85 -0
- maxframe_client/tests/__init__.py +13 -0
- maxframe_client/tests/test_fetcher.py +89 -0
- maxframe_client/tests/test_session.py +255 -0
|
@@ -0,0 +1,273 @@
|
|
|
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
|
+
import numpy as np
|
|
16
|
+
import pandas as pd
|
|
17
|
+
|
|
18
|
+
from ..core import ENTITY_TYPE, OutputType
|
|
19
|
+
from ..core.operator import (
|
|
20
|
+
Fuse,
|
|
21
|
+
FuseChunkMixin,
|
|
22
|
+
Operator,
|
|
23
|
+
ShuffleProxy,
|
|
24
|
+
TileableOperatorMixin,
|
|
25
|
+
)
|
|
26
|
+
from ..tensor.core import TENSOR_TYPE
|
|
27
|
+
from ..tensor.datasource import tensor as astensor
|
|
28
|
+
from .core import DATAFRAME_TYPE, SERIES_TYPE
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
class DataFrameOperatorMixin(TileableOperatorMixin):
|
|
32
|
+
__slots__ = ()
|
|
33
|
+
_op_module_ = "dataframe"
|
|
34
|
+
|
|
35
|
+
def new_dataframes(
|
|
36
|
+
self,
|
|
37
|
+
inputs,
|
|
38
|
+
shape=None,
|
|
39
|
+
dtypes=None,
|
|
40
|
+
index_value=None,
|
|
41
|
+
columns_value=None,
|
|
42
|
+
chunks=None,
|
|
43
|
+
nsplits=None,
|
|
44
|
+
output_limit=None,
|
|
45
|
+
kws=None,
|
|
46
|
+
**kw
|
|
47
|
+
):
|
|
48
|
+
setattr(self, "_output_types", [OutputType.dataframe])
|
|
49
|
+
return self.new_tileables(
|
|
50
|
+
inputs,
|
|
51
|
+
shape=shape,
|
|
52
|
+
dtypes=dtypes,
|
|
53
|
+
index_value=index_value,
|
|
54
|
+
columns_value=columns_value,
|
|
55
|
+
chunks=chunks,
|
|
56
|
+
nsplits=nsplits,
|
|
57
|
+
output_limit=output_limit,
|
|
58
|
+
kws=kws,
|
|
59
|
+
**kw
|
|
60
|
+
)
|
|
61
|
+
|
|
62
|
+
def new_dataframe(
|
|
63
|
+
self,
|
|
64
|
+
inputs,
|
|
65
|
+
shape=None,
|
|
66
|
+
dtypes=None,
|
|
67
|
+
index_value=None,
|
|
68
|
+
columns_value=None,
|
|
69
|
+
**kw
|
|
70
|
+
):
|
|
71
|
+
if getattr(self, "output_limit") != 1:
|
|
72
|
+
raise TypeError("cannot new DataFrame with more than 1 outputs")
|
|
73
|
+
|
|
74
|
+
return self.new_dataframes(
|
|
75
|
+
inputs,
|
|
76
|
+
shape=shape,
|
|
77
|
+
dtypes=dtypes,
|
|
78
|
+
index_value=index_value,
|
|
79
|
+
columns_value=columns_value,
|
|
80
|
+
**kw
|
|
81
|
+
)[0]
|
|
82
|
+
|
|
83
|
+
def new_seriess(
|
|
84
|
+
self,
|
|
85
|
+
inputs,
|
|
86
|
+
shape=None,
|
|
87
|
+
dtype=None,
|
|
88
|
+
index_value=None,
|
|
89
|
+
name=None,
|
|
90
|
+
chunks=None,
|
|
91
|
+
nsplits=None,
|
|
92
|
+
output_limit=None,
|
|
93
|
+
kws=None,
|
|
94
|
+
**kw
|
|
95
|
+
):
|
|
96
|
+
setattr(self, "_output_types", [OutputType.series])
|
|
97
|
+
return self.new_tileables(
|
|
98
|
+
inputs,
|
|
99
|
+
shape=shape,
|
|
100
|
+
dtype=dtype,
|
|
101
|
+
index_value=index_value,
|
|
102
|
+
name=name,
|
|
103
|
+
chunks=chunks,
|
|
104
|
+
nsplits=nsplits,
|
|
105
|
+
output_limit=output_limit,
|
|
106
|
+
kws=kws,
|
|
107
|
+
**kw
|
|
108
|
+
)
|
|
109
|
+
|
|
110
|
+
def new_series(
|
|
111
|
+
self, inputs, shape=None, dtype=None, index_value=None, name=None, **kw
|
|
112
|
+
):
|
|
113
|
+
if getattr(self, "output_limit") != 1:
|
|
114
|
+
raise TypeError("cannot new Series with more than 1 outputs")
|
|
115
|
+
|
|
116
|
+
return self.new_seriess(
|
|
117
|
+
inputs, shape=shape, dtype=dtype, index_value=index_value, name=name, **kw
|
|
118
|
+
)[0]
|
|
119
|
+
|
|
120
|
+
def new_df_or_series(self, inputs, **kw):
|
|
121
|
+
setattr(self, "_output_types", [OutputType.df_or_series])
|
|
122
|
+
return self.new_tileables(inputs, **kw)[0]
|
|
123
|
+
|
|
124
|
+
def new_indexes(
|
|
125
|
+
self,
|
|
126
|
+
inputs,
|
|
127
|
+
shape=None,
|
|
128
|
+
dtype=None,
|
|
129
|
+
index_value=None,
|
|
130
|
+
name=None,
|
|
131
|
+
chunks=None,
|
|
132
|
+
nsplits=None,
|
|
133
|
+
output_limit=None,
|
|
134
|
+
kws=None,
|
|
135
|
+
**kw
|
|
136
|
+
):
|
|
137
|
+
setattr(self, "_output_types", [OutputType.index])
|
|
138
|
+
return self.new_tileables(
|
|
139
|
+
inputs,
|
|
140
|
+
shape=shape,
|
|
141
|
+
dtype=dtype,
|
|
142
|
+
index_value=index_value,
|
|
143
|
+
name=name,
|
|
144
|
+
chunks=chunks,
|
|
145
|
+
nsplits=nsplits,
|
|
146
|
+
output_limit=output_limit,
|
|
147
|
+
kws=kws,
|
|
148
|
+
**kw
|
|
149
|
+
)
|
|
150
|
+
|
|
151
|
+
def new_index(
|
|
152
|
+
self, inputs, shape=None, dtype=None, index_value=None, name=None, **kw
|
|
153
|
+
):
|
|
154
|
+
if getattr(self, "output_limit") != 1:
|
|
155
|
+
raise TypeError("cannot new Index with more than 1 outputs")
|
|
156
|
+
|
|
157
|
+
return self.new_indexes(
|
|
158
|
+
inputs, shape=shape, dtype=dtype, index_value=index_value, name=name, **kw
|
|
159
|
+
)[0]
|
|
160
|
+
|
|
161
|
+
def new_scalars(
|
|
162
|
+
self, inputs, dtype=None, chunks=None, output_limit=None, kws=None, **kw
|
|
163
|
+
):
|
|
164
|
+
setattr(self, "_output_types", [OutputType.scalar])
|
|
165
|
+
return self.new_tileables(
|
|
166
|
+
inputs,
|
|
167
|
+
shape=(),
|
|
168
|
+
dtype=dtype,
|
|
169
|
+
chunks=chunks,
|
|
170
|
+
nsplits=(),
|
|
171
|
+
output_limit=output_limit,
|
|
172
|
+
kws=kws,
|
|
173
|
+
**kw
|
|
174
|
+
)
|
|
175
|
+
|
|
176
|
+
def new_scalar(self, inputs, dtype=None, **kw):
|
|
177
|
+
if getattr(self, "output_limit") != 1:
|
|
178
|
+
raise TypeError("cannot new tensor with more than 1 outputs")
|
|
179
|
+
|
|
180
|
+
return self.new_scalars(inputs, dtype=dtype, **kw)[0]
|
|
181
|
+
|
|
182
|
+
def new_categoricals(
|
|
183
|
+
self,
|
|
184
|
+
inputs,
|
|
185
|
+
shape=None,
|
|
186
|
+
dtype=None,
|
|
187
|
+
categories_value=None,
|
|
188
|
+
chunks=None,
|
|
189
|
+
nsplits=None,
|
|
190
|
+
output_limit=None,
|
|
191
|
+
kws=None,
|
|
192
|
+
**kw
|
|
193
|
+
):
|
|
194
|
+
setattr(self, "_output_types", [OutputType.categorical])
|
|
195
|
+
return self.new_tileables(
|
|
196
|
+
inputs,
|
|
197
|
+
shape=shape,
|
|
198
|
+
dtype=dtype,
|
|
199
|
+
categories_value=categories_value,
|
|
200
|
+
chunks=chunks,
|
|
201
|
+
nsplits=nsplits,
|
|
202
|
+
output_limit=output_limit,
|
|
203
|
+
kws=kws,
|
|
204
|
+
**kw
|
|
205
|
+
)
|
|
206
|
+
|
|
207
|
+
def new_categorical(
|
|
208
|
+
self, inputs, shape=None, dtype=None, categories_value=None, **kw
|
|
209
|
+
):
|
|
210
|
+
if getattr(self, "output_limit") != 1:
|
|
211
|
+
raise TypeError("cannot new Categorical with more than 1 outputs")
|
|
212
|
+
|
|
213
|
+
return self.new_categoricals(
|
|
214
|
+
inputs, shape=shape, dtype=dtype, categories_value=categories_value, **kw
|
|
215
|
+
)[0]
|
|
216
|
+
|
|
217
|
+
@classmethod
|
|
218
|
+
def _process_groupby_params(cls, groupby_params):
|
|
219
|
+
new_groupby_params = groupby_params.copy()
|
|
220
|
+
if isinstance(groupby_params["by"], list):
|
|
221
|
+
by = []
|
|
222
|
+
for v in groupby_params["by"]:
|
|
223
|
+
if isinstance(v, ENTITY_TYPE):
|
|
224
|
+
by.append(cls.concat_tileable_chunks(v).chunks[0])
|
|
225
|
+
else:
|
|
226
|
+
by.append(v)
|
|
227
|
+
new_groupby_params["by"] = by
|
|
228
|
+
return new_groupby_params
|
|
229
|
+
|
|
230
|
+
@classmethod
|
|
231
|
+
def _get_groupby_inputs(cls, groupby, groupby_params):
|
|
232
|
+
inputs = [groupby]
|
|
233
|
+
chunk_inputs = list(groupby.chunks)
|
|
234
|
+
if isinstance(groupby_params["by"], list):
|
|
235
|
+
for chunk_v, v in zip(
|
|
236
|
+
groupby_params["by"], groupby.op.groupby_params["by"]
|
|
237
|
+
):
|
|
238
|
+
if isinstance(v, ENTITY_TYPE):
|
|
239
|
+
inputs.append(v)
|
|
240
|
+
chunk_inputs.append(chunk_v)
|
|
241
|
+
return inputs, chunk_inputs
|
|
242
|
+
|
|
243
|
+
@staticmethod
|
|
244
|
+
def _process_input(x):
|
|
245
|
+
from .initializer import DataFrame, Series
|
|
246
|
+
|
|
247
|
+
if isinstance(x, (DATAFRAME_TYPE, SERIES_TYPE)) or pd.api.types.is_scalar(x):
|
|
248
|
+
return x
|
|
249
|
+
elif isinstance(x, pd.Series):
|
|
250
|
+
return Series(x)
|
|
251
|
+
elif isinstance(x, pd.DataFrame):
|
|
252
|
+
return DataFrame(x)
|
|
253
|
+
elif isinstance(x, (list, tuple, np.ndarray, TENSOR_TYPE)):
|
|
254
|
+
return astensor(x)
|
|
255
|
+
raise NotImplementedError
|
|
256
|
+
|
|
257
|
+
|
|
258
|
+
DataFrameOperator = Operator
|
|
259
|
+
|
|
260
|
+
|
|
261
|
+
class DataFrameShuffleProxy(ShuffleProxy, DataFrameOperatorMixin):
|
|
262
|
+
def __init__(self, sparse=None, output_types=None, **kwargs):
|
|
263
|
+
super().__init__(sparse=sparse, _output_types=output_types, **kwargs)
|
|
264
|
+
|
|
265
|
+
|
|
266
|
+
class DataFrameFuseChunkMixin(FuseChunkMixin, DataFrameOperatorMixin):
|
|
267
|
+
__slots__ = ()
|
|
268
|
+
|
|
269
|
+
|
|
270
|
+
class DataFrameFuseChunk(Fuse, DataFrameFuseChunkMixin):
|
|
271
|
+
@property
|
|
272
|
+
def output_types(self):
|
|
273
|
+
return self.outputs[-1].chunk.op.output_types
|
|
@@ -0,0 +1,40 @@
|
|
|
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
|
+
|
|
16
|
+
def _install():
|
|
17
|
+
import pandas as pd
|
|
18
|
+
|
|
19
|
+
from ...utils import adapt_docstring
|
|
20
|
+
from ..core import DATAFRAME_TYPE, SERIES_TYPE
|
|
21
|
+
from ..misc.accessor import CachedAccessor
|
|
22
|
+
from .core import DataFramePlotAccessor, PlotAccessor, SeriesPlotAccessor
|
|
23
|
+
|
|
24
|
+
for t in DATAFRAME_TYPE:
|
|
25
|
+
t.plot = CachedAccessor("plot", DataFramePlotAccessor)
|
|
26
|
+
for method in dir(pd.DataFrame.plot):
|
|
27
|
+
if not method.startswith("_"):
|
|
28
|
+
DataFramePlotAccessor._register(method)
|
|
29
|
+
|
|
30
|
+
for t in SERIES_TYPE:
|
|
31
|
+
t.plot = CachedAccessor("plot", SeriesPlotAccessor)
|
|
32
|
+
for method in dir(pd.Series.plot):
|
|
33
|
+
if not method.startswith("_"):
|
|
34
|
+
SeriesPlotAccessor._register(method)
|
|
35
|
+
|
|
36
|
+
PlotAccessor.__doc__ = adapt_docstring(pd.DataFrame.plot.__doc__)
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
_install()
|
|
40
|
+
del _install
|
|
@@ -0,0 +1,78 @@
|
|
|
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 collections import OrderedDict
|
|
16
|
+
|
|
17
|
+
import pandas as pd
|
|
18
|
+
|
|
19
|
+
from ...core import ENTITY_TYPE, ExecutableTuple
|
|
20
|
+
from ...utils import adapt_docstring, get_item_if_scalar
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
class PlotAccessor:
|
|
24
|
+
def __init__(self, obj):
|
|
25
|
+
self._obj = obj
|
|
26
|
+
|
|
27
|
+
def __call__(self, kind="line", session=None, **kwargs):
|
|
28
|
+
to_executes = self._get_executables(**kwargs)
|
|
29
|
+
|
|
30
|
+
result = dict()
|
|
31
|
+
executed = (
|
|
32
|
+
ExecutableTuple(to_executes.values())
|
|
33
|
+
.execute(session=session)
|
|
34
|
+
.fetch(session=session)
|
|
35
|
+
)
|
|
36
|
+
for p, v in zip(to_executes, executed):
|
|
37
|
+
result[p] = get_item_if_scalar(v)
|
|
38
|
+
|
|
39
|
+
data = result.pop("__object__")
|
|
40
|
+
pd_kwargs = kwargs.copy()
|
|
41
|
+
pd_kwargs["kind"] = kind
|
|
42
|
+
pd_kwargs.update(result)
|
|
43
|
+
|
|
44
|
+
return data.plot(**pd_kwargs)
|
|
45
|
+
|
|
46
|
+
def _get_executables(self, **kwargs) -> OrderedDict:
|
|
47
|
+
to_executes = OrderedDict()
|
|
48
|
+
to_executes["__object__"] = self._obj
|
|
49
|
+
|
|
50
|
+
for k, v in kwargs.items():
|
|
51
|
+
if isinstance(v, ENTITY_TYPE):
|
|
52
|
+
to_executes[k] = v
|
|
53
|
+
|
|
54
|
+
return to_executes
|
|
55
|
+
|
|
56
|
+
@classmethod
|
|
57
|
+
def _gen_func(cls, name, doc):
|
|
58
|
+
def _inner(self, *args, **kwargs):
|
|
59
|
+
return self(kind=name, *args, **kwargs)
|
|
60
|
+
|
|
61
|
+
_inner.__name__ = name
|
|
62
|
+
_inner.__doc__ = doc
|
|
63
|
+
|
|
64
|
+
return _inner
|
|
65
|
+
|
|
66
|
+
@classmethod
|
|
67
|
+
def _register(cls, method):
|
|
68
|
+
doc = getattr(pd.DataFrame.plot, method).__doc__
|
|
69
|
+
new_doc = adapt_docstring(doc)
|
|
70
|
+
setattr(cls, method, cls._gen_func(method, new_doc))
|
|
71
|
+
|
|
72
|
+
|
|
73
|
+
class DataFramePlotAccessor(PlotAccessor):
|
|
74
|
+
pass
|
|
75
|
+
|
|
76
|
+
|
|
77
|
+
class SeriesPlotAccessor(PlotAccessor):
|
|
78
|
+
pass
|
|
@@ -0,0 +1,13 @@
|
|
|
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.
|
|
@@ -0,0 +1,136 @@
|
|
|
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
|
+
import tempfile
|
|
16
|
+
import warnings
|
|
17
|
+
|
|
18
|
+
import mock
|
|
19
|
+
import numpy as np
|
|
20
|
+
import pandas as pd
|
|
21
|
+
import pytest
|
|
22
|
+
|
|
23
|
+
try:
|
|
24
|
+
import matplotlib
|
|
25
|
+
except ImportError: # pragma: no cover
|
|
26
|
+
matplotlib = None
|
|
27
|
+
|
|
28
|
+
from .... import dataframe as md
|
|
29
|
+
from .... import tensor as mt
|
|
30
|
+
from ....core import ExecutableTuple
|
|
31
|
+
from ....tensor.datasource import Scalar
|
|
32
|
+
from ...datasource import PandasDataSourceOperator
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
@pytest.fixture
|
|
36
|
+
def wrap_execute():
|
|
37
|
+
exec_container = dict()
|
|
38
|
+
|
|
39
|
+
def new_execute(executable_tuple: ExecutableTuple, *_args, **_kw):
|
|
40
|
+
for entity in executable_tuple:
|
|
41
|
+
if isinstance(entity.op, PandasDataSourceOperator):
|
|
42
|
+
exec_container[entity] = entity.op.get_data()
|
|
43
|
+
elif isinstance(entity.op, Scalar):
|
|
44
|
+
exec_container[entity] = entity.op.data
|
|
45
|
+
else:
|
|
46
|
+
raise NotImplementedError(entity.op)
|
|
47
|
+
return executable_tuple
|
|
48
|
+
|
|
49
|
+
def new_fetch(executable_tuple: ExecutableTuple, *_args, **_kw):
|
|
50
|
+
return tuple(exec_container[et] for et in executable_tuple)
|
|
51
|
+
|
|
52
|
+
with mock.patch(
|
|
53
|
+
"maxframe.core.entity.executable.ExecutableTuple.execute", new=new_execute
|
|
54
|
+
), mock.patch(
|
|
55
|
+
"maxframe.core.entity.executable.ExecutableTuple.fetch", new=new_fetch
|
|
56
|
+
):
|
|
57
|
+
yield
|
|
58
|
+
|
|
59
|
+
|
|
60
|
+
def close(fignum=None): # pragma: no cover
|
|
61
|
+
from matplotlib.pyplot import close as _close
|
|
62
|
+
from matplotlib.pyplot import get_fignums
|
|
63
|
+
|
|
64
|
+
if fignum is None:
|
|
65
|
+
for fignum in get_fignums():
|
|
66
|
+
_close(fignum)
|
|
67
|
+
else:
|
|
68
|
+
_close(fignum)
|
|
69
|
+
|
|
70
|
+
|
|
71
|
+
def assert_is_valid_plot_return_object(objs): # pragma: no cover
|
|
72
|
+
import matplotlib.pyplot as plt
|
|
73
|
+
|
|
74
|
+
if isinstance(objs, (pd.Series, np.ndarray)):
|
|
75
|
+
for el in objs.ravel():
|
|
76
|
+
msg = (
|
|
77
|
+
"one of 'objs' is not a matplotlib Axes instance, "
|
|
78
|
+
f"type encountered {type(el).__name__}"
|
|
79
|
+
)
|
|
80
|
+
assert isinstance(el, (plt.Axes, dict)), msg
|
|
81
|
+
else:
|
|
82
|
+
msg = (
|
|
83
|
+
"objs is neither an ndarray of Artist instances nor a single "
|
|
84
|
+
f"ArtistArtist instance, tuple, or dict, 'objs' is a {type(objs).__name__}"
|
|
85
|
+
)
|
|
86
|
+
assert isinstance(objs, (plt.Artist, tuple, dict)), msg
|
|
87
|
+
|
|
88
|
+
|
|
89
|
+
def _check_plot_works(f, filterwarnings="always", **kwargs): # pragma: no cover
|
|
90
|
+
import matplotlib.pyplot as plt
|
|
91
|
+
|
|
92
|
+
ret = None
|
|
93
|
+
with warnings.catch_warnings():
|
|
94
|
+
warnings.simplefilter(filterwarnings)
|
|
95
|
+
try:
|
|
96
|
+
try:
|
|
97
|
+
fig = kwargs["figure"]
|
|
98
|
+
except KeyError:
|
|
99
|
+
fig = plt.gcf()
|
|
100
|
+
|
|
101
|
+
plt.clf()
|
|
102
|
+
|
|
103
|
+
kwargs.get("ax", fig.add_subplot(211))
|
|
104
|
+
ret = f(**kwargs)
|
|
105
|
+
|
|
106
|
+
assert_is_valid_plot_return_object(ret)
|
|
107
|
+
|
|
108
|
+
if f is pd.plotting.bootstrap_plot:
|
|
109
|
+
assert "ax" not in kwargs
|
|
110
|
+
else:
|
|
111
|
+
kwargs["ax"] = fig.add_subplot(212)
|
|
112
|
+
|
|
113
|
+
ret = f(**kwargs)
|
|
114
|
+
assert_is_valid_plot_return_object(ret)
|
|
115
|
+
|
|
116
|
+
with tempfile.TemporaryFile() as path:
|
|
117
|
+
plt.savefig(path)
|
|
118
|
+
finally:
|
|
119
|
+
close(fig)
|
|
120
|
+
|
|
121
|
+
return ret
|
|
122
|
+
|
|
123
|
+
|
|
124
|
+
@pytest.mark.skipif(matplotlib is None, reason="matplotlib is not installed")
|
|
125
|
+
def test_plotting(wrap_execute):
|
|
126
|
+
raw = pd.DataFrame(
|
|
127
|
+
{
|
|
128
|
+
"a": ["s" + str(i) for i in range(10)],
|
|
129
|
+
"b": np.random.RandomState(0).randint(10, size=10),
|
|
130
|
+
}
|
|
131
|
+
)
|
|
132
|
+
df = md.DataFrame(raw)
|
|
133
|
+
|
|
134
|
+
_check_plot_works(df.plot, x="a", y="b")
|
|
135
|
+
_check_plot_works(df.plot, x="a", y=mt.tensor("b"))
|
|
136
|
+
_check_plot_works(df.plot.line)
|
|
@@ -0,0 +1,107 @@
|
|
|
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 .aggregation import DataFrameAggregate
|
|
16
|
+
from .all import DataFrameAll
|
|
17
|
+
from .any import DataFrameAny
|
|
18
|
+
from .core import CustomReduction
|
|
19
|
+
from .count import DataFrameCount
|
|
20
|
+
from .cummax import DataFrameCummax
|
|
21
|
+
from .cummin import DataFrameCummin
|
|
22
|
+
from .cumprod import DataFrameCumprod
|
|
23
|
+
from .cumsum import DataFrameCumsum
|
|
24
|
+
from .custom_reduction import DataFrameCustomReduction
|
|
25
|
+
from .kurtosis import DataFrameKurtosis
|
|
26
|
+
from .max import DataFrameMax
|
|
27
|
+
from .mean import DataFrameMean
|
|
28
|
+
from .min import DataFrameMin
|
|
29
|
+
from .nunique import DataFrameNunique
|
|
30
|
+
from .prod import DataFrameProd
|
|
31
|
+
from .reduction_size import DataFrameSize
|
|
32
|
+
from .sem import DataFrameSem
|
|
33
|
+
from .skew import DataFrameSkew
|
|
34
|
+
from .str_concat import DataFrameStrConcat, build_str_concat_object
|
|
35
|
+
from .sum import DataFrameSum
|
|
36
|
+
from .unique import DataFrameUnique, unique
|
|
37
|
+
from .var import DataFrameVar
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
def _install():
|
|
41
|
+
from ..core import DATAFRAME_TYPE, INDEX_TYPE, SERIES_TYPE
|
|
42
|
+
from .aggregation import aggregate
|
|
43
|
+
from .all import all_dataframe, all_index, all_series
|
|
44
|
+
from .any import any_dataframe, any_index, any_series
|
|
45
|
+
from .count import count_dataframe, count_series
|
|
46
|
+
from .cummax import cummax
|
|
47
|
+
from .cummin import cummin
|
|
48
|
+
from .cumprod import cumprod
|
|
49
|
+
from .cumsum import cumsum
|
|
50
|
+
from .kurtosis import kurt_dataframe, kurt_series
|
|
51
|
+
from .max import max_dataframe, max_index, max_series
|
|
52
|
+
from .mean import mean_dataframe, mean_series
|
|
53
|
+
from .min import min_dataframe, min_index, min_series
|
|
54
|
+
from .nunique import nunique_dataframe, nunique_series
|
|
55
|
+
from .prod import prod_dataframe, prod_series
|
|
56
|
+
from .reduction_size import size_dataframe, size_series
|
|
57
|
+
from .sem import sem_dataframe, sem_series
|
|
58
|
+
from .skew import skew_dataframe, skew_series
|
|
59
|
+
from .std import std_dataframe, std_series
|
|
60
|
+
from .sum import sum_dataframe, sum_series
|
|
61
|
+
from .var import var_dataframe, var_series
|
|
62
|
+
|
|
63
|
+
funcs = [
|
|
64
|
+
("sum", sum_series, sum_dataframe),
|
|
65
|
+
("prod", prod_series, prod_dataframe),
|
|
66
|
+
("product", prod_series, prod_dataframe),
|
|
67
|
+
("max", max_series, max_dataframe),
|
|
68
|
+
("min", min_series, min_dataframe),
|
|
69
|
+
("count", count_series, count_dataframe),
|
|
70
|
+
("mean", mean_series, mean_dataframe),
|
|
71
|
+
("var", var_series, var_dataframe),
|
|
72
|
+
("std", std_series, std_dataframe),
|
|
73
|
+
("all", all_series, all_dataframe),
|
|
74
|
+
("any", any_series, any_dataframe),
|
|
75
|
+
("cummax", cummax, cummax),
|
|
76
|
+
("cummin", cummin, cummin),
|
|
77
|
+
("cumprod", cumprod, cumprod),
|
|
78
|
+
("cumsum", cumsum, cumsum),
|
|
79
|
+
("agg", aggregate, aggregate),
|
|
80
|
+
("aggregate", aggregate, aggregate),
|
|
81
|
+
("nunique", nunique_series, nunique_dataframe),
|
|
82
|
+
("sem", sem_series, sem_dataframe),
|
|
83
|
+
("skew", skew_series, skew_dataframe),
|
|
84
|
+
("kurt", kurt_series, kurt_dataframe),
|
|
85
|
+
("kurtosis", kurt_series, kurt_dataframe),
|
|
86
|
+
("unique", unique, None),
|
|
87
|
+
("_reduction_size", size_dataframe, size_series),
|
|
88
|
+
]
|
|
89
|
+
for func_name, series_func, df_func in funcs:
|
|
90
|
+
if df_func is not None: # pragma: no branch
|
|
91
|
+
for t in DATAFRAME_TYPE:
|
|
92
|
+
setattr(t, func_name, df_func)
|
|
93
|
+
if series_func is not None: # pragma: no branch
|
|
94
|
+
for t in SERIES_TYPE:
|
|
95
|
+
setattr(t, func_name, series_func)
|
|
96
|
+
|
|
97
|
+
for t in INDEX_TYPE:
|
|
98
|
+
setattr(t, "agg", aggregate)
|
|
99
|
+
setattr(t, "aggregate", aggregate)
|
|
100
|
+
setattr(t, "all", all_index)
|
|
101
|
+
setattr(t, "any", any_index)
|
|
102
|
+
setattr(t, "min", min_index)
|
|
103
|
+
setattr(t, "max", max_index)
|
|
104
|
+
|
|
105
|
+
|
|
106
|
+
_install()
|
|
107
|
+
del _install
|