{"id":37063066,"url":"https://github.com/candango/tornado-wtforms","last_synced_at":"2026-01-14T07:02:10.327Z","repository":{"id":44813987,"uuid":"448690826","full_name":"candango/tornado-wtforms","owner":"candango","description":"WTForms extensions for Tornado.","archived":false,"fork":true,"pushed_at":"2024-06-21T19:14:44.000Z","size":80,"stargazers_count":2,"open_issues_count":3,"forks_count":0,"subscribers_count":1,"default_branch":"develop","last_synced_at":"2025-11-28T06:50:44.600Z","etag":null,"topics":["firenado","python3","tornado","wtforms"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":"puentesarrin/wtforms-tornado","license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/candango.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}},"created_at":"2022-01-16T22:40:56.000Z","updated_at":"2024-06-21T19:14:47.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/candango/tornado-wtforms","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/candango/tornado-wtforms","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/candango%2Ftornado-wtforms","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/candango%2Ftornado-wtforms/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/candango%2Ftornado-wtforms/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/candango%2Ftornado-wtforms/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/candango","download_url":"https://codeload.github.com/candango/tornado-wtforms/tar.gz/refs/heads/develop","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/candango%2Ftornado-wtforms/sbom","scorecard":{"id":264193,"data":{"date":"2025-08-11","repo":{"name":"github.com/candango/tornado-wtforms","commit":"35fb6119f8ec359270d696016bad18df62289c95"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":2.9,"checks":[{"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":"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":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["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":"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":"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":0,"reason":"Found 0/11 approved changesets -- score normalized to 0","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":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/run-tests.yml:14: update your workflow using https://app.stepsecurity.io/secureworkflow/candango/tornado-wtforms/run-tests.yml/develop?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/run-tests.yml:16: update your workflow using https://app.stepsecurity.io/secureworkflow/candango/tornado-wtforms/run-tests.yml/develop?enable=pin","Warn: pipCommand not pinned by hash: .github/workflows/run-tests.yml:21","Info:   0 out of   2 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   1 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":"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":"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":"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 'develop'"],"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":2,"reason":"8 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: GHSA-753j-mpmx-qq6g","Warn: Project is vulnerable to: GHSA-7cx3-6m66-7c5m","Warn: Project is vulnerable to: PYSEC-2020-213 / GHSA-8vpw-mgpf-mpvv","Warn: Project is vulnerable to: GHSA-8w49-h785-mj3c","Warn: Project is vulnerable to: PYSEC-2012-5 / GHSA-f7fv-v9rh-prvc","Warn: Project is vulnerable to: PYSEC-2023-75 / GHSA-hj3f-6gcp-jg8j","Warn: Project is vulnerable to: GHSA-qppv-j76h-2rpx","Warn: Project is vulnerable to: GHSA-w235-7p84-xx57"],"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":-1,"reason":"internal error: internal error: Client.Checks.ListCheckRunsForRef: error during graphqlHandler.setupCheckRuns: non-200 OK status code: 502 Bad Gateway body: \"\u003chtml\u003e\\r\\n\u003chead\u003e\u003ctitle\u003e502 Bad Gateway\u003c/title\u003e\u003c/head\u003e\\r\\n\u003cbody\u003e\\r\\n\u003ccenter\u003e\u003ch1\u003e502 Bad Gateway\u003c/h1\u003e\u003c/center\u003e\\r\\n\u003chr\u003e\u003ccenter\u003enginx\u003c/center\u003e\\r\\n\u003c/body\u003e\\r\\n\u003c/html\u003e\\r\\n\"","details":null,"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-17T11:33:53.944Z","repository_id":44813987,"created_at":"2025-08-17T11:33:53.944Z","updated_at":"2025-08-17T11:33:53.944Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28412486,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-14T05:26:33.345Z","status":"ssl_error","status_checked_at":"2026-01-14T05:21:57.251Z","response_time":107,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5: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":["firenado","python3","tornado","wtforms"],"created_at":"2026-01-14T07:02:09.584Z","updated_at":"2026-01-14T07:02:10.317Z","avatar_url":"https://github.com/candango.png","language":"Python","readme":"# Candango Tornado WTForms\n\n[![Latest PyPI version](https://img.shields.io/pypi/v/tornado-wtforms.svg)](https://pypi.org/project/tornado-wtforms/)\n[![Number of PyPI downloads](https://img.shields.io/pypi/dm/tornado-wtforms.svg)](https://pypi.org/project/tornado-wtforms/)\n[![Build Status](https://img.shields.io/endpoint.svg?url=https%3A%2F%2Factions-badge.atrox.dev%2Fcandango%2Ftornado-wtforms%2Fbadge\u0026style=flat)](https://actions-badge.atrox.dev/candango/tornado-wtforms/goto)\n\nWTForms extensions for Tornado forked from\n[WTForms-Tornado](https://github.com/puentesarrin/wtforms-tornado).\n\nWe will derive the amazing work developed by the original project and add \nfurther improvements.\n\nThe project [WTForms-Tornado](https://github.com/puentesarrin/wtforms-tornado)\nwill continue to be matained. Check the original project to see if it fit the\nneeds your project/application needs.\n\n## Usage\n\n```python\nimport tornado.ioloop\nimport tornado.web\n\nfrom wtforms.fields import IntegerField\nfrom wtforms.validators import DataRequired\nfrom tornado_wtforms.form import TornadoForm\n\n\nclass SumForm(TornadoForm):\n\n   a = IntegerField(validators=[DataRequired()])\n   b = IntegerField(validators=[DataRequired()])\n\n\nclass SumHandler(tornado.web.RequestHandler):\n   def get(self):\n       self.write(\"Hello, world\")\n\n   def post(self):\n       form = SumForm(self.request.arguments)\n       if form.validate():\n           self.write(str(form.data['a'] + form.data['b']))\n       else:\n           self.set_status(400)\n           self.write(\"\" % form.errors)\n\n\napplication = tornado.web.Application([\n    (r\"/\", SumHandler),\n])\n\nif __name__ == \"__main__\":\n   application.listen(8888)\n   tornado.ioloop.IOLoop.instance().start()\n```\n\n## Backwards Compatibility\n\nWe'll keep a backwards compatibility with the WTForms-Tornado but a\ndepreciation warning will be logged.\n\nThis still works after the instalation:\n\n```python\nfrom wtforms_tornado import Form\n\nclass LegacyForm(Form):\n\n   pass\n```\n\nThe `tornado_wtforms.from.Form` class is extending `wtforms.form.TornadoForm`\nand is available to be imported at `wtforms_tornado` module.\n\nJust changing wtforms_tornado by tornado_wtforms and keep importing Form won't\nwork, `from tornado_wtforms import Form`, because Form is not\nreferenced in tornado_wtforms module. Either you do\n`from tornado_wtforms.form import TornadoForm` or\n`from tornado_wtforms.form import Form`. The second option will still trigger\na depreciation after instantiating a Form instance.\n\n\n## Installation\n\nYou can to use pip_ to install Tornado-WTForms:\n\n```shell\n$ pip install tornado-wtforms\n```\n\nOr using last source:\n\n```shell\n$ pip install git+git://github.com/puentesarrin/tornado-wtforms.git\n```\n\nOr manually, download the latest source from PyPI:\n\n```shell\n$ tar xvzf tornado-wtforms-$VERSION.tar.gz\n$ cd tornado-wtforms-$VERSION\n$ python setup.py build\n$ sudo python setup.py install\n```\n\n## Support\n\nTornado WTForms is a fork from\n[WTForms Tornado](https://pypi.org/project/wtforms-tornado/)\nand now is one of\n[Candango Open Source Group](http://www.candango.org/projects/)\ninitiatives and is available under\n[Apache License, Version 2.0](http://www.apache.org/licenses/LICENSE-2.0.html).\n\n[WTForms Tornado](https://pypi.org/project/wtforms-tornado/) is maintained by\n[Jorge Puente Sarrín](https://github.com/puentesarrin) and is available under\n[Apache License, Version 2.0](http://www.apache.org/licenses/LICENSE-2.0.html).\n\nThis web site and all documentation is licensed under [Creative\nCommons 3.0](http://creativecommons.org/licenses/by/3.0/).\n\nCopyright (c) 2022 Flávio Gonçalves Garcia\n\nCopyright (c) 2013-2022 Jorge Puente Sarrín\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcandango%2Ftornado-wtforms","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcandango%2Ftornado-wtforms","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcandango%2Ftornado-wtforms/lists"}