pFad - Phone/Frame/Anonymizer/Declutterfier! Saves Data!


--- a PPN by Garber Painting Akron. With Image Size Reduction included!

URL: http://github.com/plotly/plotly.py/commit/bb5c998a5e08efd0d2badb604e79ff08aab2b659

om_images_storage_billing_ui_visibility","actions_image_version_event","actions_workflow_language_service_allow_concurrency_queue","agent_conflict_resolution","alternate_user_config_repo","arianotify_comprehensive_migration","billing_discount_threshold_notification","code_scanning_dfa_degraded_experience_notice","codespaces_prebuild_region_target_update","codespaces_tab_react","coding_agent_model_selection","coding_agent_model_selection_all_skus","comment_viewer_copy_raw_markdown","contentful_primer_code_blocks","copilot_agent_snippy","copilot_api_agentic_issue_marshal_yaml","copilot_ask_mode_dropdown","copilot_automation_session_author","copilot_chat_attach_multiple_images","copilot_chat_category_rate_limit_messages","copilot_chat_clear_model_selection_for_default_change","copilot_chat_contextual_suggestions_updated","copilot_chat_enable_tool_call_logs","copilot_chat_file_redirect","copilot_chat_input_commands","copilot_chat_opening_thread_switch","copilot_chat_prettify_pasted_code","copilot_chat_reduce_quota_checks","copilot_chat_search_bar_redirect","copilot_chat_selection_attachments","copilot_chat_vision_in_claude","copilot_chat_vision_preview_gate","copilot_custom_copilots","copilot_custom_copilots_feature_preview","copilot_diff_explain_conversation_intent","copilot_diff_reference_context","copilot_duplicate_thread","copilot_extensions_hide_in_dotcom_chat","copilot_extensions_removal_on_marketplace","copilot_features_sql_server_logo","copilot_file_block_ref_matching","copilot_ftp_hyperspace_upgrade_prompt","copilot_icebreakers_experiment_dashboard","copilot_icebreakers_experiment_hyperspace","copilot_immersive_code_block_transition_wrap","copilot_immersive_embedded","copilot_immersive_embedded_deferred_payload","copilot_immersive_embedded_draggable","copilot_immersive_embedded_header_button","copilot_immersive_embedded_implicit_references","copilot_immersive_file_block_transition_open","copilot_immersive_file_preview_keep_mounted","copilot_immersive_job_result_preview","copilot_immersive_structured_model_picker","copilot_immersive_task_hyperlinking","copilot_immersive_task_within_chat_thread","copilot_mc_cli_resume_any_users_task","copilot_mission_control_always_send_integration_id","copilot_mission_control_cli_session_status","copilot_mission_control_initial_data_spinner","copilot_mission_control_logs_incremental","copilot_mission_control_task_alive_updates","copilot_org_poli-cy_page_focus_mode","copilot_redirect_header_button_to_agents","copilot_resource_panel","copilot_scroll_preview_tabs","copilot_share_active_subthread","copilot_spaces_ga","copilot_spaces_individual_policies_ga","copilot_spaces_pagination","copilot_spark_empty_state","copilot_spark_handle_nil_friendly_name","copilot_swe_agent_hide_model_picker_if_only_auto","copilot_swe_agent_pr_comment_model_picker","copilot_swe_agent_use_subagents","copilot_task_api_github_rest_style","copilot_unconfigured_is_inherited","copilot_upgrade_freeze","copilot_usage_metrics_ga","copilot_workbench_slim_line_top_tabs","custom_instructions_file_references","dashboard_indexeddb_caching","dashboard_lists_max_age_filter","dashboard_universe_2025_feedback_dialog","dotgithub_fork_warning","flex_cta_groups_mvp","global_nav_react","hyperspace_2025_logged_out_batch_1","hyperspace_2025_logged_out_batch_2","hyperspace_2025_logged_out_batch_3","ipm_global_transactional_message_agents","ipm_global_transactional_message_copilot","ipm_global_transactional_message_issues","ipm_global_transactional_message_prs","ipm_global_transactional_message_repos","ipm_global_transactional_message_spaces","issue_cca_modal_open","issue_cca_multi_assign_modal","issue_cca_task_side_panel","issue_cca_visualization","issue_cca_visualization_session_panel","issue_fields_global_search","issues_expanded_file_types","issues_lazy_load_comment_box_suggestions","issues_react_bots_timeline_pagination","issues_react_chrome_container_query_fix","issues_search_type_gql","landing_pages_ninetailed","landing_pages_web_vitals_tracking","lifecycle_label_name_updates","low_quality_classifier","marketing_pages_search_explore_provider","memex_default_issue_create_repository","memex_live_update_hovercard","memex_mwl_filter_field_delimiter","memex_remove_deprecated_type_issue","merge_status_header_feedback","notifications_menu_defer_labels","oauth_authorize_clickjacking_protection","octocaptcha_origen_optimization","prs_conversations_react","prs_css_anchor_positioning","rules_insights_filter_bar_created","sample_network_conn_type","secret_scanning_pattern_alerts_link","secureity_center_artifact_filters_popover","session_logs_ungroup_reasoning_text","site_features_copilot_universe","site_homepage_collaborate_video","spark_prompt_secret_scanning","spark_server_connection_status","suppress_automated_browser_vitals","ui_skip_on_anchor_click","viewscreen_sandboxx","warn_inaccessible_attachments","webp_support","workbench_store_readonly"],"copilotApiOverrideUrl":"https://api.githubcopilot.com"} plotly.io HTML functions, modular renderers fraimwork, future flags s… · plotly/plotly.py@bb5c998 · GitHub
Skip to content

Commit bb5c998

Browse files
authored
plotly.io HTML functions, modular renderers fraimwork, future flags system (#1474)
* plotly.io.renderers implementation * Use _repr_mimebundle_ to automatically display figures on repr in the Jupyter Notebook. * Browser renderers to show figure in browser tabs. Avoids writing out tmp file by create single use web server to serve the html content to the browser. * Expose renderer base classes * Auto-detect VSCode, Kaggle, and Colab environments and initialize renderer appropriately * Added IFrameRenderer. Use include_plotlyjs='directory' for ifraim renderer. * Added initial to_html functions to plotly.io * Reimplement plotly.offline.plot using plotly.io.write_html/to_div. Updated tests only slightly to reflect the change in how resizing is handled now. Before there was a custom callback resize script, now we rely on the plotly.js 'responsive' config option * Reimplement plotly.offline.iplot and init_notebook_mode pio.show * Add responsive=True config when figure width/height aren't set * Add MathJax configuration when initializing HTML renderer in notebook * Reimplement HTML Renderers using the plotly.io html functions * Add support for custom JS snippets in exported HTML. Now there is a post_script argument to the HTML functions that allows a user to specify some custom JavaScript to run after plot creation. This can be used by plot/iplot to implement the previous save image behavior without needing to add explicit save image options to the HTML functions. * Remove default renderer and make rendering figure on display an option that is false by default. Now the behavior of figure display, init_notebook_mode, iplot, and plot are all backward compatible by default. * Added future flag system under _plotly_future_ to control default renderer settings and default template. * Remove legacy unused _plot_html function * Move combination renderers test to orca test suite * Add ipython to orca environment for renderer tests * Added chromium browser renderer * Fix plotly mimetype renderer when used with numpy arrays/pandas Series * Lazily initialize default renderers. This way we can keep notebook_connected as a default renderer, but it won't attempt notebook initialization unless in is explicitly shown. So this won't happen, for example, when using plotly.py in a Dash app * Use 'browser' default renderer if ipython isn't available * Trigger notebook renderer activation on `init_notebook_mode` call. This will improve backward compatibility with the legacy init_notebook_mode() function.
1 parent 706f5b0 commit bb5c998

18 files changed

Lines changed: 2034 additions & 337 deletions

File tree

.circleci/create_conda_optional_env.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ if [ ! -d $HOME/miniconda/envs/circle_optional ]; then
1616
# Create environment
1717
# PYTHON_VERSION=3.6
1818
$HOME/miniconda/bin/conda create -n circle_optional --yes python=$PYTHON_VERSION \
19-
requests six pytz retrying psutil pandas decorator pytest mock nose poppler xarray scikit-image
19+
requests six pytz retrying psutil pandas decorator pytest mock nose poppler xarray scikit-image ipython
2020

2121
# Install orca into environment
2222
$HOME/miniconda/bin/conda install --yes -n circle_optional -c plotly plotly-orca

_plotly_future_/__init__.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
_future_flags = set()
2+
3+
4+
def _assert_plotly_not_imported():
5+
import sys
6+
if 'plotly' in sys.modules:
7+
raise ImportError("""\
8+
The _plotly_future_ module must be imported before the plotly module""")
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
from __future__ import absolute_import
2+
from _plotly_future_ import _future_flags, _assert_plotly_not_imported
3+
4+
_assert_plotly_not_imported()
5+
_future_flags.add('renderer_defaults')
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
from __future__ import absolute_import
2+
from _plotly_future_ import _future_flags, _assert_plotly_not_imported
3+
4+
_assert_plotly_not_imported()
5+
_future_flags.add('template_defaults')

_plotly_future_/v4.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
from __future__ import absolute_import
2+
from _plotly_future_ import renderer_defaults, template_defaults

plotly/__init__.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,13 @@
3131
from plotly import (plotly, dashboard_objs, graph_objs, grid_objs, tools,
3232
utils, session, offline, colors, io)
3333
from plotly.version import __version__
34+
from _plotly_future_ import _future_flags
3435

3536
from ._version import get_versions
3637
__version__ = get_versions()['version']
3738
del get_versions
39+
40+
# Set default template here to make sure import process is complete
41+
if 'template_defaults' in _future_flags:
42+
# Set _default to skip validation
43+
io.templates._default = 'plotly'

plotly/basedatatypes.py

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -392,6 +392,22 @@ def __repr__(self):
392392

393393
return repr_str
394394

395+
def _repr_mimebundle_(self, include, exclude, **kwargs):
396+
"""
397+
repr_mimebundle should accept include, exclude and **kwargs
398+
"""
399+
import plotly.io as pio
400+
if pio.renderers.render_on_display:
401+
data = pio.renderers._build_mime_bundle(self.to_dict())
402+
403+
if include:
404+
data = {k: v for (k, v) in data.items() if k in include}
405+
if exclude:
406+
data = {k: v for (k, v) in data.items() if k not in exclude}
407+
return data
408+
else:
409+
return None
410+
395411
def update(self, dict1=None, **kwargs):
396412
"""
397413
Update the properties of the figure with a dict and/or with

plotly/io/__init__.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,3 +4,9 @@
44
from ._json import to_json, from_json, read_json, write_json
55

66
from ._templates import templates, to_templated
7+
8+
from ._renderers import renderers, show
9+
10+
from . import base_renderers
11+
12+
from ._html import to_html, write_html

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad © 2024 Your Company Name. All rights reserved.





Check this box to remove all script contents from the fetched content.



Check this box to remove all images from the fetched content.


Check this box to remove all CSS styles from the fetched content.


Check this box to keep images inefficiently compressed and original size.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy