[tool.isort]

py_version = 37
line_length = 120
group_by_package = true

# Files to skip
skip_glob = ["docs/*", "logs/*", "_isaac_sim/*", ".vscode/*"]

# Order of imports
sections = [
    "FUTURE",
    "STDLIB",
    "THIRDPARTY",
    "ASSETS_FIRSTPARTY",
    "FIRSTPARTY",
    "EXTRA_FIRSTPARTY",
    "LOCALFOLDER",
]

# Extra standard libraries considered as part of python (permissive licenses
extra_standard_library = [
    "numpy",
    "h5py",
    "open3d",
    "torch",
    "bpy",
    "matplotlib",
    "gym",
    "scipy",
    "hid",
    "yaml",
    "prettytable",
]
# Imports from Isaac Sim and Omniverse
known_third_party = [
    "omni.isaac.core",
    "omni.replicator.isaac",
    "omni.replicator.core",
    "pxr",
    "omni.kit.*",
    "warp",
    "carb",
]
# Imports from this repository
known_first_party = "omni.isaac.orbit"
known_assets_firstparty = "omni.isaac.assets"
known_extra_firstparty = [
    "omni.isaac.contrib_envs",
    "omni.isaac.orbit_envs"
]
# Imports from the local folder
known_local_folder = "config"

[tool.pyright]

include = ["source/extensions", "source/standalone"]
exclude = [
    "**/__pycache__",
    "**/_isaac_sim",
    "**/docs",
    "**/logs",
    ".git",
    ".vscode",
]

typeCheckingMode = "basic"
pythonVersion = "3.7"
pythonPlatform = "Linux"
enableTypeIgnoreComments = true

# This is required as the CI pre-commit does not download the module (i.e. numpy, torch, prettytable)
# Therefore, we have to ignore missing imports
reportMissingImports = "none"
# This is required to ignore for type checks of modules with stubs missing.
reportMissingModuleSource = "none" # -> most common: prettytable in mdp managers

reportGeneralTypeIssues = "none"       # -> raises 218 errors (usage of literal MISSING in dataclasses)
reportOptionalMemberAccess = "warning" # -> raises 8 errors
reportPrivateUsage = "warning"
