Rechercher

PythonReactSEOPDF
GitHub Skill

add-type

gwexpyに新しい配列型(Array/Series/Field)とコレクションを実装する

tatsuki-washimi☆ 0 Étoiles du dépôt0 Forks du dépôt

Installation

Suivez les instructions du dépôt pour votre agent. Consultez les fichiers et dépendances avant l’installation.

Voir la source ↗Guides

Instructions

Implement GWExPy Type

This skill guides the implementation of new array/field types in gwexpy, ensuring consistency with the existing class hierarchy, metadata management, and documentation standards.

Workflow

1. Survey & Plan
  • Identify Base Class: Inherit from gwexpy.types.Array, Array2D, or similar.
  • Metadata: Determine new metadata slots needed (e.g., _axis0_name, _unit).
  • Behavior: Define slicing behavior (does it drop dimensions or maintain them?), arithmetic rules, and domain logic (FFT, etc.).
2. Implementation: Core Class
  • File: Create gwexpy/types/yourtype.py.
  • Class Definition:
    class YourType(BaseArray):
        _metadata_slots = BaseArray._metadata_slots + ("_new_slot",)
    
  • __new__:
    • Validate input structure (ndim, etc.).
    • Initialize metadata slots (handling defaults).
    • Call super().__new__.
  • __array_finalize__:
    • Handle 3 creation scenarios: obj is None (explicit new), obj is subclass (view casting), obj is different type (copy/slice).
    • Copy metadata from obj to self.
  • Metadata-Preserving Indexing: Field4D 等の多次元クラスでは、インデックス操作 (__getitem__) 時に次元を落とさないことが推奨されます。整数インデックス i を slice(i, i+1) に変換して処理することで、軸の数とメタデータ(軸名称や単位)を一貫して維持できます。詳細は manage_field_metadata スキルを参照してください。
  • Transpose/Swapaxes:
    • Override to update axis-dependent metadata if applicable.
3. Implementation: Collections
  • File: gwexpy/types/yourtype_collections.py (or inside the same file if small).
  • List Class: Inherit list. Add batch methods (e.g., process_all).
  • Dict Class: Inherit dict. Add batch methods.
4. Integration
  • Export: Add the new classes to gwexpy/types/__init__.py.
  • Docs:
    • Create docs/reference/en/YourType.md and docs/reference/ja/YourType.md.
    • Add to docs/reference/{en,ja}/index.rst.
5. Testing
  • Location: tests/types/test_yourtype.py.
  • Coverage:
    • Construction (from array, from list, with units).
    • Metadata persistence.
    • Slicing behavior (key feature).
    • Arithmetic operations.
    • Collection behavior.

Key Considerations

  • Quantity Compatibility: gwexpy types are often subclasses of astropy.units.Quantity. Ensure unit handling works.
  • Axis Management: If managing axes, use AxisApiMixin or look at Array3D/Array4D for how to sync separate axis properties with the array shape.
  • Documentation: Always provide both English and Japanese API references.

Exemples

Consultez les exemples du dépôt source.

Voir la source ↗

Historique source

Date d’indexation
2026-01-20
Mise à jour de l’index
2026-01-26
Branch
main

Les dates concernent ce répertoire. Consultez le dépôt pour l’historique du code.

GitHub ↗

chat Comments (0)

chat_bubble_outline

No comments yet. Be the first to share your thoughts!