Spaces:
Sleeping
Sleeping
| [build-system] | |
| requires = ["setuptools>=61.0", "wheel"] | |
| build-backend = "setuptools.build_meta" | |
| [project] | |
| name = "florence-forge" | |
| version = "1.0.0" | |
| authors = [ | |
| {name = "FlorenceForge Contributors", email = "contact@florenceforge.ai"}, | |
| ] | |
| maintainers = [ | |
| {name = "FlorenceForge Team", email = "contact@florenceforge.ai"}, | |
| ] | |
| description = "A comprehensive framework for fine-tuning Florence-2 models on multiple vision-language tasks" | |
| readme = "README.md" | |
| requires-python = ">=3.8" | |
| classifiers = [ | |
| "Development Status :: 4 - Beta", | |
| "Intended Audience :: Developers", | |
| "Intended Audience :: Science/Research", | |
| "License :: OSI Approved :: MIT License", | |
| "Operating System :: OS Independent", | |
| "Programming Language :: Python :: 3", | |
| "Programming Language :: Python :: 3.8", | |
| "Programming Language :: Python :: 3.9", | |
| "Programming Language :: Python :: 3.10", | |
| "Programming Language :: Python :: 3.11", | |
| "Programming Language :: Python :: 3.12", | |
| "Topic :: Scientific/Engineering :: Artificial Intelligence", | |
| "Topic :: Software Development :: Libraries :: Python Modules", | |
| "Topic :: Multimedia :: Graphics :: Graphics Conversion", | |
| "Topic :: Text Processing :: Linguistic", | |
| ] | |
| keywords = [ | |
| "florence-2", | |
| "computer-vision", | |
| "natural-language-processing", | |
| "multi-task-learning", | |
| "fine-tuning", | |
| "transformers", | |
| "pytorch", | |
| "machine-learning", | |
| "deep-learning", | |
| "vision-language", | |
| "image-captioning", | |
| "object-detection", | |
| "ocr", | |
| "visual-question-answering", | |
| ] | |
| license = {text = "MIT"} | |
| dependencies = [ | |
| "torch>=2.0.0,<3.0.0", | |
| "torchvision>=0.15.0,<1.0.0", | |
| "transformers>=4.35.0,<5.0.0", | |
| "accelerate>=0.24.0,<2.0.0", | |
| "peft>=0.6.0,<1.0.0", | |
| "datasets>=2.14.0,<5.0.0", | |
| "einops>=0.6.0,<1.0.0", | |
| "Pillow>=9.0.0,<11.0.0", | |
| "opencv-python>=4.8.0,<5.0.0", | |
| "numpy>=1.21.0,<3.0.0", | |
| "pandas>=1.5.0,<3.0.0", | |
| "scipy>=1.9.0,<2.0.0", | |
| "PyYAML>=6.0,<7.0", | |
| "fastapi>=0.104.0,<0.116.0", # 上界对齐 starlette<0.41,避免 gradio 模板兼容性 bug | |
| "uvicorn[standard]>=0.24.0,<1.0.0", | |
| "pydantic>=2.4.0,<3.0.0", | |
| "tqdm>=4.64.0,<5.0.0", | |
| "rich>=13.0.0,<16.0.0", | |
| "matplotlib>=3.6.0,<4.0.0", | |
| "scikit-learn>=1.3.0,<2.0.0", | |
| "requests>=2.28.0,<3.0.0", | |
| "click>=8.1.0,<9.0.0", | |
| "psutil>=5.9.0,<6.0.0", | |
| ] | |
| [project.optional-dependencies] | |
| dev = [ | |
| "pytest>=7.0.0,<8.0.0", | |
| "pytest-asyncio>=0.21.0,<1.0.0", | |
| "pytest-cov>=4.0.0,<5.0.0", | |
| "black>=23.0.0,<24.0.0", | |
| "isort>=5.12.0,<6.0.0", | |
| "flake8>=6.0.0,<7.0.0", | |
| "mypy>=1.5.0,<2.0.0", | |
| "types-PyYAML>=6.0.0", | |
| "pre-commit>=3.3.0,<4.0.0", | |
| ] | |
| evaluation = [ | |
| "nltk>=3.8,<4.0", | |
| "rouge-score>=0.1.2,<1.0.0", | |
| "pycocotools>=2.0.7,<3.0.0", | |
| "sacrebleu>=2.3.0,<3.0.0", | |
| ] | |
| docs = [ | |
| "sphinx>=7.0.0,<8.0.0", | |
| "sphinx-rtd-theme>=1.3.0,<2.0.0", | |
| "mkdocs>=1.5.0,<2.0.0", | |
| "mkdocs-material>=9.0.0,<10.0.0", | |
| ] | |
| jupyter = [ | |
| "jupyter>=1.0.0,<2.0.0", | |
| "ipywidgets>=8.0.0,<9.0.0", | |
| "notebook>=6.5.0,<8.0.0", | |
| ] | |
| demo = [ | |
| "gradio>=3.50.0,<5.0.0", | |
| "streamlit>=1.28.0,<2.0.0", | |
| ] | |
| cloud = [ | |
| "boto3>=1.28.0,<2.0.0", | |
| "azure-storage-blob>=12.17.0,<13.0.0", | |
| "google-cloud-storage>=2.10.0,<3.0.0", | |
| ] | |
| performance = [ | |
| "numba>=0.57.0,<1.0.0", | |
| "memory-profiler>=0.61.0,<1.0.0", | |
| "line-profiler>=4.0.0,<5.0.0", | |
| ] | |
| all = [ | |
| "florence-forge[dev,evaluation,docs,jupyter,demo,cloud,performance]", | |
| ] | |
| [project.urls] | |
| Homepage = "https://github.com/florenceforge/florence-forge" | |
| Documentation = "https://florence-forge.readthedocs.io/" | |
| Repository = "https://github.com/florenceforge/florence-forge" | |
| "Bug Tracker" = "https://github.com/florenceforge/florence-forge/issues" | |
| Changelog = "https://github.com/florenceforge/florence-forge/blob/main/CHANGELOG.md" | |
| [project.scripts] | |
| florence_forge_cli = "florence_forge.cli.main:main" | |
| florence-forge = "florence_forge.cli.main:main" | |
| # 子命令通过主 CLI 的 subcommand 实现,不使用独立入口点 | |
| # florence-train, florence-evaluate, florence-serve, florence-convert, florence-infer | |
| [tool.setuptools] | |
| include-package-data = true | |
| [tool.setuptools.packages.find] | |
| where = ["."] | |
| include = ["florence_forge*"] | |
| exclude = ["tests*", "examples*"] | |
| [tool.setuptools.package-data] | |
| florence_forge = [ | |
| "configs/*.yaml", | |
| "configs/**/*.yaml", | |
| "templates/*.yaml", | |
| "templates/**/*.yaml", | |
| "assets/*", | |
| "assets/**/*", | |
| ] | |
| # Black configuration | |
| [tool.black] | |
| line-length = 88 | |
| target-version = ['py38', 'py39', 'py310', 'py311', 'py312'] | |
| include = '\.pyi?$' | |
| extend-exclude = ''' | |
| ( | |
| /( | |
| \.eggs | |
| | \.git | |
| | \.hg | |
| | \.mypy_cache | |
| | \.tox | |
| | \.venv | |
| | _build | |
| | buck-out | |
| | build | |
| | dist | |
| )/ | |
| ) | |
| ''' | |
| # isort configuration | |
| [tool.isort] | |
| profile = "black" | |
| line_length = 88 | |
| multi_line_output = 3 | |
| include_trailing_comma = true | |
| force_grid_wrap = 0 | |
| use_parentheses = true | |
| ensure_newline_before_comments = true | |
| # MyPy configuration | |
| [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 = false | |
| disallow_untyped_decorators = false | |
| no_implicit_optional = false | |
| warn_redundant_casts = true | |
| warn_unused_ignores = true | |
| warn_no_return = true | |
| warn_unreachable = false | |
| strict_equality = false | |
| show_error_codes = true | |
| pretty = true | |
| exclude = [ | |
| "tests/", | |
| "examples/", | |
| "scripts/", | |
| "docs/", | |
| ] | |
| [[tool.mypy.overrides]] | |
| module = [ | |
| "torch.*", | |
| "torchvision.*", | |
| "transformers.*", | |
| "accelerate.*", | |
| "peft.*", | |
| "datasets.*", | |
| "cv2.*", | |
| "albumentations.*", | |
| "wandb.*", | |
| "tensorboard.*", | |
| "gradio.*", | |
| "streamlit.*", | |
| "PIL.*", | |
| "sklearn.*", | |
| "tqdm.*", | |
| "rich.*", | |
| "matplotlib.*", | |
| "scipy.*", | |
| "pandas.*", | |
| "numpy.*", | |
| "psutil.*", | |
| "click.*", | |
| "fastapi.*", | |
| "uvicorn.*", | |
| "requests.*", | |
| "yaml.*", | |
| "reportlab.*", | |
| "tensorboardX.*", | |
| "decord.*", | |
| "flash_attn.*", | |
| "seaborn.*", | |
| "plotly.*", | |
| ] | |
| ignore_missing_imports = true | |
| # Pytest configuration | |
| [tool.pytest.ini_options] | |
| minversion = "7.0" | |
| addopts = "-ra -q --strict-markers --strict-config" | |
| testpaths = ["tests"] | |
| python_files = ["test_*.py", "*_test.py"] | |
| python_classes = ["Test*"] | |
| python_functions = ["test_*"] | |
| markers = [ | |
| "slow: marks tests as slow (deselect with '-m \"not slow\"')", | |
| "integration: marks tests as integration tests", | |
| "unit: marks tests as unit tests", | |
| "gpu: marks tests that require GPU", | |
| ] | |
| filterwarnings = [ | |
| "ignore::UserWarning", | |
| "ignore::DeprecationWarning", | |
| ] | |
| # Coverage configuration | |
| [tool.coverage.run] | |
| source = ["florence_forge"] | |
| omit = [ | |
| "*/tests/*", | |
| "*/test_*", | |
| "setup.py", | |
| "*/examples/*", | |
| ] | |
| [tool.coverage.report] | |
| fail_under = 56 | |
| exclude_lines = [ | |
| "pragma: no cover", | |
| "def __repr__", | |
| "if self.debug:", | |
| "if settings.DEBUG", | |
| "raise AssertionError", | |
| "raise NotImplementedError", | |
| "if 0:", | |
| "if __name__ == .__main__.:", | |
| "class .*\\bProtocol\\):", | |
| "@(abc\\.)?abstractmethod", | |
| ] | |
| [tool.ruff.lint.per-file-ignores] | |
| "__init__.py" = ["F401", "E402"] | |
| "tests/*" = ["S101", "E402"] | |
| "florence_forge/cli/config_manager.py" = ["E402"] | |
| "florence_forge/core/model.py" = ["E402"] | |
| "florence_forge/evaluation/advanced_metrics/*.py" = ["E402"] | |
| "florence_forge/evaluation/analyzer_*.py" = ["E402"] | |
| "florence_forge/examples/*.py" = ["E402"] | |
| # Flake8 configuration | |
| [tool.flake8] | |
| max-line-length = 88 | |
| extend-ignore = ["E203", "W503"] | |
| exclude = [ | |
| ".git", | |
| "__pycache__", | |
| "build", | |
| "dist", | |
| ".eggs", | |
| "*.egg-info", | |
| ".venv", | |
| ".mypy_cache", | |
| ".pytest_cache", | |
| ] | |
| per-file-ignores = [ | |
| "__init__.py:F401,E402", | |
| "tests/*:S101", | |
| ] | |