self = def test_wyckoff_stops_at_minus_1_5pct_fixed_no_atr(self): > job, check = _job_and_checker(source="wyckoff_spring", entry_price=10.0) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ tests/services/test_wyckoff_stop_and_profit_lock.py:34: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tests/services/test_wyckoff_stop_and_profit_lock.py:19: in _job_and_checker from rtrader.services.channel_scalp_service import ( rtrader/services/channel_scalp_service.py:3253: in _ensure_ray_task() _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def _ensure_ray_task(): global _ray_evaluate_symbol if _ray_evaluate_symbol is not None: return import ray > @ray.remote(num_cpus=1, max_retries=2, retry_exceptions=True) ^^^^^^^^^^ E AttributeError: module 'ray' has no attribute 'remote' rtrader/services/channel_scalp_service.py:3223: AttributeError