perspective-python 3.0.1__tar.gz → 3.0.2__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.
- {perspective_python-3.0.1 → perspective_python-3.0.2}/Cargo.lock +7 -7
- {perspective_python-3.0.1 → perspective_python-3.0.2}/PKG-INFO +1 -1
- {perspective_python-3.0.1 → perspective_python-3.0.2}/perspective/__init__.py +5 -2
- {perspective_python-3.0.1 → perspective_python-3.0.2}/perspective/psp_cffi.py +1 -1
- {perspective_python-3.0.1/rust/perspective-python → perspective_python-3.0.2}/perspective/tests/core/test_async.py +0 -2
- {perspective_python-3.0.1 → perspective_python-3.0.2}/perspective/tests/server/test_server.py +6 -0
- {perspective_python-3.0.1/rust/perspective-python → perspective_python-3.0.2}/perspective/tests/server/test_session.py +2 -2
- {perspective_python-3.0.1/rust/perspective-python → perspective_python-3.0.2}/perspective/tests/table/test_table_pandas.py +7 -7
- {perspective_python-3.0.1 → perspective_python-3.0.2}/perspective/viewer/viewer_traitlets.py +1 -1
- {perspective_python-3.0.1 → perspective_python-3.0.2}/pyproject.toml +1 -1
- {perspective_python-3.0.1 → perspective_python-3.0.2}/rust/perspective-client/Cargo.toml +1 -1
- {perspective_python-3.0.1 → perspective_python-3.0.2}/rust/perspective-python/Cargo.toml +3 -3
- {perspective_python-3.0.1 → perspective_python-3.0.2}/rust/perspective-python/perspective/__init__.py +5 -2
- {perspective_python-3.0.1 → perspective_python-3.0.2}/rust/perspective-python/perspective/psp_cffi.py +1 -1
- {perspective_python-3.0.1 → perspective_python-3.0.2/rust/perspective-python}/perspective/tests/core/test_async.py +0 -2
- {perspective_python-3.0.1 → perspective_python-3.0.2}/rust/perspective-python/perspective/tests/server/test_server.py +6 -0
- {perspective_python-3.0.1 → perspective_python-3.0.2/rust/perspective-python}/perspective/tests/server/test_session.py +2 -2
- {perspective_python-3.0.1 → perspective_python-3.0.2/rust/perspective-python}/perspective/tests/table/test_table_pandas.py +7 -7
- {perspective_python-3.0.1 → perspective_python-3.0.2}/rust/perspective-python/perspective/viewer/viewer_traitlets.py +1 -1
- {perspective_python-3.0.1 → perspective_python-3.0.2}/rust/perspective-python/src/client/client_sync.rs +9 -4
- {perspective_python-3.0.1 → perspective_python-3.0.2}/rust/perspective-python/src/client/python.rs +10 -3
- {perspective_python-3.0.1.data → perspective_python-3.0.2.data}/data/share/jupyter/labextensions/@finos/perspective-jupyterlab/package.json +2 -2
- perspective_python-3.0.2.data/data/share/jupyter/labextensions/@finos/perspective-jupyterlab/static/253.e467d3250ff509e7e58b.js +18 -0
- perspective_python-3.0.1.data/data/share/jupyter/labextensions/@finos/perspective-jupyterlab/static/remoteEntry.2d479254617fc3abef25.js → perspective_python-3.0.2.data/data/share/jupyter/labextensions/@finos/perspective-jupyterlab/static/remoteEntry.e6f57cf13491ae730f31.js +1 -1
- perspective_python-3.0.1.data/data/share/jupyter/labextensions/@finos/perspective-jupyterlab/static/253.21bd87061737b28bdb5b.js +0 -18
- {perspective_python-3.0.1 → perspective_python-3.0.2}/Cargo.toml +0 -0
- {perspective_python-3.0.1 → perspective_python-3.0.2}/perspective/extension/finos-perspective-nbextension.json +0 -0
- {perspective_python-3.0.1 → perspective_python-3.0.2}/perspective/handlers/__init__.py +0 -0
- {perspective_python-3.0.1 → perspective_python-3.0.2}/perspective/handlers/aiohttp.py +0 -0
- {perspective_python-3.0.1 → perspective_python-3.0.2}/perspective/handlers/starlette.py +0 -0
- {perspective_python-3.0.1 → perspective_python-3.0.2}/perspective/handlers/tornado.py +0 -0
- {perspective_python-3.0.1 → perspective_python-3.0.2}/perspective/templates/exported_widget.html.jinja +0 -0
- {perspective_python-3.0.1 → perspective_python-3.0.2}/perspective/tests/__init__.py +0 -0
- {perspective_python-3.0.1 → perspective_python-3.0.2}/perspective/tests/conftest.py +0 -0
- {perspective_python-3.0.1 → perspective_python-3.0.2}/perspective/tests/core/__init__.py +0 -0
- {perspective_python-3.0.1 → perspective_python-3.0.2}/perspective/tests/core/test_threadpool.py +0 -0
- {perspective_python-3.0.1 → perspective_python-3.0.2}/perspective/tests/server/__init__.py +0 -0
- {perspective_python-3.0.1 → perspective_python-3.0.2}/perspective/tests/single_threaded/test_single_threaded.py +0 -0
- {perspective_python-3.0.1 → perspective_python-3.0.2}/perspective/tests/table/__init__.py +0 -0
- {perspective_python-3.0.1 → perspective_python-3.0.2}/perspective/tests/table/arrow/date32.arrow +0 -0
- {perspective_python-3.0.1 → perspective_python-3.0.2}/perspective/tests/table/arrow/date64.arrow +0 -0
- {perspective_python-3.0.1 → perspective_python-3.0.2}/perspective/tests/table/arrow/dict.arrow +0 -0
- {perspective_python-3.0.1 → perspective_python-3.0.2}/perspective/tests/table/arrow/dict_update.arrow +0 -0
- {perspective_python-3.0.1 → perspective_python-3.0.2}/perspective/tests/table/arrow/int_float_str.arrow +0 -0
- {perspective_python-3.0.1 → perspective_python-3.0.2}/perspective/tests/table/arrow/int_float_str_file.arrow +0 -0
- {perspective_python-3.0.1 → perspective_python-3.0.2}/perspective/tests/table/arrow/int_float_str_update.arrow +0 -0
- {perspective_python-3.0.1 → perspective_python-3.0.2}/perspective/tests/table/object_sequence.py +0 -0
- {perspective_python-3.0.1 → perspective_python-3.0.2}/perspective/tests/table/test_delete.py +0 -0
- {perspective_python-3.0.1 → perspective_python-3.0.2}/perspective/tests/table/test_exception.py +0 -0
- {perspective_python-3.0.1 → perspective_python-3.0.2}/perspective/tests/table/test_leaks.py +0 -0
- {perspective_python-3.0.1 → perspective_python-3.0.2}/perspective/tests/table/test_ports.py +0 -0
- {perspective_python-3.0.1 → perspective_python-3.0.2}/perspective/tests/table/test_remove.py +0 -0
- {perspective_python-3.0.1 → perspective_python-3.0.2}/perspective/tests/table/test_table.py +0 -0
- {perspective_python-3.0.1 → perspective_python-3.0.2}/perspective/tests/table/test_table_arrow.py +0 -0
- {perspective_python-3.0.1 → perspective_python-3.0.2}/perspective/tests/table/test_table_datetime.py +0 -0
- {perspective_python-3.0.1 → perspective_python-3.0.2}/perspective/tests/table/test_table_infer.py +0 -0
- {perspective_python-3.0.1 → perspective_python-3.0.2}/perspective/tests/table/test_table_limit.py +0 -0
- {perspective_python-3.0.1 → perspective_python-3.0.2}/perspective/tests/table/test_table_numpy.py +0 -0
- {perspective_python-3.0.1 → perspective_python-3.0.2}/perspective/tests/table/test_to_arrow.py +0 -0
- {perspective_python-3.0.1 → perspective_python-3.0.2}/perspective/tests/table/test_to_arrow_lz4.py +0 -0
- {perspective_python-3.0.1 → perspective_python-3.0.2}/perspective/tests/table/test_to_format.py +0 -0
- {perspective_python-3.0.1 → perspective_python-3.0.2}/perspective/tests/table/test_update.py +0 -0
- {perspective_python-3.0.1 → perspective_python-3.0.2}/perspective/tests/table/test_update_arrow.py +0 -0
- {perspective_python-3.0.1 → perspective_python-3.0.2}/perspective/tests/table/test_update_pandas.py +0 -0
- {perspective_python-3.0.1 → perspective_python-3.0.2}/perspective/tests/table/test_view.py +0 -0
- {perspective_python-3.0.1 → perspective_python-3.0.2}/perspective/tests/table/test_view_expression.py +0 -0
- {perspective_python-3.0.1 → perspective_python-3.0.2}/perspective/tests/viewer/__init__.py +0 -0
- {perspective_python-3.0.1 → perspective_python-3.0.2}/perspective/tests/viewer/test_validate.py +0 -0
- {perspective_python-3.0.1 → perspective_python-3.0.2}/perspective/tests/viewer/test_viewer.py +0 -0
- {perspective_python-3.0.1 → perspective_python-3.0.2}/perspective/tests/widget/__init__.py +0 -0
- {perspective_python-3.0.1 → perspective_python-3.0.2}/perspective/tests/widget/test_widget.py +0 -0
- {perspective_python-3.0.1 → perspective_python-3.0.2}/perspective/tests/widget/test_widget_pandas.py +0 -0
- {perspective_python-3.0.1 → perspective_python-3.0.2}/perspective/viewer/__init__.py +0 -0
- {perspective_python-3.0.1 → perspective_python-3.0.2}/perspective/viewer/validate.py +0 -0
- {perspective_python-3.0.1 → perspective_python-3.0.2}/perspective/viewer/viewer.py +0 -0
- {perspective_python-3.0.1 → perspective_python-3.0.2}/perspective/widget/__init__.py +0 -0
- {perspective_python-3.0.1 → perspective_python-3.0.2}/perspective/widget/widget.py +0 -0
- {perspective_python-3.0.1 → perspective_python-3.0.2}/rust/perspective-client/build.rs +0 -0
- {perspective_python-3.0.1 → perspective_python-3.0.2}/rust/perspective-client/docs/client/get_hosted_table_names.md +0 -0
- {perspective_python-3.0.1 → perspective_python-3.0.2}/rust/perspective-client/docs/client/open_table.md +0 -0
- {perspective_python-3.0.1 → perspective_python-3.0.2}/rust/perspective-client/docs/client/set_loop_callback.md +0 -0
- {perspective_python-3.0.1 → perspective_python-3.0.2}/rust/perspective-client/docs/client/system_info.md +0 -0
- {perspective_python-3.0.1 → perspective_python-3.0.2}/rust/perspective-client/docs/client/table.md +0 -0
- {perspective_python-3.0.1 → perspective_python-3.0.2}/rust/perspective-client/docs/client/terminate.md +0 -0
- {perspective_python-3.0.1 → perspective_python-3.0.2}/rust/perspective-client/docs/client.md +0 -0
- {perspective_python-3.0.1 → perspective_python-3.0.2}/rust/perspective-client/docs/index.html +0 -0
- {perspective_python-3.0.1 → perspective_python-3.0.2}/rust/perspective-client/docs/table/clear.md +0 -0
- {perspective_python-3.0.1 → perspective_python-3.0.2}/rust/perspective-client/docs/table/columns.md +0 -0
- {perspective_python-3.0.1 → perspective_python-3.0.2}/rust/perspective-client/docs/table/delete.md +0 -0
- {perspective_python-3.0.1 → perspective_python-3.0.2}/rust/perspective-client/docs/table/get_client.md +0 -0
- {perspective_python-3.0.1 → perspective_python-3.0.2}/rust/perspective-client/docs/table/get_features.md +0 -0
- {perspective_python-3.0.1 → perspective_python-3.0.2}/rust/perspective-client/docs/table/get_index.md +0 -0
- {perspective_python-3.0.1 → perspective_python-3.0.2}/rust/perspective-client/docs/table/get_limit.md +0 -0
- {perspective_python-3.0.1 → perspective_python-3.0.2}/rust/perspective-client/docs/table/get_num_views.md +0 -0
- {perspective_python-3.0.1 → perspective_python-3.0.2}/rust/perspective-client/docs/table/make_port.md +0 -0
- {perspective_python-3.0.1 → perspective_python-3.0.2}/rust/perspective-client/docs/table/on_delete.md +0 -0
- {perspective_python-3.0.1 → perspective_python-3.0.2}/rust/perspective-client/docs/table/remove.md +0 -0
- {perspective_python-3.0.1 → perspective_python-3.0.2}/rust/perspective-client/docs/table/remove_delete.md +0 -0
- {perspective_python-3.0.1 → perspective_python-3.0.2}/rust/perspective-client/docs/table/replace.md +0 -0
- {perspective_python-3.0.1 → perspective_python-3.0.2}/rust/perspective-client/docs/table/schema.md +0 -0
- {perspective_python-3.0.1 → perspective_python-3.0.2}/rust/perspective-client/docs/table/size.md +0 -0
- {perspective_python-3.0.1 → perspective_python-3.0.2}/rust/perspective-client/docs/table/update.md +0 -0
- {perspective_python-3.0.1 → perspective_python-3.0.2}/rust/perspective-client/docs/table/validate_expressions.md +0 -0
- {perspective_python-3.0.1 → perspective_python-3.0.2}/rust/perspective-client/docs/table/view.md +0 -0
- {perspective_python-3.0.1 → perspective_python-3.0.2}/rust/perspective-client/docs/table.md +0 -0
- {perspective_python-3.0.1 → perspective_python-3.0.2}/rust/perspective-client/docs/view/collapse.md +0 -0
- {perspective_python-3.0.1 → perspective_python-3.0.2}/rust/perspective-client/docs/view/column_paths.md +0 -0
- {perspective_python-3.0.1 → perspective_python-3.0.2}/rust/perspective-client/docs/view/delete.md +0 -0
- {perspective_python-3.0.1 → perspective_python-3.0.2}/rust/perspective-client/docs/view/dimensions.md +0 -0
- {perspective_python-3.0.1 → perspective_python-3.0.2}/rust/perspective-client/docs/view/expand.md +0 -0
- {perspective_python-3.0.1 → perspective_python-3.0.2}/rust/perspective-client/docs/view/expression_schema.md +0 -0
- {perspective_python-3.0.1 → perspective_python-3.0.2}/rust/perspective-client/docs/view/get_config.md +0 -0
- {perspective_python-3.0.1 → perspective_python-3.0.2}/rust/perspective-client/docs/view/get_min_max.md +0 -0
- {perspective_python-3.0.1 → perspective_python-3.0.2}/rust/perspective-client/docs/view/num_columns.md +0 -0
- {perspective_python-3.0.1 → perspective_python-3.0.2}/rust/perspective-client/docs/view/num_rows.md +0 -0
- {perspective_python-3.0.1 → perspective_python-3.0.2}/rust/perspective-client/docs/view/on_delete.md +0 -0
- {perspective_python-3.0.1 → perspective_python-3.0.2}/rust/perspective-client/docs/view/on_update.md +0 -0
- {perspective_python-3.0.1 → perspective_python-3.0.2}/rust/perspective-client/docs/view/remove_delete.md +0 -0
- {perspective_python-3.0.1 → perspective_python-3.0.2}/rust/perspective-client/docs/view/remove_update.md +0 -0
- {perspective_python-3.0.1 → perspective_python-3.0.2}/rust/perspective-client/docs/view/schema.md +0 -0
- {perspective_python-3.0.1 → perspective_python-3.0.2}/rust/perspective-client/docs/view/set_depth.md +0 -0
- {perspective_python-3.0.1 → perspective_python-3.0.2}/rust/perspective-client/docs/view/to_arrow.md +0 -0
- {perspective_python-3.0.1 → perspective_python-3.0.2}/rust/perspective-client/docs/view/to_columns.md +0 -0
- {perspective_python-3.0.1 → perspective_python-3.0.2}/rust/perspective-client/docs/view/to_columns_string.md +0 -0
- {perspective_python-3.0.1 → perspective_python-3.0.2}/rust/perspective-client/docs/view/to_csv.md +0 -0
- {perspective_python-3.0.1 → perspective_python-3.0.2}/rust/perspective-client/docs/view/to_json.md +0 -0
- {perspective_python-3.0.1 → perspective_python-3.0.2}/rust/perspective-client/docs/view/to_json_string.md +0 -0
- {perspective_python-3.0.1 → perspective_python-3.0.2}/rust/perspective-client/docs/view.md +0 -0
- {perspective_python-3.0.1 → perspective_python-3.0.2}/rust/perspective-client/src/rust/client.rs +0 -0
- {perspective_python-3.0.1 → perspective_python-3.0.2}/rust/perspective-client/src/rust/config/aggregates.rs +0 -0
- {perspective_python-3.0.1 → perspective_python-3.0.2}/rust/perspective-client/src/rust/config/column_type.rs +0 -0
- {perspective_python-3.0.1 → perspective_python-3.0.2}/rust/perspective-client/src/rust/config/expressions.rs +0 -0
- {perspective_python-3.0.1 → perspective_python-3.0.2}/rust/perspective-client/src/rust/config/filters.rs +0 -0
- {perspective_python-3.0.1 → perspective_python-3.0.2}/rust/perspective-client/src/rust/config/mod.rs +0 -0
- {perspective_python-3.0.1 → perspective_python-3.0.2}/rust/perspective-client/src/rust/config/plugin.rs +0 -0
- {perspective_python-3.0.1 → perspective_python-3.0.2}/rust/perspective-client/src/rust/config/sort.rs +0 -0
- {perspective_python-3.0.1 → perspective_python-3.0.2}/rust/perspective-client/src/rust/config/view_config.rs +0 -0
- {perspective_python-3.0.1 → perspective_python-3.0.2}/rust/perspective-client/src/rust/lib.rs +0 -0
- {perspective_python-3.0.1 → perspective_python-3.0.2}/rust/perspective-client/src/rust/session.rs +0 -0
- {perspective_python-3.0.1 → perspective_python-3.0.2}/rust/perspective-client/src/rust/table.rs +0 -0
- {perspective_python-3.0.1 → perspective_python-3.0.2}/rust/perspective-client/src/rust/table_data.rs +0 -0
- {perspective_python-3.0.1 → perspective_python-3.0.2}/rust/perspective-client/src/rust/utils/clone.rs +0 -0
- {perspective_python-3.0.1 → perspective_python-3.0.2}/rust/perspective-client/src/rust/utils/logging.rs +0 -0
- {perspective_python-3.0.1 → perspective_python-3.0.2}/rust/perspective-client/src/rust/utils/mod.rs +0 -0
- {perspective_python-3.0.1 → perspective_python-3.0.2}/rust/perspective-client/src/rust/utils/tests/clone.rs +0 -0
- {perspective_python-3.0.1 → perspective_python-3.0.2}/rust/perspective-client/src/rust/utils/tests/mod.rs +0 -0
- {perspective_python-3.0.1 → perspective_python-3.0.2}/rust/perspective-client/src/rust/view.rs +0 -0
- {perspective_python-3.0.1 → perspective_python-3.0.2}/rust/perspective-python/README.md +0 -0
- {perspective_python-3.0.1 → perspective_python-3.0.2}/rust/perspective-python/bench/__init__.py +0 -0
- {perspective_python-3.0.1 → perspective_python-3.0.2}/rust/perspective-python/bench/runtime/__init__.py +0 -0
- {perspective_python-3.0.1 → perspective_python-3.0.2}/rust/perspective-python/bench/runtime/bench.py +0 -0
- {perspective_python-3.0.1 → perspective_python-3.0.2}/rust/perspective-python/bench/runtime/perspective_benchmark.py +0 -0
- {perspective_python-3.0.1 → perspective_python-3.0.2}/rust/perspective-python/bench/runtime/run_perspective_benchmark.py +0 -0
- {perspective_python-3.0.1 → perspective_python-3.0.2}/rust/perspective-python/bench/tornado/__init__.py +0 -0
- {perspective_python-3.0.1 → perspective_python-3.0.2}/rust/perspective-python/bench/tornado/async_server.py +0 -0
- {perspective_python-3.0.1 → perspective_python-3.0.2}/rust/perspective-python/bench/tornado/bench.py +0 -0
- {perspective_python-3.0.1 → perspective_python-3.0.2}/rust/perspective-python/bench/tornado/distributed_mode.py +0 -0
- {perspective_python-3.0.1 → perspective_python-3.0.2}/rust/perspective-python/bench/tornado/server/new_api.py +0 -0
- {perspective_python-3.0.1 → perspective_python-3.0.2}/rust/perspective-python/bench/tornado/server/old_api.py +0 -0
- {perspective_python-3.0.1 → perspective_python-3.0.2}/rust/perspective-python/bench/tornado/server_mode.py +0 -0
- {perspective_python-3.0.1 → perspective_python-3.0.2}/rust/perspective-python/build/main.rs +0 -0
- {perspective_python-3.0.1 → perspective_python-3.0.2}/rust/perspective-python/build/psp.rs +0 -0
- {perspective_python-3.0.1 → perspective_python-3.0.2}/rust/perspective-python/docs/index.html +0 -0
- {perspective_python-3.0.1 → perspective_python-3.0.2}/rust/perspective-python/docs/lib.md +0 -0
- {perspective_python-3.0.1 → perspective_python-3.0.2}/rust/perspective-python/perspective/handlers/__init__.py +0 -0
- {perspective_python-3.0.1 → perspective_python-3.0.2}/rust/perspective-python/perspective/handlers/aiohttp.py +0 -0
- {perspective_python-3.0.1 → perspective_python-3.0.2}/rust/perspective-python/perspective/handlers/starlette.py +0 -0
- {perspective_python-3.0.1 → perspective_python-3.0.2}/rust/perspective-python/perspective/handlers/tornado.py +0 -0
- {perspective_python-3.0.1 → perspective_python-3.0.2}/rust/perspective-python/perspective/tests/__init__.py +0 -0
- {perspective_python-3.0.1 → perspective_python-3.0.2}/rust/perspective-python/perspective/tests/conftest.py +0 -0
- {perspective_python-3.0.1 → perspective_python-3.0.2}/rust/perspective-python/perspective/tests/core/__init__.py +0 -0
- {perspective_python-3.0.1 → perspective_python-3.0.2}/rust/perspective-python/perspective/tests/core/test_threadpool.py +0 -0
- {perspective_python-3.0.1 → perspective_python-3.0.2}/rust/perspective-python/perspective/tests/server/__init__.py +0 -0
- {perspective_python-3.0.1 → perspective_python-3.0.2}/rust/perspective-python/perspective/tests/single_threaded/test_single_threaded.py +0 -0
- {perspective_python-3.0.1 → perspective_python-3.0.2}/rust/perspective-python/perspective/tests/table/__init__.py +0 -0
- {perspective_python-3.0.1 → perspective_python-3.0.2}/rust/perspective-python/perspective/tests/table/object_sequence.py +0 -0
- {perspective_python-3.0.1 → perspective_python-3.0.2}/rust/perspective-python/perspective/tests/table/test_delete.py +0 -0
- {perspective_python-3.0.1 → perspective_python-3.0.2}/rust/perspective-python/perspective/tests/table/test_exception.py +0 -0
- {perspective_python-3.0.1 → perspective_python-3.0.2}/rust/perspective-python/perspective/tests/table/test_leaks.py +0 -0
- {perspective_python-3.0.1 → perspective_python-3.0.2}/rust/perspective-python/perspective/tests/table/test_ports.py +0 -0
- {perspective_python-3.0.1 → perspective_python-3.0.2}/rust/perspective-python/perspective/tests/table/test_remove.py +0 -0
- {perspective_python-3.0.1 → perspective_python-3.0.2}/rust/perspective-python/perspective/tests/table/test_table.py +0 -0
- {perspective_python-3.0.1 → perspective_python-3.0.2}/rust/perspective-python/perspective/tests/table/test_table_arrow.py +0 -0
- {perspective_python-3.0.1 → perspective_python-3.0.2}/rust/perspective-python/perspective/tests/table/test_table_datetime.py +0 -0
- {perspective_python-3.0.1 → perspective_python-3.0.2}/rust/perspective-python/perspective/tests/table/test_table_infer.py +0 -0
- {perspective_python-3.0.1 → perspective_python-3.0.2}/rust/perspective-python/perspective/tests/table/test_table_limit.py +0 -0
- {perspective_python-3.0.1 → perspective_python-3.0.2}/rust/perspective-python/perspective/tests/table/test_table_numpy.py +0 -0
- {perspective_python-3.0.1 → perspective_python-3.0.2}/rust/perspective-python/perspective/tests/table/test_to_arrow.py +0 -0
- {perspective_python-3.0.1 → perspective_python-3.0.2}/rust/perspective-python/perspective/tests/table/test_to_arrow_lz4.py +0 -0
- {perspective_python-3.0.1 → perspective_python-3.0.2}/rust/perspective-python/perspective/tests/table/test_to_format.py +0 -0
- {perspective_python-3.0.1 → perspective_python-3.0.2}/rust/perspective-python/perspective/tests/table/test_update.py +0 -0
- {perspective_python-3.0.1 → perspective_python-3.0.2}/rust/perspective-python/perspective/tests/table/test_update_arrow.py +0 -0
- {perspective_python-3.0.1 → perspective_python-3.0.2}/rust/perspective-python/perspective/tests/table/test_update_pandas.py +0 -0
- {perspective_python-3.0.1 → perspective_python-3.0.2}/rust/perspective-python/perspective/tests/table/test_view.py +0 -0
- {perspective_python-3.0.1 → perspective_python-3.0.2}/rust/perspective-python/perspective/tests/table/test_view_expression.py +0 -0
- {perspective_python-3.0.1 → perspective_python-3.0.2}/rust/perspective-python/perspective/tests/viewer/__init__.py +0 -0
- {perspective_python-3.0.1 → perspective_python-3.0.2}/rust/perspective-python/perspective/tests/viewer/test_validate.py +0 -0
- {perspective_python-3.0.1 → perspective_python-3.0.2}/rust/perspective-python/perspective/tests/viewer/test_viewer.py +0 -0
- {perspective_python-3.0.1 → perspective_python-3.0.2}/rust/perspective-python/perspective/tests/widget/__init__.py +0 -0
- {perspective_python-3.0.1 → perspective_python-3.0.2}/rust/perspective-python/perspective/tests/widget/test_widget.py +0 -0
- {perspective_python-3.0.1 → perspective_python-3.0.2}/rust/perspective-python/perspective/tests/widget/test_widget_pandas.py +0 -0
- {perspective_python-3.0.1 → perspective_python-3.0.2}/rust/perspective-python/perspective/viewer/__init__.py +0 -0
- {perspective_python-3.0.1 → perspective_python-3.0.2}/rust/perspective-python/perspective/viewer/validate.py +0 -0
- {perspective_python-3.0.1 → perspective_python-3.0.2}/rust/perspective-python/perspective/viewer/viewer.py +0 -0
- {perspective_python-3.0.1 → perspective_python-3.0.2}/rust/perspective-python/perspective/widget/__init__.py +0 -0
- {perspective_python-3.0.1 → perspective_python-3.0.2}/rust/perspective-python/perspective/widget/widget.py +0 -0
- {perspective_python-3.0.1 → perspective_python-3.0.2}/rust/perspective-python/src/client/mod.rs +0 -0
- {perspective_python-3.0.1 → perspective_python-3.0.2}/rust/perspective-python/src/lib.rs +0 -0
- {perspective_python-3.0.1 → perspective_python-3.0.2}/rust/perspective-python/src/server/mod.rs +0 -0
- {perspective_python-3.0.1 → perspective_python-3.0.2}/rust/perspective-python/src/server/server_sync.rs +0 -0
- {perspective_python-3.0.1.data → perspective_python-3.0.2.data}/data/share/jupyter/labextensions/@finos/perspective-jupyterlab/install.json +0 -0
- /perspective_python-3.0.1.data/data/share/jupyter/labextensions/@finos/perspective-jupyterlab/static/253.21bd87061737b28bdb5b.js.LICENSE.txt → /perspective_python-3.0.2.data/data/share/jupyter/labextensions/@finos/perspective-jupyterlab/static/253.e467d3250ff509e7e58b.js.LICENSE.txt +0 -0
- {perspective_python-3.0.1.data → perspective_python-3.0.2.data}/data/share/jupyter/labextensions/@finos/perspective-jupyterlab/static/905.bda9d13f81bc1d4190ff.js +0 -0
- {perspective_python-3.0.1.data → perspective_python-3.0.2.data}/data/share/jupyter/labextensions/@finos/perspective-jupyterlab/static/style.js +0 -0
- {perspective_python-3.0.1.data → perspective_python-3.0.2.data}/data/share/jupyter/labextensions/@finos/perspective-jupyterlab/static/third-party-licenses.json +0 -0
|
@@ -1783,7 +1783,7 @@ checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e"
|
|
|
1783
1783
|
|
|
1784
1784
|
[[package]]
|
|
1785
1785
|
name = "perspective"
|
|
1786
|
-
version = "3.0.
|
|
1786
|
+
version = "3.0.2"
|
|
1787
1787
|
dependencies = [
|
|
1788
1788
|
"async-lock",
|
|
1789
1789
|
"axum",
|
|
@@ -1823,7 +1823,7 @@ dependencies = [
|
|
|
1823
1823
|
|
|
1824
1824
|
[[package]]
|
|
1825
1825
|
name = "perspective-client"
|
|
1826
|
-
version = "3.0.
|
|
1826
|
+
version = "3.0.2"
|
|
1827
1827
|
dependencies = [
|
|
1828
1828
|
"async-lock",
|
|
1829
1829
|
"futures",
|
|
@@ -1845,7 +1845,7 @@ dependencies = [
|
|
|
1845
1845
|
|
|
1846
1846
|
[[package]]
|
|
1847
1847
|
name = "perspective-js"
|
|
1848
|
-
version = "3.0.
|
|
1848
|
+
version = "3.0.2"
|
|
1849
1849
|
dependencies = [
|
|
1850
1850
|
"anyhow",
|
|
1851
1851
|
"base64 0.13.1",
|
|
@@ -1874,7 +1874,7 @@ dependencies = [
|
|
|
1874
1874
|
|
|
1875
1875
|
[[package]]
|
|
1876
1876
|
name = "perspective-lint"
|
|
1877
|
-
version = "3.0.
|
|
1877
|
+
version = "3.0.2"
|
|
1878
1878
|
dependencies = [
|
|
1879
1879
|
"glob",
|
|
1880
1880
|
"yew-fmt",
|
|
@@ -1882,7 +1882,7 @@ dependencies = [
|
|
|
1882
1882
|
|
|
1883
1883
|
[[package]]
|
|
1884
1884
|
name = "perspective-python"
|
|
1885
|
-
version = "3.0.
|
|
1885
|
+
version = "3.0.2"
|
|
1886
1886
|
dependencies = [
|
|
1887
1887
|
"async-lock",
|
|
1888
1888
|
"cmake",
|
|
@@ -1902,7 +1902,7 @@ dependencies = [
|
|
|
1902
1902
|
|
|
1903
1903
|
[[package]]
|
|
1904
1904
|
name = "perspective-server"
|
|
1905
|
-
version = "3.0.
|
|
1905
|
+
version = "3.0.2"
|
|
1906
1906
|
dependencies = [
|
|
1907
1907
|
"async-lock",
|
|
1908
1908
|
"base64 0.22.1",
|
|
@@ -1918,7 +1918,7 @@ dependencies = [
|
|
|
1918
1918
|
|
|
1919
1919
|
[[package]]
|
|
1920
1920
|
name = "perspective-viewer"
|
|
1921
|
-
version = "3.0.
|
|
1921
|
+
version = "3.0.2"
|
|
1922
1922
|
dependencies = [
|
|
1923
1923
|
"anyhow",
|
|
1924
1924
|
"async-lock",
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
# ┃ of the [Apache License 2.0](https://www.apache.org/licenses/LICENSE-2.0). ┃
|
|
11
11
|
# ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
|
|
12
12
|
|
|
13
|
-
__version__ = "3.0.
|
|
13
|
+
__version__ = "3.0.2"
|
|
14
14
|
__all__ = [
|
|
15
15
|
"_jupyter_labextension_paths",
|
|
16
16
|
"PerspectiveError",
|
|
@@ -71,8 +71,11 @@ class Client(PySyncClient):
|
|
|
71
71
|
def handle_response(bytes):
|
|
72
72
|
client.handle_response(bytes)
|
|
73
73
|
|
|
74
|
+
def handle_close():
|
|
75
|
+
session.close()
|
|
76
|
+
|
|
74
77
|
session = server.new_session(handle_response)
|
|
75
|
-
client = Client(handle_request)
|
|
78
|
+
client = Client(handle_request, handle_close)
|
|
76
79
|
return client
|
|
77
80
|
|
|
78
81
|
|
|
@@ -77,7 +77,7 @@ class Session:
|
|
|
77
77
|
self._server: "ServerBase" = server
|
|
78
78
|
self._session_id = lib.psp_new_session(server._server)
|
|
79
79
|
|
|
80
|
-
def
|
|
80
|
+
def close(self):
|
|
81
81
|
lib.psp_close_session(self._server._server, self._session_id)
|
|
82
82
|
|
|
83
83
|
def handle_request(self, bytes_msg):
|
|
@@ -48,7 +48,6 @@ class TestAsync(object):
|
|
|
48
48
|
@classmethod
|
|
49
49
|
def setup_class(cls):
|
|
50
50
|
cls.loop = tornado.ioloop.IOLoop()
|
|
51
|
-
cls.loop.make_current()
|
|
52
51
|
cls.thread = threading.Thread(target=cls.loop.start)
|
|
53
52
|
cls.thread.daemon = True
|
|
54
53
|
cls.thread.start()
|
|
@@ -56,7 +55,6 @@ class TestAsync(object):
|
|
|
56
55
|
@classmethod
|
|
57
56
|
def teardown_class(cls):
|
|
58
57
|
cls.loop.add_callback(lambda: tornado.ioloop.IOLoop.current().stop())
|
|
59
|
-
cls.loop.clear_current()
|
|
60
58
|
cls.thread.join()
|
|
61
59
|
cls.loop.close(all_fds=True)
|
|
62
60
|
|
{perspective_python-3.0.1 → perspective_python-3.0.2}/perspective/tests/server/test_server.py
RENAMED
|
@@ -43,6 +43,12 @@ class TestServer(object):
|
|
|
43
43
|
table2 = client.open_table("table1")
|
|
44
44
|
assert table2.schema() == {"a": "integer", "b": "string"}
|
|
45
45
|
|
|
46
|
+
def test_session_close(self):
|
|
47
|
+
server = Server()
|
|
48
|
+
client = Client.from_server(server)
|
|
49
|
+
client.table(data)
|
|
50
|
+
client.terminate()
|
|
51
|
+
|
|
46
52
|
def test_server_host(self):
|
|
47
53
|
server = Server()
|
|
48
54
|
client = Client.from_server(server)
|
|
@@ -32,7 +32,7 @@ class TestProxySession(object):
|
|
|
32
32
|
sub_client.handle_response(bytes)
|
|
33
33
|
|
|
34
34
|
sub_session = ProxySession(client, handle_response)
|
|
35
|
-
sub_client = Client(handle_request)
|
|
35
|
+
sub_client = Client(handle_request, sub_session.close)
|
|
36
36
|
table = sub_client.table(data, name="table1")
|
|
37
37
|
assert table.schema() == {"a": "integer", "b": "string"}
|
|
38
38
|
|
|
@@ -47,7 +47,7 @@ class TestProxySession(object):
|
|
|
47
47
|
sub_client.handle_response(bytes)
|
|
48
48
|
|
|
49
49
|
sub_session = ProxySession(client, handle_response)
|
|
50
|
-
sub_client = Client(handle_request)
|
|
50
|
+
sub_client = Client(handle_request, sub_session.close)
|
|
51
51
|
table = sub_client.table(data, name="table1")
|
|
52
52
|
table2 = client.open_table("table1")
|
|
53
53
|
assert table.size() == 3
|
|
@@ -117,7 +117,7 @@ class TestTablePandas(object):
|
|
|
117
117
|
|
|
118
118
|
@mark.skip(reason="pyarrow dataframe does not support date inference")
|
|
119
119
|
def test_table_dataframe_infer_date(self, util):
|
|
120
|
-
data = util.make_dataframe(freq="
|
|
120
|
+
data = util.make_dataframe(freq="ME")
|
|
121
121
|
|
|
122
122
|
tbl = Table(data)
|
|
123
123
|
assert tbl.size() == 10
|
|
@@ -143,7 +143,7 @@ class TestTablePandas(object):
|
|
|
143
143
|
]
|
|
144
144
|
|
|
145
145
|
def test_table_dataframe_infer_date_fixed(self, util):
|
|
146
|
-
data = util.make_dataframe(freq="
|
|
146
|
+
data = util.make_dataframe(freq="ME")
|
|
147
147
|
|
|
148
148
|
tbl = Table(data)
|
|
149
149
|
assert tbl.size() == 10
|
|
@@ -169,7 +169,7 @@ class TestTablePandas(object):
|
|
|
169
169
|
]
|
|
170
170
|
|
|
171
171
|
def test_table_dataframe_infer_time(self, util):
|
|
172
|
-
data = util.make_dataframe(freq="
|
|
172
|
+
data = util.make_dataframe(freq="h")
|
|
173
173
|
|
|
174
174
|
tbl = Table(data)
|
|
175
175
|
assert tbl.size() == 10
|
|
@@ -196,7 +196,7 @@ class TestTablePandas(object):
|
|
|
196
196
|
|
|
197
197
|
@mark.skip(reason="pyarrow dataframe does not support date inference")
|
|
198
198
|
def test_table_dataframe_year_start_index(self, util):
|
|
199
|
-
data = util.make_dataframe(freq="
|
|
199
|
+
data = util.make_dataframe(freq="YS")
|
|
200
200
|
|
|
201
201
|
tbl = Table(data)
|
|
202
202
|
assert tbl.size() == 10
|
|
@@ -222,7 +222,7 @@ class TestTablePandas(object):
|
|
|
222
222
|
]
|
|
223
223
|
|
|
224
224
|
def test_table_dataframe_year_start_index_fixed(self, util):
|
|
225
|
-
data = util.make_dataframe(freq="
|
|
225
|
+
data = util.make_dataframe(freq="YS")
|
|
226
226
|
|
|
227
227
|
tbl = Table(data)
|
|
228
228
|
assert tbl.size() == 10
|
|
@@ -249,7 +249,7 @@ class TestTablePandas(object):
|
|
|
249
249
|
|
|
250
250
|
@mark.skip(reason="pyarrow dataframe does not support date inference")
|
|
251
251
|
def test_table_dataframe_quarter_index(self, util):
|
|
252
|
-
data = util.make_dataframe(size=4, freq="
|
|
252
|
+
data = util.make_dataframe(size=4, freq="QE")
|
|
253
253
|
|
|
254
254
|
tbl = Table(data)
|
|
255
255
|
assert tbl.size() == 4
|
|
@@ -269,7 +269,7 @@ class TestTablePandas(object):
|
|
|
269
269
|
]
|
|
270
270
|
|
|
271
271
|
def test_table_dataframe_quarter_index_fixed(self, util):
|
|
272
|
-
data = util.make_dataframe(size=4, freq="
|
|
272
|
+
data = util.make_dataframe(size=4, freq="QE")
|
|
273
273
|
|
|
274
274
|
tbl = Table(data)
|
|
275
275
|
assert tbl.size() == 4
|
{perspective_python-3.0.1 → perspective_python-3.0.2}/perspective/viewer/viewer_traitlets.py
RENAMED
|
@@ -52,7 +52,7 @@ class PerspectiveTraitlets(HasTraits):
|
|
|
52
52
|
table_name = Unicode(None, allow_none=True).tag(sync=True)
|
|
53
53
|
|
|
54
54
|
server = Bool(False).tag(sync=True)
|
|
55
|
-
binding_mode = Enum(("server", "client-server")
|
|
55
|
+
binding_mode = Enum(("server", "client-server")).tag(default="server", sync=True)
|
|
56
56
|
title = Unicode(None, allow_none=True).tag(sync=True)
|
|
57
57
|
version = Unicode(__version__).tag(sync=True)
|
|
58
58
|
|
|
@@ -37,7 +37,7 @@ dependencies = ["Jinja2>=2.0,<4", "ipywidgets>=7.5.1,<9"]
|
|
|
37
37
|
|
|
38
38
|
[tool.maturin]
|
|
39
39
|
module-name = "perspective"
|
|
40
|
-
data = "perspective_python-3.0.
|
|
40
|
+
data = "perspective_python-3.0.2.data"
|
|
41
41
|
features = ["pyo3/extension-module"]
|
|
42
42
|
include = [
|
|
43
43
|
{ path = "perspective/*libpsp.so", format = "wheel" },
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
|
|
13
13
|
[package]
|
|
14
14
|
name = "perspective-client"
|
|
15
|
-
version = "3.0.
|
|
15
|
+
version = "3.0.2"
|
|
16
16
|
authors = ["Andrew Stein <steinlink@gmail.com>"]
|
|
17
17
|
edition = "2021"
|
|
18
18
|
description = "A data visualization and analytics component, especially well-suited for large and/or streaming datasets."
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
|
|
13
13
|
[package]
|
|
14
14
|
name = "perspective-python"
|
|
15
|
-
version = "3.0.
|
|
15
|
+
version = "3.0.2"
|
|
16
16
|
edition = "2021"
|
|
17
17
|
description = "A data visualization and analytics component, especially well-suited for large and/or streaming datasets."
|
|
18
18
|
repository = "https://github.com/finos/perspective"
|
|
@@ -54,8 +54,8 @@ python-config-rs = "0.1.2"
|
|
|
54
54
|
|
|
55
55
|
[dependencies]
|
|
56
56
|
async-lock = "2.5.0"
|
|
57
|
-
perspective-client = { version = "3.0.
|
|
58
|
-
# perspective-server = { version = "3.0.
|
|
57
|
+
perspective-client = { version = "3.0.2", path = "../perspective-client" }
|
|
58
|
+
# perspective-server = { version = "3.0.2", path = "../perspective-server" }
|
|
59
59
|
pollster = "0.3.0"
|
|
60
60
|
extend = "1.1.2"
|
|
61
61
|
futures = "0.3.28"
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
# ┃ of the [Apache License 2.0](https://www.apache.org/licenses/LICENSE-2.0). ┃
|
|
11
11
|
# ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
|
|
12
12
|
|
|
13
|
-
__version__ = "3.0.
|
|
13
|
+
__version__ = "3.0.2"
|
|
14
14
|
__all__ = [
|
|
15
15
|
"_jupyter_labextension_paths",
|
|
16
16
|
"PerspectiveError",
|
|
@@ -71,8 +71,11 @@ class Client(PySyncClient):
|
|
|
71
71
|
def handle_response(bytes):
|
|
72
72
|
client.handle_response(bytes)
|
|
73
73
|
|
|
74
|
+
def handle_close():
|
|
75
|
+
session.close()
|
|
76
|
+
|
|
74
77
|
session = server.new_session(handle_response)
|
|
75
|
-
client = Client(handle_request)
|
|
78
|
+
client = Client(handle_request, handle_close)
|
|
76
79
|
return client
|
|
77
80
|
|
|
78
81
|
|
|
@@ -77,7 +77,7 @@ class Session:
|
|
|
77
77
|
self._server: "ServerBase" = server
|
|
78
78
|
self._session_id = lib.psp_new_session(server._server)
|
|
79
79
|
|
|
80
|
-
def
|
|
80
|
+
def close(self):
|
|
81
81
|
lib.psp_close_session(self._server._server, self._session_id)
|
|
82
82
|
|
|
83
83
|
def handle_request(self, bytes_msg):
|
|
@@ -48,7 +48,6 @@ class TestAsync(object):
|
|
|
48
48
|
@classmethod
|
|
49
49
|
def setup_class(cls):
|
|
50
50
|
cls.loop = tornado.ioloop.IOLoop()
|
|
51
|
-
cls.loop.make_current()
|
|
52
51
|
cls.thread = threading.Thread(target=cls.loop.start)
|
|
53
52
|
cls.thread.daemon = True
|
|
54
53
|
cls.thread.start()
|
|
@@ -56,7 +55,6 @@ class TestAsync(object):
|
|
|
56
55
|
@classmethod
|
|
57
56
|
def teardown_class(cls):
|
|
58
57
|
cls.loop.add_callback(lambda: tornado.ioloop.IOLoop.current().stop())
|
|
59
|
-
cls.loop.clear_current()
|
|
60
58
|
cls.thread.join()
|
|
61
59
|
cls.loop.close(all_fds=True)
|
|
62
60
|
|
|
@@ -43,6 +43,12 @@ class TestServer(object):
|
|
|
43
43
|
table2 = client.open_table("table1")
|
|
44
44
|
assert table2.schema() == {"a": "integer", "b": "string"}
|
|
45
45
|
|
|
46
|
+
def test_session_close(self):
|
|
47
|
+
server = Server()
|
|
48
|
+
client = Client.from_server(server)
|
|
49
|
+
client.table(data)
|
|
50
|
+
client.terminate()
|
|
51
|
+
|
|
46
52
|
def test_server_host(self):
|
|
47
53
|
server = Server()
|
|
48
54
|
client = Client.from_server(server)
|
|
@@ -32,7 +32,7 @@ class TestProxySession(object):
|
|
|
32
32
|
sub_client.handle_response(bytes)
|
|
33
33
|
|
|
34
34
|
sub_session = ProxySession(client, handle_response)
|
|
35
|
-
sub_client = Client(handle_request)
|
|
35
|
+
sub_client = Client(handle_request, sub_session.close)
|
|
36
36
|
table = sub_client.table(data, name="table1")
|
|
37
37
|
assert table.schema() == {"a": "integer", "b": "string"}
|
|
38
38
|
|
|
@@ -47,7 +47,7 @@ class TestProxySession(object):
|
|
|
47
47
|
sub_client.handle_response(bytes)
|
|
48
48
|
|
|
49
49
|
sub_session = ProxySession(client, handle_response)
|
|
50
|
-
sub_client = Client(handle_request)
|
|
50
|
+
sub_client = Client(handle_request, sub_session.close)
|
|
51
51
|
table = sub_client.table(data, name="table1")
|
|
52
52
|
table2 = client.open_table("table1")
|
|
53
53
|
assert table.size() == 3
|
|
@@ -117,7 +117,7 @@ class TestTablePandas(object):
|
|
|
117
117
|
|
|
118
118
|
@mark.skip(reason="pyarrow dataframe does not support date inference")
|
|
119
119
|
def test_table_dataframe_infer_date(self, util):
|
|
120
|
-
data = util.make_dataframe(freq="
|
|
120
|
+
data = util.make_dataframe(freq="ME")
|
|
121
121
|
|
|
122
122
|
tbl = Table(data)
|
|
123
123
|
assert tbl.size() == 10
|
|
@@ -143,7 +143,7 @@ class TestTablePandas(object):
|
|
|
143
143
|
]
|
|
144
144
|
|
|
145
145
|
def test_table_dataframe_infer_date_fixed(self, util):
|
|
146
|
-
data = util.make_dataframe(freq="
|
|
146
|
+
data = util.make_dataframe(freq="ME")
|
|
147
147
|
|
|
148
148
|
tbl = Table(data)
|
|
149
149
|
assert tbl.size() == 10
|
|
@@ -169,7 +169,7 @@ class TestTablePandas(object):
|
|
|
169
169
|
]
|
|
170
170
|
|
|
171
171
|
def test_table_dataframe_infer_time(self, util):
|
|
172
|
-
data = util.make_dataframe(freq="
|
|
172
|
+
data = util.make_dataframe(freq="h")
|
|
173
173
|
|
|
174
174
|
tbl = Table(data)
|
|
175
175
|
assert tbl.size() == 10
|
|
@@ -196,7 +196,7 @@ class TestTablePandas(object):
|
|
|
196
196
|
|
|
197
197
|
@mark.skip(reason="pyarrow dataframe does not support date inference")
|
|
198
198
|
def test_table_dataframe_year_start_index(self, util):
|
|
199
|
-
data = util.make_dataframe(freq="
|
|
199
|
+
data = util.make_dataframe(freq="YS")
|
|
200
200
|
|
|
201
201
|
tbl = Table(data)
|
|
202
202
|
assert tbl.size() == 10
|
|
@@ -222,7 +222,7 @@ class TestTablePandas(object):
|
|
|
222
222
|
]
|
|
223
223
|
|
|
224
224
|
def test_table_dataframe_year_start_index_fixed(self, util):
|
|
225
|
-
data = util.make_dataframe(freq="
|
|
225
|
+
data = util.make_dataframe(freq="YS")
|
|
226
226
|
|
|
227
227
|
tbl = Table(data)
|
|
228
228
|
assert tbl.size() == 10
|
|
@@ -249,7 +249,7 @@ class TestTablePandas(object):
|
|
|
249
249
|
|
|
250
250
|
@mark.skip(reason="pyarrow dataframe does not support date inference")
|
|
251
251
|
def test_table_dataframe_quarter_index(self, util):
|
|
252
|
-
data = util.make_dataframe(size=4, freq="
|
|
252
|
+
data = util.make_dataframe(size=4, freq="QE")
|
|
253
253
|
|
|
254
254
|
tbl = Table(data)
|
|
255
255
|
assert tbl.size() == 4
|
|
@@ -269,7 +269,7 @@ class TestTablePandas(object):
|
|
|
269
269
|
]
|
|
270
270
|
|
|
271
271
|
def test_table_dataframe_quarter_index_fixed(self, util):
|
|
272
|
-
data = util.make_dataframe(size=4, freq="
|
|
272
|
+
data = util.make_dataframe(size=4, freq="QE")
|
|
273
273
|
|
|
274
274
|
tbl = Table(data)
|
|
275
275
|
assert tbl.size() == 4
|
|
@@ -52,7 +52,7 @@ class PerspectiveTraitlets(HasTraits):
|
|
|
52
52
|
table_name = Unicode(None, allow_none=True).tag(sync=True)
|
|
53
53
|
|
|
54
54
|
server = Bool(False).tag(sync=True)
|
|
55
|
-
binding_mode = Enum(("server", "client-server")
|
|
55
|
+
binding_mode = Enum(("server", "client-server")).tag(default="server", sync=True)
|
|
56
56
|
title = Unicode(None, allow_none=True).tag(sync=True)
|
|
57
57
|
version = Unicode(__version__).tag(sync=True)
|
|
58
58
|
|
|
@@ -84,8 +84,8 @@ pub struct Client(PyClient);
|
|
|
84
84
|
#[pymethods]
|
|
85
85
|
impl Client {
|
|
86
86
|
#[new]
|
|
87
|
-
pub fn new(
|
|
88
|
-
let client = PyClient::new(
|
|
87
|
+
pub fn new(handle_request: Py<PyAny>, close_cb: Py<PyAny>) -> PyResult<Self> {
|
|
88
|
+
let client = PyClient::new(handle_request, close_cb);
|
|
89
89
|
Ok(Client(client))
|
|
90
90
|
}
|
|
91
91
|
|
|
@@ -124,6 +124,11 @@ impl Client {
|
|
|
124
124
|
pub fn set_loop_callback(&self, loop_cb: Py<PyAny>) -> PyResult<()> {
|
|
125
125
|
self.0.set_loop_cb(loop_cb).block_on()
|
|
126
126
|
}
|
|
127
|
+
|
|
128
|
+
#[doc = crate::inherit_docs!("client/terminate.md")]
|
|
129
|
+
pub fn terminate(&self, py: Python<'_>) -> PyResult<Py<PyAny>> {
|
|
130
|
+
self.0.terminate(py).block_on()
|
|
131
|
+
}
|
|
127
132
|
}
|
|
128
133
|
|
|
129
134
|
#[doc = crate::inherit_docs!("table.md")]
|
|
@@ -140,8 +145,8 @@ impl Table {
|
|
|
140
145
|
}
|
|
141
146
|
|
|
142
147
|
#[doc = crate::inherit_docs!("table/get_client.md")]
|
|
143
|
-
pub fn get_client(&self
|
|
144
|
-
Client(self.0.get_client(
|
|
148
|
+
pub fn get_client(&self) -> Client {
|
|
149
|
+
Client(self.0.get_client().block_on())
|
|
145
150
|
}
|
|
146
151
|
|
|
147
152
|
#[doc = crate::inherit_docs!("table/get_client.md")]
|
{perspective_python-3.0.1 → perspective_python-3.0.2}/rust/perspective-python/src/client/python.rs
RENAMED
|
@@ -32,6 +32,7 @@ use pythonize::depythonize_bound;
|
|
|
32
32
|
pub struct PyClient {
|
|
33
33
|
pub(crate) client: Client,
|
|
34
34
|
loop_cb: Arc<RwLock<Option<Py<PyAny>>>>,
|
|
35
|
+
close_cb: Py<PyAny>,
|
|
35
36
|
}
|
|
36
37
|
|
|
37
38
|
#[extend::ext]
|
|
@@ -263,7 +264,7 @@ fn pandas_to_arrow_bytes<'py>(
|
|
|
263
264
|
}
|
|
264
265
|
|
|
265
266
|
impl PyClient {
|
|
266
|
-
pub fn new(handle_request: Py<PyAny>) -> Self {
|
|
267
|
+
pub fn new(handle_request: Py<PyAny>, handle_close: Py<PyAny>) -> Self {
|
|
267
268
|
let client = Client::new_with_callback({
|
|
268
269
|
move |msg| {
|
|
269
270
|
clone!(handle_request);
|
|
@@ -280,6 +281,7 @@ impl PyClient {
|
|
|
280
281
|
PyClient {
|
|
281
282
|
client,
|
|
282
283
|
loop_cb: Arc::default(),
|
|
284
|
+
close_cb: handle_close,
|
|
283
285
|
}
|
|
284
286
|
}
|
|
285
287
|
|
|
@@ -359,6 +361,10 @@ impl PyClient {
|
|
|
359
361
|
*self.loop_cb.write().await = Some(loop_cb);
|
|
360
362
|
Ok(())
|
|
361
363
|
}
|
|
364
|
+
|
|
365
|
+
pub async fn terminate(&self, py: Python<'_>) -> PyResult<Py<PyAny>> {
|
|
366
|
+
self.close_cb.call0(py)
|
|
367
|
+
}
|
|
362
368
|
}
|
|
363
369
|
|
|
364
370
|
#[derive(Clone)]
|
|
@@ -374,10 +380,11 @@ impl PyTable {
|
|
|
374
380
|
self.table.get_index()
|
|
375
381
|
}
|
|
376
382
|
|
|
377
|
-
pub async fn get_client(&self
|
|
383
|
+
pub async fn get_client(&self) -> PyClient {
|
|
378
384
|
PyClient {
|
|
379
385
|
client: self.table.get_client(),
|
|
380
|
-
loop_cb:
|
|
386
|
+
loop_cb: self.client.loop_cb.clone(),
|
|
387
|
+
close_cb: self.client.close_cb.clone(),
|
|
381
388
|
}
|
|
382
389
|
}
|
|
383
390
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@finos/perspective-jupyterlab",
|
|
3
|
-
"version": "3.0.
|
|
3
|
+
"version": "3.0.2",
|
|
4
4
|
"description": "A Jupyterlab extension for the Perspective library, designed to be used with perspective-python.",
|
|
5
5
|
"files": [
|
|
6
6
|
"dist/**/*",
|
|
@@ -72,7 +72,7 @@
|
|
|
72
72
|
}
|
|
73
73
|
},
|
|
74
74
|
"_build": {
|
|
75
|
-
"load": "static/remoteEntry.
|
|
75
|
+
"load": "static/remoteEntry.e6f57cf13491ae730f31.js",
|
|
76
76
|
"extension": "./extension",
|
|
77
77
|
"style": "./style"
|
|
78
78
|
}
|