{"id":33467640,"url":"https://github.com/megvii-research/megfile","last_synced_at":"2026-02-28T08:50:36.625Z","repository":{"id":37722318,"uuid":"399023601","full_name":"megvii-research/megfile","owner":"megvii-research","description":"Megvii FILE Library - Working with Files in Python same as the standard library","archived":false,"fork":false,"pushed_at":"2026-02-05T07:32:10.000Z","size":25737,"stargazers_count":168,"open_issues_count":5,"forks_count":19,"subscribers_count":3,"default_branch":"main","last_synced_at":"2026-02-05T18:51:15.496Z","etag":null,"topics":["file","hdfs","oss","python","s3","sftp","smart-open","streaming","webdav"],"latest_commit_sha":null,"homepage":"http://megvii-research.github.io/megfile","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/megvii-research.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2021-08-23T08:11:25.000Z","updated_at":"2026-02-05T07:32:12.000Z","dependencies_parsed_at":"2023-10-23T05:22:03.661Z","dependency_job_id":"61d3a4b9-d8c3-4374-b2e3-c6e6ab249846","html_url":"https://github.com/megvii-research/megfile","commit_stats":{"total_commits":282,"total_committers":8,"mean_commits":35.25,"dds":"0.46808510638297873","last_synced_commit":"bd4e8e88f096733549174a6d8ee1d48ba6ea9dcc"},"previous_names":[],"tags_count":130,"template":false,"template_full_name":null,"purl":"pkg:github/megvii-research/megfile","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/megvii-research%2Fmegfile","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/megvii-research%2Fmegfile/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/megvii-research%2Fmegfile/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/megvii-research%2Fmegfile/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/megvii-research","download_url":"https://codeload.github.com/megvii-research/megfile/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/megvii-research%2Fmegfile/sbom","scorecard":{"id":635179,"data":{"date":"2025-08-11","repo":{"name":"github.com/megvii-research/megfile","commit":"0dd2329354b37b41cb8ec31cfd5c15c5e0b1af35"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":5.5,"checks":[{"name":"Maintained","score":10,"reason":"27 commit(s) and 2 issue activity found in the last 90 days -- score normalized to 10","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Security-Policy","score":9,"reason":"security policy file detected","details":["Info: security policy file detected: SECURITY.md:1","Info: Found linked content: SECURITY.md:1","Warn: One or no descriptive hints of disclosure, vulnerability, and/or timelines in security policy","Info: Found text in security policy: SECURITY.md:1"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Code-Review","score":2,"reason":"Found 7/30 approved changesets -- score normalized to 2","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/auto-approve.yml:1","Warn: no topLevel permission defined: .github/workflows/publish-docs.yml:1","Warn: no topLevel permission defined: .github/workflows/run-tests.yml:1","Info: no jobLevel write permissions found"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: third-party GitHubAction not pinned by hash: .github/workflows/auto-approve.yml:11: update your workflow using https://app.stepsecurity.io/secureworkflow/megvii-research/megfile/auto-approve.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/publish-docs.yml:20: update your workflow using https://app.stepsecurity.io/secureworkflow/megvii-research/megfile/publish-docs.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/publish-docs.yml:23: update your workflow using https://app.stepsecurity.io/secureworkflow/megvii-research/megfile/publish-docs.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/publish-docs.yml:40: update your workflow using https://app.stepsecurity.io/secureworkflow/megvii-research/megfile/publish-docs.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/run-tests.yml:91: update your workflow using https://app.stepsecurity.io/secureworkflow/megvii-research/megfile/run-tests.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/run-tests.yml:94: update your workflow using https://app.stepsecurity.io/secureworkflow/megvii-research/megfile/run-tests.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/run-tests.yml:122: update your workflow using https://app.stepsecurity.io/secureworkflow/megvii-research/megfile/run-tests.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/run-tests.yml:125: update your workflow using https://app.stepsecurity.io/secureworkflow/megvii-research/megfile/run-tests.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/run-tests.yml:145: update your workflow using https://app.stepsecurity.io/secureworkflow/megvii-research/megfile/run-tests.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/run-tests.yml:151: update your workflow using https://app.stepsecurity.io/secureworkflow/megvii-research/megfile/run-tests.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/run-tests.yml:165: update your workflow using https://app.stepsecurity.io/secureworkflow/megvii-research/megfile/run-tests.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/run-tests.yml:168: update your workflow using https://app.stepsecurity.io/secureworkflow/megvii-research/megfile/run-tests.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/run-tests.yml:188: update your workflow using https://app.stepsecurity.io/secureworkflow/megvii-research/megfile/run-tests.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/run-tests.yml:194: update your workflow using https://app.stepsecurity.io/secureworkflow/megvii-research/megfile/run-tests.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/run-tests.yml:20: update your workflow using https://app.stepsecurity.io/secureworkflow/megvii-research/megfile/run-tests.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/run-tests.yml:23: update your workflow using https://app.stepsecurity.io/secureworkflow/megvii-research/megfile/run-tests.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/run-tests.yml:42: update your workflow using https://app.stepsecurity.io/secureworkflow/megvii-research/megfile/run-tests.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/run-tests.yml:60: update your workflow using https://app.stepsecurity.io/secureworkflow/megvii-research/megfile/run-tests.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/run-tests.yml:63: update your workflow using https://app.stepsecurity.io/secureworkflow/megvii-research/megfile/run-tests.yml/main?enable=pin","Warn: pipCommand not pinned by hash: .github/workflows/publish-docs.yml:31","Warn: pipCommand not pinned by hash: .github/workflows/publish-docs.yml:32","Warn: pipCommand not pinned by hash: .github/workflows/publish-docs.yml:33","Warn: pipCommand not pinned by hash: .github/workflows/run-tests.yml:31","Warn: pipCommand not pinned by hash: .github/workflows/run-tests.yml:32","Warn: pipCommand not pinned by hash: .github/workflows/run-tests.yml:33","Warn: pipCommand not pinned by hash: .github/workflows/run-tests.yml:34","Warn: pipCommand not pinned by hash: .github/workflows/run-tests.yml:35","Warn: pipCommand not pinned by hash: .github/workflows/run-tests.yml:71","Warn: pipCommand not pinned by hash: .github/workflows/run-tests.yml:72","Warn: pipCommand not pinned by hash: .github/workflows/run-tests.yml:73","Warn: pipCommand not pinned by hash: .github/workflows/run-tests.yml:74","Warn: pipCommand not pinned by hash: .github/workflows/run-tests.yml:75","Warn: pipCommand not pinned by hash: .github/workflows/run-tests.yml:102","Warn: pipCommand not pinned by hash: .github/workflows/run-tests.yml:103","Warn: pipCommand not pinned by hash: .github/workflows/run-tests.yml:104","Warn: pipCommand not pinned by hash: .github/workflows/run-tests.yml:105","Warn: pipCommand not pinned by hash: .github/workflows/run-tests.yml:106","Warn: pipCommand not pinned by hash: .github/workflows/run-tests.yml:133","Warn: pipCommand not pinned by hash: .github/workflows/run-tests.yml:134","Warn: pipCommand not pinned by hash: .github/workflows/run-tests.yml:135","Warn: pipCommand not pinned by hash: .github/workflows/run-tests.yml:136","Warn: pipCommand not pinned by hash: .github/workflows/run-tests.yml:137","Warn: pipCommand not pinned by hash: .github/workflows/run-tests.yml:176","Warn: pipCommand not pinned by hash: .github/workflows/run-tests.yml:177","Warn: pipCommand not pinned by hash: .github/workflows/run-tests.yml:178","Warn: pipCommand not pinned by hash: .github/workflows/run-tests.yml:179","Warn: pipCommand not pinned by hash: .github/workflows/run-tests.yml:180","Info:   0 out of  16 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   3 third-party GitHubAction dependencies pinned","Info:   0 out of  28 pipCommand dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"CII-Best-Practices","score":5,"reason":"badge detected: Passing","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: Apache License 2.0: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":-1,"reason":"internal error: error during branchesHandler.setup: internal error: githubv4.Query: Resource not accessible by integration","details":null,"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"Vulnerabilities","score":0,"reason":"21 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: PYSEC-2024-48 / GHSA-fj7x-q9j7-g6q6","Warn: Project is vulnerable to: GHSA-3ww4-gg4f-jr7f","Warn: Project is vulnerable to: GHSA-5cpq-8wj7-hf2v","Warn: Project is vulnerable to: GHSA-9v9h-cgj8-h64p","Warn: Project is vulnerable to: PYSEC-2023-254 / GHSA-jfhm-5ghh-2f97","Warn: Project is vulnerable to: GHSA-jm77-qphf-c4w8","Warn: Project is vulnerable to: GHSA-v8gr-m533-ghj9","Warn: Project is vulnerable to: GHSA-w7pp-m8wf-vj6r","Warn: Project is vulnerable to: GHSA-x4qr-2fvf-3mr5","Warn: Project is vulnerable to: PYSEC-2013-22 / GHSA-27x4-j476-jp5f","Warn: Project is vulnerable to: PYSEC-2025-49 / GHSA-5rjg-fvgr-3xxf","Warn: Project is vulnerable to: GHSA-cx63-2mw6-8hw5","Warn: Project is vulnerable to: PYSEC-2022-43012 / GHSA-r9hx-vwmv-q579","Warn: Project is vulnerable to: PYSEC-2021-142 / GHSA-8q59-q68h-6hv4","Warn: Project is vulnerable to: PYSEC-2018-49 / GHSA-rprw-h62v-c2w7","Warn: Project is vulnerable to: PYSEC-2014-14 / GHSA-652x-xj99-gmcc","Warn: Project is vulnerable to: GHSA-9hjg-9r4m-mvj7","Warn: Project is vulnerable to: GHSA-9wx4-h78v-vm56","Warn: Project is vulnerable to: PYSEC-2014-13 / GHSA-cfj3-7x9c-4p3h","Warn: Project is vulnerable to: PYSEC-2018-28 / GHSA-x84v-xcm2-53pg","Warn: Project is vulnerable to: PYSEC-2017-74"],"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"SAST","score":10,"reason":"SAST tool is run on all commits","details":["Info: all commits (30) are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}}]},"last_synced_at":"2025-08-21T08:56:41.299Z","repository_id":37722318,"created_at":"2025-08-21T08:56:41.299Z","updated_at":"2025-08-21T08:56:41.299Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29156562,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-06T07:18:23.844Z","status":"ssl_error","status_checked_at":"2026-02-06T07:13:32.659Z","response_time":59,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["file","hdfs","oss","python","s3","sftp","smart-open","streaming","webdav"],"created_at":"2025-11-25T07:03:43.897Z","updated_at":"2026-02-06T09:22:12.200Z","avatar_url":"https://github.com/megvii-research.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"megfile - Megvii FILE library\n---\n\n[![Build](https://github.com/megvii-research/megfile/actions/workflows/run-tests.yml/badge.svg?branch=main)](https://github.com/megvii-research/megfile/actions/workflows/run-tests.yml)\n[![Documents](https://github.com/megvii-research/megfile/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/megvii-research/megfile/actions/workflows/publish-docs.yml)\n[![Codecov](https://img.shields.io/codecov/c/gh/megvii-research/megfile)](https://app.codecov.io/gh/megvii-research/megfile/)\n[![Latest version](https://img.shields.io/pypi/v/megfile.svg)](https://pypi.org/project/megfile/)\n[![Support python versions](https://img.shields.io/pypi/pyversions/megfile.svg)](https://pypi.org/project/megfile/)\n[![License](https://img.shields.io/pypi/l/megfile.svg)](https://github.com/megvii-research/megfile/blob/master/LICENSE)\n[![CII Best Practices](https://bestpractices.coreinfrastructure.org/projects/5233/badge)](https://bestpractices.coreinfrastructure.org/projects/5233)\n\n* Docs: http://megvii-research.github.io/megfile\n\n`megfile` provides a silky operation experience with different backends, which enable you to focus more on the logic of your own project instead of the question of \"Which backend is used for this file?\"\n\n## Why megfile\n\n* Same interfaces as the python standard library, low learning curve\n* Faster file read and write operations\n* Excellent error retry mechanism to help you handle network issues\n* Supports popular protocols, even making it easy to use the same protocol with different endpoints\n* Stable and secure, with high CI test coverage, used by multiple industry giants\n* Perfect type hints and built-in documentation. You can enjoy the IDE's auto-completion and static checking\n\n## Support Protocols\n- fs(local filesystem)\n- s3\n- sftp\n- http\n- stdio\n- hdfs: `pip3 install 'megfile[hdfs]'`\n- webdav: `pip3 install 'megfile[webdav]'`\n\n## Quick Start\n\nThe interfaces of `megfile` correspond to those in the Python standard library. For example, `open` -\u003e `smart_open` and `pathlib.Path` -\u003e `SmartPath`. You only need to [configure the protocol settings](https://megvii-research.github.io/megfile/configuration.html) and provide the path in the corresponding format to use them conveniently.\n\nPath string in `megfile` almost is `protocol://path/to/file`, for example `s3://bucketA/key`. More details see [path format document](https://megvii-research.github.io/megfile/path_format.html).\n\nHere's an example of writing a file to s3 / fs, syncing to local, reading and finally deleting it.\n\n### Functional Interface\n```python\nfrom megfile import smart_open, smart_exists, smart_sync, smart_remove, smart_glob\n\n# open a file in s3 bucket\nwith smart_open('s3://playground/megfile-test', 'w') as fp:\n    fp.write('megfile is not silver bullet')\n\n# test if file in s3 bucket exist\nsmart_exists('s3://playground/megfile-test')\n\n# or in local file system\nsmart_exists('/tmp/playground/megfile-test')\n\n# copy files or directories\nsmart_sync('s3://playground/megfile-test', '/tmp/playground/megfile-test')\n\n# remove files or directories\nsmart_remove('s3://playground/megfile-test')\n\n# glob files or directories in s3 bucket\nsmart_glob('s3://playground/megfile-?.{mp4,avi}')\n```\n\n### SmartPath Interface\n\n`SmartPath` has a similar interface with `pathlib.Path`.\n\n```python\nfrom megfile.smart_path import SmartPath\n\npath = SmartPath('s3://playground/megfile-test')\nif path.exists():\n    with path.open() as f:\n        result = f.read(7)\n        assert result == b'megfile'\n```\n\n### Command Line Interface\n```bash\n$ pip install 'megfile[cli]'  # install megfile cli requirements\n\n$ megfile --help  # see what you can do\n\n$ megfile ls s3://playground/\n$ megfile ls -l -h s3://playground/\n\n$ megfile cat s3://playground/megfile-test\n\n$ megfile cp s3://playground/megfile-test /tmp/playground/megfile-test\n```\n\n## Installation\n\n### PyPI\n\n```bash\npip3 install megfile\n\n# for cli support\npip3 install 'megfile[cli]'\n\n# for hdfs support\npip3 install 'megfile[hdfs]'\n\n# for webdav support\npip3 install 'megfile[webdav]'\n```\n\n## Configuration\n\nUsing `s3` as an example, the following describes the configuration methods. For more details, please refer to [Configuration](https://megvii-research.github.io/megfile/configuration.html).\n\nYou can use environments and configuration file for configuration, and priority is that environment variables take precedence over configuration file.\n\n### Use environments\nYou can use environments to setup authentication credentials for your `s3` account:\n- `AWS_ACCESS_KEY_ID`: access key\n- `AWS_SECRET_ACCESS_KEY`: secret key\n- `AWS_SESSION_TOKEN`: session token\n- `OSS_ENDPOINT` / `AWS_ENDPOINT_URL_S3` / `AWS_ENDPOINT_URL`: endpoint url of s3\n- `AWS_S3_ADDRESSING_STYLE`: addressing style\n\n### Use command\nYou can update config file with `megfile` command easyly:\n[megfile config s3 [OPTIONS] AWS_ACCESS_KEY_ID AWS_SECRET_ACCESS_KEY](https://megvii-research.github.io/megfile/cli.html#megfile-config-s3) \n\n```\n$ megfile config s3 accesskey secretkey\n\n# for aliyun oss\n$ megfile config s3 accesskey secretkey \\\n--addressing-style virtual \\\n--endpoint-url http://oss-cn-hangzhou.aliyuncs.com\n```\n\nYou can get the configuration from `~/.aws/credentials`, like:\n```\n[default]\naws_secret_access_key = accesskey\naws_access_key_id = secretkey\n\ns3 =\n    addressing_style = virtual\n    endpoint_url = http://oss-cn-hangzhou.aliyuncs.com\n```\n\n### Create aliases\n```\n# for volcengine tos\n$ megfile config s3 accesskey secretkey \\\n--addressing-style virtual \\\n--endpoint-url https://tos-s3-cn-beijing.ivolces.com \\\n--profile-name tos\n\n# create alias\n$ megfile config alias tos s3+tos\n```\n\nYou can get the configuration from `~/.config/megfile/aliases.conf`, like:\n```\n[tos]\nprotocol = s3+tos\n```\n\nYou can use alias in path, like `tos://bucket/key`, the same as `s3+tos://bucket/key`.\n\n## Benchmark\n[![10GiB](https://github.com/megvii-research/megfile/blob/main/scripts/benchmark/10GiB.png?raw=true)](https://megvii-research.github.io/megfile/benchmark.html)\n[![10MiB](https://github.com/megvii-research/megfile/blob/main/scripts/benchmark/10MiB.png?raw=true)](https://megvii-research.github.io/megfile/benchmark.html)\n\n## Skill for AI coding\n```bash\ngit clone -b gh-skill --single-branch https://github.com/megvii-research/megfile.git path/to/your/ai/skills/megfile\n```\n\n## How to Contribute\n* We welcome everyone to contribute code to the `megfile` project, but the contributed code needs to meet the following conditions as much as possible:\n\n    *You can submit code even if the code doesn't meet conditions. The project members will evaluate and assist you in making code changes*\n\n    * **Code format**: Your code needs to pass **code format check**. `megfile` uses `ruff` as lint tool\n    * **Static check**: Your code needs complete **type hint**. `megfile` uses `pytype` as static check tool. If `pytype` failed in static check, use `# pytype: disable=XXX` to disable the error and please tell us why you disable it.\n\n    * **Test**: Your code needs complete **unit test** coverage. `megfile` uses `pyfakefs` and `moto` as local file system and s3 virtual environment in unit tests. The newly added code should have a complete unit test to ensure the correctness\n\n* You can help to improve `megfile` in many ways:\n    * Write code.\n    * Improve [documentation](https://github.com/megvii-research/megfile/blob/main/docs).\n    * Report or investigate [bugs and issues](https://github.com/megvii-research/megfile/issues).\n    * If you find any problem or have any improving suggestion, [submit a new issuse](https://github.com/megvii-research/megfile/issues) as well. We will reply as soon as possible and evaluate whether to adopt.\n    * Review [pull requests](https://github.com/megvii-research/megfile/pulls).\n    * Star `megfile` repo.\n    * Recommend `megfile` to your friends.\n    * Any other form of contribution is welcomed.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmegvii-research%2Fmegfile","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmegvii-research%2Fmegfile","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmegvii-research%2Fmegfile/lists"}