plot3d 1.7.5__tar.gz → 1.7.6__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.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: plot3d
3
- Version: 1.7.5
3
+ Version: 1.7.6
4
4
  Summary: Plot3D python utilities for reading and writing and also finding connectivity between blocks
5
5
  Author: Paht Juangphanich
6
6
  Author-email: paht.juangphanich@nasa.gov
@@ -8,9 +8,10 @@ Requires-Python: >=3.10.12,<4.0.0
8
8
  Classifier: Programming Language :: Python :: 3
9
9
  Classifier: Programming Language :: Python :: 3.11
10
10
  Classifier: Programming Language :: Python :: 3.12
11
+ Requires-Dist: matplotlib
11
12
  Requires-Dist: networkx
12
13
  Requires-Dist: numpy
13
14
  Requires-Dist: pandas
14
- Requires-Dist: pymetis
15
+ Requires-Dist: pymetis ; platform_system != "Windows"
15
16
  Requires-Dist: scipy
16
17
  Requires-Dist: tqdm
@@ -4,8 +4,18 @@ from __future__ import annotations
4
4
  from pathlib import Path
5
5
  from typing import Dict, List, Sequence, Tuple, Optional
6
6
  import inspect
7
-
8
- import pymetis # pip install pymetis
7
+ import sys
8
+
9
+ if sys.platform != "win32":
10
+ try:
11
+ import pymetis # type: ignore
12
+ HAS_PYMETIS = True
13
+ except Exception: # pragma: no cover - optional dependency
14
+ pymetis = None # type: ignore
15
+ HAS_PYMETIS = False
16
+ else:
17
+ pymetis = None # type: ignore
18
+ HAS_PYMETIS = False
9
19
  from .block import Block # <-- use your existing Block
10
20
 
11
21
 
@@ -139,7 +149,13 @@ def _metis_part_graph_compat(
139
149
  Returns:
140
150
  (edgecut, parts)
141
151
  """
142
- sig_params = set(inspect.signature(pymetis.part_graph).parameters.keys())
152
+ if not HAS_PYMETIS:
153
+ raise RuntimeError(
154
+ "pymetis is not available. On Windows it is skipped during install; "
155
+ "use Linux/macOS to enable METIS-based partitioning."
156
+ )
157
+
158
+ sig_params = set(inspect.signature(pymetis.part_graph).parameters.keys()) # type: ignore[attr-defined]
143
159
 
144
160
  # Prefer keyword args when supported
145
161
  if {"xadj", "adjncy"}.issubset(sig_params):
@@ -194,6 +210,12 @@ def partition_from_face_matches(
194
210
  edge_w : Dict[int, Dict[int, int]]
195
211
  Edge weights.
196
212
  """
213
+ if not HAS_PYMETIS:
214
+ raise RuntimeError(
215
+ "METIS partitioning is disabled because pymetis is unavailable. "
216
+ "Install pymetis (Linux/macOS) or run on a platform where it is supported."
217
+ )
218
+
197
219
  n_blocks = len(blocks)
198
220
  adj_list, edge_w = build_weighted_graph_from_face_matches(
199
221
  face_matches, n_blocks,
@@ -365,7 +365,7 @@ def rotated_periodicity(blocks:List[Block], matched_faces:List[Dict[str,int]], o
365
365
  """
366
366
  gcd_array = list()
367
367
  # Find the gcd of all the blocks
368
- if ReduceMesh==True:
368
+ if ReduceMesh:
369
369
  for block_indx in range(len(blocks)):
370
370
  block = blocks[block_indx]
371
371
  gcd_array.append(math.gcd(block.IMAX-1, math.gcd(block.JMAX-1, block.KMAX-1)))
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "plot3d"
3
- version = "1.7.5"
3
+ version = "1.7.6"
4
4
  description = "Plot3D python utilities for reading and writing and also finding connectivity between blocks"
5
5
  authors = ["Paht Juangphanich <paht.juangphanich@nasa.gov>"]
6
6
 
@@ -11,7 +11,8 @@ scipy = "*"
11
11
  pandas = "*"
12
12
  tqdm = "*"
13
13
  networkx = "*"
14
- pymetis = "*"
14
+ pymetis = { version = "*", markers = "platform_system != 'Windows'" }
15
+ matplotlib = "*"
15
16
 
16
17
  [tool.poetry.group.deve.dependencies]
17
18
 
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes