{"id":32175870,"url":"https://github.com/osfclient/osfclient","last_synced_at":"2025-12-12T00:45:32.379Z","repository":{"id":53503834,"uuid":"84216678","full_name":"osfclient/osfclient","owner":"osfclient","description":"A python library and command-line client for file storage on OSF","archived":false,"fork":false,"pushed_at":"2023-10-17T15:57:31.000Z","size":434,"stargazers_count":137,"open_issues_count":75,"forks_count":56,"subscribers_count":11,"default_branch":"master","last_synced_at":"2025-10-09T04:06:47.025Z","etag":null,"topics":["data-management","open-science","osf","python","science"],"latest_commit_sha":null,"homepage":"http://osfclient.readthedocs.io/en/stable/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/osfclient.png","metadata":{"files":{"readme":"README.rst","changelog":"CHANGELOG","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null}},"created_at":"2017-03-07T15:42:39.000Z","updated_at":"2025-09-28T22:31:19.000Z","dependencies_parsed_at":"2023-12-15T21:17:45.391Z","dependency_job_id":"e38cba28-8723-452c-a34b-afe88745952a","html_url":"https://github.com/osfclient/osfclient","commit_stats":{"total_commits":219,"total_committers":23,"mean_commits":9.521739130434783,"dds":0.4383561643835616,"last_synced_commit":"411497f67aae457a238f0b91ef864d38d6879918"},"previous_names":[],"tags_count":6,"template":false,"template_full_name":null,"purl":"pkg:github/osfclient/osfclient","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/osfclient%2Fosfclient","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/osfclient%2Fosfclient/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/osfclient%2Fosfclient/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/osfclient%2Fosfclient/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/osfclient","download_url":"https://codeload.github.com/osfclient/osfclient/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/osfclient%2Fosfclient/sbom","scorecard":{"id":713432,"data":{"date":"2025-08-11","repo":{"name":"github.com/osfclient/osfclient","commit":"411497f67aae457a238f0b91ef864d38d6879918"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":2.2,"checks":[{"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":"Dangerous-Workflow","score":-1,"reason":"no workflows found","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":"Code-Review","score":1,"reason":"Found 2/16 approved changesets -- score normalized to 1","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":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Token-Permissions","score":-1,"reason":"No tokens found","details":null,"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: downloadThenRun not pinned by hash: build_tools/travis_install.sh:20","Warn: pipCommand not pinned by hash: build_tools/travis_install.sh:31","Warn: pipCommand not pinned by hash: build_tools/travis_install.sh:34","Info:   0 out of   1 downloadThenRun dependencies pinned","Info:   0 out of   2 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":0,"reason":"no effort to earn an OpenSSF best practices badge detected","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":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"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":"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: BSD 3-Clause \"New\" or \"Revised\" License: 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":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'master'"],"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":4,"reason":"6 existing vulnerabilities detected","details":["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":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 17 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-22T08:47:44.890Z","repository_id":53503834,"created_at":"2025-08-22T08:47:44.891Z","updated_at":"2025-08-22T08:47:44.891Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":280325299,"owners_count":26311419,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-21T02:00:06.614Z","response_time":58,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":["data-management","open-science","osf","python","science"],"created_at":"2025-10-21T19:50:35.440Z","updated_at":"2025-10-21T19:50:36.966Z","avatar_url":"https://github.com/osfclient.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":".. image:: LOGO/osf-cli-logo-v1-small.png\n   :alt: osfclient\n   :align: right\n\n*********\nosfclient\n*********\n\n|travisbadge|\n\nThe ``osfclient`` is a python library and a command-line client for up-\nand downloading files to and from your `Open Science\nFramework \u003c//osf.io\u003e`__ projects. The *Open Science Framework* (OSF) is\nan open source project which facilitates the open collaboration of\nresearchers on the web, by sharing data and other research outputs.\n\nAs such the OSF hosts large data sets, associated with papers or\nscientific projects, that can be freely downloaded. The *osfclient*\nallows people to store and retrieve large datasets associated to their\nscientific projects and papers on the OSF via the command line\ninterface. If you are completely new to the OSF you can `read their\nintroductory materials \u003chttps://cos.io/our-products/osf\u003e`__\n\nThis is a very new project, it has some rough edges.\n\n.. |travisbadge| image:: https://travis-ci.org/osfclient/osfclient.svg?branch=master\n   :target: https://travis-ci.org/osfclient/osfclient\n\nInstalling\n==========\n\nTo use ``osfclient`` install it via pip:\n\n::\n\n    $ pip install osfclient\n\nFor details on participating in the development of ``osfclient`` check\nout the `Contributing\nsection \u003chttps://github.com/osfclient/osfclient#contributing\u003e`__.\n\nUsage\n=====\n\nThis project provides two things: a python library and a command-line\nprogram for interacting with files stored in the\n`OSF \u003chttps://osf.io/\u003e`__.\n\nThe python library forms the basis for the command-line program. If you\nwant programmatic access to your files use the library, otherwise try\nout the command-line program.\n\nRead the full documentation: https://osfclient.readthedocs.io/en/latest/\n\nBelow are some examples on how to use it:\n\n::\n\n    # get help and see available commands, get help on a specific command\n    $ osf -h\n    $ osf \u003ccommand\u003e -h\n\n    # setup a local folder for an existing project\n    $ osf init\n\n    # list all files for the project\n    $ osf ls\n\n    # fetch all files for the project\n    $ osf clone\n\n    # fetch an individual file from a project\n    $ osf fetch remote/path.txt local/file.txt\n\n    # get web view url for an individual file from a project\n    $ osf geturl remote/path.txt\n\n    # add a new file\n    $ osf upload local/file.txt remote/path.txt\n\n    # add a new directory\n    $ osf upload -r local/directory/ remote/directory\n\nIf the project is private you will need to provide authentication\ndetails.  You can provide either username \u0026 password credentials or a\nPersonal Access Token (PAT).  You can provide these by setting either\nthe ``OSF_USERNAME`` and ``OSF_PASSWORD`` environment variables or by\nsetting the ``OSF_TOKEN`` environment variable. The password will be\nretrieved from the ``OSF_PASSWORD`` environment variable or you will\nbe asked directly by the tool when you run it.\n\nYou can set default values for the username and project by using a\nconfiguration file in the current directory. This is what ``osf init``\ndoes for you. To set the username and project ID create\n``.osfcli.config``:\n\n::\n\n    [osf]\n    username = yourOSFaccount@example.com\n    project = 9zpcy\n\nTo avoid having to provide credentials on each use, you can provide\neither your password or a PAT in your config with the following keys:\n\n::\n\n    # basic auth (username/password)\n    password = this-password-is-fake\n\n    # token auth\n    token = kej2R9IU6Gr2uThsswSNdP1cd0cu9eaCerVXjVf7zNwfXHyT0QzMZtX0PGTYmp9Fzaixwq\n\nAfter which you can simply run ``osf ls`` to list the contents of the\nproject.\n\nContributing\n============\n\nContributions from everyone and anyone are welcome. Fork this\nrepository, make your changes, add a test to cover them and create a\nPull Request. Then one of the maintainers will review your changes. When\nall comments have been addressed and all tests pass your changes will be\nmerged.\n\nTo setup a development version:\n\n::\n\n    $ git clone https://github.com/YOURNAMEHERE/osfclient\n    $ git remote add upstream https://github.com/osfclient/osfclient\n    $ cd osfclient\n    $ pip install -r devRequirements.txt -c constraints.txt\n    $ pip install -e . -c constraints.txt\n\nThere are a few secret keys relevant to this project, like passwords to\npypi.org, test.pypi.org, and the osfclient email account. We store these in an\nencrypted git repo on `Keybase \u003c//keybase.io\u003e`__. If you need access to this\nrepo, contact any of the following maintainters on Keybase:\n\n- Tim Head (@betatim)\n- Ben Lindsay (@benlindsay)\n- Fitz Elliott (@felliott)\n- Longze Chen (@cslzchen)\n\nFor more details and instructions: `CONTRIBUTING.md \u003cCONTRIBUTING.md\u003e`__\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fosfclient%2Fosfclient","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fosfclient%2Fosfclient","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fosfclient%2Fosfclient/lists"}