Agent skill

add_type

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

Stars 163
Forks 31

Install this agent skill to your Project

npx add-skill https://github.com/majiayu000/claude-skill-registry/tree/main/skills/data/add-type

SKILL.md

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:
    python
    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__) 時に次元を落とさないことが推奨されます。整数インデックス islice(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.

Didn't find tool you were looking for?

Be as detailed as possible for better results