%global srcname fastapi # The following dependencies must be packaged to build the HTML documentation: # - python3dist(markdown-include) # - python3dist(mkdocs-markdown-extradata-plugin) %bcond_with html_docs %global sum_en FastAPI framework %global sum_es FastAPI framework # Missing translation (localized docs present, but untranslated) # Summary(fr): FastAPI framework # Missing translation (localized docs present, but untranslated) # Summary(it): FastAPI framework # Translation present, but the title was not translated %global sum_ja FastAPI framework %global sum_ko FastAPI 프레임워크 %global sum_pt Framework FastAPI # Missing translation (localized docs present, but untranslated) # %%global sum_ru FastAPI framework # Missing translation (localized docs present, but untranslated) # %%global sum_sq FastAPI framework # Missing translation (localized docs present, but untranslated) # %%global sum_tr FastAPI framework # Missing translation (localized docs present, but untranslated) # %%global sum_uk FastAPI framework %global sum_zh FastAPI 框架 Name: python-%{srcname} Version: 0.64.0 Release: 1%{?dist} Summary: %{sum_en} License: MIT URL: https://github.com/tiangolo/%{srcname} Source0: %{url}/archive/%{version}/%{srcname}-%{version}.tar.gz BuildArch: noarch # Fix compatibility with starlette 0.14.x # (https://github.com/tiangolo/fastapi/issues/2342, # https://github.com/tiangolo/fastapi/issues/2493): # # https://github.com/tiangolo/fastapi/pull/2335/ Patch0: %{srcname}-0.63.0-pr-2335.patch BuildRequires: python3-devel BuildRequires: pyproject-rpm-macros # Documentation BuildRequires: js-termynal BuildRequires: web-assets-devel # For converting absolute symlinks in the buildroot to relative ones BuildRequires: symlinks Summary(en): %{sum_en} Summary(es): %{sum_es} # Summary(fr): %%{sum_fr} # Summary(it): %%{sum_it} Summary(ja): %{sum_ja} Summary(ko): %{sum_ko} Summary(pt): %{sum_pt} # Summary(ru): %%{sum_ru} # Summary(sq): %%{sum_sq} # Summary(tr): %%{sum_tr} # Summary(uk): %%{sum_uk} Summary(zh): %{sum_zh} %global common_description_en %{expand: FastAPI is a modern, fast (high-performance), web framework for building APIs with Python 3.6+ based on standard Python type hints. The key features are: • Fast: Very high performance, on par with NodeJS and Go (thanks to Starlette and Pydantic). One of the fastest Python frameworks available. • Fast to code: Increase the speed to develop features by about 200% to 300%.* • Fewer bugs: Reduce about 40% of human (developer) induced errors.* • Intuitive: Great editor support. Completion everywhere. Less time debugging. • Easy: Designed to be easy to use and learn. Less time reading docs. • Short: Minimize code duplication. Multiple features from each parameter declaration. Fewer bugs. • Robust: Get production-ready code. With automatic interactive documentation. • Standards-based: Based on (and fully compatible with) the open standards for APIs: OpenAPI (previously known as Swagger) and JSON Schema. * estimation based on tests on an internal development team, building production applications.} %global common_description_es %{expand: FastAPI es un web framework moderno y rápido (de alto rendimiento) para construir APIs con Python 3.6+ basado en las anotaciones de tipos estándar de Python. Sus características principales son: • Rapidez: Alto rendimiento, a la par con NodeJS y Go (gracias a Starlette y Pydantic). Uno de los frameworks de Python más rápidos. • Rápido de programar: Incrementa la velocidad de desarrollo entre 200% y 300%.* • Menos errores: Reduce los errores humanos (de programador) aproximadamente un 40%.* • Intuitivo: Gran soporte en los editores con auto completado en todas partes. Gasta menos tiempo debugging. • Fácil: Está diseñado para ser fácil de usar y aprender. Gastando menos tiempo leyendo documentación. • Corto: Minimiza la duplicación de código. Múltiples funcionalidades con cada declaración de parámetros. Menos errores. • Robusto: Crea código listo para producción con documentación automática interactiva. • Basado en estándares: Basado y totalmente compatible con los estándares abiertos para APIs: OpenAPI (conocido previamente como Swagger) y JSON Schema. * Esta estimación está basada en pruebas con un equipo de desarrollo interno contruyendo aplicaciones listas para producción.} #%%global common_description_fr %%{expand:…} #%%global common_description_it %%{expand:…} %global common_description_ja %{expand: FastAPI は、Pythonの標準である型ヒントに基づいてPython 3.6 以降でAPI を構築するための、モダンで、高速(高パフォーマンス)な、Web フレームワークです。 主な特徴: - 高速: NodeJS や Go 並みのとても高いパフォーマンス (Starlette と Pydantic のおかげです)。最も高速な Python フレームワークの一つです。 - 高速なコーディング: 開発速度を約 200%~300%向上させます。 * - 少ないバグ: 開発者起因のヒューマンエラーを約 40%削減します。 * - 直感的: 素晴らしいエディタのサポートや オートコンプリート。 デバッグ時間を削減します。 - 簡単: 簡単に利用、習得できるようにデザインされています。 ドキュメントを読む時間を削減します。 - 短い: コードの重複を最小限にしています。 各パラメータからの複数の機能。少ないバグ。 - 堅牢性: 自動対話ドキュメントを使用して、本番環境で使用できるコードを取得します。 - Standards-based: API のオープンスタンダードに基づいており、完全に互換性があります: OpenAPI (以前は Swagger として知られていました) や JSON スキーマ. * 本番アプリケーションを構築している開発チームのテストによる見積もり。} %global common_description_ko %{expand: FastAPI는 현대적이고, 빠르며(고성능), 파이썬 표준 타입 힌트에 기초한 Python3.6+의 API를 빌드하기 위한 웹 프레임워크입니다. 주요 특징으로: • 빠름: (Starlette과 Pydantic 덕분에) NodeJS 및 Go와 대등할 정도로 매우 높은 성능. 사용 가능한 가장 빠른 파이썬 프레임워크 중 하나. • 빠른 코드 작성: 약 200%에서 300%까지 기능 개발 속도 증가.* • 적은 버그: 사람(개발자)에 의한 에러 약 40% 감소.* • 직관적: 훌륭한 편집기 지원. 모든 곳에서 자동완성. 적은 디버깅 시간. • 쉬움: 쉽게 사용하고 배우도록 설계. 적은 문서 읽기 시간. • 짧음: 코드 중복 최소화. 각 매개변수 선언의 여러 기능. 적은 버그. • 견고함: 준비된 프로덕션 용 코드를 얻으세요. 자동 대화형 문서와 함께. • 표준 기반: API에 대한 (완전히 호환되는) 개방형 표준 기반: OpenAPI (이전에 Swagger로 알려졌던) 및 JSON 스키마. * 내부 개발팀의 프로덕션 애플리케이션을 빌드한 테스트에 근거한 측정} %global common_description_pt %{expand: FastAPI é um moderno e rápido (alta performance) framework web para construção de APIs com Python 3.6 ou superior, baseado nos type hints padrões do Python. Os recursos chave são: • Rápido: alta performance, equivalente a NodeJS e Go (graças ao Starlette e Pydantic). Um dos frameworks mais rápidos disponíveis. • Rápido para codar: Aumenta a velocidade para desenvolver recursos entre 200% a 300%.* • Poucos bugs: Reduz cerca de 40% de erros induzidos por humanos (desenvolvedores).* • Intuitivo: Grande suporte a IDEs. Auto-Complete em todos os lugares. Menos tempo debugando. • Fácil: Projetado para ser fácil de aprender e usar. Menos tempo lendo documentação. • Enxuto: Minimize duplicação de código. Múltiplos recursos para cada declaração de parâmetro. Menos bugs. • Robusto: Tenha código pronto para produção. E com documentação interativa automática. • Baseado em padrões: Baseado em (e totalmente compatível com) os padrões abertos para APIs: OpenAPI (anteriormente conhecido como Swagger) e JSON Schema. * estimativas baseadas em testes realizados com equipe interna de desenvolvimento, construindo aplicações em produção.} #%%global common_description_ru %%{expand:…} #%%global common_description_sq %%{expand:…} #%%global common_description_tr %%{expand:…} #%%global common_description_uk %%{expand:…} %global common_description_zh %{expand: FastAPI 是一个用于构建 API 的现代、快速(高性能)的 web 框架,使用 Python 3.6+ 并基于标准的 Python 类型提示。 关键特性: • 快速:可与 NodeJS 和 Go 比肩的极高性能(归功于 Starlette 和 Pydantic)。 最快的 Python web 框架之一。 • 高效编码:提高功能开发速度约 200% 至 300%。* • 更少 bug:减少约 40% 的人为(开发者)导致错误。* • 智能:极佳的编辑器支持。处处皆可自动补全,减少调试时间。 • 简单:设计的易于使用和学习,阅读文档的时间更短。 • 简短:使代码重复最小化。通过不同的参数声明实现丰富功能。bug 更少。 • 健壮:生产可用级别的代码。还有自动生成的交互式文档。 • 标准化:基于(并完全兼容)API 的相关开放标准:OpenAPI (以前被称为 Swagger) 和 JSON Schema。 * 根据对某个构建线上应用的内部开发团队所进行的测试估算得出。} %description %{common_description_en} %description -l en %{common_description_en} %description -l es %{common_description_es} #%%description -l fr %%{common_description_fr} #%%description -l it %%{common_description_it} %description -l ja %{common_description_ja} %description -l ko %{common_description_ko} %description -l pt %{common_description_pt} #%%description -l ru %%{common_description_ru} #%%description -l sq %%{common_description_sq} #%%description -l tr %%{common_description_tr} #%%description -l uk %%{common_description_uk} %description -l zh %{common_description_zh} %generate_buildrequires # Tests under tests/test_tutorial may require dependencies that are only in the # dev extra. %pyproject_buildrequires -x all,test,dev%{?with_html_docs:,doc} %pyproject_extras_subpkg -n python3-%{srcname} all %package -n python3-%{srcname} Summary: %{sum_en} Summary(en): %{sum_en} Summary(es): %%{sum_es} # Summary(fr): %%{sum_fr} # Summary(it): %%{sum_it} Summary(ja): %{sum_ja} Summary(ko): %{sum_ko} Summary(pt): %{sum_pt} # Summary(ru): %%{sum_ru} # Summary(sq): %%{sum_sq} # Summary(tr): %%{sum_tr} # Summary(uk): %%{sum_uk} Summary(zh): %{sum_zh} %description -n python3-%{srcname} %{common_description_en} %description -n python3-%{srcname} -l en %{common_description_en} %description -n python3-%{srcname} -l es %{common_description_es} #%%description -n python3-%%{srcname} -l fr %%{common_description_fr} #%%description -n python3-%%{srcname} -l it %%{common_description_it} %description -n python3-%{srcname} -l ja %{common_description_ja} %description -n python3-%{srcname} -l ko %{common_description_ko} %description -n python3-%{srcname} -l pt %{common_description_pt} #%%description -n python3-%%{srcname} -l ru %%{common_description_ru} #%%description -n python3-%%{srcname} -l sq %%{common_description_sq} #%%description -n python3-%%{srcname} -l tr %%{common_description_tr} #%%description -n python3-%%{srcname} -l uk %%{common_description_uk} %description -n python3-%{srcname} -l zh %{common_description_zh} %package doc Summary: Documentation for %{name} Requires: js-termynal %description doc %{common_description_en} %description doc -l en %{common_description_en} %description doc -l es %{common_description_es} #%%description doc -l fr %%{common_description_fr} #%%description doc -l it %%{common_description_it} %description doc -l ja %{common_description_ja} %description doc -l ko %{common_description_ko} %description doc -l pt %{common_description_pt} #%%description doc -l ru %%{common_description_ru} #%%description doc -l sq %%{common_description_sq} #%%description doc -l tr %%{common_description_tr} #%%description doc -l uk %%{common_description_uk} %description doc -l zh %{common_description_zh} %prep %autosetup -n %{srcname}-%{version} -p1 # Comment out all dependencies on orjson (for ORJSONResponse); it cannot be # packaged in Fedora until it builds with the stable Rust toolchain instead of # the nightly one. Note that this removes it from the “all” extra metapackage. # # Loosen all dependencies that are pinned to exact versions. We have to try to # work with what is packaged. # # Comment out test dependencies that are only for linting/formatting/analysis, # and will not be used. # # Comment out the databases[sqlite] test dependency because it is not yet # packaged for Fedora. # # Do not require async backport libraries where they are not needed # (https://github.com/tiangolo/fastapi/pull/2902). # # Selectively loosen dependencies that are perhaps arbitrarily pinned to # certain version ranges: first, those for which we choose to allow newer # versions, and second, those for which we choose to allow older and newer # versions. This could have unwanted consequences, but such is the nature of # packaging. # # Allow aiofiles 0.6.x: https://github.com/tiangolo/fastapi/pull/3075 # # Replace passlib[bcrypt] with passlib and bcrypt separately, until # https://bugzilla.redhat.com/show_bug.cgi?id=1936021 is fixed (F35 and later). sed -r -i \ -e 's/("orjson\b.*",)/# \1/' \ -e 's/==/>=/g' \ -e 's/("(mypy|black|flake8|isort|autoflake)\b.*",)/# \1/' \ -e 's/("(databases\[sqlite\]).*",)/# \1/' \ -e 's/("async_(exit_stack|generator)[^"]*)/\1; '"python_version < '3.7'/" \ -e 's/("(httpx)\b[^<"]*),[[:blank:]]*<[^"]*/\1/' \ -e 's/("(mkdocs-material|ujson))\b[^"]*/\1/' \ -e 's/("(aiofiles|)\b[^<"]*,[[:blank:]]*<0\.)6\.0/\17.0/' \ %if 0%{?fedora} && 0%{?fedora} < 35 -e 's/([[:blank:]]*)("passlib)\[bcrypt\](.*)/\1"bcrypt",\n\1\2\3/' \ %endif pyproject.toml # Remove bundled js-termynal 0.0.1: find docs -type f -name 'termynal.*' | while read -r fn do echo '' > "${fn}" # make it an empty file done # In %%install, we will restore this functionality by symlinking the system # copy. %build %pyproject_wheel %if %{with html_docs} mkdocs build %endif %install %pyproject_install %pyproject_save_files %{srcname} install -t '%{buildroot}%{_pkgdocdir}' -D -m 0644 -p \ CONTRIBUTING.md README.md %if %{with html_docs} cp -rp site '%{buildroot}%{_pkgdocdir}/' %else cp -rp docs '%{buildroot}%{_pkgdocdir}/markdown' %endif # We do not own these files; we temporarily install them in the buildroot so we # do not have dangling symlinks. install -d "$(dirname '%{buildroot}%{_jsdir}')" cp -rp %{_jsdir} %{buildroot}%{_jsdir} # Replace truncated js-termynal files with relative symbolic links find docs -type f -name 'termynal.*' | while read -r fn do ln -s -f "%{buildroot}%{_jsdir}/$(basename "${fn}")" "${fn}" symlinks -c -o "${fn}" done rm -rf '%{buildroot}%{_jsdir}' %check # Requires databases[sqlite]: # tests/test_tutorial/test_async_sql_databases/test_tutorial001.py # tests/test_tutorial/test_custom_response/test_tutorial001b.py # Requires orjson: # tests/test_default_response_class.py %pytest \ --ignore=tests/test_tutorial/test_async_sql_databases/test_tutorial001.py \ --ignore=tests/test_tutorial/test_custom_response/test_tutorial001b.py \ --ignore=tests/test_default_response_class.py %files -n python3-%{srcname} -f %{pyproject_files} %license LICENSE %doc README.md %files doc %license LICENSE %{_pkgdocdir} %changelog * Sat May 08 2021 Benjamin A. Beasley - 0.64.0-1 - New upstream release 0.64.0 - Fix Korean summary * Mon Apr 12 2021 Benjamin A. Beasley - 0.63.0-7 - Allow aiofiles 0.6.x: https://github.com/tiangolo/fastapi/pull/3075 * Tue Apr 06 2021 Benjamin A. Beasley - 0.63.0-6 - Do not use %%exclude for unpackaged files (RPM 4.17 compatibility) * Sat Mar 27 2021 Benjamin A. Beasley - 0.63.0-5 - Typo fix in js-termynal symbolic links * Thu Mar 25 2021 Benjamin A. Beasley - 0.63.0-4 - Improved source URL (better tarball name) * Tue Mar 16 2021 Benjamin A. Beasley - 0.63.0-3 - Use system js-termynal to replace the (removed) bundled copy - No longer need to work around missing python3dist(passlib[bcrypt]) on F35 - Fix typo in Summary(es) * Tue Mar 16 2021 Benjamin A. Beasley - 0.63.0-2 - Drop python3dist(setuptools) BR, redundant with %%pyproject_buildrequires * Sat Mar 06 2021 Benjamin A. Beasley - 0.63.0-1 - New upstream version 0.63.0 - Whitespace changes - Drop obsolete %%python_provide macro - Comment out orjson dependencies in package metadata - Remove explicit/manual dependencies. This drops the hard dependency on uvicorn. - Use pyproject-rpm-macros for generated BR’s - Loosen all pinned dependencies - Fix starlette 0.14.x compatibility - Switch from PyPI tarball to GitHub tarball - Add a metapackage for the “all” extra (which is really all-but-orjson) - Add a separate -doc package; for now, we cannot build the HTML documentation, so we install the Markdown sources instead - Improved and localized summaries and descriptions from upstream * Wed Jan 27 2021 Fedora Release Engineering - 0.61.1-3 - Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild * Wed Oct 7 00:24:09 -03 2020 Itamar Reis Peixoto - 0.61.1-2 - add missing deps. * Wed Sep 30 2020 Itamar Reis Peixoto - 0.61.1-1 - Initial package. - Fix license TAG.