Files
modelscope/pyproject.toml
Xingjun.Wang 50f8d37bc9 [Feat & Refactor] Refactor hub and CLI modules (#1732)
* refactor(hub): shim layer delegating to modelscope-hub

- Replace hub/api.py (4674→250 lines) with shim inheriting LegacyHubApi
- Replace hub/snapshot_download.py, callback.py with thin shims
- Partial shim hub/file_download.py (retain http_get_file)
- Shim hub/constants.py and errors.py with legacy aliases
- Shim hub/git.py, repository.py, cache_manager.py, upload_*.py
- Migrate CLI entry to modelscope_hub.cli.main:run_cmd
- Adapt 6 CLI commands as modelscope_hub.cli_plugins
- Delete redundant CLI files (download/upload/login/create/etc)
- Add modelscope-hub>=0.2.0 dependency, Python>=3.10
- Add __getattr__ proxy for forward-compatible method access
- Propagate timeout/max_retries to internal LegacyClient
- Bridge MODELSCOPE_CREDENTIALS_PATH env var to HubConfig

* fix lint: isort/yapf formatting + exclude hub/api.py from hooks

* set modelscope-hub>=0.0.5

* remove unused code

* refactor(hub): standardize token naming — git_token vs token

Disambiguate git token and SDK/API token naming across the hub layer:
- ModelScopeConfig: get_token/save_token → get_git_token/save_git_token
  (old names kept as deprecated aliases with DeprecationWarning)
- GitCommandWrapper: rename token params to git_token in clone/push/config
- Repository/DatasetRepository: auth_token → git_token (deprecated compat kept)
- data_loader.py: update caller to use get_git_token()

SDK token references (HubApi(token=...), get_cookies(access_token=...),
commit_scheduler.token) remain unchanged as they correctly use `token` naming.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* remove(msdatasets): remove all Virgo-related implementation

Remove the entire Virgo dataset subsystem which is no longer needed:
- Remove VirgoDataset class and VirgoDownloader
- Remove VirgoAuthConfig and VirgoDatasetConfig
- Remove Hubs.virgo enum value
- Remove fetch_virgo_meta from DataMetaManager
- Remove download_virgo_files from DatasetContextConfig
- Remove test_virgo_dataset.py test file
- Clean up unused imports (pandas, MaxComputeUtil, valid_url, etc.)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* feat(hub): add OSS dataset operations and meta-file download to HubApi

Add methods that msdatasets depends on but don't belong in modelscope_hub:
- _legacy_request: internal helper combining legacy HTTP transport with
  application-level envelope validation (Code/Data/Message)
- list_oss_dataset_objects: list OSS storage objects for a dataset
- delete_oss_dataset_object / delete_oss_dataset_dir: delete OSS objects
- fetch_meta_files_from_url: download and cache meta CSV/JSONL files

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* fix imports issue

* fix: address PR review feedback

- cli/plugins.py: change --yes and --all flags to action='store_true'
- hub/git.py: replace os.linesep with .splitlines() for cross-platform safety
- hub/__init__.py: use is_file() with fallback for robust credentials path detection

* fix lint

* update ms hub version

* fix(ci): add PyPI official as fallback index for pip

Aliyun mirror may lag behind PyPI for newly published packages,
causing dependency resolution failures (e.g. modelscope-hub>=0.0.6).
Add pypi.org/simple as extra-index-url so new versions are immediately
available while keeping the Aliyun mirror as the primary source.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* fix UTs

* remove unused UTs

* fix ut

* update modelscope-hub installation for source code

* fix UT

* fix uts

* fix ut

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-06-09 20:00:20 +08:00

91 lines
3.4 KiB
TOML

[project]
name = "modelscope"
dynamic = ["version", "dependencies", "optional-dependencies"]
description = "ModelScope: bring the notion of Model-as-a-Service to life."
readme = {file = "README.md", content-type = "text/markdown"}
license = "Apache-2.0"
license-files = ["LICENSE"]
authors = [
{name = "ModelScope team"},
{email = "contact@modelscope.cn"}
]
keywords = ["python", "nlp", "science", "cv", "speech", "multi-modal"]
requires-python = ">=3.10"
classifiers = [
'Development Status :: 4 - Beta',
'Operating System :: OS Independent',
'Programming Language :: Python :: 3',
'Programming Language :: Python :: 3.9',
'Programming Language :: Python :: 3.10',
'Programming Language :: Python :: 3.11',
]
[project.urls]
Homepage = "https://github.com/modelscope/modelscope"
[project.scripts]
modelscope = "modelscope.cli.cli:run_cmd"
ms = "modelscope.cli.cli:run_cmd"
[project.entry-points."modelscope_hub.cli_plugins"]
pipeline = "modelscope.cli.pipeline:PipelineCMD"
server = "modelscope.cli.server:ServerCMD"
plugins = "modelscope.cli.plugins:PluginsCMD"
skills = "modelscope.cli.skills:SkillsCMD"
llamafile = "modelscope.cli.llamafile:LlamafileCMD"
modelcard = "modelscope.cli.modelcard:ModelCardCMD"
[build-system]
requires = ["setuptools>=69", "wheel"]
build-backend = "setuptools.build_meta"
[tool.setuptools]
include-package-data = true
[tool.setuptools.packages.find]
where = ["."]
include = ["modelscope*"]
[tool.setuptools.dynamic]
version = {attr = "modelscope.version.__version__"}
dependencies = {file = ["requirements/hub.txt"]}
[tool.setuptools.dynamic.optional-dependencies]
hub = {file = ["requirements/hub.txt"]}
datasets = {file = ["requirements/datasets.txt"]}
framework = {file = ["requirements/framework.txt"]}
server = {file = ["requirements/server.txt"]}
docs = {file = ["requirements/docs.txt"]}
tests = {file = ["requirements/tests.txt"]}
# domain specific with framework base
cv = {file = ["requirements/framework.txt", "requirements/cv.txt"]}
nlp = {file = ["requirements/framework.txt", "requirements/nlp.txt"]}
multi-modal = {file = ["requirements/framework.txt", "requirements/multi-modal.txt"]}
science = {file = ["requirements/framework.txt", "requirements/science.txt"]}
# audio specific with framework base
audio_asr = {file = ["requirements/framework.txt", "requirements/audio/audio_asr.txt"]}
audio_codec = {file = ["requirements/framework.txt", "requirements/audio/audio_codec.txt"]}
audio_tts = {file = ["requirements/framework.txt", "requirements/audio/audio_tts.txt"]}
audio_kws = {file = ["requirements/framework.txt", "requirements/audio/audio_kws.txt"]}
audio_signal = {file = ["requirements/framework.txt", "requirements/audio/audio_signal.txt"]}
audio = {file = ["requirements/framework.txt",
"requirements/audio/audio_asr.txt",
"requirements/audio/audio_codec.txt",
"requirements/audio/audio_tts.txt",
"requirements/audio/audio_kws.txt",
"requirements/audio/audio_signal.txt"]}
# skip audio requirements due to its hard dependency which may cause installation failure
all = {file = [
"requirements/hub.txt",
"requirements/datasets.txt",
"requirements/framework.txt",
"requirements/cv.txt",
"requirements/nlp.txt",
"requirements/multi-modal.txt",
"requirements/science.txt",
"requirements/server.txt",
]}