Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
107 changes: 107 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -158,3 +158,110 @@ cython_debug/
# and can be added to the global gitignore or merged into this file. For a more nuclear
# option (not recommended) you can uncomment the following to ignore the entire idea folder.
#.idea/

# Claude settings
.claude/*

# Additional testing artifacts
pytest_cache/
.pytest_cache/
htmlcov/
.coverage
.coverage.*
coverage.xml
*.cover
.hypothesis/

# Virtual environments
.venv/
venv/
ENV/
env/

# IDE specific files
.vscode/
.idea/
*.swp
*.swo
*~
.DS_Store

# Build artifacts
build/
dist/
*.egg-info/
*.egg
.eggs/
wheels/
*.whl

# Temporary files
*.tmp
*.temp
.tmp/
.temp/

# Log files
*.log
logs/

# Package manager files
# Note: poetry.lock should NOT be ignored for applications
# poetry.lock is tracked in version control
node_modules/
package-lock.json
yarn.lock

# OS specific
Thumbs.db
.DS_Store
desktop.ini

# Python specific
*.pyc
*.pyo
*.pyd
__pycache__/
.Python

# Jupyter
.ipynb_checkpoints/
*.ipynb_checkpoints

# Documentation build
docs/_build/
docs/_static/
docs/_templates/

# Data and model files
*.h5
*.hdf5
*.pkl
*.pickle
*.npy
*.npz
*.pth
*.pt
*.ckpt
checkpoints/
models/
data/

# Wandb
wandb/
.wandb/

# Tensorboard
runs/
tb_logs/
tensorboard/

# Environment variables
.env
.env.local
.env.*.local

# Profiling
*.prof
*.lprof
.prof/
6,033 changes: 6,033 additions & 0 deletions poetry.lock

Large diffs are not rendered by default.

193 changes: 193 additions & 0 deletions pyproject.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,193 @@
[tool.poetry]
name = "videomamba"
version = "0.1.0"
description = "VideoMamba: State Space Model for Efficient Video Understanding"
authors = ["VideoMamba Team"]
readme = "README.md"
license = "MIT"
repository = "https://github.com/OpenGVLab/VideoMamba"
keywords = ["video understanding", "state space models", "mamba", "computer vision"]
classifiers = [
"Development Status :: 4 - Beta",
"Intended Audience :: Science/Research",
"License :: OSI Approved :: MIT License",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3.8",
"Programming Language :: Python :: 3.9",
"Programming Language :: Python :: 3.10",
"Programming Language :: Python :: 3.11",
"Topic :: Scientific/Engineering :: Artificial Intelligence",
]
packages = [
{ include = "videomamba" },
{ include = "mamba/mamba_ssm" },
{ include = "causal-conv1d/causal_conv1d" }
]

[tool.poetry.dependencies]
python = "^3.9"
# apex = "0.1" # NVIDIA apex needs to be installed separately from source
av = "11.0.0"
# decord = "0.6.0" # Optional - video decoding library
deepspeed = "0.13.1"
einops = "0.7.0"
ftfy = "6.1.3"
fvcore = "^0.1.5"
imageio = "2.33.1"
lm-eval = "0.4.1"
numpy = "1.26.4"
omegaconf = "2.3.0"
opencv-python = "4.8.1.78"
packaging = "24.0"
pandas = "2.2.1"
pillow = "10.1.0"
pyyaml = "6.0.1"
regex = "2023.10.3"
requests = "2.31.0"
scipy = "1.12.0"
setuptools = "68.2.2"
scikit-image = "^0.22.0"
submitit = "1.5.1"
tensorboardX = "2.6.2.2"
tensorflow = "2.16.1"
termcolor = "2.4.0"
timm = "0.4.12"
tqdm = "4.66.1"
transformers = "4.36.1"
wandb = "0.16.2"
wheel = "0.42.0"
# xformers = "0.0.24" # Optional - requires CUDA compilation

[tool.poetry.group.dev.dependencies]
pytest = "^8.1.1"
pytest-cov = "^5.0.0"
pytest-mock = "^3.14.0"
pytest-xdist = "^3.6.1"
pytest-timeout = "^2.3.1"
black = "^24.3.0"
isort = "^5.13.2"
flake8 = "^7.0.0"
mypy = "^1.9.0"
pre-commit = "^3.7.0"
tomli = {version = "^2.0.1", python = "<3.11"}

[tool.poetry.scripts]
test = "pytest:main"
tests = "pytest:main"

[build-system]
requires = ["poetry-core>=1.0.0"]
build-backend = "poetry.core.masonry.api"

[tool.pytest.ini_options]
minversion = "8.0"
testpaths = ["tests"]
python_files = ["test_*.py", "*_test.py"]
python_classes = ["Test*"]
python_functions = ["test_*"]
addopts = [
"-ra",
"--strict-markers",
"--strict-config",
"--cov=videomamba",
"--cov-branch",
"--cov-report=term-missing:skip-covered",
"--cov-report=html:htmlcov",
"--cov-report=xml:coverage.xml",
"--cov-fail-under=0",
"--tb=short",
"--maxfail=3",
"-v",
]
markers = [
"unit: Unit tests",
"integration: Integration tests",
"slow: Slow tests that should be run less frequently",
"gpu: Tests that require GPU",
]
filterwarnings = [
"error",
"ignore::UserWarning",
"ignore::DeprecationWarning",
]

[tool.coverage.run]
source = ["videomamba"]
branch = true
parallel = true
omit = [
"*/tests/*",
"*/test_*.py",
"*/__pycache__/*",
"*/migrations/*",
"*/venv/*",
"*/env/*",
"*/setup.py",
"*/conftest.py",
]

[tool.coverage.report]
exclude_lines = [
"pragma: no cover",
"def __repr__",
"if self.debug:",
"if settings.DEBUG",
"raise AssertionError",
"raise NotImplementedError",
"if 0:",
"if __name__ == .__main__.:",
"if TYPE_CHECKING:",
"class .*\\bProtocol\\):",
"@(abc\\.)?abstractmethod",
]
precision = 2
show_missing = true
skip_covered = false
sort = "Cover"

[tool.coverage.html]
directory = "htmlcov"

[tool.coverage.xml]
output = "coverage.xml"

[tool.isort]
profile = "black"
line_length = 100
multi_line_output = 3
include_trailing_comma = true
force_grid_wrap = 0
use_parentheses = true
ensure_newline_before_comments = true

[tool.black]
line-length = 100
target-version = ['py38', 'py39', 'py310', 'py311']
include = '\.pyi?$'
extend-exclude = '''
/(
# directories
\.eggs
| \.git
| \.hg
| \.mypy_cache
| \.tox
| \.venv
| build
| dist
)/
'''

[tool.mypy]
python_version = "3.8"
warn_return_any = true
warn_unused_configs = true
disallow_untyped_defs = false
disallow_incomplete_defs = false
check_untyped_defs = true
no_implicit_optional = true
warn_redundant_casts = true
warn_unused_ignores = true
warn_no_return = true
follow_imports = "normal"
ignore_missing_imports = true
Empty file added tests/__init__.py
Empty file.
Loading