diff --git a/src/primaite/config/__init__.py b/src/primaite/config/__init__.py index 7b5e2889..ee28e158 100644 --- a/src/primaite/config/__init__.py +++ b/src/primaite/config/__init__.py @@ -1,2 +1,2 @@ # © Crown-owned copyright 2025, Defence Science and Technology Laboratory UK -"""Configuration parameters for running experiments.""" +"""A collection of example configuration files.""" diff --git a/src/primaite/config/load.py b/src/primaite/config/load.py index 3553f527..67035e49 100644 --- a/src/primaite/config/load.py +++ b/src/primaite/config/load.py @@ -1,4 +1,5 @@ # © Crown-owned copyright 2025, Defence Science and Technology Laboratory UK +"""Convenience methods for finding filepaths to default PrimAITE configs.""" from pathlib import Path from typing import Dict, Final, Union diff --git a/src/primaite/exceptions.py b/src/primaite/exceptions.py index 4487111d..abadce77 100644 --- a/src/primaite/exceptions.py +++ b/src/primaite/exceptions.py @@ -1,4 +1,5 @@ # © Crown-owned copyright 2025, Defence Science and Technology Laboratory UK +"""PrimAITE-specific exceptions.""" class PrimaiteError(Exception): """The root PrimAITE Error.""" diff --git a/src/primaite/game/agent/__init__.py b/src/primaite/game/agent/__init__.py index c005c173..a23f740f 100644 --- a/src/primaite/game/agent/__init__.py +++ b/src/primaite/game/agent/__init__.py @@ -1,4 +1,5 @@ # © Crown-owned copyright 2025, Defence Science and Technology Laboratory UK +"""Agents that act in the environment, including RL and scripted agents, their actions, observations, and rewards.""" from primaite.game.agent.interface import ProxyAgent from primaite.game.agent.scripted_agents.data_manipulation_bot import DataManipulationAgent from primaite.game.agent.scripted_agents.probabilistic_agent import ProbabilisticAgent diff --git a/src/primaite/game/agent/actions/__init__.py b/src/primaite/game/agent/actions/__init__.py index 8517ded8..75d8a982 100644 --- a/src/primaite/game/agent/actions/__init__.py +++ b/src/primaite/game/agent/actions/__init__.py @@ -1,5 +1,5 @@ # © Crown-owned copyright 2025, Defence Science and Technology Laboratory UK - +"""Actions convert CAOS data into the request format for the PrimAITE simulation.""" from primaite.game.agent.actions import ( abstract, acl, diff --git a/src/primaite/game/agent/actions/abstract.py b/src/primaite/game/agent/actions/abstract.py index 1c039ed3..305226f0 100644 --- a/src/primaite/game/agent/actions/abstract.py +++ b/src/primaite/game/agent/actions/abstract.py @@ -1,4 +1,5 @@ # © Crown-owned copyright 2025, Defence Science and Technology Laboratory UK +"""Action base class.""" from __future__ import annotations from abc import ABC diff --git a/src/primaite/game/agent/actions/acl.py b/src/primaite/game/agent/actions/acl.py index fb59574d..0976783f 100644 --- a/src/primaite/game/agent/actions/acl.py +++ b/src/primaite/game/agent/actions/acl.py @@ -1,4 +1,5 @@ # © Crown-owned copyright 2025, Defence Science and Technology Laboratory UK +"""Actions for manipulating Access Control Lists (ACLs).""" from __future__ import annotations from abc import ABC diff --git a/src/primaite/game/agent/actions/application.py b/src/primaite/game/agent/actions/application.py index 9651b600..913b9b70 100644 --- a/src/primaite/game/agent/actions/application.py +++ b/src/primaite/game/agent/actions/application.py @@ -1,4 +1,5 @@ # © Crown-owned copyright 2025, Defence Science and Technology Laboratory UK +"""Actions for interacting with applications on network hosts.""" from abc import ABC from typing import ClassVar diff --git a/src/primaite/game/agent/actions/file.py b/src/primaite/game/agent/actions/file.py index a2fcd3e2..b06e5720 100644 --- a/src/primaite/game/agent/actions/file.py +++ b/src/primaite/game/agent/actions/file.py @@ -1,4 +1,5 @@ # © Crown-owned copyright 2025, Defence Science and Technology Laboratory UK +"""Actions for interacting with the files on network hosts.""" from abc import ABC from typing import ClassVar diff --git a/src/primaite/game/agent/actions/folder.py b/src/primaite/game/agent/actions/folder.py index 80be0cd5..f98fa080 100644 --- a/src/primaite/game/agent/actions/folder.py +++ b/src/primaite/game/agent/actions/folder.py @@ -1,4 +1,5 @@ # © Crown-owned copyright 2025, Defence Science and Technology Laboratory UK +"""Actions for interacting with folders on network hosts.""" from abc import ABC from typing import ClassVar diff --git a/src/primaite/game/agent/actions/host_nic.py b/src/primaite/game/agent/actions/host_nic.py index d192a757..10ab5721 100644 --- a/src/primaite/game/agent/actions/host_nic.py +++ b/src/primaite/game/agent/actions/host_nic.py @@ -1,4 +1,5 @@ # © Crown-owned copyright 2025, Defence Science and Technology Laboratory UK +"""Actions for interacting with network interfact cards (NICs) on network hosts.""" from abc import ABC from typing import ClassVar diff --git a/src/primaite/game/agent/actions/manager.py b/src/primaite/game/agent/actions/manager.py index 0a9d3ffd..efc3f9f6 100644 --- a/src/primaite/game/agent/actions/manager.py +++ b/src/primaite/game/agent/actions/manager.py @@ -1,15 +1,5 @@ # © Crown-owned copyright 2025, Defence Science and Technology Laboratory UK -"""yaml example. - -agents: - - name: agent_1 - action_space: - actions: - - do-nothing - - node-service-start - - node-service-stop - action_map: -""" +"""Validate and keep track of an agent's action set.""" from __future__ import annotations diff --git a/src/primaite/game/agent/actions/network.py b/src/primaite/game/agent/actions/network.py index 22fc2c2d..6ddb4e91 100644 --- a/src/primaite/game/agent/actions/network.py +++ b/src/primaite/game/agent/actions/network.py @@ -1,5 +1,5 @@ # © Crown-owned copyright 2025, Defence Science and Technology Laboratory UK - +"""Actions for interacting with network ports of routers, switches, and firewalls.""" from abc import ABC from typing import ClassVar diff --git a/src/primaite/game/agent/actions/node.py b/src/primaite/game/agent/actions/node.py index 5b62957a..e2140e8b 100644 --- a/src/primaite/game/agent/actions/node.py +++ b/src/primaite/game/agent/actions/node.py @@ -1,4 +1,5 @@ # © Crown-owned copyright 2025, Defence Science and Technology Laboratory UK +"""Actions for interacting with nodes on the network.""" from abc import ABC, abstractmethod from typing import ClassVar, List, Literal, Optional, Union diff --git a/src/primaite/game/agent/actions/service.py b/src/primaite/game/agent/actions/service.py index dfe1f91d..41f6fe3e 100644 --- a/src/primaite/game/agent/actions/service.py +++ b/src/primaite/game/agent/actions/service.py @@ -1,4 +1,5 @@ # © Crown-owned copyright 2025, Defence Science and Technology Laboratory UK +"""Actions for interacting with services on network hosts.""" from abc import ABC from typing import ClassVar diff --git a/src/primaite/game/agent/actions/session.py b/src/primaite/game/agent/actions/session.py index 63a45c5e..e1c585e8 100644 --- a/src/primaite/game/agent/actions/session.py +++ b/src/primaite/game/agent/actions/session.py @@ -1,4 +1,5 @@ # © Crown-owned copyright 2025, Defence Science and Technology Laboratory UK +"""Actions for performing login and logout on local and remote hosts.""" from abc import ABC, abstractmethod from primaite.game.agent.actions.manager import AbstractAction diff --git a/src/primaite/game/agent/actions/software.py b/src/primaite/game/agent/actions/software.py index f170146b..dd7d0570 100644 --- a/src/primaite/game/agent/actions/software.py +++ b/src/primaite/game/agent/actions/software.py @@ -1,5 +1,5 @@ # © Crown-owned copyright 2025, Defence Science and Technology Laboratory UK - +"""Actions for configuring software on network hosts.""" from typing import List, Optional, Union from pydantic import ConfigDict, Field diff --git a/src/primaite/game/agent/agent_log.py b/src/primaite/game/agent/agent_log.py index ddf14489..6300eb14 100644 --- a/src/primaite/game/agent/agent_log.py +++ b/src/primaite/game/agent/agent_log.py @@ -1,4 +1,5 @@ # © Crown-owned copyright 2025, Defence Science and Technology Laboratory UK +"""Optional logger for internal agent decisions and debugging.""" import logging from pathlib import Path from typing import Optional diff --git a/src/primaite/game/agent/observations/__init__.py b/src/primaite/game/agent/observations/__init__.py index a38095b3..6c3307a9 100644 --- a/src/primaite/game/agent/observations/__init__.py +++ b/src/primaite/game/agent/observations/__init__.py @@ -1,6 +1,7 @@ # © Crown-owned copyright 2025, Defence Science and Technology Laboratory UK # flake8: noqa # Pre-import all the observations when we load up the observations module so that they can be resolved by the parser. +"""Converts PrimAITE simulation data into numerical RL-ready observations.""" from primaite.game.agent.observations.acl_observation import ACLObservation from primaite.game.agent.observations.file_system_observations import FileObservation, FolderObservation from primaite.game.agent.observations.firewall_observation import FirewallObservation diff --git a/src/primaite/game/agent/scripted_agents/__init__.py b/src/primaite/game/agent/scripted_agents/__init__.py index 90a99d01..10fecf99 100644 --- a/src/primaite/game/agent/scripted_agents/__init__.py +++ b/src/primaite/game/agent/scripted_agents/__init__.py @@ -1,5 +1,5 @@ # © Crown-owned copyright 2025, Defence Science and Technology Laboratory UK - +"""Agents that automatically choose their behaviour according to scripted rules.""" from primaite.game.agent import interface from primaite.game.agent.scripted_agents import ( abstract_tap, diff --git a/src/primaite/game/agent/utils.py b/src/primaite/game/agent/utils.py index 87b02858..6a5ff949 100644 --- a/src/primaite/game/agent/utils.py +++ b/src/primaite/game/agent/utils.py @@ -1,4 +1,5 @@ # © Crown-owned copyright 2025, Defence Science and Technology Laboratory UK +"""Utility functions used in the PrimAITE game layer.""" from typing import Any, Dict, Hashable, Optional, Sequence NOT_PRESENT_IN_STATE = object() diff --git a/src/primaite/game/science.py b/src/primaite/game/science.py index 2cb5de7d..e72c0752 100644 --- a/src/primaite/game/science.py +++ b/src/primaite/game/science.py @@ -1,4 +1,5 @@ # © Crown-owned copyright 2025, Defence Science and Technology Laboratory UK +"""Mathematical methods used in PrimAITE.""" from random import random from typing import Any, Iterable, Mapping diff --git a/src/primaite/interface/__init__.py b/src/primaite/interface/__init__.py index 836b79af..b75c48d1 100644 --- a/src/primaite/interface/__init__.py +++ b/src/primaite/interface/__init__.py @@ -1 +1,2 @@ # © Crown-owned copyright 2025, Defence Science and Technology Laboratory UK +"""The interface between the simulation and game layers of PrimAITE.""" \ No newline at end of file diff --git a/src/primaite/session/__init__.py b/src/primaite/session/__init__.py index 836b79af..06eeeb4e 100644 --- a/src/primaite/session/__init__.py +++ b/src/primaite/session/__init__.py @@ -1 +1,2 @@ # © Crown-owned copyright 2025, Defence Science and Technology Laboratory UK +"""Gymnasium and other RL environments for interfacing PrimAITE with RL models.""" \ No newline at end of file diff --git a/src/primaite/session/environment.py b/src/primaite/session/environment.py index fa545dbc..e05c65ab 100644 --- a/src/primaite/session/environment.py +++ b/src/primaite/session/environment.py @@ -1,4 +1,5 @@ # © Crown-owned copyright 2025, Defence Science and Technology Laboratory UK +"""Main Gymnasium entrypoint for RL agents into PrimAITE.""" import json import random import sys diff --git a/src/primaite/session/episode_schedule.py b/src/primaite/session/episode_schedule.py index 126dcf9f..82bc2eac 100644 --- a/src/primaite/session/episode_schedule.py +++ b/src/primaite/session/episode_schedule.py @@ -1,4 +1,5 @@ # © Crown-owned copyright 2025, Defence Science and Technology Laboratory UK +"""Strategies for selecting the game configuration between different episodes of a session.""" import copy from abc import ABC, abstractmethod from itertools import chain diff --git a/src/primaite/session/io.py b/src/primaite/session/io.py index 6c2f4f29..2c40a323 100644 --- a/src/primaite/session/io.py +++ b/src/primaite/session/io.py @@ -1,4 +1,5 @@ # © Crown-owned copyright 2025, Defence Science and Technology Laboratory UK +"""Utilities for reading settings and writing of log files.""" import json from datetime import datetime from pathlib import Path diff --git a/src/primaite/session/ray_envs.py b/src/primaite/session/ray_envs.py index 16c85cb3..69bcd3f4 100644 --- a/src/primaite/session/ray_envs.py +++ b/src/primaite/session/ray_envs.py @@ -1,4 +1,5 @@ # © Crown-owned copyright 2025, Defence Science and Technology Laboratory UK +"""Entrypoint for Ray RLLib single- and multi-agent environments.""" import json from typing import Dict, SupportsFloat, Tuple diff --git a/src/primaite/setup/reset_demo_notebooks.py b/src/primaite/setup/reset_demo_notebooks.py index ad4091e3..752106ef 100644 --- a/src/primaite/setup/reset_demo_notebooks.py +++ b/src/primaite/setup/reset_demo_notebooks.py @@ -1,4 +1,5 @@ # © Crown-owned copyright 2025, Defence Science and Technology Laboratory UK +"""Clear the user data directory of example notebooks and copy fresh copies in.""" import filecmp import shutil from logging import Logger diff --git a/src/primaite/setup/reset_example_configs.py b/src/primaite/setup/reset_example_configs.py index a94d6d4a..59dcd148 100644 --- a/src/primaite/setup/reset_example_configs.py +++ b/src/primaite/setup/reset_example_configs.py @@ -1,4 +1,5 @@ # © Crown-owned copyright 2025, Defence Science and Technology Laboratory UK +"""Clear user data folder of example config files and put fresh copies in.""" import filecmp import os import shutil diff --git a/src/primaite/simulator/__init__.py b/src/primaite/simulator/__init__.py index e85a2d1e..701d3757 100644 --- a/src/primaite/simulator/__init__.py +++ b/src/primaite/simulator/__init__.py @@ -1,5 +1,5 @@ # © Crown-owned copyright 2025, Defence Science and Technology Laboratory UK -"""Warning: SIM_OUTPUT is a mutable global variable for the simulation output directory.""" +"""The PrimAITE simulation layer.""" from datetime import datetime from enum import IntEnum from pathlib import Path diff --git a/src/primaite/simulator/core.py b/src/primaite/simulator/core.py index 750372b3..26ca215d 100644 --- a/src/primaite/simulator/core.py +++ b/src/primaite/simulator/core.py @@ -1,6 +1,6 @@ # © Crown-owned copyright 2025, Defence Science and Technology Laboratory UK # flake8: noqa -"""Core of the PrimAITE Simulator.""" +"""Baseclasses for the PrimAITE Simulator.""" import warnings from abc import abstractmethod from typing import Callable, Dict, Iterable, List, Literal, Optional, Tuple, Union diff --git a/src/primaite/simulator/domain/__init__.py b/src/primaite/simulator/domain/__init__.py index 836b79af..590f6b00 100644 --- a/src/primaite/simulator/domain/__init__.py +++ b/src/primaite/simulator/domain/__init__.py @@ -1 +1,2 @@ # © Crown-owned copyright 2025, Defence Science and Technology Laboratory UK +"""Currently not used.""" \ No newline at end of file diff --git a/src/primaite/simulator/file_system/__init__.py b/src/primaite/simulator/file_system/__init__.py index 836b79af..b7e884b3 100644 --- a/src/primaite/simulator/file_system/__init__.py +++ b/src/primaite/simulator/file_system/__init__.py @@ -1 +1,2 @@ # © Crown-owned copyright 2025, Defence Science and Technology Laboratory UK +"""File system for nodes.""" \ No newline at end of file diff --git a/src/primaite/simulator/file_system/file.py b/src/primaite/simulator/file_system/file.py index 58607bf6..22dee206 100644 --- a/src/primaite/simulator/file_system/file.py +++ b/src/primaite/simulator/file_system/file.py @@ -1,4 +1,5 @@ # © Crown-owned copyright 2025, Defence Science and Technology Laboratory UK +"""Simulation of a file on a computer file system.""" from __future__ import annotations import hashlib diff --git a/src/primaite/simulator/file_system/file_system.py b/src/primaite/simulator/file_system/file_system.py index 54e649f2..2b647ca4 100644 --- a/src/primaite/simulator/file_system/file_system.py +++ b/src/primaite/simulator/file_system/file_system.py @@ -1,4 +1,5 @@ # © Crown-owned copyright 2025, Defence Science and Technology Laboratory UK +"""Computer file system.""" from __future__ import annotations from pathlib import Path diff --git a/src/primaite/simulator/file_system/folder.py b/src/primaite/simulator/file_system/folder.py index 5b9a6931..4586ccc8 100644 --- a/src/primaite/simulator/file_system/folder.py +++ b/src/primaite/simulator/file_system/folder.py @@ -1,4 +1,5 @@ # © Crown-owned copyright 2025, Defence Science and Technology Laboratory UK +"""Simulation of a folder on a computer file system.""" from __future__ import annotations import warnings diff --git a/src/primaite/simulator/network/__init__.py b/src/primaite/simulator/network/__init__.py index 836b79af..872314aa 100644 --- a/src/primaite/simulator/network/__init__.py +++ b/src/primaite/simulator/network/__init__.py @@ -1 +1,2 @@ # © Crown-owned copyright 2025, Defence Science and Technology Laboratory UK +"""Top-level network object.""" \ No newline at end of file diff --git a/src/primaite/simulator/sim_container.py b/src/primaite/simulator/sim_container.py index abc83203..09a35a3c 100644 --- a/src/primaite/simulator/sim_container.py +++ b/src/primaite/simulator/sim_container.py @@ -1,4 +1,5 @@ # © Crown-owned copyright 2025, Defence Science and Technology Laboratory UK +"""Top-level simulation object that holds references to all child simulation components.""" from typing import Dict from primaite.interface.request import RequestResponse diff --git a/src/primaite/simulator/system/__init__.py b/src/primaite/simulator/system/__init__.py index 836b79af..b6c77b1c 100644 --- a/src/primaite/simulator/system/__init__.py +++ b/src/primaite/simulator/system/__init__.py @@ -1 +1,2 @@ # © Crown-owned copyright 2025, Defence Science and Technology Laboratory UK +"""Software and system on nodes.""" \ No newline at end of file diff --git a/src/primaite/simulator/system/applications/__init__.py b/src/primaite/simulator/system/applications/__init__.py index 836b79af..cc081d0b 100644 --- a/src/primaite/simulator/system/applications/__init__.py +++ b/src/primaite/simulator/system/applications/__init__.py @@ -1 +1,2 @@ # © Crown-owned copyright 2025, Defence Science and Technology Laboratory UK +"""Software applications.""" \ No newline at end of file diff --git a/src/primaite/simulator/system/processes/__init__.py b/src/primaite/simulator/system/processes/__init__.py index 836b79af..b1491199 100644 --- a/src/primaite/simulator/system/processes/__init__.py +++ b/src/primaite/simulator/system/processes/__init__.py @@ -1 +1,2 @@ # © Crown-owned copyright 2025, Defence Science and Technology Laboratory UK +"""Software processes. Not yet implemented.""" \ No newline at end of file diff --git a/src/primaite/simulator/system/services/__init__.py b/src/primaite/simulator/system/services/__init__.py index 836b79af..7ae97aee 100644 --- a/src/primaite/simulator/system/services/__init__.py +++ b/src/primaite/simulator/system/services/__init__.py @@ -1 +1,2 @@ # © Crown-owned copyright 2025, Defence Science and Technology Laboratory UK +"""Software services.""" \ No newline at end of file diff --git a/src/primaite/simulator/system/software.py b/src/primaite/simulator/system/software.py index 86b57818..1fb30f2a 100644 --- a/src/primaite/simulator/system/software.py +++ b/src/primaite/simulator/system/software.py @@ -1,4 +1,5 @@ # © Crown-owned copyright 2025, Defence Science and Technology Laboratory UK +"""Base class for system software.""" import copy from abc import ABC, abstractmethod from datetime import datetime