tecio-python 0.2.1__py3-none-any.whl → 0.2.2__py3-none-any.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.
tecio/plt/_read.py CHANGED
@@ -1,21 +1,21 @@
1
1
  r"""Native binary reader for Tecplot PLT (``.plt``) files.
2
2
 
3
3
  This module provides a pure-Python / NumPy reader for Tecplot PLT binary files (format
4
- versions v112 and v191). It is a **standalone debugging module** intended to be
4
+ versions v112 and v191). It is a **standalone debugging module** intended to be
5
5
  integrated into the existing :mod:`plt` module once validated.
6
6
 
7
7
  Notes:
8
8
  * **No byte-swapping boilerplate.** The INT32 value of ``1`` written immediately
9
- after the magic number is used to detect endianness at open time. All subsequent
9
+ after the magic number is used to detect endianness at open time. All subsequent
10
10
  reads use the correct NumPy byte-order prefix (``"<"`` or ``">"``).
11
11
  * **Lazy variable data.** Zone and variable *metadata* is parsed during ``__init__``
12
- and stored as lightweight dataclass attributes. Actual numeric data is read from
12
+ and stored as lightweight dataclass attributes. Actual numeric data is read from
13
13
  disk only when ``.values`` (or ``.get_values()``) is called, matching the
14
14
  behaviour of :class:`szl.ReadVariable`.
15
15
  * **No text / geometry support.** Header records with markers 399.0 (geometry) and
16
16
  499.0 (text) are detected and skipped without parsing their contents.
17
17
  * **v112 and v191 zone headers.** Zone marker ``299.0`` → v112 header; ``298.0`` →
18
- v191 header. Both are fully supported.
18
+ v191 header. Both are fully supported.
19
19
 
20
20
  Limitations
21
21
  * FEPOLYGON and FEPOLYHEDRON zones are parsed for metadata but face-map reading is
@@ -92,7 +92,7 @@ _DATATYPE_DTYPE: dict[DataType, str] = {
92
92
  DataType.BYTE: "u1",
93
93
  }
94
94
 
95
- # PLT format variable location integers → ValueLocation enum. The PLT spec uses 0 =
95
+ # PLT format variable location integers → ValueLocation enum. The PLT spec uses 0 =
96
96
  # Node, 1 = Cell Centered (format guide §IV.iv), which is the opposite of the
97
97
  # ValueLocation enum (CELL_CENTERED=0, NODAL=1).
98
98
  _PLT_VALUELOCATION_MAP: dict[int, ValueLocation] = {
@@ -155,7 +155,7 @@ def _read_string(fp: io.BufferedIOBase, byte_order: str) -> str:
155
155
  """Read a null-terminated string stored as INT32 code-points.
156
156
 
157
157
  The PLT format stores each character as a 4-byte integer (see Note 1 of the format
158
- spec). The string is terminated by a zero INT32.
158
+ spec). The string is terminated by a zero INT32.
159
159
  """
160
160
  chars: list[str] = []
161
161
  while True:
@@ -250,7 +250,7 @@ class _ZoneMeta:
250
250
  class ReadAuxData:
251
251
  """Dictionary-like interface for PLT auxiliary data.
252
252
 
253
- Values are stored as plain Python strings. Convenience converters ``as_int``,
253
+ Values are stored as plain Python strings. Convenience converters ``as_int``,
254
254
  ``as_float``, and ``as_bool`` are provided to match the :class:`szl.ReadAuxData`
255
255
  API.
256
256
  """
@@ -376,11 +376,11 @@ class ReadVariable:
376
376
  def _resolve_data_meta(self) -> _ZoneMeta | None:
377
377
  """Return the :class:`_ZoneMeta` that owns this variable's data.
378
378
 
379
- For a variable this zone stores itself this is simply ``self._meta``. For a
379
+ For a variable this zone stores itself this is simply ``self._meta``. For a
380
380
  shared variable, the chain of per-variable ``shared_zone`` references is
381
381
  followed to the owning zone (with a cycle/range guard against malformed
382
382
  files) -- the variable-level analogue of
383
- :meth:`ReadZone._resolve_connectivity_meta`. Returns ``None`` when the
383
+ :meth:`ReadZone._resolve_connectivity_meta`. Returns ``None`` when the
384
384
  share cannot be resolved, e.g. when ``all_metas`` was not supplied at
385
385
  construction.
386
386
  """
@@ -511,7 +511,7 @@ class ReadVariable:
511
511
  return None
512
512
 
513
513
  # Resolve to the zone that actually owns this variable's data (self for unshared
514
- # variables, the share-chain source otherwise). The resolved meta describes the
514
+ # variables, the share-chain source otherwise). The resolved meta describes the
515
515
  # on-disk block being read, so it also drives the count, dtype, and ordered-zone
516
516
  # reshape/ghost-trim logic below.
517
517
  meta = self._resolve_data_meta()
@@ -561,7 +561,7 @@ class ReadVariable:
561
561
  if full_read and meta.zone_type == ZoneType.ORDERED:
562
562
  ni, nj, nk = meta.i_max, meta.j_max, meta.k_max
563
563
  if meta.value_locations[self.var_index - 1] == ValueLocation.CELL_CENTERED:
564
- # On disk: i * j * (k-1) values in Fortran order. Ghost padding
564
+ # On disk: i * j * (k-1) values in Fortran order. Ghost padding
565
565
  # occupies the last row in I and J after reshape, so reshape to (ni, nj,
566
566
  # nk-1) then slice to (ni-1, nj-1, nk-1) to discard the ghost values and
567
567
  # return only significant cells.
@@ -727,7 +727,7 @@ class ReadZone:
727
727
  ) -> npt.NDArray | None | tuple[npt.NDArray | None, ...]:
728
728
  """Return variable data array(s) for this zone.
729
729
 
730
- A single key (0-based index or exact name) returns one array. A list of exact
730
+ A single key (0-based index or exact name) returns one array. A list of exact
731
731
  names returns a tuple of arrays in the order given, suitable for unpacking::
732
732
 
733
733
  p = zone.get_array("p")
@@ -735,7 +735,7 @@ class ReadZone:
735
735
 
736
736
  Returns:
737
737
  One array (or ``None`` if the variable is passive or shared) for a scalar
738
- key; a tuple of such arrays for a list of names. A single-element list
738
+ key; a tuple of such arrays for a list of names. A single-element list
739
739
  yields a 1-tuple, not a bare array.
740
740
 
741
741
  Raises:
@@ -750,10 +750,10 @@ class ReadZone:
750
750
  def _resolve_connectivity_meta(self) -> _ZoneMeta | None:
751
751
  """Return the :class:`_ZoneMeta` that owns this zone's connectivity.
752
752
 
753
- For a zone with its own connectivity this is simply ``self._meta``. For a zone
753
+ For a zone with its own connectivity this is simply ``self._meta``. For a zone
754
754
  that shares connectivity, the chain of ``connectivity_shared_zone`` references
755
755
  is followed to the owning zone (with a cycle/range guard against malformed
756
- files). Returns ``None`` when the share cannot be resolved -- e.g. when
756
+ files). Returns ``None`` when the share cannot be resolved -- e.g. when
757
757
  ``all_metas`` was not supplied at construction.
758
758
  """
759
759
  meta = self._meta
@@ -839,7 +839,7 @@ class ReadZone:
839
839
  class _PltParser:
840
840
  """Low-level PLT binary parser.
841
841
 
842
- Called once from :class:`Read.__init__`. After construction the following
842
+ Called once from :class:`Read.__init__`. After construction the following
843
843
  attributes are available:
844
844
 
845
845
  =================== ===============================================
@@ -1137,7 +1137,7 @@ class _PltParser:
1137
1137
  def _parse_data_section(self, fp: io.BufferedIOBase) -> None:
1138
1138
  """Parse the data section and record variable file offsets.
1139
1139
 
1140
- The EOHMARKER has already been consumed by :meth:`_parse_header`. We iterate
1140
+ The EOHMARKER has already been consumed by :meth:`_parse_header`. We iterate
1141
1141
  over zones in declaration order, matching each data block to the corresponding
1142
1142
  :class:`_ZoneMeta` in ``self.zones``.
1143
1143
  """
@@ -1201,7 +1201,7 @@ class _PltParser:
1201
1201
  """Record file offsets for each active variable data block.
1202
1202
 
1203
1203
  Data is stored in **block** order (all values for variable 0, then all values
1204
- for variable 1, …). We seek rather than read so we do not load the data into
1204
+ for variable 1, …). We seek rather than read so we do not load the data into
1205
1205
  memory.
1206
1206
  """
1207
1207
  for v in range(num_vars):
@@ -1228,7 +1228,7 @@ class _PltParser:
1228
1228
  """Return the number of values on disk for variable *var_idx*.
1229
1229
 
1230
1230
  For cell-centered variables in ORDERED zones the PLT format writes ``IMax * JMax
1231
- * (KMax - 1)`` values on disk (see Note 5 of the format spec). The significant
1231
+ * (KMax - 1)`` values on disk (see Note 5 of the format spec). The significant
1232
1232
  cell count is ``(I-1) * (J-1) * (K-1)``; the remainder are ghost (zero-padded)
1233
1233
  values that are trimmed in :meth:`ReadVariable.get_values` after reshaping.
1234
1234
 
@@ -1242,7 +1242,7 @@ class _PltParser:
1242
1242
  j = max(meta.j_max, 1)
1243
1243
  k = max(meta.k_max, 1)
1244
1244
  if loc == ValueLocation.CELL_CENTERED:
1245
- # PLT Note 5: IMax * JMax * (KMax - 1) values on disk. Only K is
1245
+ # PLT Note 5: IMax * JMax * (KMax - 1) values on disk. Only K is
1246
1246
  # reduced; I and J retain their full extent as ghost padding in the
1247
1247
  # Fortran-order layout.
1248
1248
  return i * j * max(k - 1, 1)
@@ -1427,7 +1427,7 @@ class Read:
1427
1427
  """Context manager protocol for read-only file interfaces.
1428
1428
 
1429
1429
  Read classes hold no open file handle between accesses, so there is nothing to
1430
- release on exit. Provided for API consistency with the Write classes and to
1430
+ release on exit. Provided for API consistency with the Write classes and to
1431
1431
  support the ``with tecio.open(...) as r:`` pattern.
1432
1432
  """
1433
1433
  pass
tecio/plt/_write.py CHANGED
@@ -82,7 +82,7 @@ def _normalize_precision(precision: DataType | str) -> DataType:
82
82
  def _infer_data_type(dt: DataType | np.dtype) -> DataType:
83
83
  """Return a C-supported :class:`DataType` for a :class:`DataType` or NumPy dtype.
84
84
 
85
- Maps NumPy dtypes to the closest supported Tecplot data type. For PLT format only
85
+ Maps NumPy dtypes to the closest supported Tecplot data type. For PLT format only
86
86
  FLOAT and DOUBLE are supported; all integer types are upcast to DOUBLE. precision
87
87
  is promoted to ``FLOAT``; 64-bit integers are promoted to ``INT32``; ``int8`` and
88
88
  ``uint8`` map to ``BYTE``.
@@ -128,7 +128,7 @@ def _write_data(data: npt.ArrayLike, dtype: np.dtype | DataType | None = None) -
128
128
  """Write a single variable's data using ``tecdat142``.
129
129
 
130
130
  ``tecdat142`` only accepts ``float32`` or ``float64``; integer types are
131
- upcast to ``float64``. The array is ravelled in Fortran (column-major)
131
+ upcast to ``float64``. The array is ravelled in Fortran (column-major)
132
132
  order before writing, which matches Tecplot's expected BLOCK layout.
133
133
 
134
134
  Args:
@@ -198,12 +198,12 @@ class Write:
198
198
  """Write Tecplot PLT (``.plt``) files using the classic TecIO API.
199
199
 
200
200
  The classic TecIO API maintains a single implicit global file context;
201
- only one PLT file may be open at a time. This class wraps that
201
+ only one PLT file may be open at a time. This class wraps that
202
202
  procedural API behind the same interface as :class:`szl.Write`.
203
203
 
204
204
  Dataset- and variable-level auxiliary data can be set at any time before
205
- the first zone is written. They are buffered and flushed automatically
206
- when the first zone header is created. Zone-level auxiliary data is
205
+ the first zone is written. They are buffered and flushed automatically
206
+ when the first zone header is created. Zone-level auxiliary data is
207
207
  passed directly to each zone-writing method.
208
208
 
209
209
  Like :class:`szl.Write`, the file can be opened *eagerly* (when
@@ -214,10 +214,10 @@ class Write:
214
214
  Args:
215
215
  path: Output file path (should end in ``.plt``).
216
216
  title: Dataset title string.
217
- variables: Variable name list. If provided the file is opened
218
- immediately. If ``None``, the file is opened on the first
217
+ variables: Variable name list. If provided the file is opened
218
+ immediately. If ``None``, the file is opened on the first
219
219
  zone write.
220
- file_type: :class:`~libtecio.FileType` enum. Defaults to
220
+ file_type: :class:`~libtecio.FileType` enum. Defaults to
221
221
  :attr:`~libtecio.FileType.FULL`.
222
222
 
223
223
  Attributes:
@@ -226,8 +226,8 @@ class Write:
226
226
  variables: Variable name list, or ``None`` if the file has not been opened
227
227
  yet.
228
228
  file_type: File type (FULL, GRID, or SOLUTION).
229
- current_zone: The index of the most recently written zone. Before any zones
230
- have been written, ``current_zone`` is ``0``. During a call to a
229
+ current_zone: The index of the most recently written zone. Before any zones
230
+ have been written, ``current_zone`` is ``0``. During a call to a
231
231
  zone writing method, ``current_zone`` still refers to the
232
232
  previously written zone. ``current_zone`` is incremented only
233
233
  after a zone writing method successfully completes.
@@ -238,7 +238,7 @@ class Write:
238
238
 
239
239
  Caution:
240
240
  Unlike the SZL writer, zone data must be written strictly in order: header →
241
- variable data → connectivity. This is enforced internally by the write methods.
241
+ variable data → connectivity. This is enforced internally by the write methods.
242
242
 
243
243
  Examples:
244
244
  Define file header fields on open.
@@ -325,7 +325,7 @@ class Write:
325
325
  self._opened: bool = False
326
326
 
327
327
  # Running record of everything committed to the file so far (header,
328
- # aux counts, per-zone dimensions/sharing). Used to validate
328
+ # aux counts, per-zone dimensions/sharing). Used to validate
329
329
  # var_sharing / con_sharing on later zones against what an earlier
330
330
  # zone actually wrote, rather than trusting the caller's arrays
331
331
  # alone.
@@ -349,7 +349,7 @@ class Write:
349
349
  """Close the file on context-manager exit.
350
350
 
351
351
  The file is closed regardless of whether an exception was raised in
352
- the ``with`` block. If closing itself raises, that secondary
352
+ the ``with`` block. If closing itself raises, that secondary
353
353
  exception is only re-raised when the ``with`` block completed without
354
354
  error; otherwise the original exception takes precedence.
355
355
  """
@@ -419,7 +419,7 @@ class Write:
419
419
  """Write buffered dataset- and variable-level aux data to the file.
420
420
 
421
421
  Must be called *after* ``tecini142`` and *before* the first
422
- ``teczne142``. The zone-writing methods call this automatically;
422
+ ``teczne142``. The zone-writing methods call this automatically;
423
423
  users need not call it directly unless flushing explicitly.
424
424
 
425
425
  In the classic API:
@@ -433,7 +433,7 @@ class Write:
433
433
  for name, value in self.auxdataset.items():
434
434
  libtecio.tecauxstr142(str(name), str(value))
435
435
 
436
- # Variable-level aux data. Keys may be 1-based int indices or names.
436
+ # Variable-level aux data. Keys may be 1-based int indices or names.
437
437
  for key, subdict in self.auxvar.items():
438
438
  if isinstance(key, int):
439
439
  var_idx = key - 1 # Convert to 0-based
@@ -492,22 +492,22 @@ class Write:
492
492
  produce an ``(I, J, 1)`` zone.
493
493
 
494
494
  Args:
495
- data: Sequence of NumPy arrays, one per active variable. NODAL
496
- arrays must all share the same shape. CELL_CENTERED arrays
495
+ data: Sequence of NumPy arrays, one per active variable. NODAL
496
+ arrays must all share the same shape. CELL_CENTERED arrays
497
497
  must have shape ``(imax-1, jmax-1, kmax-1)`` (minimum 1 in
498
498
  each dimension).
499
- title: Zone title. Defaults to ``"IJK_Zone_{current_zone + 1}"``.
500
- variables: Variable name list. Required only when the file has not
501
- been opened yet (lazy-open path). Ignored on subsequent
499
+ title: Zone title. Defaults to ``"IJK_Zone_{current_zone + 1}"``.
500
+ variables: Variable name list. Required only when the file has not
501
+ been opened yet (lazy-open path). Ignored on subsequent
502
502
  zones once the file is already initialised. Default to
503
503
  ``[V1, V2, V3, ...]`` if not provided in open or zone call.
504
- value_locations: Per-variable :class:`ValueLocation`. Defaults to all
504
+ value_locations: Per-variable :class:`ValueLocation`. Defaults to all
505
505
  :attr:`~ValueLocation.NODAL`.
506
506
  passive_vars: Per-variable passive flags (one per dataset variable, not
507
- just active variables). Defaults to all active
507
+ just active variables). Defaults to all active
508
508
  (``False``).
509
509
  var_sharing: Per-variable source-zone sharing indices (one per dataset
510
- variable). ``0`` means no sharing. Defaults to no
510
+ variable). ``0`` means no sharing. Defaults to no
511
511
  sharing.
512
512
  solution_time: Solution time for transient data (``0.0`` indicates
513
513
  steady-state).
@@ -540,7 +540,7 @@ class Write:
540
540
  if datapacking != DataPacking.BLOCK:
541
541
  raise NotImplementedError(
542
542
  "DATAPACKING=POINT is an ASCII-only layout and is not supported "
543
- "by the PLT binary format. Use DataPacking.BLOCK (the default) "
543
+ "by the PLT binary format. Use DataPacking.BLOCK (the default) "
544
544
  "or write to a .dat file instead."
545
545
  )
546
546
 
@@ -797,27 +797,27 @@ class Write:
797
797
  Args:
798
798
  data: Sequence of 1-D NumPy arrays, one per active variable.
799
799
  NODAL arrays must have length ``num_nodes``; CELL_CENTERED
800
- arrays must have length ``num_cells``. Both counts are
800
+ arrays must have length ``num_cells``. Both counts are
801
801
  inferred from *node_map* (or from the ``con_sharing``
802
802
  source zone when *node_map* is omitted).
803
- zone_type: FE zone type from the ZoneType enum. Must be one of the
803
+ zone_type: FE zone type from the ZoneType enum. Must be one of the
804
804
  types in ``_FE_SIMPLE``.
805
805
  node_map: Integer array of shape ``(num_cells, nodes_per_cell)`` with
806
- 1-based node indices. Required unless ``con_sharing`` is
806
+ 1-based node indices. Required unless ``con_sharing`` is
807
807
  set, in which case the connectivity -- and the node/cell
808
808
  counts derived from it -- are inherited from the source
809
809
  zone instead.
810
- title: Zone title. Defaults to ``"FE_Zone_{current_zone + 1}"``.
811
- variables: Variable name list. Required only when the file has not
812
- been opened yet (lazy-open path). Ignored on subsequent
810
+ title: Zone title. Defaults to ``"FE_Zone_{current_zone + 1}"``.
811
+ variables: Variable name list. Required only when the file has not
812
+ been opened yet (lazy-open path). Ignored on subsequent
813
813
  zones once the file is already initialised. Default to
814
814
  ``[V1, V2, V3, ...]`` if not provided in open or zone call.
815
- value_locations: Per-variable :class:`ValueLocation`. Defaults to all
815
+ value_locations: Per-variable :class:`ValueLocation`. Defaults to all
816
816
  :attr:`~ValueLocation.NODAL`.
817
- passive_vars: Per-variable passive flags (dataset-length). Defaults to
817
+ passive_vars: Per-variable passive flags (dataset-length). Defaults to
818
818
  all active.
819
819
  var_sharing: Per-variable sharing zone indices (dataset-length).
820
- Defaults to no sharing. Cross-checked against
820
+ Defaults to no sharing. Cross-checked against
821
821
  ``node_map`` / ``con_sharing`` for a consistent node/cell
822
822
  count.
823
823
  con_sharing: Optional zone index that the connectivity is shared from.
@@ -827,7 +827,7 @@ class Write:
827
827
  neighbor mode is set to global. Connectivity cannot be
828
828
  shared between cell-based and face-based finite element
829
829
  zones.
830
- face_neighbors: Optional face-neighbour connection array. Its length sets
830
+ face_neighbors: Optional face-neighbour connection array. Its length sets
831
831
  ``num_face_connections`` in the zone header automatically.
832
832
  face_nbr_mode: Face-neighbour mode; used only when *face_neighbors* is
833
833
  provided.
@@ -863,7 +863,7 @@ class Write:
863
863
  if datapacking != DataPacking.BLOCK:
864
864
  raise NotImplementedError(
865
865
  "DATAPACKING=POINT is an ASCII-only layout and is not supported "
866
- "by the PLT binary format. Use DataPacking.BLOCK (the default) "
866
+ "by the PLT binary format. Use DataPacking.BLOCK (the default) "
867
867
  "or write to a .dat file instead."
868
868
  )
869
869
  if zone_type not in _FE_SIMPLE:
tecio/szl/_read.py CHANGED
@@ -395,7 +395,7 @@ class ReadZone:
395
395
  ) -> npt.NDArray | None | tuple[npt.NDArray | None, ...]:
396
396
  """Return variable data array(s) for this zone.
397
397
 
398
- A single key (0-based index or exact name) returns one array. A list of exact
398
+ A single key (0-based index or exact name) returns one array. A list of exact
399
399
  names returns a tuple of arrays in the order given, suitable for unpacking::
400
400
 
401
401
  p = zone.get_array("p")
@@ -403,8 +403,8 @@ class ReadZone:
403
403
 
404
404
  Returns:
405
405
  One array (or ``None`` only if the variable is passive) for a scalar
406
- key; a tuple of such arrays for a list of names. A single-element list
407
- yields a 1-tuple, not a bare array. A shared variable resolves to its
406
+ key; a tuple of such arrays for a list of names. A single-element list
407
+ yields a 1-tuple, not a bare array. A shared variable resolves to its
408
408
  source zone's array, per :attr:`ReadVariable.values`.
409
409
 
410
410
  Raises:
tecio/szl/_write.py CHANGED
@@ -235,7 +235,7 @@ def _write_connectivity(
235
235
 
236
236
  Note:
237
237
  Both arrays are written using the minimum integer width capable of
238
- representing the maximum index value present in each array. No copy
238
+ representing the maximum index value present in each array. No copy
239
239
  is made for C-contiguous input arrays — ravel(order="C") returns a flat
240
240
  view of the node_map or face_neighbors without making a copy
241
241
 
@@ -392,8 +392,8 @@ class Write:
392
392
  file_type: File type (FULL, GRID, or SOLUTION).
393
393
  precision: Whole-file floating-point override, or ``None`` for automatic
394
394
  per-variable inference.
395
- current_zone: The index of the most recently written zone. Before any zones
396
- have been written, ``current_zone`` is ``0``. During a call to a
395
+ current_zone: The index of the most recently written zone. Before any zones
396
+ have been written, ``current_zone`` is ``0``. During a call to a
397
397
  zone writing method, ``current_zone`` still refers to the
398
398
  previously written zone. ``current_zone`` is incremented only
399
399
  after a zone writing method successfully completes.
@@ -505,7 +505,7 @@ class Write:
505
505
  # -- File lifecycle ----------------------------------------------------------------
506
506
 
507
507
  def _open(self, var_names: list[str]) -> None:
508
- """Open the file handle. Called exactly once on the first zone."""
508
+ """Open the file handle. Called exactly once on the first zone."""
509
509
  self.variables = var_names
510
510
  self.handle = libtecio.tec_file_writer_open(
511
511
  filename=self.path,
@@ -534,7 +534,7 @@ class Write:
534
534
  def flush_aux(self) -> None:
535
535
  """Write buffered dataset and variable aux data to the file.
536
536
 
537
- Called automatically before the first zone is created. You only
537
+ Called automatically before the first zone is created. You only
538
538
  need to call this directly if you want to be explicit.
539
539
 
540
540
  The C library requires dataset and variable aux data to be written
@@ -550,7 +550,7 @@ class Write:
550
550
  str(value),
551
551
  )
552
552
 
553
- # Variable-level aux data. Keys may be 1-based int indices or names.
553
+ # Variable-level aux data. Keys may be 1-based int indices or names.
554
554
  for key, subdict in self.auxvar.items():
555
555
  if isinstance(key, int):
556
556
  var_idx = key - 1 # Convert to 0-based
@@ -607,24 +607,24 @@ class Write:
607
607
  3-D; missing trailing dimensions default to 1.
608
608
 
609
609
  Args:
610
- data: One NumPy array per dataset variable. Array shape is used
610
+ data: One NumPy array per dataset variable. Array shape is used
611
611
  to infer ``imax``, ``jmax``, and ``kmax``; Fortran
612
- (column-major) order is assumed. Pass ``None`` to write a
612
+ (column-major) order is assumed. Pass ``None`` to write a
613
613
  zone header only.
614
- title: Zone title. Defaults to ``"IJK_Zone_{current_zone + 1}"``.
615
- variables: Variable name list. Required on the first call when the
614
+ title: Zone title. Defaults to ``"IJK_Zone_{current_zone + 1}"``.
615
+ variables: Variable name list. Required on the first call when the
616
616
  file has not been opened yet (lazy-open path); ignored once
617
617
  the file is already initialised. Default to ``[V1, V2, V3,
618
618
  ...]`` if not provided in open or zone call.
619
- value_locations: Per-variable :class:`~libtecio.ValueLocation`. Defaults to
619
+ value_locations: Per-variable :class:`~libtecio.ValueLocation`. Defaults to
620
620
  all ``NODAL``.
621
- passive_vars: Per-variable passive flags. Defaults to all active
621
+ passive_vars: Per-variable passive flags. Defaults to all active
622
622
  (``False``).
623
- var_sharing: Per-variable share-from zone index (1-based). Defaults to
623
+ var_sharing: Per-variable share-from zone index (1-based). Defaults to
624
624
  no sharing (all zeros).
625
- solution_time: Solution time for transient data. Use ``0.0`` for static
625
+ solution_time: Solution time for transient data. Use ``0.0`` for static
626
626
  zones. Default to ``0.0`` if not defined.
627
- strand_id: Strand ID for transient data. Use ``0`` for static
627
+ strand_id: Strand ID for transient data. Use ``0`` for static
628
628
  zones. Default to ``0`` (static) if not defined.
629
629
  aux: Zone-level auxiliary data as ``{name: value}`` string
630
630
  pairs.
@@ -649,11 +649,11 @@ class Write:
649
649
 
650
650
  Note:
651
651
  If the file is already open, ``data`` and ``variables`` may be omitted to
652
- write a zone header only. If the file has not been opened yet,
652
+ write a zone header only. If the file has not been opened yet,
653
653
  ``variables`` must be provided on this call.
654
654
 
655
655
  Note:
656
- Data arrays are written as DOUBLE precision by default. To write other
656
+ Data arrays are written as DOUBLE precision by default. To write other
657
657
  types, cast the NumPy arrays before calling (e.g.
658
658
  ``arr.astype(np.float32)``).
659
659
 
@@ -673,7 +673,7 @@ class Write:
673
673
  if datapacking != DataPacking.BLOCK:
674
674
  raise NotImplementedError(
675
675
  "DATAPACKING=POINT is an ASCII-only layout and is not supported "
676
- "by the SZL binary format. Use DataPacking.BLOCK (the default) "
676
+ "by the SZL binary format. Use DataPacking.BLOCK (the default) "
677
677
  "or write to a .dat file instead."
678
678
  )
679
679
 
@@ -935,12 +935,12 @@ class Write:
935
935
  chosen automatically from the max index.
936
936
 
937
937
  Args:
938
- data: Sequence of 1-D arrays, one per dataset variable. NODAL
938
+ data: Sequence of 1-D arrays, one per dataset variable. NODAL
939
939
  arrays must have length ``num_nodes``; CELL_CENTERED arrays
940
940
  must have length ``num_cells``. ``num_nodes`` and
941
941
  ``num_cells`` are inferred from ``node_map`` (or from the
942
942
  ``con_sharing`` source zone when ``node_map`` is omitted).
943
- zone_type: FE zone type from the ZoneType enum. Must be one of the
943
+ zone_type: FE zone type from the ZoneType enum. Must be one of the
944
944
  types in ``_FE_SIMPLE``.
945
945
  node_map: Integer array of shape ``(num_cells, nodes_per_cell)``
946
946
  containing 1-based node indices. 32- or 64-bit write is
@@ -948,17 +948,17 @@ class Write:
948
948
  Required unless ``con_sharing`` is set, in which case the
949
949
  connectivity -- and the node/cell counts derived from it --
950
950
  are inherited from the source zone instead.
951
- title: Zone title string. Defaults to ``"FE_Zone_{current_zone +
951
+ title: Zone title string. Defaults to ``"FE_Zone_{current_zone +
952
952
  1}"`` if not provided.
953
- variables: Variable name list. Required only when the file has not
954
- been opened yet (lazy-open path). Ignored on subsequent
953
+ variables: Variable name list. Required only when the file has not
954
+ been opened yet (lazy-open path). Ignored on subsequent
955
955
  zones once the file is already initialised. Default to
956
956
  ``[V1, V2, V3, ...]`` if not provided in open or zone call.
957
- value_locations: Per-variable ValueLocation. Defaults to all NODAL.
958
- passive_vars: Per-variable passive flags. Defaults to all active
957
+ value_locations: Per-variable ValueLocation. Defaults to all NODAL.
958
+ passive_vars: Per-variable passive flags. Defaults to all active
959
959
  (False).
960
- var_sharing: Per-variable share from zone index. Defaults to no
961
- sharing. A shared variable's type and value location are
960
+ var_sharing: Per-variable share from zone index. Defaults to no
961
+ sharing. A shared variable's type and value location are
962
962
  inherited from its source zone and are cross-checked
963
963
  against ``node_map`` / ``con_sharing`` for a consistent
964
964
  node/cell count.
@@ -1019,7 +1019,7 @@ class Write:
1019
1019
  if datapacking != DataPacking.BLOCK:
1020
1020
  raise NotImplementedError(
1021
1021
  "DATAPACKING=POINT is an ASCII-only layout and is not supported "
1022
- "by the SZL binary format. Use DataPacking.BLOCK (the default) "
1022
+ "by the SZL binary format. Use DataPacking.BLOCK (the default) "
1023
1023
  "or write to a .dat file instead."
1024
1024
  )
1025
1025
  if zone_type not in _FE_SIMPLE:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: tecio-python
3
- Version: 0.2.1
3
+ Version: 0.2.2
4
4
  Summary: Python interface for reading and writing Tecplot data files
5
5
  Project-URL: Homepage, https://github.com/meersman/tecio
6
6
  Project-URL: Documentation, https://meersman.github.io/tecio/
@@ -0,0 +1,33 @@
1
+ tecio/__init__.py,sha256=aTfvQBQ9YJ1eUw0WDNRSktqx1D2fRTcoWqzvMbMtBLw,918
2
+ tecio/_containers.py,sha256=T-wAycLtjVJKC_ieM_bW0yIn9MI-Vu_rXlkSidk5uRU,10441
3
+ tecio/_io.py,sha256=TSVn3UQ_gd7QF4d9urrCaS-RvEOG2dYIeGp6Srqh_J0,31126
4
+ tecio/_meta.py,sha256=yR21qg7evwxnYZOmmz5txgdDBs8X0Gd1zo78uxebXCg,7356
5
+ tecio/_utils.py,sha256=rPK5w2SxwQQCxRKdwhBDNdl8QTup1HLCCSnC1pzgdRI,8755
6
+ tecio/libtecio.py,sha256=LB-C4FpaSG8Q5YEHneIk4VSXJf_RLu8iEV4C5uzbs3c,114505
7
+ tecio/cli/__init__.py,sha256=jC0QuRCfZ8EJNgk_Lsc8VWathE0yhmt9uSUl346Su9o,1087
8
+ tecio/cli/tec2mat.py,sha256=uqc8Z5VMYSk8wAIeWxlqebUPXzJDw-cV18vabJh6aZM,18157
9
+ tecio/cli/tecaux.py,sha256=cA5ALdsNJOORtDNALvM-2Cg-pkuMAGkQINBpHKnvvoE,35913
10
+ tecio/cli/tecdump.py,sha256=YmcRN-6swB0f0A5k5eVSxLaawkcKRKZXxEMmnh_7C6Y,10945
11
+ tecio/cli/tecextract.py,sha256=-oy3b8yw6K099cb5Y5MFzeclYKQE5YqgtRDXOQSg1G0,15394
12
+ tecio/cli/tecfix.py,sha256=NdLb00EQLE_Oawla4GenjXUvaMGUB_T5d52l8HDsCNI,19456
13
+ tecio/cli/tecmerge.py,sha256=Bpusvt9yXnNBcfBXLvb2HX47L4rsu7j7RdU3XSdl4MA,19735
14
+ tecio/cli/teconvert.py,sha256=7R4vvGyM_hvgRVvxZCgnJOM4Yw_5iKSDn1ViHlF5RxY,12008
15
+ tecio/cli/tecscale.py,sha256=3j-BmQiQVy2V36XpZaTXfwwZjopRBRVm5D89c62Es38,13977
16
+ tecio/cli/tecslice.py,sha256=KTMqmfL-NzMr0g7_9eaXqZFVw6_qkpi6ISBrAePSDRM,34775
17
+ tecio/cli/tecstats.py,sha256=kdpYea6RuEcFf775kJQmiG0sjU9pnnDAizmGnl7bDfU,18355
18
+ tecio/dat/__init__.py,sha256=vSSwGS9lE72hnkuX3nAu_tUUp9fwe7uAxgzDicdvBo0,2671
19
+ tecio/dat/_read.py,sha256=SHmxUZcHJ2vl0hqQxvSUrRA5_QCQ_MR-HAC_-j-SdkU,59435
20
+ tecio/dat/_write.py,sha256=RNuRwp8RO4tbHjr1DFRYaNGwRClRiM0uzwxDbgPNaIk,47706
21
+ tecio/plt/__init__.py,sha256=13aEKPaShMzV4_5kyohhsmSqeA5Aur0oF6P0DGispSA,1078
22
+ tecio/plt/_read.py,sha256=una-rHk5XA_TMzBwddj3eLK9uSIGHdiqdOfpTw2uYg4,56790
23
+ tecio/plt/_write.py,sha256=SVMhneFxNZWzxDDyr3BtW7Lc6b7pzVUqFh6d6bDaWGo,46378
24
+ tecio/szl/__init__.py,sha256=03chcSDXZoBZ3j1vygBkgjjuPqJvth2yoWYbnpdqhHw,1406
25
+ tecio/szl/_read.py,sha256=6tdqNTNzEczSazN8sgq0AfPkGBuovib9pk_0H-MdD5c,27935
26
+ tecio/szl/_write.py,sha256=pRtDELr88gRpOiV8jPDLRbXOdy31d1QPwliX3_7j4oI,53596
27
+ tecio_python-0.2.2.dist-info/licenses/LICENSE,sha256=WYmcYJG1QFgu1hfo7qrEkZ3Jhcz8NUWe6XUraZvlIFs,10172
28
+ tecio_python-0.2.2.dist-info/licenses/NOTICE,sha256=bDcDOguk8dYN4FpHJCHuCsDgR2VnP5XlK2C4BzVCtwg,340
29
+ tecio_python-0.2.2.dist-info/METADATA,sha256=pHyrJXiNYJSkpMjSvbCYQdPZuFFh6mWa8tGSNt2MDmQ,5078
30
+ tecio_python-0.2.2.dist-info/WHEEL,sha256=K260EYznzXsJYBQGqmI8VTxEdiZYNvDZwW9cBh9-_MA,91
31
+ tecio_python-0.2.2.dist-info/entry_points.txt,sha256=TH2UnRF700KO0GjeRFwkBBtFKN1PyP2tgrc11OsVNAc,362
32
+ tecio_python-0.2.2.dist-info/top_level.txt,sha256=ayCfhWQNUimgwyaTSyamJ3LbgjloZRWl2vlcZCjYWmQ,6
33
+ tecio_python-0.2.2.dist-info/RECORD,,
@@ -2,8 +2,8 @@ tecio-python
2
2
  Copyright 2025 John Meersman
3
3
 
4
4
  This product requires the Tecplot TecIO library, which is proprietary software
5
- owned by Tecplot, Inc. and is not covered by this license.
6
- Tecplot and TecIO are trademarks of Tecplot, Inc.
5
+ owned by Tecplot, Inc. and is not covered by this license. Tecplot and TecIO
6
+ are trademarks of Tecplot, Inc.
7
7
 
8
8
  The license agreement for the TecIO compiled shared libraries is located at:
9
9
  lib/tecio_license_agreement.txt
@@ -1,33 +0,0 @@
1
- tecio/__init__.py,sha256=aTfvQBQ9YJ1eUw0WDNRSktqx1D2fRTcoWqzvMbMtBLw,918
2
- tecio/_containers.py,sha256=bEW0fu0fiCQnAJNveiaGYbSs1F4lpKOr40ijm5O8UOM,10443
3
- tecio/_io.py,sha256=c6bY6nnlKsKAYP7HFCl66wcyzdnQryJHVNCI1DRB7d0,30566
4
- tecio/_meta.py,sha256=4_88COTceqI7woPNGeXF_KJ9JlEWLg9jmzsYZJDuHzI,7360
5
- tecio/_utils.py,sha256=rPK5w2SxwQQCxRKdwhBDNdl8QTup1HLCCSnC1pzgdRI,8755
6
- tecio/libtecio.py,sha256=lFUx9zeNLC4g3TLUta7-UsP8HLc9SdZf38ztw6Kv9lM,114506
7
- tecio/cli/__init__.py,sha256=lS6d-vlA64CshzmtrRw3YVGqjMedB-ST7rkbm11UVIA,1090
8
- tecio/cli/tec2mat.py,sha256=CypQGKfArMFZg5LkZRpXHQD0PUaKuUSQBqrOLkkxkN8,18178
9
- tecio/cli/tecaux.py,sha256=ZOmmwVYW33c1pJ9gAXnaZedXODF8h-YKqLJI54Mmiu8,25422
10
- tecio/cli/tecdump.py,sha256=Ry3FYSblshgOwjtPfH71536lhKIqjgA1HJqK7zrO4Qo,10949
11
- tecio/cli/tecextract.py,sha256=1bqQi6AkabGawslsqUtdOX0__Sx_dD9pUrNCWCHxSbA,15400
12
- tecio/cli/tecfix.py,sha256=lwin4d5pPN30ZyVvVfBmRLCkSnURwGMAG_Ny7nMF37w,19460
13
- tecio/cli/tecmerge.py,sha256=2O69lWVtp5aDepKQGUIhib-mIAv--Y12AQfem_4nHno,19747
14
- tecio/cli/teconvert.py,sha256=0THQ0KggobElif3am3Nq_Kdhq0pLNSrNBLUikKPTZzk,12011
15
- tecio/cli/tecscale.py,sha256=jjv2GUQ0CeRvgRTWaVKnk4Ot5iZnlXU8VNUgYJXAg8E,13984
16
- tecio/cli/tecslice.py,sha256=_OqRls6HZ_lJ6-COQ9P2G6qVuo0LNBWaLj_pb0UMzTk,34787
17
- tecio/cli/tecstats.py,sha256=NXAInnDvv6UveOHuCjFUw2frlrlNnJDwZ6_DrzizK4E,18359
18
- tecio/dat/__init__.py,sha256=nkjRnmvevjpxX7fj_iCHAxKrzPIrFqLgpnYDwiLRExY,2672
19
- tecio/dat/_read.py,sha256=iMcEcLGBgtGeMOqH5lvFOtsmCWOYRbq-aHXZm8hkApM,59452
20
- tecio/dat/_write.py,sha256=Bs_HSobk7NvbUFoPlLOQrGpB4wEf3uQjxPPCUT253nM,47729
21
- tecio/plt/__init__.py,sha256=13aEKPaShMzV4_5kyohhsmSqeA5Aur0oF6P0DGispSA,1078
22
- tecio/plt/_read.py,sha256=EYpSKostFTwLWUZc0-CkdqPnhvmvI35RHnQVgXGVIh4,56811
23
- tecio/plt/_write.py,sha256=ugXqzuMe-vHOrZjrwZPVz4izXsDc_7KkjDrXZsX3t2o,46413
24
- tecio/szl/__init__.py,sha256=03chcSDXZoBZ3j1vygBkgjjuPqJvth2yoWYbnpdqhHw,1406
25
- tecio/szl/_read.py,sha256=rTbwo2FSbc4T8kEKYMpPgK36zsNfVrUZeuWNvBy9Cok,27938
26
- tecio/szl/_write.py,sha256=nNOQqHlX9jm1xbNVNouWXp6Y9wbD06vLbWfX5gaCNMM,53624
27
- tecio_python-0.2.1.dist-info/licenses/LICENSE,sha256=WYmcYJG1QFgu1hfo7qrEkZ3Jhcz8NUWe6XUraZvlIFs,10172
28
- tecio_python-0.2.1.dist-info/licenses/NOTICE,sha256=94EJ-1hUlQE8JyLtMbaVpmj8EMDjJ1jGr_9OBZQnQ-c,340
29
- tecio_python-0.2.1.dist-info/METADATA,sha256=YKrvqNOrDqDbdlCdeaiB4ICBIro0VEikrWNDzHC0qD0,5078
30
- tecio_python-0.2.1.dist-info/WHEEL,sha256=K260EYznzXsJYBQGqmI8VTxEdiZYNvDZwW9cBh9-_MA,91
31
- tecio_python-0.2.1.dist-info/entry_points.txt,sha256=TH2UnRF700KO0GjeRFwkBBtFKN1PyP2tgrc11OsVNAc,362
32
- tecio_python-0.2.1.dist-info/top_level.txt,sha256=ayCfhWQNUimgwyaTSyamJ3LbgjloZRWl2vlcZCjYWmQ,6
33
- tecio_python-0.2.1.dist-info/RECORD,,