{"id":13453300,"url":"https://github.com/tokenika/eosfactory","last_synced_at":"2026-01-17T09:51:45.831Z","repository":{"id":57426684,"uuid":"113743640","full_name":"tokenika/eosfactory","owner":"tokenika","description":"Python-based EOS smart-contract development \u0026 testing framework","archived":false,"fork":false,"pushed_at":"2023-03-28T01:59:20.000Z","size":47480,"stargazers_count":239,"open_issues_count":12,"forks_count":60,"subscribers_count":15,"default_branch":"master","last_synced_at":"2025-10-25T06:23:20.344Z","etag":null,"topics":["eos","python","smart-contracts","testnet","unit-testing"],"latest_commit_sha":null,"homepage":"http://eosfactory.io/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/tokenika.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":"docs/roadmap/LongTermEOSFactoryRoadmap.md","authors":null}},"created_at":"2017-12-10T11:15:38.000Z","updated_at":"2025-10-05T11:56:01.000Z","dependencies_parsed_at":"2024-01-03T05:13:48.604Z","dependency_job_id":"5c694388-0363-4703-8ab5-1deb6d120d73","html_url":"https://github.com/tokenika/eosfactory","commit_stats":{"total_commits":1714,"total_committers":12,"mean_commits":"142.83333333333334","dds":"0.42298716452742124","last_synced_commit":"ee00f662872690738a702fc05aca1f1c0c8d4783"},"previous_names":[],"tags_count":18,"template":false,"template_full_name":null,"purl":"pkg:github/tokenika/eosfactory","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tokenika%2Feosfactory","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tokenika%2Feosfactory/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tokenika%2Feosfactory/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tokenika%2Feosfactory/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/tokenika","download_url":"https://codeload.github.com/tokenika/eosfactory/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tokenika%2Feosfactory/sbom","scorecard":{"id":891470,"data":{"date":"2025-08-11","repo":{"name":"github.com/tokenika/eosfactory","commit":"ee00f662872690738a702fc05aca1f1c0c8d4783"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":3.3,"checks":[{"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":"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":2,"reason":"Found 2/10 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":"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":"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":"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":"Binary-Artifacts","score":9,"reason":"binaries present in source code","details":["Warn: binary detected: archive/multi_index_example/src/multi_index_example.wasm:1"],"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: pipCommand not pinned by hash: install.sh:19","Warn: pipCommand not pinned by hash: pip_install_dist.sh:4","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":"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":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"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":9,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Warn: project license file does not contain an FSF or OSI license."],"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":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 27 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-24T11:59:49.086Z","repository_id":57426684,"created_at":"2025-08-24T11:59:49.086Z","updated_at":"2025-08-24T11:59:49.086Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28505565,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-17T06:57:29.758Z","status":"ssl_error","status_checked_at":"2026-01-17T06:56:03.931Z","response_time":85,"last_error":"SSL_read: 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":["eos","python","smart-contracts","testnet","unit-testing"],"created_at":"2024-07-31T08:00:37.693Z","updated_at":"2026-01-17T09:51:45.807Z","avatar_url":"https://github.com/tokenika.png","language":"Python","readme":"# Welcome to EOSFactory v3.4.0\n\n[EOSFactory](http://eosfactory.io/) is a Python-based [EOS](https://eos.io) smart-contract development \u0026 testing framework, created by [Tokenika](https://tokenika.io).\n\nWith a single command-line interface you can create a private testnet and then compile, test and deploy EOS smart-contracts.\n\nAll of this using simple yet powerful [Python3](https://www.python.org/) syntax.\n\n## Why it’s needed?\n\nCode development and testing involve tasks that need to be executed hundreds of times, and each time in exactly the same way and exactly the same context. Therefore those tasks need to be fully automated, as otherwise a lot of time is being wasted and, what’s even worse, a lot of additional uncertainty is introduced. Manually performed actions are prone to errors.\n\nAnd this is what *EOSFactory* actually brings to the table: an easy \u0026 intuitive way to automate the process of dealing with smart-contracts. Write down, in the form of a Python script, what needs to be done multiple times in exactly the same way and exactly the same context, and then just run the script. *EOSFactory* will take care of everything else: it will compile your smart-contract, create a new local testnet, deploy the contract, invoke its methods and verify the response, then tear down the testnet, and finally report the results. And all of this done in a couple of seconds.\n\n## Main features\n\n#### 1. Object-oriented\n\nWhen you use tools like `cleos` all you have at your disposal is issuing separate, one-off commands, as `cleos` is not able to keep your state. Thus each time you interact with a contract, you need to tell `cleos` which contract and which account you mean. Contrary to that, in *EOSFactory* everything is an object. You create a contract (or an account), keep reference to it and then invoke its various methods.\n\n#### 2. Simple syntax\n\nThe front-end of *EOSFactory* is simply a Python3 *Command Line Interface*. This way you can interact with EOS smart-contract, and prove it works as expected, instead having to deal with the raw primitives of the EOSIO `cleos`. In most cases Python syntax is immediately clear for everyone.\n\n#### 3. Support for both local and remote testnet\n\nRunning tests on a public testnet is much more complex than using a local one where you have full control. The whole infrastructure of *EOSFactory* is designed in such a way that the same test is able to work in both environments, and switching between them is just a matter of changing one parameter.\n\n#### 4. Aliases for account names\n\n*EOSIO* accounts are indexed by their names, thus those names have to be unique within the blockchain namespace and have to follow specific restrictions. As a result, most of the human readable combinations are already taken, even in a testnet environment. *EOSFactory* hides the actual names of an *EOSIO* accounts behind a system of human-friendly aliases.\n\n#### 5. Truly cross-platform\n\nWe make sure everything we do is fully compatible with Windows - our toolset enables you to run an EOS node and interact with it on any operating system, including Windows, MacOS and Linux.\n\n## User documentation\n\n* [Introduction to EOSFactory](docs/tutorials/00.IntroductionToEOSFactory.md)\n* [Installing EOSFactory](docs/tutorials/01.InstallingEOSFactory.md)\n* [Interacting with EOS Contracts in EOSFactory](docs/tutorials/02.InteractingWithEOSContractsInEOSFactory.md)\n* [Building and Deploying EOS Smart-Contracts in EOSFactory](docs/tutorials/03.BuildingAndDeployingEOSContractsInEOSFactory.md)\n* [Working with EOS Smart-Contracts Using EOSFactory in VSC](docs/tutorials/04.WorkingWithEOSContractsUsingEOSFactoryInVSC.md)\n* [Interacting with Public Testnets](docs/tutorials/05.InteractingWithPublicTestnet.md)\n* [Using EOSFactory with an Existing EOS Smart-Contract Project](docs/tutorials/06.UsingEOSFactoryWithExistingProject.md)\n\n## Use cases\n\n* [Wallet Class](docs/cases/wallet.md)\n* [Symbolic Names](docs/cases/symbolic_names.md)\n* [Account Class](docs/cases/account.md)\n* [Master Account](docs/cases/master_account.md)\n\n## Complete documentation\n\nPlease refer to the [table of contents](https://eosfactory.io/build/html/index.html).\n\n\n## Release notes\n\nPlease refer to [this document](docs/ReleaseNotes.md).\n\n## Roadmap\n\nOur long-term goal is to turn *EOSFactory* into a comprehensive IDE (Integrated Development Environment) for EOS smart-contracts.\n\n- [Plan for Subsequent EOSFactory Releases](docs/roadmap/PlanForSubsequentEOSFactoryReleases.md)\n- [Long-term EOSFactory Roadmap](docs/roadmap/LongTermEOSFactoryRoadmap.md)\n\n## Support\n\nFor issues not covered in the documentation there is a dedicated [EOS Factory Support](https://t.me/EOSFactorySupport) channel on Telegram.\n\n## Licence\n\nThis code is provided as is, under [MIT Licence](LICENCE).\n\n\nYour question is not clear to me.\nIf you refer to the statement from the tutorial *InstallingEOSFactory*:\n\n*EOSIO* deployed in Docker is NOT supported.*.\n\nHere we communicate that *EOSIO* executable has to be installed in the system directly, and not as a Docker image.\n\nWe do not like Docker because WSL (Windows System Linux) does not support it. However, we can consider meeting demand from Linux System users, if we see such.\n\n","funding_links":[],"categories":["EOS Smart Contract Development","Language Support","Developers"],"sub_categories":["Programming tools","Python","Libraries and Frameworks"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftokenika%2Feosfactory","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftokenika%2Feosfactory","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftokenika%2Feosfactory/lists"}