Saravanan666/pypi-org huggingface dataset:
Package: a-selenium-screenshot-whole-page
Takes a screenshot from a whole page (same size as page / no repeating parts)# Tested with:# https://github.com/ultrafunkamsterdam/undetected-chromedriver# Python 3.9.13# Windows 10$pipinstalla-selenium-screenshot-whole-pagefromauto_download_undetected_chromedriverimportdownload_undetected_chromedriverimportundetected_chromedriverasucfroma_selenium_screenshot_whole_pageimportget_screenshot_whole_page_with_scrollfromtimeimportsleepif__name__=="__main__":folderchromedriver="f:\\seleniumdriver2"path=download_undetected_chromedriver(folder_path_for_exe=folderchromedriver,undetected=True)driver=uc.Chrome(driver_executable_path=path)driver.get(r"https://github.com/hansalemaos/a_cv2_easy_resize")sleep(2)get_screenshot_whole_page_with_scroll(driver,sleepinterval=(0.2,0.8),save_path='f:\\testwholescreenshot.png')
Package: a-selenium-scroll-down-forever
Scrolls down on a page# Tested with:# https://github.com/ultrafunkamsterdam/undetected-chromedriver# Python 3.9.13# Windows 10$pipinstalla-selenium-scroll-down-foreverfromauto_download_undetected_chromedriverimportdownload_undetected_chromedriverimportundetected_chromedriverasucfromtimeimportsleepfroma_selenium_scroll_down_foreverimportscroll_down_foreverif__name__=="__main__":folderchromedriver="f:\\seleniumdriver2"path=download_undetected_chromedriver(folder_path_for_exe=folderchromedriver,undetected=True)driver=uc.Chrome(driver_executable_path=path)driver.get(r"https://github.com/hansalemaos/a_cv2_easy_resize")sleep(2)scroll_down_forever(driver,pause_between_scrolls=(0.5,0.1),max_scrolls=10,timeout=3,script_timeout=1,)
Package: a-selenium-some-js
A couple of useful JS scripts for Selenium# Tested with:# https://github.com/ultrafunkamsterdam/undetected-chromedriver# Python 3.9.13# Windows 10$pipinstalla-selenium-some-jsfroma_selenium_some_jsimport*execute_scripts_with_timeout(driver,script=f"window.scrollBy(0,{200})",script_timeout=3)js_scrollby(driver,y=40,script_timeout=0)go_to_top_of_page(driver,script_timeout=1)get_navigator_infos(driver)zoom_website(driver,scaleFactor=2,x=0,y=0,relativeSpeed=800)maximize_window(driver)# window is not maximized, but its size is like maximizedsend_cmd(driver,'Input.synthesizePinchGesture',{'x':0,'y':0,'scaleFactor':2,'relativeSpeed':800,# optional'gestureSourceType':'default'# optional})# https://chromedevtools.github.io/devtools-protocol/
Package: asen-6008
AboutThis library encodes all of the information provided in the handouts Coefficient Data and Ephemeris_Meeus from ASEN 6008 (CU Boudler). This library was created in Spring 2021 when the course was taught by Professor Kate Davis.Installationpip install asen_6008APIThis library provides 10 classes (the 8 planets, Pluto, and the Sun) and 2 constants, AU and Days_per_year.The classes are all instances of the class Planet which has the following layout (note this is pseudocode)class Planet:
	L # deg
    a # AU
    e
    i #deg
    Omega # deg
    Pi  # deg
    mu  # km3/s2
    r # kmElements L, a, e, i, Omega, and Pi are of type OrbitalElement which has the following layoutclass OrbitalElement:
	a0
	a1
	a2
	a3Elements mu and r are simply floating point values.To access any of the data for a planet would look something like thisimport asen_6008

print(asen_6008.Mars.L)
print(asen_6008.Earth.e.a1)
print(asen_6008.Sun.mu)The names of all the classes and constants provided are listed belowAU
Days_per_year
Sun
Mercury
Venus
Earth
Mars
Jupiter
Saturn
Uranus
Neptune
PlutoAlso, both the Planet and OrbitalElement class have overridden the__repr__class attribute, so they can be printed directly, for example:>>> import asen_6008
>>> print(asen_6008.Jupiter)
L (deg): 34.351484, 3034.9056746, -8.501e-05, 4e-09
a (AU): 5.202603191, 1.913e-07, 0, 0
e: 0.04849485, 0.000163244, -4.719e-07, -1.97e-09
i (deg): 1.30327, -0.0019872, 3.318e-05, 9.2e-08
Ω (deg): 100.464441, 0.1766828, 0.00090387, -7.032e-06
Π (deg): 14.331309, 0.2155525, 0.00072252, -4.59e-06
μ (km3/s2): 126686536.1
r (km): 71492UsageBecause the professor requested that no equations be placed in the library, only constants, the user will have to supply their own equations for calculating the ephemeris information as a function of time. There are many ways to do this, but one way which leads to a fairly clean API is to wrap the classes provided in your own class, like thisimport asen_6008

class MyPlanet():
	def __init__(self, planet):
		self.planet = planet

	def e(self, t):
		return self.planet.e.a0 + self.planet.e.a1 * t + self.planet.e.a2 * t**2 + self.planet.e.a3 * t**3

Earth = MyPlanet(asen_6008.Earth)
Mars = MyPlanet(asen_6008.Mars)

print(Mars.e(some_julian_date))You'll want to put this class and the instance of it in a separate file that you then import into your main Python project.This way you can access various properties of the planet with a simple interface that accepts a time value. But you can also reach in directly to the underlying class provided by the asen_6008 library, as follows:print(Earth.planet.e) # Here Earth is the same instance that was defined above.
Package: ase-notebook
ase-notebookA highly configurable 2D (SVG) & 3D (threejs) visualisation creator for ASE/Pymatgen structures,
within the Jupyter Notebook.PurposeTo create atomic configuration visualisations, principally within a Jupyter Notebook.ContributingContributions are very welcome.The following will discover and run all unit test:>>pipinstall-e.[testing]>>pytest-vCoding Style RequirementsThe code style is tested usingflake8,
with the configuration set in.flake8,
and code should be formatted withblack.Installing withase-notebook[code_style]makes thepre-commitpackage available, which will ensure these tests are passed by reformatting the code
and testing for lint errors before submitting a commit.
It can be setup by:>>cdase-notebook
>>pre-commitinstallOptionally you can runblackandflake8separately:>>black.
>>flake8.Editors like VS Code also have automatic code reformat utilities, which can adhere to this standard.LicenseSee LICENSE fileIssuesIf you encounter any problems, pleasefile an issuealong with a detailed description.
Package: asent
Asent: Fast, flexible and transparent sentiment analysisAsent is a rule-based sentiment analysis library for Python made usingSpaCy.
It is inspired byVader, but uses a more modular ruleset, that allows the user to change e.g. the method for finding negations. Furthermore, it includes visualizers to visualize model predictions, making the model easily interpretable.InstallationInstalling Asent is simple using pip:pip install asentThere is no reason to update from GitHub as the version on pypi should always be the same of on GitHub.Simple ExampleThe following shows a simple example of how you can quickly apply sentiment analysis using asent. For more on using asent see theusage guides.importspacyimportasent# create spacy pipelinenlp=spacy.blank('en')nlp.add_pipe('sentencizer')# add the rule-based sentiment modelnlp.add_pipe("asent_en_v1")# try an exampletext="I am not very happy, but I am also not especially sad"doc=nlp(text)# print polarity of document, scaled to be between -1, and 1print(doc._.polarity)# neg=0.0 neu=0.631 pos=0.369 compound=0.7526Naturally, a simple score can be quite unsatisfying, thus Asent implements a series of visualizer to interpret the results:# visualize model predictionasent.visualize(doc,style="prediction")If we want to know why the model comes the result it does we can use theanalysisstyle:# visualize the analysis performed by the model:asent.visualize(doc[:5],style="analysis")Where the value in the parenthesis (2.7) indicates the human-rating of the word, while
the value outside the parenthesis indicates the value accounting for the negation.
Asent also accounts for contrastive conjugations (e.g. but), casing, emoji's and
punctuations. For more on how the model works check out the [usage guide].📖 DocumentationDocumentation🔧InstallationInstallation instructions for Asent📚Usage GuidesGuides and instructions on how to use asent and its features. It also gives short introduction to how the models works.📰News and changelogNew additions, changes and version history.🎛DocumentationThe detailed reference for Asents's API. Including function documentation💬 Where to ask questionsType🚨FAQFAQ🚨Bug ReportsGitHub Issue Tracker🎁Feature Requests & IdeasGitHub Issue Tracker👩‍💻Usage QuestionsGitHub Discussions🗯General DiscussionGitHub Discussions
Package: asen-UnleashClient
unleash-client-pythonThis is the Python client forUnleash.  It implementsClient Specifications 1.0and checks compliance based on spec inunleash/client-specificationsWhat it supports:Default activation strategies using 32-bitMurmerhash3Custom strategiesFull client lifecycle:Client registers with Unleash serverClient periodically fetches feature toggles and stores to on-disk cacheClient periodically sends metrics to Unleash ServerTested on Linux (Ubuntu), OSX, and WindowsCheck out theproject documentationand thechangelog.InstallationCheck out the package onPypi!pip install UnleashClientUsageInitializationfrom UnleashClient import UnleashClient
client = UnleashClient("https://unleash.herokuapp.com/api", "My Program")
client.initialize_client()To clean up gracefully:client.destroy()ArgumentsArgumentDescriptionRequired?TypeDefault ValueurlUnleash server URLYStringN/Aapp_nameName of your programYStringN/AenvironmentName of current environmentNStringdefaultinstance_idUnique ID for your programNStringunleash-client-pythonrefresh_intervalHow often the unleash client should check for configuration changes.NInteger15metrics_intervalHow often the unleash client should send metrics to server.NInteger60disable_metricsDisables sending metrics to Unleash server.NBooleanFdisable_registrationDisables registration with Unleash server.NBooleanFcustom_headersCustom headers to send to Unleash.NDictionary{}custom_strategiesCustom strategies you'd like UnleashClient to support.NDictionary{}Checking if a feature is enabledA check of a simple toggle:client.is_enabled("My Toggle")Specifying a default value:client.is_enabled("My Toggle",default_value=True)Supplying application context:app_context={"userId":"test@email.com"}client.is_enabled("User ID Toggle",app_context)Supplying a fallback function:defcustom_fallback(feature_name:str,context:dict)->bool:returnTrueclient.is_enabled("My Toggle",fallback_function=custom_fallback)Must accept the fature name and context as an argument.Client will evaluate the fallback function only if exception occurs when calling theis_enabled()method i.e. feature flag not found or other general exception.If both adefault_valueandfallback_functionare supplied, client will define the default value byORing the default value and the output of the fallback function.Getting a variantChecking for a variant:context={'userId':'2'}# Context must have userId, sessionId, or remoteAddr.  If none are present, distribution will be random.variant=client.get_variant("MyvariantToggle",context)print(variant)>{>"name":"variant1",>"payload":{>"type":"string",>"value":"val1">},>"enabled":True>}For more information about variants, see theBeta feature documentation.
Package: aseprite-ini
Aseprite INIA tool to parseAseprite.iniformat file.This format is being used forlanguage translation strings.Installationpipinstallaseprite-iniUsageimportosfromaseprite_iniimportAseinifromexamplesimportassets_dir,build_dirdefmain():strings_en=Aseini.pull_strings('main')strings_en.fallback(Aseini.pull_strings('v1.3.2'))strings_en.fallback(Aseini.pull_strings('v1.2.40'))strings_en.save(os.path.join(build_dir,'en.ini'))strings_my=Aseini.load(os.path.join(assets_dir,'my.ini'))translated,total=strings_my.coverage(strings_en)print(f'progress:{translated}/{total}')strings_my.save(os.path.join(build_dir,'my.ini'),strings_en)strings_my.save_alphabet(os.path.join(build_dir,'my.txt'))if__name__=='__main__':main()DependenciesRequestsLicenseUnder theMIT license.
Package: aseqe
ase-espressoprovides a
Python interface compatible withAtomic Simulation Environment
(ASE)for managing
calculations with theQuantum
Espressocode.This is a fork fromvossjothat offers a lot of improvements over the original version, the most
important ones include:the files were restructured into a python packageasetup.pyfile was introduced to allow installation throughpiporsetuptoolsconfiguration for the documentation is provided throughsphinxand a lot of
docstrings were updatedthesite.cfgis obsolete now, and no additional configuration is
required, the functionality is replaced by a newSiteConfigclass
that dynamically gathers information about the execution environmentthe oldespressoclass is now split into two:Espressopreserving the standard functionality andiEspressoresponsible
for dynamic/interactive jobs with a custom version of pw.xchanges were made to establish python 3.x compatibilitytheEspressoclass were restructured according toaseguidelines
regarding calculator objects to support full compatibility withasemost of the system calls are now handled bypexpectandsubprocessinstead of theos.system,os.popen(),os.popen2(),os.popen3()tests were addedcode style and readability were improvedInstallationDependenciesAtomic Simulation Environment
(ASE)numpypexpectfuturepath.pypython-hostlistThe recommended installation method is withpip. The current version can be
installed directly fromgithub:pipinstallhttps://github.com/lmmentel/ase-espresso/archive/master.zipor cloned firstgitclonehttps://github.com/lmmentel/ase-espresso.gitand installed viapipinstall./ase-espressoDocumentationThe documentation is hosted onase-espresso.readthedocs.io.You can also generate the documentation locally usingsphinxby going to thedocsdirectory and typing:makehtmlThe built documentation can be viewed in a any browserfirefoxbuild/html/index.html
Package: aserializer
Aboutaserializer is an object serializer inspired by the django forms.ExamplesExamples how code looks like:class Address(Serializer):
    id = IntegerField(required=True, identity=True)
    street = StringField(required=True)
    streetNumber = StringField(required=True)
    city = StringField(required=False)
    country = StringField(required=False)

class User(Serializer):
    _type = TypeField('user')
    id = IntegerField(required=True, identity=True)
    name = StringField(required=True)
    email = EmailField(required=True)
    tel = StringField(required=False, min_length=10, max_length=50)
    address = SerializerField(Address, required=True)Result:user = User(DATA)
user.dump()

{
  "_type": "user",
  "id": 1,
  "name": "Joe",
  "email": "joe@example.com",
  "tel": "+49 555 555 12",
  "address": {
    "id": 1,
    "street": "Street",
    "streetNumber": "5a",
    "city": "Berlin",
    "country": "Germany"
  }
}TestsTo run the tests use the command:python setup.py nosetestsContributingPlease find bugs and send pull requests to theGitHub repositoryandissue tracker.
Package: aserto_authorizer
Aserto Authorizer gRPC clientThis is an automatically generated client for interacting with Aserto'sAuthorizer serviceusing the gRPC protocol.InstallationUsing Pippipinstallaserto-authorizerUsing Poetrypoetryaddaserto-authorizerUsageimportgrpcfromaserto.authorizer.v2.apiimport(IdentityContext,IdentityType,PolicyContext,PolicyInstance,)fromaserto.authorizer.v2import(AuthorizerStub,DecisionTreeRequest,DecisionTreeOptions,DecisionTreeResponse,PathSeparator,)fromgrpclib.clientimportChannelwithgrpc.secure_channel(target="authorizer.prod.aserto.com:8443",credentials=grpc.ssl_channel_credentials(),)aschannel:client=AuthorizerStub(channel)response=client.DecisionTree(DecisionTreeRequest(policy_context=PolicyContext(path=ASERTO_POLICY_PATH_ROOT,decisions=["visible","enabled","allowed"],),policy_instance=PolicyInstance(name=ASERTO_POLICY_NAME,instance_label=ASERTO_POLICY_INSTANCE_LABEL,),identity_context=IdentityContext(type=IdentityType.IDENTITY_TYPE_NONE),options=DecisionTreeOptions(path_separator=PathSeparator.PATH_SEPARATOR_DOT,),))assertresponse==DecisionTreeResponse(path_root=ASERTO_POLICY_PATH_ROOT,path=Proto.Struct(fields={"GET.your.policy.path":Proto.Value(struct_value=Proto.Struct(fields={"visible":Proto.Value(bool_value=True),"enabled":Proto.Value(bool_value=True),"allowed":Proto.Value(bool_value=False),},),),},),)
Package: aserto-authorizer-grpc
Aserto Authorizer gRPC clientThis is an automatically generated client for interacting with Aserto'sAuthorizer serviceusing the gRPC protocol.InstallationUsing Pippipinstallaserto-authorizer-grpcUsing Poetrypoetryaddaserto-authorizer-grpcUsagefromaserto_authorizer_grpc.aserto.api.v1import(IdentityContext,IdentityType,PolicyContext,)fromaserto_authorizer_grpc.aserto.authorizer.authorizer.v1import(AuthorizerStub,DecisionTreeOptions,DecisionTreeResponse,PathSeparator,Proto,)fromgrpclib.clientimportChannelasyncwithChannel(host=host,port=port,ssl=True)aschannel:headers={"aserto-tenant-id":TENANT_ID,"authorization":f"basic{ASERTO_API_KEY}"}client=AuthorizerStub(channel,metadata=headers)response=awaitclient.decision_tree(policy_context=PolicyContext(id=ASERTO_POLICY_ID,path=ASERTO_POLICY_PATH_ROOT,decisions=["visible","enabled","allowed"],),identity_context=IdentityContext(type=IdentityType.IDENTITY_TYPE_NONE),resource_context=Proto.Struct(),options=DecisionTreeOptions(path_separator=PathSeparator.PATH_SEPARATOR_DOT,),)assertresponse==DecisionTreeResponse(path_root=ASERTO_POLICY_PATH_ROOT,path=Proto.Struct(fields={"GET.your.policy.path":Proto.Value(struct_value=Proto.Struct(fields={"visible":Proto.Value(bool_value=True),"enabled":Proto.Value(bool_value=True),"allowed":Proto.Value(bool_value=False),},),),},),)
Package: aserto-directory
Aserto Directory gRPC clientThis is an automatically generated client for interacting with Aserto'sDirectory serviceusing the gRPC protocol.InstallationUsing Pippipinstallaserto-directoryUsing Poetrypoetryaddaserto-directoryUsageimportgrpcfromaserto.directory.reader.v2importReaderStub,GetObjectTypesRequestwithgrpc.secure_channel(target="directory.prod.aserto.com:8443",credentials=grpc.ssl_channel_credentials(),)aschannel:reader=ReaderStub(channel)# List all object types in the directoryresponse=reader.GetObjectTypes(GetObjectTypesRequest(),metadata=(("authorization",f"basic{ASERTO_DIRECTORY_API_KEY}"),("aserto-tenant-id",ASERTO_TENANT_ID),),)forobject_typeinresponse.results:print("Object Type:",object_type.name)
Package: aserto-idp
Aserto Identity ProvidersCommon identity providers for use with Aserto client librariesInstallationUsing Pippipinstallaserto-idpUsing Poetrypoetryaddaserto-idpCurrent Identity ProvidersOpenID Connectfromaserto_idp.oidcimportidentity_providerUsageWithaserto-authorizer-grpcfromaserto.clientimportIdentityContext,IdentityTypefromaserto_idp.oidcimportAccessTokenError,identity_provideroidc_provider=identity_provider(issuer=OIDC_ISSUER,client_id=OIDC_CLIENT_ID)try:subject=awaitoidc_provider.subject_from_jwt_auth_header(request.headers["Authorization"])identity_context=IdentityContext(type=IdentityType.IDENTITY_TYPE_SUB,identity=subject,)exceptAccessTokenError:identity_context=IdentityContext(type=IdentityType.IDENTITY_TYPE_NONE)WithasertofromasertoimportIdentityfromaserto_idp.oidcimportAccessTokenError,IdentityProvideroidc_provider=identity_provider(issuer=OIDC_ISSUER,client_id=OIDC_CLIENT_ID)try:subject=awaitoidc_provider.subject_from_jwt_auth_header(request.headers["Authorization"])identity=Identity(type="SUBJECT",subject=subject)exceptAccessTokenError:identity=Identity(type="NONE")
Package: ase-stubs
This project provides stub files forASEto be used by type-checkers such asMypyorPyright.RequirementsASE(tools for atomistic simulations)Installation$ pip install ase-stubsor, if you use poetry:$ poetry add ase-stubsYou can also install the in-development version with:$ pip install git+ssh://git@gitlab.com:ugognw/ase-stubs.gitor, similarly:$ poetry add git+ssh://git@gitlab.com:ugognw/ase-stubs.git
Package: asfamc-parser
ï»¿# PyAsfAmc
Author: Nikhil Rejigeneric asf/amc parser following standard version 1.1.features:ASF parserAMC parserSimple, Clean data structure.ImportsfromasfamcparserimportParseASF,ParseAMCData StructureJointImmutable class where every property is optional.JOINT-name:str-dof:NamedTuplee.g(rx=(-inf,inf),ry=(-inf,inf),rz=(-inf,inf))-direction:Tuplee.g(0.0,1.2,2.2)-length:float-axis:NamedTuplee.g(X=0.0,Y=0.0,Z=0.0)-order:Tuplee.g("X","Y","Z")NamedTuple values can be accessed either through their index or their names as follows:axis.XASFImmutable class.ASF-name:str-units:NamedTuplee.g("mass"="kg","length"="mm","angle"="Deg")-doc:str-joints:Tuple[Joint,...]-hierarchy:dictwhereeachkeycorrespondstoaajointthathaschildren.Individual joints can be retrieved using the dict key method as follows:LElbowJoint=ASF["LeftElbow"]Also, all joints can be accessed through for iterations:forjointinASF:print(joint.name)AMCImmutable classAMC-count:int(numberofframes)-frames:Tuple[dict,...]Individual frames can be retrieved using the dict key method as follows:frameTen=AMC[10]Individual frames and specific joint data can be retrieved using the dict key method as follows:frameTenHead=AMC[10]["Head"]Also, all frames can be accessed through for iterations:forframeinAMC:print(frame.count)Examples:ParseASFThe full path to the .asf file is required to parse.parsedAsf=ParseASF("./recordings/test.asf")asf=parsedASF.asfThe retrieve asf file can be navigated using its properties described in the data structudre section.ParseAMCThe full path to the .amc file is required to parse.parsedAmc=ParseAmc("./recordings/test.amc")amc=parsedAMC.amcThe retrieved amc file can be navigated using its properties described in the data structure section.
Package: asf-cherry-pick
The Alaska Sar Fundation mirrors the sentinel1 data from the ESA. For a given acquisition,
data are provided as a zip file.We provide here a script (and an API) that can fetch data into the zip file, allowing to
download only the product of interest. This is useflull either for downloading meta data
or only the tiff file of interest (e.g. only one polarization and one sub swath).Elements to fetch are describe as a pattern (in the sens of regular expression).The set of product are given eithera file in kml format (that contains a polygon which represent the region of interest)a file containing the list of zip files to fetcha file containing the list of urlsInstallationUnzip the file.create a virtual env environment (e.g. python3 -m venv asf_cherry_pick)go to the directory in asf_cherry_pick where the setup.py liesrun the commandpip install .Upon installation, you will have access to the script asf_cherry_pick.Runasf_cherry_pick -handasf_cherry_pick -Hfor a more detail help.Enjoy.
Package: asf-hyp3
As of September 30, 2021, ASF’s beta HyP3 (version 1) service available athttps://hyp3.asf.alaska.edu/has been retired in favor of ASF’s new On Demand service powered by HyP3 version 2.Programmatic usage of HyP3 v2 is available via theHyP3 SDK.For more information, please check out the full HyP3 documentation athttps://hyp3-docs.asf.alaska.edu/.
Package: as-flask-docs
as_flask_docs在flask中支持数据校验和openapi(swagger)文档自动生成flask_docsfork自flask-siwadoc，感谢原作者提供了主要功能的实现，原项目不支持flask中blueprint的使用因此魔改特性1、API接口自动生成文档需要通过CreateDoc(app),利用装饰器siwa.doc()修饰flask视图函数，即可将该视图对应的路由加入openapi的paths中。2、支持多种参数指定可以将请求参数放置在query、path、header、cookie、body5种不同的地方，完全支持openapi规范所定义的5种参数方式。3、参数校验与自动转换基于pydantic，请求参数可自动转换为对应的数据类型4、ui切换内置了swagger（默认）、redoc、rapidoc等多种UI界面，通过query参数"ui"控制5、支持标签与分组安装pip install as-flask-docs快速开始fromflaskimportFlaskfromflask_docsimportCreateDocapp=Flask(__name__)models={}modules=import_module('tests.bps')fornameindir(modules):instance=getattr(modules,name)ifisinstance(instance,Blueprint):app.register_blueprint(instance)ifisinstance(instance,Docs):models.update(instance.models)CreateDoc(app,title="flask_docs",description="一个自动生成openapi文档的库",models=models)from flask import Blueprint
from flask_siwadoc import Docs
from pydantic import BaseModel

test1 = Blueprint("t1", __name__, url_prefix="/api/t1")
d = Docs(tags=["1"])

class A(BaseModel):
    a: int = 1

@test1.get('')
@d(body=A)
def fun(body: A):
    return 't1'运行后，访问http://127.0.0.1:5000/docs就可以看到openapi文档页面更多用法介绍请移步原项目