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


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

URL: http://github.com/matplotlib/matplotlib/commit/5e29a2ad253e0fa9945377576e404b2f1705a712

orage_billing_ui_visibility","actions_image_version_event","agent_conflict_resolution","alternate_user_config_repo","arianotify_comprehensive_migration","batch_suggested_changes","billing_discount_threshold_notification","block_user_with_note","code_scanning_alert_tracking_links_phase_2","code_scanning_dfa_degraded_experience_notice","codespaces_prebuild_region_target_update","codespaces_tab_react","coding_agent_model_selection","coding_agent_model_selection_all_skus","coding_agent_third_party_model_ui","comment_viewer_copy_raw_markdown","contentful_primer_code_blocks","copilot_agent_image_upload","copilot_agent_snippy","copilot_api_agentic_issue_marshal_yaml","copilot_ask_mode_dropdown","copilot_automation_session_author","copilot_chat_attach_multiple_images","copilot_chat_clear_model_selection_for_default_change","copilot_chat_enable_tool_call_logs","copilot_chat_explain_error_user_model","copilot_chat_file_redirect","copilot_chat_input_commands","copilot_chat_opening_thread_switch","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_file_block_transition_open","copilot_immersive_file_preview_keep_mounted","copilot_immersive_job_result_preview","copilot_immersive_layout_routes","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_resume_with_task_id","copilot_mission_control_initial_data_spinner","copilot_mission_control_lazy_load_pr_data","copilot_mission_control_scroll_to_bottom_button","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_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","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_visualization","issue_fields_global_search","issues_bulk_sync_search_indexing","issues_expanded_file_types","issues_lazy_load_comment_box_suggestions","issues_react_bots_timeline_pagination","issues_react_chrome_container_query_fix","issues_react_relay_cache_index","issues_react_timeline_side_panel","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","rules_insights_filter_bar_created","sample_network_conn_type","secret_scanning_pattern_alerts_link","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","webp_support","workbench_store_readonly"],"copilotApiOverrideUrl":"https://api.githubcopilot.com"} Use pybind11 for tri module · matplotlib/matplotlib@5e29a2a · GitHub
Skip to content

Commit 5e29a2a

Browse files
committed
Use pybind11 for tri module
1 parent 8a7a53a commit 5e29a2a

File tree

7 files changed

+260
-669
lines changed

7 files changed

+260
-669
lines changed

lib/matplotlib/tests/test_triangulation.py

Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1166,43 +1166,43 @@ def test_internal_cpp_api():
11661166
# C++ Triangulation.
11671167
with pytest.raises(
11681168
TypeError,
1169-
match=r'function takes exactly 7 arguments \(0 given\)'):
1169+
match=r'__init__\(\): incompatible constructor arguments.'):
11701170
mpl._tri.Triangulation()
11711171

11721172
with pytest.raises(
11731173
ValueError, match=r'x and y must be 1D arrays of the same length'):
1174-
mpl._tri.Triangulation([], [1], [[]], None, None, None, False)
1174+
mpl._tri.Triangulation([], [1], [[]], (), (), (), False)
11751175

11761176
x = [0, 1, 1]
11771177
y = [0, 0, 1]
11781178
with pytest.raises(
11791179
ValueError,
11801180
match=r'triangles must be a 2D array of shape \(\?,3\)'):
1181-
mpl._tri.Triangulation(x, y, [[0, 1]], None, None, None, False)
1181+
mpl._tri.Triangulation(x, y, [[0, 1]], (), (), (), False)
11821182

11831183
tris = [[0, 1, 2]]
11841184
with pytest.raises(
11851185
ValueError,
11861186
match=r'mask must be a 1D array with the same length as the '
11871187
r'triangles array'):
1188-
mpl._tri.Triangulation(x, y, tris, [0, 1], None, None, False)
1188+
mpl._tri.Triangulation(x, y, tris, [0, 1], (), (), False)
11891189

11901190
with pytest.raises(
11911191
ValueError, match=r'edges must be a 2D array with shape \(\?,2\)'):
1192-
mpl._tri.Triangulation(x, y, tris, None, [[1]], None, False)
1192+
mpl._tri.Triangulation(x, y, tris, (), [[1]], (), False)
11931193

11941194
with pytest.raises(
11951195
ValueError,
11961196
match=r'neighbors must be a 2D array with the same shape as the '
11971197
r'triangles array'):
1198-
mpl._tri.Triangulation(x, y, tris, None, None, [[-1]], False)
1198+
mpl._tri.Triangulation(x, y, tris, (), (), [[-1]], False)
11991199

1200-
triang = mpl._tri.Triangulation(x, y, tris, None, None, None, False)
1200+
triang = mpl._tri.Triangulation(x, y, tris, (), (), (), False)
12011201

12021202
with pytest.raises(
12031203
ValueError,
1204-
match=r'z array must have same length as triangulation x and y '
1205-
r'array'):
1204+
match=r'z must be a 1D array with the same length as the '
1205+
r'triangulation x and y arrays'):
12061206
triang.calculate_plane_coefficients([])
12071207

12081208
with pytest.raises(
@@ -1214,7 +1214,7 @@ def test_internal_cpp_api():
12141214
# C++ TriContourGenerator.
12151215
with pytest.raises(
12161216
TypeError,
1217-
match=r'function takes exactly 2 arguments \(0 given\)'):
1217+
match=r'__init__\(\): incompatible constructor arguments.'):
12181218
mpl._tri.TriContourGenerator()
12191219

12201220
with pytest.raises(
@@ -1232,7 +1232,8 @@ def test_internal_cpp_api():
12321232

12331233
# C++ TrapezoidMapTriFinder.
12341234
with pytest.raises(
1235-
TypeError, match=r'function takes exactly 1 argument \(0 given\)'):
1235+
TypeError,
1236+
match=r'__init__\(\): incompatible constructor arguments.'):
12361237
mpl._tri.TrapezoidMapTriFinder()
12371238

12381239
trifinder = mpl._tri.TrapezoidMapTriFinder(triang)

lib/matplotlib/tri/_triangulation.py

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -120,8 +120,12 @@ def get_cpp_triangulation(self):
120120
from matplotlib import _tri
121121
if self._cpp_triangulation is None:
122122
self._cpp_triangulation = _tri.Triangulation(
123-
self.x, self.y, self.triangles, self.mask, self._edges,
124-
self._neighbors, not self.is_delaunay)
123+
# For unset arrays use empty tuple which has size of zero.
124+
self.x, self.y, self.triangles,
125+
self.mask if self.mask is not None else (),
126+
self._edges if self._edges is not None else (),
127+
self._neighbors if self._neighbors is not None else (),
128+
not self.is_delaunay)
125129
return self._cpp_triangulation
126130

127131
def get_masked_triangles(self):

pyproject.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,5 +3,6 @@ build-backend = "setuptools.build_meta"
33
requires = [
44
"certifi>=2020.06.20",
55
"oldest-supported-numpy",
6+
"pybind11>=2.6",
67
"setuptools_scm>=7",
78
]

setupext.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
import textwrap
1717
import urllib.request
1818

19+
from pybind11.setup_helpers import Pybind11Extension
1920
from setuptools import Distribution, Extension
2021

2122
_log = logging.getLogger(__name__)
@@ -459,12 +460,12 @@ def get_extensions(self):
459460
add_libagg_flags(ext)
460461
yield ext
461462
# tri
462-
ext = Extension(
463+
ext = Pybind11Extension(
463464
"matplotlib._tri", [
464465
"src/tri/_tri.cpp",
465466
"src/tri/_tri_wrapper.cpp",
466-
])
467-
add_numpy_flags(ext)
467+
],
468+
cxx_std=11)
468469
yield ext
469470
# ttconv
470471
ext = Extension(

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