Browse Source

added malayalam translation (ml) for index.md

pull/13508/head
aditykris 2 weeks ago
parent
commit
c6d6e258a8
  1. 78
      docs/en/mkdocs.yml
  2. 496
      docs/ml/docs/index.md
  3. 1
      docs/ml/mkdocs.yml
  4. 420
      fastapi1/Scripts/Activate.ps1
  5. 69
      fastapi1/Scripts/activate
  6. 34
      fastapi1/Scripts/activate.bat
  7. BIN
      fastapi1/Scripts/black.exe
  8. BIN
      fastapi1/Scripts/blackd.exe
  9. BIN
      fastapi1/Scripts/cairosvg.exe
  10. BIN
      fastapi1/Scripts/coverage-3.10.exe
  11. BIN
      fastapi1/Scripts/coverage.exe
  12. BIN
      fastapi1/Scripts/coverage3.exe
  13. 22
      fastapi1/Scripts/deactivate.bat
  14. BIN
      fastapi1/Scripts/dmypy.exe
  15. BIN
      fastapi1/Scripts/dotenv.exe
  16. BIN
      fastapi1/Scripts/email_validator.exe
  17. BIN
      fastapi1/Scripts/fastapi.exe
  18. BIN
      fastapi1/Scripts/flask.exe
  19. BIN
      fastapi1/Scripts/ghp-import.exe
  20. BIN
      fastapi1/Scripts/griffe.exe
  21. BIN
      fastapi1/Scripts/hjson.exe
  22. BIN
      fastapi1/Scripts/httpx.exe
  23. BIN
      fastapi1/Scripts/identify-cli.exe
  24. BIN
      fastapi1/Scripts/markdown-it.exe
  25. BIN
      fastapi1/Scripts/markdown_py.exe
  26. BIN
      fastapi1/Scripts/mkdocs-get-deps.exe
  27. BIN
      fastapi1/Scripts/mkdocs.exe
  28. BIN
      fastapi1/Scripts/mypy.exe
  29. BIN
      fastapi1/Scripts/mypyc.exe
  30. BIN
      fastapi1/Scripts/nodeenv.exe
  31. BIN
      fastapi1/Scripts/normalizer.exe
  32. BIN
      fastapi1/Scripts/pip.exe
  33. BIN
      fastapi1/Scripts/pip3.10.exe
  34. BIN
      fastapi1/Scripts/pip3.exe
  35. BIN
      fastapi1/Scripts/playwright.exe
  36. BIN
      fastapi1/Scripts/pre-commit.exe
  37. BIN
      fastapi1/Scripts/py.test.exe
  38. BIN
      fastapi1/Scripts/pybabel.exe
  39. BIN
      fastapi1/Scripts/pygmentize.exe
  40. BIN
      fastapi1/Scripts/pytest.exe
  41. BIN
      fastapi1/Scripts/python.exe
  42. BIN
      fastapi1/Scripts/pythonw.exe
  43. BIN
      fastapi1/Scripts/ruff.exe
  44. BIN
      fastapi1/Scripts/stubgen.exe
  45. BIN
      fastapi1/Scripts/stubtest.exe
  46. BIN
      fastapi1/Scripts/typer.exe
  47. BIN
      fastapi1/Scripts/uvicorn.exe
  48. BIN
      fastapi1/Scripts/virtualenv.exe
  49. BIN
      fastapi1/Scripts/watchfiles.exe
  50. BIN
      fastapi1/Scripts/watchmedo.exe
  51. BIN
      fastapi1/Scripts/websockets.exe
  52. 3
      fastapi1/pyvenv.cfg

78
docs/en/mkdocs.yml

@ -6,7 +6,7 @@ theme:
name: material name: material
custom_dir: ../en/overrides custom_dir: ../en/overrides
palette: palette:
- media: "(prefers-color-scheme)" - media: (prefers-color-scheme)
toggle: toggle:
icon: material/lightbulb-auto icon: material/lightbulb-auto
name: Switch to light mode name: Switch to light mode
@ -27,7 +27,6 @@ theme:
features: features:
- content.code.annotate - content.code.annotate
- content.code.copy - content.code.copy
# - content.code.select
- content.footnote.tooltips - content.footnote.tooltips
- content.tabs.link - content.tabs.link
- content.tooltips - content.tooltips
@ -35,7 +34,6 @@ theme:
- navigation.indexes - navigation.indexes
- navigation.instant - navigation.instant
- navigation.instant.prefetch - navigation.instant.prefetch
# - navigation.instant.preview
- navigation.instant.progress - navigation.instant.progress
- navigation.path - navigation.path
- navigation.tabs - navigation.tabs
@ -46,7 +44,6 @@ theme:
- search.share - search.share
- search.suggest - search.suggest
- toc.follow - toc.follow
icon: icon:
repo: fontawesome/brands/github-alt repo: fontawesome/brands/github-alt
logo: img/icon-white.svg logo: img/icon-white.svg
@ -55,11 +52,7 @@ theme:
repo_name: fastapi/fastapi repo_name: fastapi/fastapi
repo_url: https://github.com/fastapi/fastapi repo_url: https://github.com/fastapi/fastapi
plugins: plugins:
# Material for MkDocs search: null
search:
# Configured in mkdocs.insiders.yml
# social:
# Other plugins
macros: macros:
include_yaml: include_yaml:
- external_links: ../en/data/external_links.yml - external_links: ../en/data/external_links.yml
@ -103,7 +96,6 @@ plugins:
signature_crossrefs: true signature_crossrefs: true
show_symbol_type_heading: true show_symbol_type_heading: true
show_symbol_type_toc: true show_symbol_type_toc: true
nav: nav:
- FastAPI: index.md - FastAPI: index.md
- features.md - features.md
@ -258,33 +250,27 @@ nav:
- benchmarks.md - benchmarks.md
- management.md - management.md
- release-notes.md - release-notes.md
markdown_extensions: markdown_extensions:
# Python Markdown abbr: null
abbr: attr_list: null
attr_list: footnotes: null
footnotes: md_in_html: null
md_in_html: tables: null
tables:
toc: toc:
permalink: true permalink: true
pymdownx.betterem: null
# Python Markdown Extensions pymdownx.caret: null
pymdownx.betterem:
pymdownx.caret:
pymdownx.highlight: pymdownx.highlight:
line_spans: __span line_spans: __span
pymdownx.inlinehilite: pymdownx.inlinehilite: null
pymdownx.keys: pymdownx.keys: null
pymdownx.mark: pymdownx.mark: null
pymdownx.superfences: pymdownx.superfences:
custom_fences: custom_fences:
- name: mermaid - name: mermaid
class: mermaid class: mermaid
format: !!python/name:pymdownx.superfences.fence_code_format format: !!python/name:pymdownx.superfences.fence_code_format ''
pymdownx.tilde: pymdownx.tilde: null
# pymdownx blocks
pymdownx.blocks.admonition: pymdownx.blocks.admonition:
types: types:
- note - note
@ -295,17 +281,13 @@ markdown_extensions:
- tip - tip
- hint - hint
- warning - warning
# Custom types
- info - info
- check - check
pymdownx.blocks.details: pymdownx.blocks.details: null
pymdownx.blocks.tab: pymdownx.blocks.tab:
alternate_style: True alternate_style: true
mdx_include: null
# Other extensions markdown_include_variants: null
mdx_include:
markdown_include_variants:
extra: extra:
analytics: analytics:
provider: google provider: google
@ -313,16 +295,14 @@ extra:
feedback: feedback:
title: Was this page helpful? title: Was this page helpful?
ratings: ratings:
- icon: material/emoticon-happy-outline - icon: material/emoticon-happy-outline
name: This page was helpful name: This page was helpful
data: 1 data: 1
note: >- note: Thanks for your feedback!
Thanks for your feedback! - icon: material/emoticon-sad-outline
- icon: material/emoticon-sad-outline name: This page could be improved
name: This page could be improved data: 0
data: 0 note: Thanks for your feedback!
note: >-
Thanks for your feedback!
social: social:
- icon: fontawesome/brands/github-alt - icon: fontawesome/brands/github-alt
link: https://github.com/fastapi/fastapi link: https://github.com/fastapi/fastapi
@ -338,7 +318,6 @@ extra:
link: https://medium.com/@tiangolo link: https://medium.com/@tiangolo
- icon: fontawesome/solid/globe - icon: fontawesome/solid/globe
link: https://tiangolo.com link: https://tiangolo.com
alternate: alternate:
- link: / - link: /
name: en - English name: en - English
@ -366,6 +345,8 @@ extra:
name: ja - 日本語 name: ja - 日本語
- link: /ko/ - link: /ko/
name: ko - 한국어 name: ko - 한국어
- link: /ml/
name: ml - മലയാളം
- link: /nl/ - link: /nl/
name: nl - Nederlands name: nl - Nederlands
- link: /pl/ - link: /pl/
@ -390,14 +371,11 @@ extra:
name: zh-hant - 繁體中文 name: zh-hant - 繁體中文
- link: /em/ - link: /em/
name: 😉 name: 😉
extra_css: extra_css:
- css/termynal.css - css/termynal.css
- css/custom.css - css/custom.css
extra_javascript: extra_javascript:
- js/termynal.js - js/termynal.js
- js/custom.js - js/custom.js
hooks: hooks:
- ../../scripts/mkdocs_hooks.py - ../../scripts/mkdocs_hooks.py

496
docs/ml/docs/index.md

@ -0,0 +1,496 @@
# ഫാസ്റ്റ് API
<style>
.md-content .md-typeset h1 { display: none; }
</style>
<p align="center">
<a href="https://fastapi.tiangolo.com"><img src="https://fastapi.tiangolo.com/img/logo-margin/logo-teal.png" alt="ഫാസ്റ്റ് API"></a>
</p>
<p align="center">
<em>ഫാസ്റ്റ് API ഫ്രെയിംവർക്ക്, ഉയർന്ന പ്രകടനം, പഠിക്കാൻ എളുപ്പം, നിർമ്മാണത്തിന് തയ്യാറാണ് </em>
</p>
<p align="center">
<a href="https://github.com/fastapi/fastapi/actions?query=workflow%3ATest+event%3Apush+branch%3Amaster" target="_blank">
<img src="https://github.com/fastapi/fastapi/actions/workflows/test.yml/badge.svg?event=push&branch=master" alt="Test">
</a>
<a href="https://coverage-badge.samuelcolvin.workers.dev/redirect/fastapi/fastapi" target="_blank">
<img src="https://coverage-badge.samuelcolvin.workers.dev/fastapi/fastapi.svg" alt="Coverage">
</a>
<a href="https://pypi.org/project/fastapi" target="_blank">
<img src="https://img.shields.io/pypi/v/fastapi?color=%2334D058&label=pypi%20package" alt="Package version">
</a>
<a href="https://pypi.org/project/fastapi" target="_blank">
<img src="https://img.shields.io/pypi/pyversions/fastapi.svg?color=%2334D058" alt="Supported Python versions">
</a>
</p>
---
**ഡോക്യുമെൻ്റേഷൻ**: <a href="https://fastapi.tiangolo.com" target="_blank">https://fastapi.tiangolo.com</a>
**സോഴ്സ് കോഡ്**: <a href="https://github.com/fastapi/fastapi" target="_blank">https://github.com/fastapi/fastapi</a>
---
ഫാസ്റ്റ് API ഒരു ആധുനികവും വേഗതയേറിയതുമായ (ഉയർന്ന പ്രകടനക്ഷമതയുള്ള) വെബ് ഫ്രെയിംവർക്ക് ആണ്, ഇത് സ്റ്റാൻഡേർഡ് പൈത്തൺ ടൈപ്പ് ഹിന്റ്സ് അടിസ്ഥാനമാക്കി പൈത്തണിൽ APIകൾ നിർമ്മിക്കാൻ വികസിപ്പിച്ചെടുത്തിരിക്കുന്നു.
പ്രധാന സവിശേഷതകൾ ഇവയാണ്:
* **വേഗതയുള്ള**: വളരെ ഉയർന്ന പ്രകടനം, **NodeJS**, **Go** എന്നിവയ്ക്ക് തുല്യമായി (സ്റ്റാർലെറ്റിനും പൈഡൻ്റിക്കിനും നന്ദി). [ ലഭ്യമായ ഏറ്റവും വേഗമേറിയ പൈത്തൺ ഫ്രെയിംവർക്കുകളിൽ ഒന്നു ](#പർഫോർമൻസ്).
* **വേഗത്തിൽ കോഡ് ചെയ്യാം**: സവിശേഷതകൾ വികസിപ്പിക്കുന്നതിനുള്ള വേഗത ഏകദേശം 200% മുതൽ 300% വരെ വർദ്ധിപ്പിക്കുന്നു. *
* **കുറവ് ബഗുകൾ**: മാനുഷിക (ഡെവലപ്പർ) പ്രേരിത പിശകുകളുടെ ഏകദേശം 40% കുറയ്ക്കുന്നു. *
* **അവബോധജന്യമായ**: മികച്ച എഡിറ്റർ പിന്തുണ. <abbr title="ഓട്ടോ-കമ്പ്ലീറ്റ്, ഓട്ടോക്കംപ്ലീഷൻ, ഇൻ്റലിസെൻസ് എന്നും അറിയപ്പെടുന്നു"> പൂർത്തീകരണം</abbr> എല്ലായിടത്തും. ചുരുങ്ങിയ സമയത്തിൽ ഡീബഗ്ഗിംഗ്.
* **എളുപ്പം**: എളുപ്പത്തിൽ ഉപയോഗിക്കാനും പഠിക്കാനും രൂപകൽപ്പന ചെയ്തിരിക്കുന്നത്. കുറഞ്ഞ സമയം കൊണ്ട് ഡോക്യുമെന്റേഷൻ വായിക്കാം.
* **ലഘു**: കോഡ് ഡ്യൂപ്ലിക്കേഷൻ കുറയ്ക്കുക. ഓരോ പാരാമീറ്റർ പ്രഖ്യാപനത്തിൽ നിന്നും ഒന്നിലധികം സവിശേഷതകൾ. കുറച്ച് ബഗുകൾ.
* **കരുത്തുള്ള**: ഓട്ടോമാറ്റിക് ഇൻ്ററാക്ടീവ് ഡോക്യുമെൻ്റേഷൻ ഉപയോഗിച്ച് നിർമ്മാണത്തിന് തയ്യാറായ കോഡ് ലഭിക്കും.
* **മാനദണ്ഡങ്ങൾ അടിസ്ഥാനമാക്കിയുള്ളത്**: API-കൾക്കുള്ള ഓപ്പൺ സ്റ്റാൻഡേർഡുകളെ അടിസ്ഥാനമാക്കി (പൂർണമായും പൊരുത്തപ്പെടുന്നു): <a href="https://github.com/OAI/OpenAPI-Specification" class="external-link" target="_blank">ഓപ്പൺ API</a> (മുമ്പ് സ്വാഗർ എന്നറിയപ്പെട്ടിരുന്നു) and <a href="https://json-schema.org/" class="external-link" target="_blank">JSON സ്കീമ</a>.
<small>* പ്രൊഡക്ഷൻ ആപ്ലിക്കേഷനുകൾ വികസിപ്പിക്കുന്ന ഒരു ഇൻറേണൽ ഡെവലപ്‌മെൻറ് ടീമിലെ ടെസ്റ്റുകളെ അടിസ്ഥാനമാക്കിയുള്ള മൂല്യനിർണ്ണയം. "</small>
## Sponsors
<!-- sponsors -->
{% if sponsors %}
{% for sponsor in sponsors.gold -%}
<a href="{{ sponsor.url }}" target="_blank" title="{{ sponsor.title }}"><img src="{{ sponsor.img }}" style="border-radius:15px"></a>
{% endfor -%}
{%- for sponsor in sponsors.silver -%}
<a href="{{ sponsor.url }}" target="_blank" title="{{ sponsor.title }}"><img src="{{ sponsor.img }}" style="border-radius:15px"></a>
{% endfor %}
{% endif %}
<!-- /sponsors -->
<a href="https://fastapi.tiangolo.com/fastapi-people/#sponsors" class="external-link" target="_blank">Other sponsors</a>
## അഭിപ്രായങ്ങൾ
"_[...] ഞാൻ ഇക്കാലത്ത് **ഫാസ്റ്റ് API** ധാരാളം ഉപയോഗിക്കുന്നുണ്ട്. [...] മൈക്രോസോഫ്റ്റിലെ എന്റെ ടീമിന്റെ എല്ലാ **ML സേവനങ്ങൾക്കും** ഇത് ഉപയോഗിക്കാൻ ഞാൻ പദ്ധതിയിടുന്നു. അവയിൽ ചിലത് കോർ **വിൻഡോസ്** ഉൽപ്പന്നത്തിലും ചില **ഓഫീസ്** ഉൽപ്പന്നങ്ങളിലും സംയോജിപ്പിക്കപ്പെടുന്നു._"
<div style="text-align: right; margin-right: 10%;">കബീർ ഖാൻ - <strong>മൈക്രോസോഫ്റ്റ്</strong> <a href="https://github.com/fastapi/fastapi/pull/26" target="_blank"><small>(റഫറൻസ്)</small></a></div>
---
"_**പ്രവചനങ്ങൾ** ലഭിക്കുന്നതിനായി അന്വേഷിക്കാൻ കഴിയുന്ന ഒരു **REST** സെർവർ നിർമ്മിക്കുന്നതിനായി ഞങ്ങൾ **ഫാസ്റ്റ് API** ലൈബ്രറി സ്വീകരിച്ചു. [ലുഡ്‌വിഗിന്]_"
<div style="text-align: right; margin-right: 10%;">പൈറോ മോളിന, യാരോസ്ലാവ് ഡുഡിൻ, സായ് സുമന്ത് മിര്യാല - <strong>യൂബർ</strong> <a href="https://eng.uber.com/ludwig-v0-2/" target="_blank"><small>(റഫറൻസ്)</small></a></div>
---
"_**നെറ്റ്ഫ്ലിക്സ്** ഞങ്ങളുടെ **ക്രൈസിസ് മാനേജ്മെന്റ്** ഓർക്കസ്ട്രേഷൻ ഫ്രെയിംവർക്കിന്റെ ഓപ്പൺ സോഴ്‌സ് റിലീസ് പ്രഖ്യാപിക്കുന്നതിൽ സന്തോഷമുണ്ട്: **ഡിസ്പാച്ച്**! [**ഫാസ്റ്റ് API** ഉപയോഗിച്ച് നിർമ്മിച്ചത്]_"
<div style="text-align: right; margin-right: 10%;">കെവിൻ ഗ്ലിസൻ, മാർക്ക് വിലനോവ, ഫോറസ്റ്റ് മോൺസെൻ - <strong>നെറ്റ്ഫ്ലിക്സ്</strong> <a href="https://netflixtechblog.com/introducing-dispatch-da4b8a2a8072" target="_blank"><small>(റഫറൻസ്)</small></a></div>
---
"_ഫാസ്റ്റ് API വളരെ ആവേശകരമാണ്. ഇത് വളരെ രസകരമാണ്!_"
<div style="text-align: right; margin-right: 10%;">ബ്രയാൻ ഒക്കെൻ - <strong><a href="https://pythonbytes.fm/episodes/show/123/time-to-right-the-py-wrongs?time_in_sec=855" target="_blank">പൈത്തൺ ബൈറ്റ്</a> പോഡ്‌കാസ്റ്റ് അവതാരകൻ</strong> <a href="https://twitter.com/brianokken/status/1112220079972728832" target="_blank"><small>(റഫറൻസ്)</small></a></div>
---
"_സത്യം പറഞ്ഞാൽ, നിങ്ങൾ നിർമ്മിച്ചത് വളരെ ഉറച്ചതും മിനുസപ്പെടുത്തിയതുമായി തോന്നുന്നു. പല തരത്തിൽ, **ആലിംഗനം** ആകണമെന്ന് ഞാൻ ആഗ്രഹിച്ചത് അതാണ് - ആരെങ്കിലും അത് നിർമ്മിക്കുന്നത് കാണുന്നത് ശരിക്കും പ്രചോദനം നൽകുന്നു._"
<div style="text-align: right; margin-right: 10%;">തിമോത്തി ക്രോസ്ലി - <strong><a href="https://github.com/hugapi/hug" target="_blank">ആലിംഗനം</a> creator</strong> <a href="https://news.ycombinator.com/item?id=19455465" target="_blank"><small>(റഫറൻസ്)</small></a></div>
---
"_റെസ്റ്റ് API-കൾ നിർമ്മിക്കുന്നതിനുള്ള ഒരു **ആധുനിക ഫ്രെയിംവർക്ക്** പഠിക്കാൻ നിങ്ങൾ ആഗ്രഹിക്കുന്നുവെങ്കിൽ, **ഫാസ്റ്റ് API** പരിശോധിക്കുക [...] വേഗതയുള്ളതും ഉപയോഗിക്കാൻ എളുപ്പമുള്ളതും പഠിക്കാൻ എളുപ്പവുമാണ് [...]_"
"_ഞങ്ങളുടെ **API-കൾക്കായി **ഫാസ്റ്റ് API**-ലേക്ക് മാറിയിരിക്കുന്നു** [...] നിങ്ങൾക്ക് ഇത് ഇഷ്ടപ്പെടുമെന്ന് ഞാൻ കരുതുന്നു [...]_"
<div style="text-align: right; margin-right: 10%;">ഇനെസ് മൊണ്ടാനി - മാത്യു ഹോണിബൽ - <strong><a href="https://explosion.ai" target="_blank">എക്സ്പ്ലോഷൻ AI</a> സ്ഥാപകർ - <a href="https://spacy.io" target="_blank">സ്പേസി</a> സ്രഷ്ടാക്കൾ</strong> <a href="https://twitter.com/_inesmontani/status/1144173225322143744" target="_blank"><small>(റഫറൻസ്)</small></a> - <a href="https://twitter.com/honnibal/status/1144031421859655680" target="_blank"><small>(റഫറൻസ്)</small></a></div>
---
"_ആരെങ്കിലും ഒരു പ്രൊഡക്ഷൻ പൈത്തൺ API നിർമ്മിക്കാൻ ആഗ്രഹിക്കുന്നുവെങ്കിൽ, ഞാൻ **FastAPI** ശുപാർശ ചെയ്യുന്നു. ഇത് **മനോഹരമായി രൂപകൽപ്പന ചെയ്‌തിരിക്കുന്നു**, **ഉപയോഗിക്കാൻ ലളിതമാണ്**, **ഉയർന്ന തോതിൽ സ്കെയിലബിൾ**, ഇത് ഞങ്ങളുടെ API ഫസ്റ്റ് ഡെവലപ്‌മെന്റ് തന്ത്രത്തിലെ **പ്രധാന ഘടകമായി** മാറിയിരിക്കുന്നു കൂടാതെ ഞങ്ങളുടെ വെർച്വൽ TAC എഞ്ചിനീയർ പോലുള്ള നിരവധി ഓട്ടോമേഷനുകളും സേവനങ്ങളും നയിക്കുന്നു._"
<div style="text-align: right; margin-right: 10%;">ഡിയോൺ പിൽസ്ബറി - <strong>സിസ്കോ</strong> <a href="https://www.linkedin.com/posts/deonpillsbury_cisco-cx-python-activity-6963242628536487936-trAp/" target="_blank"><small>(റഫറൻസ്)</small></a></div>
---
## **ടൈപ്പർ**, CLI-കളുടെ ഫാസ്റ്റ് API
<a href="https://typer.tiangolo.com" target="_blank"><img src="https://typer.tiangolo.com/img/logo-margin/logo-margin-vector.svg" style="width: 20%;"></a>
വെബ് API-യ്ക്ക് പകരം ടെർമിനലിൽ ഉപയോഗിക്കുന്നതിനായി <abbr title="Command Line Interface">CLI</abbr> ആപ്പ് നിർമ്മിക്കുകയാണെങ്കിൽ, <a href="https://typer.tiangolo.com/" class="external-link" target="_blank">**Typer**</a> പരിശോധിക്കുക.
**ടൈപ്പർ** എന്നത് ഫാസ്റ്റ് API യുടെ ഇളയ സഹോദരനാണ്. CLI-കളുടെ **ഫാസ്റ്റ് API** ആകാനാണ് ഇത് ഉദ്ദേശിക്കുന്നത്. ⌨️ 🚀
## ആവശ്യമായത്
ഫാസ്റ്റ് API ഭീമന്മാരുടെ തോളിൽ നിൽക്കുന്നു:
* <a href="https://www.starlette.io/" class="external-link" target="_blank">സ്റ്റാർലെറ്റ്</a> വെബ് ഭാഗങ്ങൾക്കായി.
* <a href="https://docs.pydantic.dev/" class="external-link" target="_blank">പൈഡാൻറിക്</a> ഡാറ്റ ഭാഗങ്ങൾക്കായി.
## ഇൻസ്റ്റലേഷൻ
ഒരു <a href="https://fastapi.tiangolo.com/virtual-environments/" class="external-link" target="_blank">വെർച്വൽ എൻവയോൺമെന്റ്</a> സൃഷ്ടിച്ച് സജീവമാക്കുക, തുടർന്ന് ഫാസ്റ്റ് API ഇൻസ്റ്റാൾ ചെയ്യുക:
<div class="termy">
```console
$ pip install "fastapi[standard]"
---> 100%
```
</div>
**കുറിപ്പ്**: എല്ലാ ടെർമിനലുകളിലും ഇത് പ്രവർത്തിക്കുന്നുവെന്ന് ഉറപ്പാക്കാൻ ഉദ്ധരണികളിൽ `"fastapi[standard]"` എന്ന് ചേർത്തിട്ടുണ്ടെന്ന് ഉറപ്പാക്കുക.
## ഉദാഹരണം
### സൃഷ്ടിക്കൂ
* `main.py` എന്ന ഫയൽ സൃഷ്ടിക്കുക:
```Python
from typing import Union
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
def read_root():
return {"Hello": "World"}
@app.get("/items/{item_id}")
def read_item(item_id: int, q: Union[str, None] = None):
return {"item_id": item_id, "q": q}
```
<details markdown="1">
<summary>Or use <code>async def</code>...</summary>
നിങ്ങളുടെ കോഡ് `async` / `await` ഉപയോഗിക്കുകയാണെങ്കിൽ, `async def` ഉപയോഗിക്കുക:
```Python hl_lines="9 14"
from typing import Union
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
async def read_root():
return {"Hello": "World"}
@app.get("/items/{item_id}")
async def read_item(item_id: int, q: Union[str, None] = None):
return {"item_id": item_id, "q": q}
```
**കുറിപ്പ്**:
നിങ്ങൾക്ക് അറിയില്ലെങ്കിൽ, ഡോക്യുമെന്റിലെ <a href="https://fastapi.tiangolo.com/async/#in-a-hurry" target="_blank">`async` ഉം `wait` ഉം</a> എന്നതിനെക്കുറിച്ചുള്ള _"തിരക്കിലാണ്?"_ വിഭാഗം പരിശോധിക്കുക.
</details>
### പ്രവർത്തിപ്പിക്കുക
സെർവർ ഇതുപയോഗിച്ച് പ്രവർത്തിപ്പിക്കുക:
<div class="termy">
```console
$ fastapi dev main.py
╭────────── FastAPI CLI - Development mode ───────────╮
│ │
│ Serving at: http://127.0.0.1:8000 │
│ │
│ API docs: http://127.0.0.1:8000/docs │
│ │
│ Running in development mode, for production use: │
│ │
│ fastapi run │
│ │
╰─────────────────────────────────────────────────────╯
INFO: Will watch for changes in these directories: ['/home/user/code/awesomeapp']
INFO: Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)
INFO: Started reloader process [2248755] using WatchFiles
INFO: Started server process [2248757]
INFO: Waiting for application startup.
INFO: Application startup complete.
```
</div>
<details markdown="1">
<summary> <code>fastapi dev main.py</code> കമാൻഡിനെക്കുറിച്ച്...</summary>
`fastapi dev` എന്ന കമാൻഡ് നിങ്ങളുടെ `main.py` ഫയൽ വായിക്കുകയും അതിലെ **FastAPI** ആപ്പ് കണ്ടെത്തുകയും <a href="https://www.uvicorn.org" class="external-link" target="_blank">Uvicorn</a> ഉപയോഗിച്ച് ഒരു സെർവർ ആരംഭിക്കുകയും ചെയ്യുന്നു.
ഡിഫോൾട്ടായി, പ്രാദേശിക വികസനത്തിനായി പ്രവർത്തനക്ഷമമാക്കിയ ഓട്ടോ-റീലോഡ് ഉപയോഗിച്ചായിരിക്കും `fastapi dev` ആരംഭിക്കുക.
<a href="https://fastapi.tiangolo.com/fastapi-cli/" target="_blank">FastAPI CLI ഡോക്യുമെന്റുകളിൽ</a> ഇതിനെക്കുറിച്ച് നിങ്ങൾക്ക് കൂടുതൽ വായിക്കാം.
</details>
### Check it
<a href="http://127.0.0.1:8000/items/5?q=somequery" class="external-link" target="_blank">http://127.0.0.1:8000/items/5?q=somequery</a> എന്ന അഡ്രസ് നിങ്ങളുടെ ബ്രൗസറിൽ തുറക്കുക.
നിങ്ങൾക്ക് JSON പ്രതികരണം ഇങ്ങനെ കാണാനാകും:
```JSON
{"item_id": 5, "q": "somequery"}
```
നിങ്ങൾ ഇതിനകം തന്നെ ഒരു API സൃഷ്ടിച്ചിട്ടുണ്ട്, അത്:
* _paths_ `/`, `/items/{item_id}` എന്നിവയിൽ HTTP അഭ്യർത്ഥനകൾ സ്വീകരിക്കുന്നു.
* രണ്ട് _paths_ ഉം `GET` <em>പ്രവർത്തനങ്ങൾ</em> (HTTP _methods_ എന്നും അറിയപ്പെടുന്നു) എടുക്കുന്നു.
* _path_ `/items/{item_id}` ന് ഒരു `int` ആയിരിക്കണം _path parameter_ `item_id` ഉണ്ട്.
* _path_ `/items/{item_id}` ന് ഒരു ഓപ്‌ഷണൽ `str` _query പാരാമീറ്റർ_ `q` ഉണ്ട്.
### ഇൻറ്ററാക്റ്റിവ് API ഡോക്യൂമെന്റുകൾ
ഇനി <a href="http://127.0.0.1:8000/docs" class="external-link" target="_blank">http://127.0.0.1:8000/docs</a> എന്നതിലേക്ക് പോകുക.
നിങ്ങൾക്ക് ഓട്ടോമാറ്റിക് ഇന്ററാക്ടീവ് API ഡോക്യുമെന്റേഷൻ കാണാൻ കഴിയും (<a href="https://github.com/swagger-api/swagger-ui" class="external-link" target="_blank">സ്വാഗർ UI</a> നൽകുന്നത്):
![Swagger UI](https://fastapi.tiangolo.com/img/index/index-01-swagger-ui-simple.png)
### ഇതര API ഡോക്യൂമെന്റുകൾ
ഇനി, <a href="http://127.0.0.1:8000/redoc" class="external-link" target="_blank">http://127.0.0.1:8000/redoc</a> എന്നതിലേക്ക് പോകുക.
നിങ്ങൾക്ക് ഇതര ഓട്ടോമാറ്റിക് ഡോക്യുമെന്റേഷൻ കാണാൻ കഴിയും (<a href="https://github.com/Rebilly/ReDoc" class="external-link" target="_blank">ReDoc</a> നൽകുന്നത്):
![ReDoc](https://fastapi.tiangolo.com/img/index/index-02-redoc-simple.png)
## ഉദാഹരണ നവീകരണം
ഇനി `PUT` അഭ്യർത്ഥനയിൽ നിന്ന് ഒരു ബോഡി സ്വീകരിക്കുന്നതിന് `main.py` ഫയൽ പരിഷ്കരിക്കുക.
സ്റ്റാൻഡേർഡ് പൈത്തൺ തരങ്ങൾ ഉപയോഗിച്ച് ബോഡി പ്രഖ്യാപിക്കുക, പൈഡാന്റിക്കിന് നന്ദി.
```Python hl_lines="4 9-12 25-27"
from typing import Union
from fastapi import FastAPI
from pydantic import BaseModel
app = FastAPI()
class Item(BaseModel):
name: str
price: float
is_offer: Union[bool, None] = None
@app.get("/")
def read_root():
return {"Hello": "World"}
@app.get("/items/{item_id}")
def read_item(item_id: int, q: Union[str, None] = None):
return {"item_id": item_id, "q": q}
@app.put("/items/{item_id}")
def update_item(item_id: int, item: Item):
return {"item_name": item.name, "item_id": item_id}
```
`fastapi dev` സെർവർ യാന്ത്രികമായി റീലോഡ് ചെയ്തിട്ടുണ്ടാവണം.
### ഇൻറ്ററാക്റ്റിവ് API ഡോക്‌സ് അപ്‌ഗ്രേഡ്
ഇനി <a href="http://127.0.0.1:8000/docs" class="external-link" target="_blank">http://127.0.0.1:8000/docs</a> എന്നതിലേക്ക് പോകുക.
* പുതിയ ബോഡി ഉൾപ്പെടെ, ഇൻറ്ററാക്റ്റിവ് API ഡോക്യുമെന്റേഷൻ സ്വയമേവ അപ്ഡേറ്റ് ചെയ്യപ്പെടും:
![Swagger UI](https://fastapi.tiangolo.com/img/index/index-03-swagger-02.png)
* "ഇത് പരീക്ഷിച്ചുനോക്കൂ" എന്ന ബട്ടണിൽ ക്ലിക്കുചെയ്യുക, ഇത് പാരാമീറ്ററുകൾ പൂരിപ്പിക്കാനും API-യുമായി നേരിട്ട് സംവദിക്കാനും നിങ്ങളെ അനുവദിക്കുന്നു:
![Swagger UI interaction](https://fastapi.tiangolo.com/img/index/index-04-swagger-03.png)
* തുടർന്ന് "എക്സിക്യൂട്ട്" ബട്ടണിൽ ക്ലിക്കു ചെയ്യുക, ഉപയോക്തൃ ഇന്റർഫേസ് നിങ്ങളുടെ API-യുമായി ആശയവിനിമയം നടത്തുകയും പാരാമീറ്ററുകൾ അയയ്ക്കുകയും ഫലങ്ങൾ നേടുകയും സ്ക്രീനിൽ കാണിക്കുകയും ചെയ്യും:
![Swagger UI interaction](https://fastapi.tiangolo.com/img/index/index-05-swagger-04.png)
### ഇതര API ഡോക്യൂമെന്റുകൾ നവീകരണം
ഇനി, <a href="http://127.0.0.1:8000/redoc" class="external-link" target="_blank">http://127.0.0.1:8000/redoc</a> എന്നതിലേക്ക് പോകുക.
* ഇതര ഡോക്യുമെന്റേഷൻ പുതിയ ക്വറി പാരാമീറ്ററും ബോഡിയും പ്രതിഫലിപ്പിക്കും:
![ReDoc](https://fastapi.tiangolo.com/img/index/index-06-redoc-02.png)
### പുനരാവലോകനം
ചുരുക്കത്തിൽ, നിങ്ങൾ പാരാമീറ്ററുകളുടെ തരങ്ങൾ, ബോഡി മുതലായവ **ഒരിക്കൽ** ഫംഗ്ഷൻ പാരാമീറ്ററുകളായി പ്രഖ്യാപിക്കുന്നു.
സ്റ്റാൻഡേർഡ് ആധുനിക പൈത്തൺ തരങ്ങൾ ഉപയോഗിച്ചാണ് നിങ്ങൾ അത് ചെയ്യുന്നത്.
നിങ്ങൾ ഒരു പുതിയ വാക്യഘടന, ഒരു പ്രത്യേക ലൈബ്രറിയുടെ രീതികൾ അല്ലെങ്കിൽ ക്ലാസുകൾ മുതലായവ പഠിക്കേണ്ടതില്ല.
വെറും സ്റ്റാൻഡേർഡ് **പൈത്തൺ**.
ഉദാഹരണത്തിന്, ഒരു `int` ന്:
```Python
item_id: int
```
അല്ലെങ്കിൽ കൂടുതൽ സങ്കീർണ്ണമായ ഒരു `Item` മോഡലിന്:
```Python
item: Item
```
...ആ ഒരൊറ്റ പ്രസ്താവനയിലൂടെ നിങ്ങൾക്ക് ലഭിക്കുന്നത്:
* എഡിറ്റർ പിന്തുണ, ഇതിൽ ഉൾപെടുന്നവ:
* പൂർത്തീകരണം.
* ടൈപ്പ് പരിശോധനകൾ.
* ഡാറ്റയുടെ സാധൂകരണം:
* ഡാറ്റ അസാധുവാകുമ്പോൾ യാന്ത്രികവും മായ്‌ക്കുന്നതുമായ പിശകുകൾ.
* ആഴത്തിൽ നെസ്റ്റഡ് JSON ഒബ്‌ജക്‌റ്റുകൾക്കുപോലും സാധൂകരണം.
* ഇൻപുട്ട് ഡാറ്റയുടെ <abbr title="also known as: serialization, parsing, marshalling">പരിവർത്തനം</abbr>:നെറ്റ്‌വർക്കിൽ നിന്ന് പൈത്തൺ ഡാറ്റയിലേക്കും തരങ്ങളിലേക്കും വരുന്നു. ഈ കംപോണന്റുകളിൽ നിന്നു വായിക്കുന്നു :ഹെഡ്‍റുകൾ
* JSON.
* പാഥ് പാരാമീറ്ററുകൾ.
* ക്വറി പാരാമീറ്ററുകൾ.
* കുക്കീസ്‌ .
* ഹെഡ്‍റുകൾ .
* ഫോമുകൾ .
* ഫയലുകൾ .
* ഔട്ട്‌പുട്ട് ഡാറ്റയുടെ <abbr title="also known as: serialization, parsing, marshalling">പരിവർത്തനം</abbr>: പൈത്തൺ ഡാറ്റയിൽ നിന്നും തരങ്ങളിൽ നിന്നും നെറ്റ്‌വർക്ക് ഡാറ്റയിലേക്ക് പരിവർത്തനം ചെയ്യുന്നു (JSON ആയി):
* പൈത്തൺ തരങ്ങൾ പരിവർത്തനം ചെയ്യുക (`str`, `int`, `float`, `bool`, `list`, etc).
* `datetime` ഒബ്ജെക്ട്സ് .
* `UUID` ഒബ്ജെക്ട്സ് .
* ഡാറ്റാബേസ് മോഡലുകൾ.
* ...കൂടാതെ മറ്റു പലതും.
* രണ്ട് ഇതര ഉപയോക്തൃ ഇന്റർഫേസുകൾ ഉൾപ്പെടെ ഓട്ടോമാറ്റിക് ഇന്ററാക്ടീവ് API ഡോക്യുമെന്റേഷൻ:
* സ്വാഗർ UI.
* റീഡോക്.
---
മുമ്പത്തേ കോഡ് ഉദാഹരണത്തിലേക്ക് തിരികെ വരുമ്പോൾ, **ഫാസ്റ്റ് API** ഇനിപ്പറയുന്നവ ചെയ്യും:
* `GET`, `PUT` അഭ്യർത്ഥനകൾക്കുള്ള പാതയിൽ ഒരു `item_id` ഉണ്ടെന്ന് സാധൂകരിക്കുക.
* `GET`, `PUT` അഭ്യർത്ഥനകൾക്കായി `item_id` `int` തരത്തിലുള്ളതാണെന്ന് സാധൂകരിക്കുക.
* അങ്ങനെയല്ലെങ്കിൽ, ക്ലയന്റ് ഉപയോഗപ്രദവും വ്യക്തവുമായ ഒരു പിശക് കാണും.
* `GET` അഭ്യർത്ഥനകൾക്കായി `q` (`http://127.0.0.1:8000/items/foo?q=somequery` പോലെ) എന്ന പേരിൽ ഒരു ഓപ്ഷണൽ അന്വേഷണ പാരാമീറ്റർ ഉണ്ടോ എന്ന് പരിശോധിക്കുക.
* `q` പാരാമീറ്റർ `= None` എന്ന് പ്രഖ്യാപിച്ചിരിക്കുന്നതിനാൽ, അത് ഓപ്ഷണലാണ്.
* `None` ഇല്ലെങ്കിൽ അത് ആവശ്യമായി വരും (`PUT` ലെ ബോഡി പോലെ).
* `/items/{item_id}` ലേക്കുള്ള `PUT` അഭ്യർത്ഥനകൾക്ക്, ബോഡി JSON ആയി വായിക്കുക:
* അതിന് ഒരു `str` ആയിരിക്കേണ്ട ഒരു ആവശ്യമായ ആട്രിബ്യൂട്ട് `name` ഉണ്ടോയെന്ന് പരിശോധിക്കുക.
* അതിന് `price` എന്ന ഒരു required ആട്രിബ്യൂട്ട് ഉണ്ടോ എന്നും അത് ഒരു `float` ആയിരിക്കണമെന്നും പരിശോധിക്കുക.
* ഇതിന് `is_offer` എന്ന ഓപ്‌ഷണൽ ആട്രിബ്യൂട്ട് ഉണ്ടോയെന്ന് പരിശോധിക്കുക, ഉണ്ടെങ്കിൽ അത് `bool` ആയിരിക്കണം.
* ഇതെല്ലാം ഡീപ്ലി നെസ്റ്റഡ് JSON ഒബ്‌ജക്‌റ്റുകൾക്കും പ്രവർത്തിക്കും.
* JSON-ൽ നിന്നും JSON-ലേയ്ക്കും സ്വയമേവ പരിവർത്തനം ചെയ്യുക.
* OpenAPI ഉപയോഗിച്ച് എല്ലാം രേഖപ്പെടുത്തുക, അത് ഇനിപ്പറയുന്നവർക്ക് ഉപയോഗിക്കാം:
* ഇന്ററാക്ടീവ് ഡോക്യുമെന്റേഷൻ സിസ്റ്റങ്ങൾ.
* പല ഭാഷകൾക്കുമായി ഓട്ടോമാറ്റിക് ക്ലയന്റ് കോഡ് ജനറേഷൻ സിസ്റ്റങ്ങൾ.
* 2 ഇന്ററാക്ടീവ് ഡോക്യുമെന്റേഷൻ വെബ് ഇന്റർഫേസുകൾ നേരിട്ട് നൽകുക.
---
ഞങ്ങൾ ഉപരിതലം മുഴുവൻ വായിച്ചു, പക്ഷേ ഇതെല്ലാം എങ്ങനെ പ്രവർത്തിക്കുന്നു എന്നതിന്റെ ഒരു ധാരണ നിങ്ങൾക്ക് ഇതിനകം ലഭിച്ചുകഴിഞ്ഞു.
ഇതുപയോഗിച്ച് ലൈൻ മാറ്റാൻ ശ്രമിക്കുക:
```Python
return {"item_name": item.name, "item_id": item_id}
```
...from:
```Python
... "item_name": item.name ...
```
...to:
```Python
... "item_price": item.price ...
```
...നിങ്ങളുടെ എഡിറ്റർ ആട്രിബ്യൂട്ടുകൾ എങ്ങനെ യാന്ത്രികമായി പൂർത്തിയാക്കുമെന്നും അവയുടെ തരങ്ങൾ എങ്ങനെ അറിയുമെന്നും കാണുക:
![എഡിറ്റർ പിന്തുണ](https://fastapi.tiangolo.com/img/vscode-completion.png)
കൂടുതൽ സവിശേഷതകൾ ഉൾപ്പെടെയുള്ള കൂടുതൽ പൂർണ്ണമായ ഉദാഹരണത്തിന്, <a href="https://fastapi.tiangolo.com/tutorial/">ട്യൂട്ടോറിയൽ - ഉപയോക്തൃ ഗൈഡ്</a> കാണുക.
**സ്‌പോയിലർ അലേർട്ട്**: ട്യൂട്ടോറിയൽ - ഉപയോക്തൃ ഗൈഡിൽ ഇവ ഉൾപ്പെടുന്നു:
* മറ്റ് വ്യത്യസ്ത സ്ഥലങ്ങളിൽ നിന്നുള്ള **പാരാമീറ്ററുകളുടെ** പ്രഖ്യാപനം: **ഹെഡറുകൾ**, **കുക്കികൾ**, **ഫോം ഫീൽഡുകൾ**, **ഫയലുകൾ**.
* **മൂല്യനിർണ്ണയ നിയന്ത്രണങ്ങൾ** `maximum_length` അല്ലെങ്കിൽ `regex` ആയി എങ്ങനെ സജ്ജമാക്കാം.
* വളരെ ശക്തവും ഉപയോഗിക്കാൻ എളുപ്പമുള്ളതുമായ ഒരു **<abbr title="components, resources, providers, services, injectables">ഡിപ്പെൻഡൻസി ഇഞ്ചക്ഷൻ</abbr>** സിസ്റ്റം.
* സുരക്ഷയും ഓതെന്റിക്കേഷനും , **JWT ടോക്കണുകൾ** ഉള്ള **OAuth2** നുള്ള പിന്തുണയും **HTTP ബേസിക്** ഓത്തും ഉൾപ്പെടെ.
* **ഡീപ്ലി നെസ്റ്റഡ് JSON മോഡലുകൾ** പ്രഖ്യാപിക്കുന്നതിനുള്ള കൂടുതൽ വിപുലമായ (എന്നാൽ അത്രതന്നെ എളുപ്പമുള്ള) സാങ്കേതിക വിദ്യകൾ (പൈഡന്റിക്കിന് നന്ദി).
* **ഗ്രാഫ് QL** <a href="https://strawberry.rocks" class="external-link" target="_blank">സ്ട്രോബെറി</a>, മറ്റ് ലൈബ്രറികൾ എന്നിവയുമായുള്ള സംയോജനം.
* നിരവധി അധിക സവിശേഷതകൾ (സ്റ്റാർലെറ്റിന് നന്ദി) ഇവയാണ്:
* **വെബ്‌സോക്കറ്റുകൾ**
* HTTPX, `pytest` എന്നിവ അടിസ്ഥാനമാക്കിയുള്ള വളരെ എളുപ്പമുള്ള പരിശോധനകൾ
* **CORS**
**കുക്കി സെഷനുകൾ**
* ...പിന്നെ മറ്റുപലതും.
## പ്രകടനം
സ്വതന്ത്ര TechEmpower ബെഞ്ച്മാർക്കുകൾ, യൂവികോൺ -ന് കീഴിൽ പ്രവർത്തിക്കുന്ന **ഫാസ്റ്റ്API** ആപ്ലിക്കേഷനുകൾ <a href="https://www.techempower.com/benchmarks/#section=test&runid=7464e520-0dc2-473d-bd34-dbdfd7e85911&hw=ph&test=query&l=zijzen-7" class="external-link" target="_blank">ലഭ്യമായ ഏറ്റവും വേഗതയേറിയ പൈത്തൺ ഫ്രെയിംവർക്കുകളിൽ ഒന്നായി</a> കാണിക്കുന്നു, ഇത് സ്റ്റാർലെറ്റ് , യൂവികോൺ എന്നിവയ്ക്ക് താഴെയാണ് (ഫാസ്റ്റ്API ആന്തരികമായി ഉപയോഗിക്കുന്നു). (*)
ഇതിനെക്കുറിച്ച് കൂടുതലറിയാൻ, <a href="https://fastapi.tiangolo.com/benchmarks/" class="internal-link" target="_blank">ബെഞ്ച്മാർക്സ്</a> എന്ന വിഭാഗം കാണുക.
## ആശ്രിതത്വങ്ങൾ
ഫാസ്റ്റ്API പൈഡാന്റിക്, സ്റ്റാർലെറ്റ് എന്നിവയെ ആശ്രയിച്ചിരിക്കുന്നു.
### `സ്റ്റാൻഡേർഡ്` ആശ്രിതത്വങ്ങൾ
`pip install "fastapi[standard]"` ഉപയോഗിച്ച് ഫാസ്റ്റ് API ഇൻസ്റ്റാൾ ചെയ്യുമ്പോൾ അത് ഓപ്ഷണൽ ഡിപൻഡൻസികളുടെ `standard` ഗ്രൂപ്പുമായി വരുന്നു:
പൈഡാന്റിക് ഉപയോഗിക്കുന്നത്:
* <a href="https://github.com/JoshData/python-email-validator" target="_blank"><code>ഇ-മെയിൽ-വാലിഡേറ്റർ</code></a> - ഇ-മെയിൽ വാലിഡേഷനായി.
സ്റ്റാർലെറ്റ് ഉപയോഗിച്ചത്:
* <a href="https://www.python-httpx.org" target="_blank"><code>httpx</code></a> - `TestClient` ഉപയോഗിക്കണമെങ്കിൽ ആവശ്യമാണ്.
* <a href="https://jinja.palletsprojects.com" target="_blank"><code>jinja2</code></a> - ഡിഫോൾട്ട് ടെംപ്ലേറ്റ് കോൺഫിഗറേഷൻ ഉപയോഗിക്കണമെങ്കിൽ ആവശ്യമാണ്.
* <a href="https://github.com/Kludex/python-multipart" target="_blank"><code>python-multipart</code></a> - `request.form()` ഉപയോഗിച്ച് <abbr title="ഒരു HTTP അഭ്യർത്ഥനയിൽ നിന്ന് വരുന്ന സ്ട്രിംഗിനെ പൈത്തൺ ഡാറ്റയിലേക്ക് പരിവർത്തനം ചെയ്യൽ">"പാഴ്‌സിംഗ്"</abbr> എന്ന ഫോമിനെ പിന്തുണയ്ക്കണമെങ്കിൽ ആവശ്യമാണ്.
ഫാസ്റ്റ് API / സ്റ്റാർലെറ്റ് ഉപയോഗിക്കുന്നത്:
* <a href="https://www.uvicorn.org" target="_blank"><code>uvicorn</code></a> - നിങ്ങളുടെ ആപ്ലിക്കേഷൻ ലോഡ് ചെയ്ത് സെർവ് ചെയ്യുന്ന സെർവറിനുള്ളത്. ഇതിൽ `uvicorn[standard]` ഉൾപ്പെടുന്നു, ഉയർന്ന പ്രകടനമുള്ള സെർവിംഗിന് ആവശ്യമായ ചില ആശ്രിതത്വങ്ങൾ (ഉദാ. `uvloop`) ഇതിൽ ഉൾപ്പെടുന്നു.
* `fastapi-cli` - `fastapi` കമാൻഡ് നൽകാൻ.
### `സ്റ്റാൻഡേർഡ്` ആശ്രിതത്വങ്ങൾ ഇല്ലാതെ
`സ്റ്റാൻഡേർഡ്` ഓപ്ഷണൽ ആശ്രിതത്വങ്ങൾ ഉൾപ്പെടുത്താൻ നിങ്ങൾ ആഗ്രഹിക്കുന്നില്ലെങ്കിൽ, `pip install "fastapi[standard]"` എന്നതിന് പകരം `pip install fastapi` ഉപയോഗിച്ച് ഇൻസ്റ്റാൾ ചെയ്യാം.
### അധിക ഓപ്ഷണൽ ആശ്രിതത്വങ്ങൾ
നിങ്ങൾ ഇൻസ്റ്റാൾ ചെയ്യാൻ ആഗ്രഹിക്കുന്ന ചില അധിക ആശ്രിതത്വങ്ങൾ.
അധിക ഓപ്ഷണൽ പൈഡാന്റിക് ആശ്രിതത്വങ്ങൾ:
* <a href="https://docs.pydantic.dev/latest/usage/pydantic_settings/" target="_blank"><code>pydantic-settings</code></a> - ക്രമീകരണ മാനേജ്മെന്റിനായി.
* <a href="https://docs.pydantic.dev/latest/usage/types/extra_types/extra_types/" target="_blank"><code>pydantic-extra-types</code></a> - പൈഡന്റിക്കിനൊപ്പം ഉപയോഗിക്കേണ്ട എക്സ്ട്രാ തരങ്ങൾക്കായി.
അധിക ഓപ്ഷണൽ ഫാസ്റ്റ് API ആശ്രിതത്വങ്ങൾ:
* <a href="https://github.com/ijl/orjson" target="_blank"><code>orjson</code></a> - `ORJSONResponse` ഉപയോഗിക്കണമെങ്കിൽ ആവശ്യമാണ്.
* <a href="https://github.com/esnme/ultrajson" target="_blank"><code>ujson</code></a> - `UJSONResponse` ഉപയോഗിക്കണമെങ്കിൽ ആവശ്യമാണ്.
## ലൈസൻസ്
ഈ പ്രോജക്റ്റ് MIT ലൈസൻസിന്റെ നിബന്ധനകൾക്ക് കീഴിലാണ് ലൈസൻസ് ചെയ്തിരിക്കുന്നത്.

1
docs/ml/mkdocs.yml

@ -0,0 +1 @@
INHERIT: ../en/mkdocs.yml

420
fastapi1/Scripts/Activate.ps1

@ -0,0 +1,420 @@
<#
.Synopsis
Activate a Python virtual environment for the current PowerShell session.
.Description
Pushes the python executable for a virtual environment to the front of the
$Env:PATH environment variable and sets the prompt to signify that you are
in a Python virtual environment. Makes use of the command line switches as
well as the `pyvenv.cfg` file values present in the virtual environment.
.Parameter VenvDir
Path to the directory that contains the virtual environment to activate. The
default value for this is the parent of the directory that the Activate.ps1
script is located within.
.Parameter Prompt
The prompt prefix to display when this virtual environment is activated. By
default, this prompt is the name of the virtual environment folder (VenvDir)
surrounded by parentheses and followed by a single space (ie. '(.venv) ').
.Example
Activate.ps1
Activates the Python virtual environment that contains the Activate.ps1 script.
.Example
Activate.ps1 -Verbose
Activates the Python virtual environment that contains the Activate.ps1 script,
and shows extra information about the activation as it executes.
.Example
Activate.ps1 -VenvDir C:\Users\MyUser\Common\.venv
Activates the Python virtual environment located in the specified location.
.Example
Activate.ps1 -Prompt "MyPython"
Activates the Python virtual environment that contains the Activate.ps1 script,
and prefixes the current prompt with the specified string (surrounded in
parentheses) while the virtual environment is active.
.Notes
On Windows, it may be required to enable this Activate.ps1 script by setting the
execution policy for the user. You can do this by issuing the following PowerShell
command:
PS C:\> Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
For more information on Execution Policies:
https://go.microsoft.com/fwlink/?LinkID=135170
#>
Param(
[Parameter(Mandatory = $false)]
[String]
$VenvDir,
[Parameter(Mandatory = $false)]
[String]
$Prompt
)
<# Function declarations --------------------------------------------------- #>
<#
.Synopsis
Remove all shell session elements added by the Activate script, including the
addition of the virtual environment's Python executable from the beginning of
the PATH variable.
.Parameter NonDestructive
If present, do not remove this function from the global namespace for the
session.
#>
function global:deactivate ([switch]$NonDestructive) {
# Revert to original values
# The prior prompt:
if (Test-Path -Path Function:_OLD_VIRTUAL_PROMPT) {
Copy-Item -Path Function:_OLD_VIRTUAL_PROMPT -Destination Function:prompt
Remove-Item -Path Function:_OLD_VIRTUAL_PROMPT
}
# The prior PYTHONHOME:
if (Test-Path -Path Env:_OLD_VIRTUAL_PYTHONHOME) {
Copy-Item -Path Env:_OLD_VIRTUAL_PYTHONHOME -Destination Env:PYTHONHOME
Remove-Item -Path Env:_OLD_VIRTUAL_PYTHONHOME
}
# The prior PATH:
if (Test-Path -Path Env:_OLD_VIRTUAL_PATH) {
Copy-Item -Path Env:_OLD_VIRTUAL_PATH -Destination Env:PATH
Remove-Item -Path Env:_OLD_VIRTUAL_PATH
}
# Just remove the VIRTUAL_ENV altogether:
if (Test-Path -Path Env:VIRTUAL_ENV) {
Remove-Item -Path env:VIRTUAL_ENV
}
# Just remove VIRTUAL_ENV_PROMPT altogether.
if (Test-Path -Path Env:VIRTUAL_ENV_PROMPT) {
Remove-Item -Path env:VIRTUAL_ENV_PROMPT
}
# Just remove the _PYTHON_VENV_PROMPT_PREFIX altogether:
if (Get-Variable -Name "_PYTHON_VENV_PROMPT_PREFIX" -ErrorAction SilentlyContinue) {
Remove-Variable -Name _PYTHON_VENV_PROMPT_PREFIX -Scope Global -Force
}
# Leave deactivate function in the global namespace if requested:
if (-not $NonDestructive) {
Remove-Item -Path function:deactivate
}
}
<#
.Description
Get-PyVenvConfig parses the values from the pyvenv.cfg file located in the
given folder, and returns them in a map.
For each line in the pyvenv.cfg file, if that line can be parsed into exactly
two strings separated by `=` (with any amount of whitespace surrounding the =)
then it is considered a `key = value` line. The left hand string is the key,
the right hand is the value.
If the value starts with a `'` or a `"` then the first and last character is
stripped from the value before being captured.
.Parameter ConfigDir
Path to the directory that contains the `pyvenv.cfg` file.
#>
function Get-PyVenvConfig(
[String]
$ConfigDir
) {
Write-Verbose "Given ConfigDir=$ConfigDir, obtain values in pyvenv.cfg"
# Ensure the file exists, and issue a warning if it doesn't (but still allow the function to continue).
$pyvenvConfigPath = Join-Path -Resolve -Path $ConfigDir -ChildPath 'pyvenv.cfg' -ErrorAction Continue
# An empty map will be returned if no config file is found.
$pyvenvConfig = @{ }
if ($pyvenvConfigPath) {
Write-Verbose "File exists, parse `key = value` lines"
$pyvenvConfigContent = Get-Content -Path $pyvenvConfigPath
$pyvenvConfigContent | ForEach-Object {
$keyval = $PSItem -split "\s*=\s*", 2
if ($keyval[0] -and $keyval[1]) {
$val = $keyval[1]
# Remove extraneous quotations around a string value.
if ("'""".Contains($val.Substring(0, 1))) {
$val = $val.Substring(1, $val.Length - 2)
}
$pyvenvConfig[$keyval[0]] = $val
Write-Verbose "Adding Key: '$($keyval[0])'='$val'"
}
}
}
return $pyvenvConfig
}
<# Begin Activate script --------------------------------------------------- #>
# Determine the containing directory of this script
$VenvExecPath = Split-Path -Parent $MyInvocation.MyCommand.Definition
$VenvExecDir = Get-Item -Path $VenvExecPath
Write-Verbose "Activation script is located in path: '$VenvExecPath'"
Write-Verbose "VenvExecDir Fullname: '$($VenvExecDir.FullName)"
Write-Verbose "VenvExecDir Name: '$($VenvExecDir.Name)"
# Set values required in priority: CmdLine, ConfigFile, Default
# First, get the location of the virtual environment, it might not be
# VenvExecDir if specified on the command line.
if ($VenvDir) {
Write-Verbose "VenvDir given as parameter, using '$VenvDir' to determine values"
}
else {
Write-Verbose "VenvDir not given as a parameter, using parent directory name as VenvDir."
$VenvDir = $VenvExecDir.Parent.FullName.TrimEnd("\\/")
Write-Verbose "VenvDir=$VenvDir"
}
# Next, read the `pyvenv.cfg` file to determine any required value such
# as `prompt`.
$pyvenvCfg = Get-PyVenvConfig -ConfigDir $VenvDir
# Next, set the prompt from the command line, or the config file, or
# just use the name of the virtual environment folder.
if ($Prompt) {
Write-Verbose "Prompt specified as argument, using '$Prompt'"
}
else {
Write-Verbose "Prompt not specified as argument to script, checking pyvenv.cfg value"
if ($pyvenvCfg -and $pyvenvCfg['prompt']) {
Write-Verbose " Setting based on value in pyvenv.cfg='$($pyvenvCfg['prompt'])'"
$Prompt = $pyvenvCfg['prompt'];
}
else {
Write-Verbose " Setting prompt based on parent's directory's name. (Is the directory name passed to venv module when creating the virtual environment)"
Write-Verbose " Got leaf-name of $VenvDir='$(Split-Path -Path $venvDir -Leaf)'"
$Prompt = Split-Path -Path $venvDir -Leaf
}
}
Write-Verbose "Prompt = '$Prompt'"
Write-Verbose "VenvDir='$VenvDir'"
# Deactivate any currently active virtual environment, but leave the
# deactivate function in place.
deactivate -nondestructive
# Now set the environment variable VIRTUAL_ENV, used by many tools to determine
# that there is an activated venv.
$env:VIRTUAL_ENV = $VenvDir
if (-not $Env:VIRTUAL_ENV_DISABLE_PROMPT) {
Write-Verbose "Setting prompt to '$Prompt'"
# Set the prompt to include the env name
# Make sure _OLD_VIRTUAL_PROMPT is global
function global:_OLD_VIRTUAL_PROMPT { "" }
Copy-Item -Path function:prompt -Destination function:_OLD_VIRTUAL_PROMPT
New-Variable -Name _PYTHON_VENV_PROMPT_PREFIX -Description "Python virtual environment prompt prefix" -Scope Global -Option ReadOnly -Visibility Public -Value $Prompt
function global:prompt {
Write-Host -NoNewline -ForegroundColor Green "($_PYTHON_VENV_PROMPT_PREFIX) "
_OLD_VIRTUAL_PROMPT
}
$env:VIRTUAL_ENV_PROMPT = $Prompt
}
# Clear PYTHONHOME
if (Test-Path -Path Env:PYTHONHOME) {
Copy-Item -Path Env:PYTHONHOME -Destination Env:_OLD_VIRTUAL_PYTHONHOME
Remove-Item -Path Env:PYTHONHOME
}
# Add the venv to the PATH
Copy-Item -Path Env:PATH -Destination Env:_OLD_VIRTUAL_PATH
$Env:PATH = "$VenvExecDir$([System.IO.Path]::PathSeparator)$Env:PATH"
# SIG # Begin signature block
# MIIf2wYJKoZIhvcNAQcCoIIfzDCCH8gCAQExDzANBglghkgBZQMEAgEFADB5Bgor
# BgEEAYI3AgEEoGswaTA0BgorBgEEAYI3AgEeMCYCAwEAAAQQH8w7YFlLCE63JNLG
# KX7zUQIBAAIBAAIBAAIBAAIBADAxMA0GCWCGSAFlAwQCAQUABCBnL745ElCYk8vk
# dBtMuQhLeWJ3ZGfzKW4DHCYzAn+QB6CCDi8wggawMIIEmKADAgECAhAIrUCyYNKc
# TJ9ezam9k67ZMA0GCSqGSIb3DQEBDAUAMGIxCzAJBgNVBAYTAlVTMRUwEwYDVQQK
# EwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5jb20xITAfBgNV
# BAMTGERpZ2lDZXJ0IFRydXN0ZWQgUm9vdCBHNDAeFw0yMTA0MjkwMDAwMDBaFw0z
# NjA0MjgyMzU5NTlaMGkxCzAJBgNVBAYTAlVTMRcwFQYDVQQKEw5EaWdpQ2VydCwg
# SW5jLjFBMD8GA1UEAxM4RGlnaUNlcnQgVHJ1c3RlZCBHNCBDb2RlIFNpZ25pbmcg
# UlNBNDA5NiBTSEEzODQgMjAyMSBDQTEwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAw
# ggIKAoICAQDVtC9C0CiteLdd1TlZG7GIQvUzjOs9gZdwxbvEhSYwn6SOaNhc9es0
# JAfhS0/TeEP0F9ce2vnS1WcaUk8OoVf8iJnBkcyBAz5NcCRks43iCH00fUyAVxJr
# Q5qZ8sU7H/Lvy0daE6ZMswEgJfMQ04uy+wjwiuCdCcBlp/qYgEk1hz1RGeiQIXhF
# LqGfLOEYwhrMxe6TSXBCMo/7xuoc82VokaJNTIIRSFJo3hC9FFdd6BgTZcV/sk+F
# LEikVoQ11vkunKoAFdE3/hoGlMJ8yOobMubKwvSnowMOdKWvObarYBLj6Na59zHh
# 3K3kGKDYwSNHR7OhD26jq22YBoMbt2pnLdK9RBqSEIGPsDsJ18ebMlrC/2pgVItJ
# wZPt4bRc4G/rJvmM1bL5OBDm6s6R9b7T+2+TYTRcvJNFKIM2KmYoX7BzzosmJQay
# g9Rc9hUZTO1i4F4z8ujo7AqnsAMrkbI2eb73rQgedaZlzLvjSFDzd5Ea/ttQokbI
# YViY9XwCFjyDKK05huzUtw1T0PhH5nUwjewwk3YUpltLXXRhTT8SkXbev1jLchAp
# QfDVxW0mdmgRQRNYmtwmKwH0iU1Z23jPgUo+QEdfyYFQc4UQIyFZYIpkVMHMIRro
# OBl8ZhzNeDhFMJlP/2NPTLuqDQhTQXxYPUez+rbsjDIJAsxsPAxWEQIDAQABo4IB
# WTCCAVUwEgYDVR0TAQH/BAgwBgEB/wIBADAdBgNVHQ4EFgQUaDfg67Y7+F8Rhvv+
# YXsIiGX0TkIwHwYDVR0jBBgwFoAU7NfjgtJxXWRM3y5nP+e6mK4cD08wDgYDVR0P
# AQH/BAQDAgGGMBMGA1UdJQQMMAoGCCsGAQUFBwMDMHcGCCsGAQUFBwEBBGswaTAk
# BggrBgEFBQcwAYYYaHR0cDovL29jc3AuZGlnaWNlcnQuY29tMEEGCCsGAQUFBzAC
# hjVodHRwOi8vY2FjZXJ0cy5kaWdpY2VydC5jb20vRGlnaUNlcnRUcnVzdGVkUm9v
# dEc0LmNydDBDBgNVHR8EPDA6MDigNqA0hjJodHRwOi8vY3JsMy5kaWdpY2VydC5j
# b20vRGlnaUNlcnRUcnVzdGVkUm9vdEc0LmNybDAcBgNVHSAEFTATMAcGBWeBDAED
# MAgGBmeBDAEEATANBgkqhkiG9w0BAQwFAAOCAgEAOiNEPY0Idu6PvDqZ01bgAhql
# +Eg08yy25nRm95RysQDKr2wwJxMSnpBEn0v9nqN8JtU3vDpdSG2V1T9J9Ce7FoFF
# UP2cvbaF4HZ+N3HLIvdaqpDP9ZNq4+sg0dVQeYiaiorBtr2hSBh+3NiAGhEZGM1h
# mYFW9snjdufE5BtfQ/g+lP92OT2e1JnPSt0o618moZVYSNUa/tcnP/2Q0XaG3Ryw
# YFzzDaju4ImhvTnhOE7abrs2nfvlIVNaw8rpavGiPttDuDPITzgUkpn13c5Ubdld
# AhQfQDN8A+KVssIhdXNSy0bYxDQcoqVLjc1vdjcshT8azibpGL6QB7BDf5WIIIJw
# 8MzK7/0pNVwfiThV9zeKiwmhywvpMRr/LhlcOXHhvpynCgbWJme3kuZOX956rEnP
# LqR0kq3bPKSchh/jwVYbKyP/j7XqiHtwa+aguv06P0WmxOgWkVKLQcBIhEuWTatE
# QOON8BUozu3xGFYHKi8QxAwIZDwzj64ojDzLj4gLDb879M4ee47vtevLt/B3E+bn
# KD+sEq6lLyJsQfmCXBVmzGwOysWGw/YmMwwHS6DTBwJqakAwSEs0qFEgu60bhQji
# WQ1tygVQK+pKHJ6l/aCnHwZ05/LWUpD9r4VIIflXO7ScA+2GRfS0YW6/aOImYIbq
# yK+p/pQd52MbOoZWeE4wggd3MIIFX6ADAgECAhAHHxQbizANJfMU6yMM0NHdMA0G
# CSqGSIb3DQEBCwUAMGkxCzAJBgNVBAYTAlVTMRcwFQYDVQQKEw5EaWdpQ2VydCwg
# SW5jLjFBMD8GA1UEAxM4RGlnaUNlcnQgVHJ1c3RlZCBHNCBDb2RlIFNpZ25pbmcg
# UlNBNDA5NiBTSEEzODQgMjAyMSBDQTEwHhcNMjIwMTE3MDAwMDAwWhcNMjUwMTE1
# MjM1OTU5WjB8MQswCQYDVQQGEwJVUzEPMA0GA1UECBMGT3JlZ29uMRIwEAYDVQQH
# EwlCZWF2ZXJ0b24xIzAhBgNVBAoTGlB5dGhvbiBTb2Z0d2FyZSBGb3VuZGF0aW9u
# MSMwIQYDVQQDExpQeXRob24gU29mdHdhcmUgRm91bmRhdGlvbjCCAiIwDQYJKoZI
# hvcNAQEBBQADggIPADCCAgoCggIBAKgc0BTT+iKbtK6f2mr9pNMUTcAJxKdsuOiS
# YgDFfwhjQy89koM7uP+QV/gwx8MzEt3c9tLJvDccVWQ8H7mVsk/K+X+IufBLCgUi
# 0GGAZUegEAeRlSXxxhYScr818ma8EvGIZdiSOhqjYc4KnfgfIS4RLtZSrDFG2tN1
# 6yS8skFa3IHyvWdbD9PvZ4iYNAS4pjYDRjT/9uzPZ4Pan+53xZIcDgjiTwOh8VGu
# ppxcia6a7xCyKoOAGjvCyQsj5223v1/Ig7Dp9mGI+nh1E3IwmyTIIuVHyK6Lqu35
# 2diDY+iCMpk9ZanmSjmB+GMVs+H/gOiofjjtf6oz0ki3rb7sQ8fTnonIL9dyGTJ0
# ZFYKeb6BLA66d2GALwxZhLe5WH4Np9HcyXHACkppsE6ynYjTOd7+jN1PRJahN1oE
# RzTzEiV6nCO1M3U1HbPTGyq52IMFSBM2/07WTJSbOeXjvYR7aUxK9/ZkJiacl2iZ
# I7IWe7JKhHohqKuceQNyOzxTakLcRkzynvIrk33R9YVqtB4L6wtFxhUjvDnQg16x
# ot2KVPdfyPAWd81wtZADmrUtsZ9qG79x1hBdyOl4vUtVPECuyhCxaw+faVjumapP
# Unwo8ygflJJ74J+BYxf6UuD7m8yzsfXWkdv52DjL74TxzuFTLHPyARWCSCAbzn3Z
# Ily+qIqDAgMBAAGjggIGMIICAjAfBgNVHSMEGDAWgBRoN+Drtjv4XxGG+/5hewiI
# ZfROQjAdBgNVHQ4EFgQUt/1Teh2XDuUj2WW3siYWJgkZHA8wDgYDVR0PAQH/BAQD
# AgeAMBMGA1UdJQQMMAoGCCsGAQUFBwMDMIG1BgNVHR8Ega0wgaowU6BRoE+GTWh0
# dHA6Ly9jcmwzLmRpZ2ljZXJ0LmNvbS9EaWdpQ2VydFRydXN0ZWRHNENvZGVTaWdu
# aW5nUlNBNDA5NlNIQTM4NDIwMjFDQTEuY3JsMFOgUaBPhk1odHRwOi8vY3JsNC5k
# aWdpY2VydC5jb20vRGlnaUNlcnRUcnVzdGVkRzRDb2RlU2lnbmluZ1JTQTQwOTZT
# SEEzODQyMDIxQ0ExLmNybDA+BgNVHSAENzA1MDMGBmeBDAEEATApMCcGCCsGAQUF
# BwIBFhtodHRwOi8vd3d3LmRpZ2ljZXJ0LmNvbS9DUFMwgZQGCCsGAQUFBwEBBIGH
# MIGEMCQGCCsGAQUFBzABhhhodHRwOi8vb2NzcC5kaWdpY2VydC5jb20wXAYIKwYB
# BQUHMAKGUGh0dHA6Ly9jYWNlcnRzLmRpZ2ljZXJ0LmNvbS9EaWdpQ2VydFRydXN0
# ZWRHNENvZGVTaWduaW5nUlNBNDA5NlNIQTM4NDIwMjFDQTEuY3J0MAwGA1UdEwEB
# /wQCMAAwDQYJKoZIhvcNAQELBQADggIBABxv4AeV/5ltkELHSC63fXAFYS5tadcW
# TiNc2rskrNLrfH1Ns0vgSZFoQxYBFKI159E8oQQ1SKbTEubZ/B9kmHPhprHya08+
# VVzxC88pOEvz68nA82oEM09584aILqYmj8Pj7h/kmZNzuEL7WiwFa/U1hX+XiWfL
# IJQsAHBla0i7QRF2de8/VSF0XXFa2kBQ6aiTsiLyKPNbaNtbcucaUdn6vVUS5izW
# OXM95BSkFSKdE45Oq3FForNJXjBvSCpwcP36WklaHL+aHu1upIhCTUkzTHMh8b86
# WmjRUqbrnvdyR2ydI5l1OqcMBjkpPpIV6wcc+KY/RH2xvVuuoHjlUjwq2bHiNoX+
# W1scCpnA8YTs2d50jDHUgwUo+ciwpffH0Riq132NFmrH3r67VaN3TuBxjI8SIZM5
# 8WEDkbeoriDk3hxU8ZWV7b8AW6oyVBGfM06UgkfMb58h+tJPrFx8VI/WLq1dTqMf
# ZOm5cuclMnUHs2uqrRNtnV8UfidPBL4ZHkTcClQbCoz0UbLhkiDvIS00Dn+BBcxw
# /TKqVL4Oaz3bkMSsM46LciTeucHY9ExRVt3zy7i149sd+F4QozPqn7FrSVHXmem3
# r7bjyHTxOgqxRCVa18Vtx7P/8bYSBeS+WHCKcliFCecspusCDSlnRUjZwyPdP0VH
# xaZg2unjHY3rMYIRAjCCEP4CAQEwfTBpMQswCQYDVQQGEwJVUzEXMBUGA1UEChMO
# RGlnaUNlcnQsIEluYy4xQTA/BgNVBAMTOERpZ2lDZXJ0IFRydXN0ZWQgRzQgQ29k
# ZSBTaWduaW5nIFJTQTQwOTYgU0hBMzg0IDIwMjEgQ0ExAhAHHxQbizANJfMU6yMM
# 0NHdMA0GCWCGSAFlAwQCAQUAoIHWMBkGCSqGSIb3DQEJAzEMBgorBgEEAYI3AgEE
# MBwGCisGAQQBgjcCAQsxDjAMBgorBgEEAYI3AgEVMC8GCSqGSIb3DQEJBDEiBCBn
# AZ6P7YvTwq0fbF62o7E75R0LxsW5OtyYiFESQckLhjBqBgorBgEEAYI3AgEMMVww
# WqBYgFYAQgB1AGkAbAB0ADoAIABSAGUAbABlAGEAcwBlAF8AYgB1AGkAbABkAGYA
# aQB4AF8AdgAzAC4AMQAwAC4ANABfADIAMAAyADIAMAAzADIAMwAuADAAMjANBgkq
# hkiG9w0BAQEFAASCAgAcEvETg2Xhn12WXdKe3tBaVv7GlhnKE3KIyIYicO7HekaL
# xA56c/hiIuIkAGRuhbm++NMB/L7RYueQI8+ze8q4BoHLvH5lxR92twKr1RhKRbo3
# rSj5zGPna6P7s677Nfw3WJ01RlOKF3ygJe+GRj3RpUR8aL2DM4pzydcVM2ihWzFy
# CqsKCj3s/ELGiA3RQ0KVbZ9VO+r2/AsZdndYKCjxYL4PMiCver6+eeqhxkS0r7v0
# Dv6/NJOPaC61Gcwi5lIfZRMOcMKPC18O6VmXbsDmh044BLfz3oE3oQsrq1AkUj4a
# eguQAOZAy44a6um8/YoHOZ73ZJkxfnGWVRZlmHJbvx/KFK/MnXtDI1lW2OerCx4N
# k1tRq9aHimmomsJvo4N10dCGMkDIWUPGJKTBvtvW3K+QWYzukvqADuQuuJPs67yF
# oiKncZ7+51Qruo7qWxJeLJl7q2vzf8dPOwc/7SXiOhCjQqwxYvSB/xkSQ8xkl2Ve
# 8lQlVjSCQG109Q8TvA2GKUXc3wnEC+hmSCz0lGRQ1jwHEk4wY73fxRocK4cmXqib
# szuaj4C/IIue9npABx5K0eAwJ/JjiYc2CtrDJ1cPJz3Ho0UBpHdhND4s25oB9F5r
# IihejiQumFRTIABC+gn8289gCoNK7MADZdigwW76/Jg/M1KWbpvBJuEJsoQim6GC
# DX0wgg15BgorBgEEAYI3AwMBMYINaTCCDWUGCSqGSIb3DQEHAqCCDVYwgg1SAgED
# MQ8wDQYJYIZIAWUDBAIBBQAwdwYLKoZIhvcNAQkQAQSgaARmMGQCAQEGCWCGSAGG
# /WwHATAxMA0GCWCGSAFlAwQCAQUABCC0XTDkLGotxVA3SNZCglpIf43K7cFUZzmD
# j6rKB6I4xgIQWaJlxfK8fWWZr5xb+dKEGhgPMjAyMjAzMjMyMzE5MjhaoIIKNzCC
# BP4wggPmoAMCAQICEA1CSuC+Ooj/YEAhzhQA8N0wDQYJKoZIhvcNAQELBQAwcjEL
# MAkGA1UEBhMCVVMxFTATBgNVBAoTDERpZ2lDZXJ0IEluYzEZMBcGA1UECxMQd3d3
# LmRpZ2ljZXJ0LmNvbTExMC8GA1UEAxMoRGlnaUNlcnQgU0hBMiBBc3N1cmVkIElE
# IFRpbWVzdGFtcGluZyBDQTAeFw0yMTAxMDEwMDAwMDBaFw0zMTAxMDYwMDAwMDBa
# MEgxCzAJBgNVBAYTAlVTMRcwFQYDVQQKEw5EaWdpQ2VydCwgSW5jLjEgMB4GA1UE
# AxMXRGlnaUNlcnQgVGltZXN0YW1wIDIwMjEwggEiMA0GCSqGSIb3DQEBAQUAA4IB
# DwAwggEKAoIBAQDC5mGEZ8WK9Q0IpEXKY2tR1zoRQr0KdXVNlLQMULUmEP4dyG+R
# awyW5xpcSO9E5b+bYc0VkWJauP9nC5xj/TZqgfop+N0rcIXeAhjzeG28ffnHbQk9
# vmp2h+mKvfiEXR52yeTGdnY6U9HR01o2j8aj4S8bOrdh1nPsTm0zinxdRS1LsVDm
# QTo3VobckyON91Al6GTm3dOPL1e1hyDrDo4s1SPa9E14RuMDgzEpSlwMMYpKjIjF
# 9zBa+RSvFV9sQ0kJ/SYjU/aNY+gaq1uxHTDCm2mCtNv8VlS8H6GHq756WwogL0sJ
# yZWnjbL61mOLTqVyHO6fegFz+BnW/g1JhL0BAgMBAAGjggG4MIIBtDAOBgNVHQ8B
# Af8EBAMCB4AwDAYDVR0TAQH/BAIwADAWBgNVHSUBAf8EDDAKBggrBgEFBQcDCDBB
# BgNVHSAEOjA4MDYGCWCGSAGG/WwHATApMCcGCCsGAQUFBwIBFhtodHRwOi8vd3d3
# LmRpZ2ljZXJ0LmNvbS9DUFMwHwYDVR0jBBgwFoAU9LbhIB3+Ka7S5GGlsqIlssgX
# NW4wHQYDVR0OBBYEFDZEho6kurBmvrwoLR1ENt3janq8MHEGA1UdHwRqMGgwMqAw
# oC6GLGh0dHA6Ly9jcmwzLmRpZ2ljZXJ0LmNvbS9zaGEyLWFzc3VyZWQtdHMuY3Js
# MDKgMKAuhixodHRwOi8vY3JsNC5kaWdpY2VydC5jb20vc2hhMi1hc3N1cmVkLXRz
# LmNybDCBhQYIKwYBBQUHAQEEeTB3MCQGCCsGAQUFBzABhhhodHRwOi8vb2NzcC5k
# aWdpY2VydC5jb20wTwYIKwYBBQUHMAKGQ2h0dHA6Ly9jYWNlcnRzLmRpZ2ljZXJ0
# LmNvbS9EaWdpQ2VydFNIQTJBc3N1cmVkSURUaW1lc3RhbXBpbmdDQS5jcnQwDQYJ
# KoZIhvcNAQELBQADggEBAEgc3LXpmiO85xrnIA6OZ0b9QnJRdAojR6OrktIlxHBZ
# vhSg5SeBpU0UFRkHefDRBMOG2Tu9/kQCZk3taaQP9rhwz2Lo9VFKeHk2eie38+dS
# n5On7UOee+e03UEiifuHokYDTvz0/rdkd2NfI1Jpg4L6GlPtkMyNoRdzDfTzZTlw
# S/Oc1np72gy8PTLQG8v1Yfx1CAB2vIEO+MDhXM/EEXLnG2RJ2CKadRVC9S0yOIHa
# 9GCiurRS+1zgYSQlT7LfySmoc0NR2r1j1h9bm/cuG08THfdKDXF+l7f0P4TrweOj
# SaH6zqe/Vs+6WXZhiV9+p7SOZ3j5NpjhyyjaW4emii8wggUxMIIEGaADAgECAhAK
# oSXW1jIbfkHkBdo2l8IVMA0GCSqGSIb3DQEBCwUAMGUxCzAJBgNVBAYTAlVTMRUw
# EwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5jb20x
# JDAiBgNVBAMTG0RpZ2lDZXJ0IEFzc3VyZWQgSUQgUm9vdCBDQTAeFw0xNjAxMDcx
# MjAwMDBaFw0zMTAxMDcxMjAwMDBaMHIxCzAJBgNVBAYTAlVTMRUwEwYDVQQKEwxE
# aWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5jb20xMTAvBgNVBAMT
# KERpZ2lDZXJ0IFNIQTIgQXNzdXJlZCBJRCBUaW1lc3RhbXBpbmcgQ0EwggEiMA0G
# CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC90DLuS82Pf92puoKZxTlUKFe2I0rE
# DgdFM1EQfdD5fU1ofue2oPSNs4jkl79jIZCYvxO8V9PD4X4I1moUADj3Lh477sym
# 9jJZ/l9lP+Cb6+NGRwYaVX4LJ37AovWg4N4iPw7/fpX786O6Ij4YrBHk8JkDbTuF
# fAnT7l3ImgtU46gJcWvgzyIQD3XPcXJOCq3fQDpct1HhoXkUxk0kIzBdvOw8YGqs
# LwfM/fDqR9mIUF79Zm5WYScpiYRR5oLnRlD9lCosp+R1PrqYD4R/nzEU1q3V8mTL
# ex4F0IQZchfxFwbvPc3WTe8GQv2iUypPhR3EHTyvz9qsEPXdrKzpVv+TAgMBAAGj
# ggHOMIIByjAdBgNVHQ4EFgQU9LbhIB3+Ka7S5GGlsqIlssgXNW4wHwYDVR0jBBgw
# FoAUReuir/SSy4IxLVGLp6chnfNtyA8wEgYDVR0TAQH/BAgwBgEB/wIBADAOBgNV
# HQ8BAf8EBAMCAYYwEwYDVR0lBAwwCgYIKwYBBQUHAwgweQYIKwYBBQUHAQEEbTBr
# MCQGCCsGAQUFBzABhhhodHRwOi8vb2NzcC5kaWdpY2VydC5jb20wQwYIKwYBBQUH
# MAKGN2h0dHA6Ly9jYWNlcnRzLmRpZ2ljZXJ0LmNvbS9EaWdpQ2VydEFzc3VyZWRJ
# RFJvb3RDQS5jcnQwgYEGA1UdHwR6MHgwOqA4oDaGNGh0dHA6Ly9jcmw0LmRpZ2lj
# ZXJ0LmNvbS9EaWdpQ2VydEFzc3VyZWRJRFJvb3RDQS5jcmwwOqA4oDaGNGh0dHA6
# Ly9jcmwzLmRpZ2ljZXJ0LmNvbS9EaWdpQ2VydEFzc3VyZWRJRFJvb3RDQS5jcmww
# UAYDVR0gBEkwRzA4BgpghkgBhv1sAAIEMCowKAYIKwYBBQUHAgEWHGh0dHBzOi8v
# d3d3LmRpZ2ljZXJ0LmNvbS9DUFMwCwYJYIZIAYb9bAcBMA0GCSqGSIb3DQEBCwUA
# A4IBAQBxlRLpUYdWac3v3dp8qmN6s3jPBjdAhO9LhL/KzwMC/cWnww4gQiyvd/Mr
# HwwhWiq3BTQdaq6Z+CeiZr8JqmDfdqQ6kw/4stHYfBli6F6CJR7Euhx7LCHi1lss
# FDVDBGiy23UC4HLHmNY8ZOUfSBAYX4k4YU1iRiSHY4yRUiyvKYnleB/WCxSlgNcS
# R3CzddWThZN+tpJn+1Nhiaj1a5bA9FhpDXzIAbG5KHW3mWOFIoxhynmUfln8jA/j
# b7UBJrZspe6HUSHkWGCbugwtK22ixH67xCUrRwIIfEmuE7bhfEJCKMYYVs9BNLZm
# XbZ0e/VWMyIvIjayS6JKldj1po5SMYIChjCCAoICAQEwgYYwcjELMAkGA1UEBhMC
# VVMxFTATBgNVBAoTDERpZ2lDZXJ0IEluYzEZMBcGA1UECxMQd3d3LmRpZ2ljZXJ0
# LmNvbTExMC8GA1UEAxMoRGlnaUNlcnQgU0hBMiBBc3N1cmVkIElEIFRpbWVzdGFt
# cGluZyBDQQIQDUJK4L46iP9gQCHOFADw3TANBglghkgBZQMEAgEFAKCB0TAaBgkq
# hkiG9w0BCQMxDQYLKoZIhvcNAQkQAQQwHAYJKoZIhvcNAQkFMQ8XDTIyMDMyMzIz
# MTkyOFowKwYLKoZIhvcNAQkQAgwxHDAaMBgwFgQU4deCqOGRvu9ryhaRtaq0lKYk
# m/MwLwYJKoZIhvcNAQkEMSIEIHNTJ07DMb66i/CvfgCQwd6w8vfBx22bam2qmc9M
# uGZaMDcGCyqGSIb3DQEJEAIvMSgwJjAkMCIEILMQkAa8CtmDB5FXKeBEA0Fcg+Mp
# K2FPJpZMjTVx7PWpMA0GCSqGSIb3DQEBAQUABIIBAHon6BMHxuQFoPSgk2hY0LY8
# iYSY/wzH+juGLxHQ8DQP7CHbPiIvftqXgEK9VgVLxjk+e+O2+/6zdUzhg1q0N+1W
# RR0AvTl3Kv6ISCmG8HrcnC33q2OgPKLYhPZy0WBv0bZGfZzVnFMGmWjmBUmovqKG
# mSvf+8yV58oAwASWRNXJE1Ut4bR8qjCLZ31Uh+L/YQRVrYCvmUS09rrufBAAjzbC
# 1Uir2Pea4OE5jneMOvHAg29Nsh2GzUjPeKqHw4Dkv1ED0+3jbxOd5iGBi8ZXn9Us
# mhxC+BxAf/7oN9038H/22cT9ec1QUce7UapZaDZlGO1uhFNzHR/RTpn62Ol4iWM=
# SIG # End signature block

69
fastapi1/Scripts/activate

@ -0,0 +1,69 @@
# This file must be used with "source bin/activate" *from bash*
# you cannot run it directly
deactivate () {
# reset old environment variables
if [ -n "${_OLD_VIRTUAL_PATH:-}" ] ; then
PATH="${_OLD_VIRTUAL_PATH:-}"
export PATH
unset _OLD_VIRTUAL_PATH
fi
if [ -n "${_OLD_VIRTUAL_PYTHONHOME:-}" ] ; then
PYTHONHOME="${_OLD_VIRTUAL_PYTHONHOME:-}"
export PYTHONHOME
unset _OLD_VIRTUAL_PYTHONHOME
fi
# This should detect bash and zsh, which have a hash command that must
# be called to get it to forget past commands. Without forgetting
# past commands the $PATH changes we made may not be respected
if [ -n "${BASH:-}" -o -n "${ZSH_VERSION:-}" ] ; then
hash -r 2> /dev/null
fi
if [ -n "${_OLD_VIRTUAL_PS1:-}" ] ; then
PS1="${_OLD_VIRTUAL_PS1:-}"
export PS1
unset _OLD_VIRTUAL_PS1
fi
unset VIRTUAL_ENV
unset VIRTUAL_ENV_PROMPT
if [ ! "${1:-}" = "nondestructive" ] ; then
# Self destruct!
unset -f deactivate
fi
}
# unset irrelevant variables
deactivate nondestructive
VIRTUAL_ENV="F:\open-source\fastapi\fastapi1"
export VIRTUAL_ENV
_OLD_VIRTUAL_PATH="$PATH"
PATH="$VIRTUAL_ENV/Scripts:$PATH"
export PATH
# unset PYTHONHOME if set
# this will fail if PYTHONHOME is set to the empty string (which is bad anyway)
# could use `if (set -u; : $PYTHONHOME) ;` in bash
if [ -n "${PYTHONHOME:-}" ] ; then
_OLD_VIRTUAL_PYTHONHOME="${PYTHONHOME:-}"
unset PYTHONHOME
fi
if [ -z "${VIRTUAL_ENV_DISABLE_PROMPT:-}" ] ; then
_OLD_VIRTUAL_PS1="${PS1:-}"
PS1="(fastapi1) ${PS1:-}"
export PS1
VIRTUAL_ENV_PROMPT="(fastapi1) "
export VIRTUAL_ENV_PROMPT
fi
# This should detect bash and zsh, which have a hash command that must
# be called to get it to forget past commands. Without forgetting
# past commands the $PATH changes we made may not be respected
if [ -n "${BASH:-}" -o -n "${ZSH_VERSION:-}" ] ; then
hash -r 2> /dev/null
fi

34
fastapi1/Scripts/activate.bat

@ -0,0 +1,34 @@
@echo off
rem This file is UTF-8 encoded, so we need to update the current code page while executing it
for /f "tokens=2 delims=:." %%a in ('"%SystemRoot%\System32\chcp.com"') do (
set _OLD_CODEPAGE=%%a
)
if defined _OLD_CODEPAGE (
"%SystemRoot%\System32\chcp.com" 65001 > nul
)
set VIRTUAL_ENV=F:\open-source\fastapi\fastapi1
if not defined PROMPT set PROMPT=$P$G
if defined _OLD_VIRTUAL_PROMPT set PROMPT=%_OLD_VIRTUAL_PROMPT%
if defined _OLD_VIRTUAL_PYTHONHOME set PYTHONHOME=%_OLD_VIRTUAL_PYTHONHOME%
set _OLD_VIRTUAL_PROMPT=%PROMPT%
set PROMPT=(fastapi1) %PROMPT%
if defined PYTHONHOME set _OLD_VIRTUAL_PYTHONHOME=%PYTHONHOME%
set PYTHONHOME=
if defined _OLD_VIRTUAL_PATH set PATH=%_OLD_VIRTUAL_PATH%
if not defined _OLD_VIRTUAL_PATH set _OLD_VIRTUAL_PATH=%PATH%
set PATH=%VIRTUAL_ENV%\Scripts;%PATH%
set VIRTUAL_ENV_PROMPT=(fastapi1)
:END
if defined _OLD_CODEPAGE (
"%SystemRoot%\System32\chcp.com" %_OLD_CODEPAGE% > nul
set _OLD_CODEPAGE=
)

BIN
fastapi1/Scripts/black.exe

Binary file not shown.

BIN
fastapi1/Scripts/blackd.exe

Binary file not shown.

BIN
fastapi1/Scripts/cairosvg.exe

Binary file not shown.

BIN
fastapi1/Scripts/coverage-3.10.exe

Binary file not shown.

BIN
fastapi1/Scripts/coverage.exe

Binary file not shown.

BIN
fastapi1/Scripts/coverage3.exe

Binary file not shown.

22
fastapi1/Scripts/deactivate.bat

@ -0,0 +1,22 @@
@echo off
if defined _OLD_VIRTUAL_PROMPT (
set "PROMPT=%_OLD_VIRTUAL_PROMPT%"
)
set _OLD_VIRTUAL_PROMPT=
if defined _OLD_VIRTUAL_PYTHONHOME (
set "PYTHONHOME=%_OLD_VIRTUAL_PYTHONHOME%"
set _OLD_VIRTUAL_PYTHONHOME=
)
if defined _OLD_VIRTUAL_PATH (
set "PATH=%_OLD_VIRTUAL_PATH%"
)
set _OLD_VIRTUAL_PATH=
set VIRTUAL_ENV=
set VIRTUAL_ENV_PROMPT=
:END

BIN
fastapi1/Scripts/dmypy.exe

Binary file not shown.

BIN
fastapi1/Scripts/dotenv.exe

Binary file not shown.

BIN
fastapi1/Scripts/email_validator.exe

Binary file not shown.

BIN
fastapi1/Scripts/fastapi.exe

Binary file not shown.

BIN
fastapi1/Scripts/flask.exe

Binary file not shown.

BIN
fastapi1/Scripts/ghp-import.exe

Binary file not shown.

BIN
fastapi1/Scripts/griffe.exe

Binary file not shown.

BIN
fastapi1/Scripts/hjson.exe

Binary file not shown.

BIN
fastapi1/Scripts/httpx.exe

Binary file not shown.

BIN
fastapi1/Scripts/identify-cli.exe

Binary file not shown.

BIN
fastapi1/Scripts/markdown-it.exe

Binary file not shown.

BIN
fastapi1/Scripts/markdown_py.exe

Binary file not shown.

BIN
fastapi1/Scripts/mkdocs-get-deps.exe

Binary file not shown.

BIN
fastapi1/Scripts/mkdocs.exe

Binary file not shown.

BIN
fastapi1/Scripts/mypy.exe

Binary file not shown.

BIN
fastapi1/Scripts/mypyc.exe

Binary file not shown.

BIN
fastapi1/Scripts/nodeenv.exe

Binary file not shown.

BIN
fastapi1/Scripts/normalizer.exe

Binary file not shown.

BIN
fastapi1/Scripts/pip.exe

Binary file not shown.

BIN
fastapi1/Scripts/pip3.10.exe

Binary file not shown.

BIN
fastapi1/Scripts/pip3.exe

Binary file not shown.

BIN
fastapi1/Scripts/playwright.exe

Binary file not shown.

BIN
fastapi1/Scripts/pre-commit.exe

Binary file not shown.

BIN
fastapi1/Scripts/py.test.exe

Binary file not shown.

BIN
fastapi1/Scripts/pybabel.exe

Binary file not shown.

BIN
fastapi1/Scripts/pygmentize.exe

Binary file not shown.

BIN
fastapi1/Scripts/pytest.exe

Binary file not shown.

BIN
fastapi1/Scripts/python.exe

Binary file not shown.

BIN
fastapi1/Scripts/pythonw.exe

Binary file not shown.

BIN
fastapi1/Scripts/ruff.exe

Binary file not shown.

BIN
fastapi1/Scripts/stubgen.exe

Binary file not shown.

BIN
fastapi1/Scripts/stubtest.exe

Binary file not shown.

BIN
fastapi1/Scripts/typer.exe

Binary file not shown.

BIN
fastapi1/Scripts/uvicorn.exe

Binary file not shown.

BIN
fastapi1/Scripts/virtualenv.exe

Binary file not shown.

BIN
fastapi1/Scripts/watchfiles.exe

Binary file not shown.

BIN
fastapi1/Scripts/watchmedo.exe

Binary file not shown.

BIN
fastapi1/Scripts/websockets.exe

Binary file not shown.

3
fastapi1/pyvenv.cfg

@ -0,0 +1,3 @@
home = C:\Users\user\AppData\Local\Programs\Python\Python310
include-system-site-packages = false
version = 3.10.4
Loading…
Cancel
Save