Skip to content

Dependency improvement completion report

[!NOTE] For the latest implementation status, please refer to Functional Implementation Status (Remaining Functionality).

Fixes made

1. ✅ Fixed syntax errors

File: perceptual_features.py

Problem: Invalid </content> tag on line 184```python

Before (syntax error)

)</content>

...

After (fixed)

)

```

2. ✅ Strengthen your CI/CD pipeline

File: ci.yml Additional Content: Perform circular dependency check after unit testyaml - name: Check circular dependencies run: | python scripts/analyze_dependencies.py continue-on-error: false

Effect: - Automatically detect circular dependencies when running CI - Build fails if circular dependencies are found

3. ✅ Interface integration

File: interfaces.py

Changes: - Clarified migration path from existing interfaces.py to new base/ module - Re-export new interfaces while maintaining backward compatibility - Added Deprecation notification

# NOTE: This module is being deprecated in favor of evospikenet.base
# For new code, please use:
#   from evospikenet.base import (
#       NeuronLayerProtocol, EncoderProtocol, ...
#   )

4. ✅ Improved package initialization

File: __init__.py

Additional Content: Import base module first```python

Base interfaces and protocols (no heavy dependencies)

from . import base from .base import ( # Protocols NeuronLayerProtocol, EncoderProtocol, # Base Classes BaseNeuronLayer, BaseEncoder, # Types SpikeTensor, WeightTensor, ... )

**Advantages**:
- Minimize the risk of circular dependencies (base has no dependencies)
- Type hints and interfaces available for all modules
- Improved IDE completion and refactoring support

### 5. ✅ models.py refactoring suggestion
**File**: docs/MODELS_REFACTORING_PROPOSAL.md

**Proposal details**:
1. **Module division**: models.py → models/subpackage
2. **Factory pattern**: Centralized management with ModelRegistry
3. **Dependency Injection**: Removed direct import of concrete classes
4. **Gradual transition**: Implemented in 4 phases

**Expected effect**:
- Dependencies: 9 dependencies → reduced to 2-3 dependencies
- Significantly improved maintainability and testability

### 6. ✅ Add Pre-commit hook
**File**: `pre-commit-deps`

**Feature**: Automatically check for circular dependencies before commit

**set up**:```bash
# Placed as .git/hooks/pre-commit
ln -s ../../scripts/pre-commit-deps .git/hooks/pre-commit

Summary of improvement results

Item Before improvement After improvement Status
Circular dependence number 0 0 ✅ Maintain
Syntax error 1 item 0 item ✅ Solved
CI dependency check None Yes ✅ Add
Interface layer Incomplete Complete ✅ Established
models.py dependent number 9 9* ⏳ Proposed

*Refactoring of models.py is at proposal stage

Overall picture of architecture improvement

依存関係の階層構造:

Level 0 (依存なし)
└── evospikenet/base/
    ├── protocols.py    # Protocol definition
    ├── base_classes.py # abstract base class
    └── types.py        # type alias

Level 1 (baseのみに依存)
└── evospikenet/core/
    ├── neurons.py
    ├── synapses.py
    └── ...

Level 2 (base + coreに依存)
└── evospikenet/
    ├── encoding/
    ├── attention/
    ├── plasticity/
    └── ...

Level 3 (すべてに依存可)
└── evospikenet/
    ├── models/    # ← Refactor target
    └── services/

Next steps

  • [x] Syntax error correction
  • [x] CI/CD integration
  • [x] Interface integration
  • [ ] Pre-commit hook setup
  • [ ] Dependency visualization image generation (graphviz installation required)

Mid-term (next 1-2 weeks)

  • [ ] models/Execution of subpackaging
  • [ ] Introduction of factory pattern
  • [ ] Update existing tests

Long term (next month)

  • [ ] Transition to base class inheritance for all modules
  • [ ] Applying the complete dependency injection pattern
  • [ ] Expansion of architecture documentation

quality assurance

Automatic check

  • ✅ Automatically detect circular dependencies with CI/CD
  • ✅ Only supports Python 3.10+ (fully supports type hints)
  • ✅ Strict type checking with mypy

Manual confirmation```bash

Dependency analysis

python scripts/analyze_dependencies.py

Visualization (graphviz required)

dot -Tpng artifacts/dependencies.dot -o artifacts/dependencies.png

pre-commit test

./scripts/pre-commit-deps ```

Reference documents

  • docs/DEPENDENCY_ARCHITECTURE.md - Overview of dependency architecture
  • docs/MODELS_REFACTORING_PROPOSAL.md - models.py refactoring suggestions
  • dependency_analysis.json - Detailed dependency data
  • evospikenet/base/ - New interface layer

Implementation date: January 10, 2026 Status: ✅ Completed (excluding models.py refactoring)