Saravanan666/pypi-org huggingface dataset:
Package: asockit
Client-side toolkit for async sockets.DocumentationSimple exampleReading from a socket# reading.pyimportasynciofromasockitimportAsyncioReadableConnection,ConnectionClosedError,SocketReaderclassSocketReaderDelegate:defon_message(self,message:str)->None:print(f'[SocketReaderDelegate] Received message "{message}"')asyncdefmain()->None:stream_reader,_=awaitasyncio.open_connection("localhost",port=3000)reader=SocketReader(connection=AsyncioReadableConnection(reader=stream_reader))delegate=SocketReaderDelegate()reader.set_delegate(delegate)try:awaitreader.start()exceptConnectionClosedError:print("The connection has closed.")if__name__=="__main__":asyncio.run(main())$nc-lnp3000-c'echo -n "Hello\nWorld!\n"'# In a different shell session$python3reading.py[SocketReaderDelegate]Receivedmessage"Hello"[SocketReaderDelegate]Receivedmessage"World!"Theconnectionhasclosed.Writing to a socket# writing.pyimportasynciofromasockitimportAsyncioWritableConnection,SocketWriterasyncdefmain()->None:_,stream_writer=awaitasyncio.open_connection("localhost",port=3000)writer=SocketWriter(connection=AsyncioWritableConnection(writer=stream_writer))awaitwriter.write("Hello world!\n")if__name__=="__main__":asyncio.run(main())$python3writing.py# Started before running the script$nc-lvnp3000listeningon[any]3000...
connectto[127.0.0.1]from(UNKNOWN)[127.0.0.1]41560Helloworld!InstallationAsockit is available asasockiton PyPI:pipinstallasockitUsageFor detailed quickstart and API reference, visit theDocumentation.LicenseCopyright (C) 2023 tombartk 

This program is free software: you can redistribute it and/or modify it under the terms
of the GNU Affero General Public License as published by the Free Software Foundation,
either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
See the GNU Affero General Public License for more details.

You should have received a copy of the GNU Affero General Public License along with this program.
If not, see https://www.gnu.org/licenses/.
Package: asocksimap
Connect to IMAP through Socks using Python asyncioDependenciesaioimaplib 1.0.1+aiosocks 0.2.6+Installationpipinstallasocksimaporpipinstallgit+https://github.com/optinsoft/asocksimap.gitUsageimportasynciofromasocksimapimportAsyncSocksIMAP4_SSLfromfunctoolsimportreducedefcheckResponse(res,func):ifres.result!='OK':msg=reduce(lambdas,i:(s+"\n"ifi>0else"")+res.lines[i].decode('utf8'),range(len(res.lines)),"")ifnotmsg:msg=f"{func}failed"raiseException(msg)asyncdefaimap_test():email_address='YOUR_ACCOUNT@hotmail.com'password='YOUR_PASSWORD'imap_server='outlook.office365.com'imap_port=993socks_addr='127.0.0.1'socks_port=1080socks_type='socks5'aimap=AsyncSocksIMAP4_SSL(host=imap_server,port=imap_port,timeout=15,proxy_addr=socks_addr,proxy_port=socks_port,proxy_type=socks_type)awaitaimap.wait_hello_from_server()res=awaitaimap.login(email_address,password)checkResponse(res,"login")res=awaitaimap.logout()checkResponse(res,"logout")loop=asyncio.get_event_loop()loop.run_until_complete(aimap_test())
Package: asol-probability-dist
# asol_probability_dist## Table of Contents
* [Purpose](#purpose)
* [List of key files](#list_of_key_files)
* [Python Libraries](#python_libraries)
* [Creator](#creators)## PurposeThis is a Python package that creates gaussian and binomial distribution objects. Plotting functions are included to visualize the probability distribution functions. Values for distributions can be read in line by line from text file.## List_of_key_filesBinomialdistribution.py- Binomial distribution class and methods.Gaussiandistribution.py- Gaussian distribution class and methods.Generaldistribution.py- General distribution class and methods.## Python_Librariesmathmatplotlib## CreatorsAndrew Leung[https://github.com/as2leung](https://github.com/as2leung)
Package: ason
ASON: Adaptive Structure Object NotationASON is a Python library designed for adaptive data serialization. It seamlessly handles various data structures, offering flexibility and simplicity inspired by JSON.InstallationpipinstallasonUsage# Usage example for Ason classfromasonimportason# Create an Ason objectdata='{"name": "${name}", "age": ${age}, "city": "${city}", "hobbies": ["${hobby1}", "${hobby2}"]}'ason_data=ason.loads(data)# Set values for variablesason_data.set("name","John")ason_data.set("age",30)ason_data.set("city","New York")ason_data.set("hobby1","Reading")ason_data.set("hobby2","Coding")# Print the result after setting variablesresult_after_set=ason_data.dumps()print("Result after setting variables:")print(result_after_set)print()# Replace a key dynamicallyason_data.replace("age","new_age",25)# Append a value to the 'hobbies' listason_data.append("hobbies","Gardening")# Print the result after replacing and appendingresult_after_modify=ason_data.dumps()print("Result after replacing and appending:")print(result_after_modify)print()# Get the value associated with a keycity_value=ason_data.get("city")print("Value for key 'city':",city_value)print()# Accessing values using square bracket notationname_value=ason_data["name"]print("Value for key 'name' using square bracket notation:",name_value)print()# Set a value using square bracket notationason_data["new_key"]="new_value"print("Result after setting a value using square bracket notation:")print(ason_data.dumps())This example demonstrates how to create an Ason object, load data, set values for variables, and then dump the result. The output will be a dictionary with the replaced values:Result after setting variables:{"name":"John","age":"30","city":"New York","hobbies":["${hobby1}","${hobby2}"]}Result after replacing and appending:{"name":"John","new_age":25,"city":"New York","hobbies":["${hobby1}","${hobby2}","Gardening"]}Value for key 'city': New YorkValue for key 'name' using square bracket notation: JohnResult after setting a value using square bracket notation:{"name":"John","new_age":25,"city":"New York","hobbies":["${hobby1}","${hobby2}","Gardening"],"new_key":"new_value"}ContributingContributions are welcome! Before contributing, please read ourContributing Guidelinesto ensure a smooth and collaborative development process.Code of ConductPlease review ourCode of Conductto understand the standards of behavior we expect from contributors and users of this project.LicenseThis project is licensed under theApache 2.0 License. SeeLICENSEfor more details.Support the Project💰 You can help me improve more by offering a little support on any platform❤️Happy Coding ❤️
Package: asonic
Asonic implements allSonicAPIsBugfixes and api changes are welcomeInstallpip install asonicAPI DocshereUsageSearch channelimportasynciofromasonicimportClientfromasonic.enumsimportChannelsasyncdefmain():c=Client(host='127.0.0.1',port=1491,password='SecretPassword',max_connections=100)awaitc.channel(Channels.SEARCH)assert(awaitc.query('collection','bucket','quick'))==[b'user_id']assert(awaitc.suggest('collection','bucket','br',1))==[b'brown']if__name__=='__main__':loop=asyncio.get_event_loop()loop.run_until_complete(main())Ingest channelimportasynciofromasonicimportClientfromasonic.enumsimportChannelasyncdefmain():c=Client(host='127.0.0.1',port=1491)awaitc.channel(Channel.INGEST)awaitc.push('collection','bucket','user_id','The quick brown fox jumps over the lazy dog')# Return b'OK'awaitc.pop('collection','bucket','user_id','The')# Return 1if__name__=='__main__':loop=asyncio.get_event_loop()loop.run_until_complete(main())Control channelimportasynciofromasonicimportClientfromasonic.enumsimportChannel,Actionasyncdefmain():c=Client(host='127.0.0.1',port=1491)awaitc.channel(Channel.CONTROL)awaitc.trigger(Action.CONSOLIDATE)# Return b'OK'if__name__=='__main__':loop=asyncio.get_event_loop()loop.run_until_complete(main())
Package: asort
asortasort for__all__your__all__listsasort is a Python utility / library to sort imports items in an__all__list alphabetically
It provides a command line utility, Python library and pre-commit support to
quickly sort all your imports. It requires Python 3.7+ to run but supports formatting
any version of Python code.Works seemlessly withblackandisortwith no configuration neededBefore asort:frommy_libimportObjectfrommy_libimportObject3frommy_libimportObject2__all__=["Object","Object3","Object2",]After asort:frommy_libimportObjectfrommy_libimportObject3frommy_libimportObject2__all__=["Object","Object2","Object3",]Installing asortInstalling asort is as simple as:pipinstallasortUsing asortSee usage examples on ourdocumentation
Package: asos
A scheduler of stuff (ASOS)This is a task manager, sort of. Supports plugins for storage and for executors.ConfigurationTakes quite few parameters:{"uuid":"current_instance_name","storage_plugin":"mysql"}Storage pluginsShould implement two methods:Get all active tasksAdd a result of task executionclassStorage():defget_tasks(self):return{task_id:task,...}defadd(self,task_id,task,env,result,dump=None):returnTrueExecutor pluginsDoes the actual work. The name of plugin should match atask_typefield.classExecutor():defdo(self,task,env):returnresult,dumpTasksTask objects represent tasks that need to be done. Should contain all additional parameters, required by your plugins.{"task_type":executor_plugin_name,"task_interval":60,"additional_param":"value"}
Package: asos-curl
asos-curlASOS executor plugin for HTTP(s) requestsParametersYou can configure the executor by setting the following parameters in the task:{"url":"https://example.com/","method":"GET","get_params":{"param":"value"},"post_data":{"item":"content"},"no_dump":true}Supported methods: GET, POST, PUT, PATCH, OPTIONSASOS Task example{"url":"https://example.com/api/dance","task_type":"curl","get_params":{"page":1,"perPage":8,"filter":true},"request_type":"GET","task_interval":60}
Package: aspanner
aspannerAsyncio Google Cloud Spanner Client, wrappedgoogle-cloud-spannerto support aio calls, provide easy-to-use methods.
This project exists because Spanner have no easy-to-use asyncio interface.References:https://github.com/googleapis/python-spannerhttps://googleapis.dev/python/spanner/latest/index.htmlhttps://cloud.google.com/spanner/docs/sampleshttps://cloud.google.com/spanner/docs/reference/rpc/google.spanner.v1Quick StartGet the credentials JSON file from Google Cloud - IAM - Service Account - Keys,
or run directly from permission granted VM, follow the tutorials from google.Create Spanner instance, create database, and create test table.CREATETABLEtb_test_types(idINT64NOTNULL,data_strSTRING(MAX),data_intINT64,data_floatFLOAT64,data_boolBOOL,data_numNUMERIC,data_bytesBYTES(MAX),data_dateDATE,data_timeTIMESTAMP,data_arrayARRAY<INT64>,data_jsonJSON,)PRIMARYKEY(id);Code test.pyasyncdeftest():db=aspanner.Aspanner('google cloud project id','spanner instance name','database')cols=('id','data_int')print(awaitdb.insert('tb_test_types',cols,[(9,999)]))print(awaitdb.read('tb_test_types',cols,[(9,)]))print(awaitdb.delete('tb_test_types',[(9,)]))print(awaitdb.close())asyncio.run(test())Run in terminal.pipinstallaspanner# if use credentials fileexportGOOGLE_APPLICATION_CREDENTIALS="/home/user/project-server-1234568-1234567890.json"python3test.pyTODORetry now should be outside transaction with block, like: https://github.com/googleapis/google-cloud-python/blob/92465cbc4d9c0ba251838e9cd17f61d14b470e04/spanner/google/cloud/spanner_v1/session.py#L353

error in sql while JSON is array.
Package: asparagus
This is a Django middleware to track down object leaks in your Django application.To use it, addasparagus.middleware.TrackObjectLeakstoMIDDLEWARE_CLASSES. It should be in the first position.MIDDLEWARE_CLASSES = [‘asparagus.middleware.TrackObjectLeaks’] + MIDDLEWARE_CLASSESThe middleware will print a summary of any objects created but not garbage collected.if you set the settingsASPARAGUS_TRACK_CLASSto a name of an object (e.g.Thread, then the middleware will render a PNG of the references to any newly created objects.Note, this is not something you ever want in production. Best to use it to find leaks then remove it from settings entirely.
Package: aspars
ASParsQuick and easy parsing of Answer Sets into friendly python structures.SpecificationASPars allows the user to parse answer sets represented in the following formats:wasp format, e.g.,{a, b(x), c(y,...,z), ...},clasp format, e.g.,a b(x) c(y,...,z) ....An answer set is parsed into a list of predicates. A predicate is represented as a dictionary with the following keys:name: name of the predicate,ext: a list of the (heterogeneous) values of the predicate,arity: arity of the predicate (e.g., length of the extension).If the predicate is an atom, then onlynameis defined.Example{a, foo(x), bar(42,"42")}is parsed into the following singleton:[{'name':'a'},{'name':'foo','ext':['x'],'arity':1},{'name':'bar','ext':[42,'"42"'],'arity':2}]UsageASPars can be used by simply importing it or as a standalone module.Importing ASPars in a python programfromasparsimportASParsanswer_sets_waspf=['{a, foo(x), bar(-1,1), fizz("42")}','{b, foo(y), bar(-2,2)}','{c, foo(z), fizz("24")}',]# parses only the first answer set, returns a singletonsingle=ASPars(syntax='wasp').parse(answer_sets_waspf[0])# parse all the answer sets, returns an iterable (map)multi=ASPars(syntax='wasp').parse(answer_sets_waspf)# example in clasp syntaxsingle=ASPars(syntax='clasp').parse('b foo(y) bar(-2,2)')Using ASPars as a standalone module$catmy_answer_sets|python-maspars
Package: asp-chef-cli
ASP Chef CLIA simple CLI to run ASP Chef, in headed or headless mode.InstallThe suggested way is via pip:$pipinstallasp-chef-cli
$playwrightinstallDocker is another option (headed mode needs extra parameters):$dockerrunmalvi/asp-chef-cli
$dockerrun--net=host--env="DISPLAY"--volume="$HOME/.Xauthority:/root/.Xauthority:rw"malvi/asp-chef-cliUsageRun with one of the following commands:$python-masp_chef_cli--help
$dockerrunmalvi/asp-chef-cli--helpAdd the recipe (an ASP Chef sharable URL) with the option--url(quote the URL as it contains characters like # that breaks bash and other terminals).
The headless mode can be activated with the flag--headless(always active in the docker image).
Possibly change the default browser used by playwright with the option--browser.
Finally, give a command to execute:runsimply runs the recipe as it is;run-withruns the recipe with the input replaced by the one specified either with the option--inputor via the prompt.The flag--helpcan be specified after a command to get a list of arguments for that command.ExamplesLet us considerthis simple recipewith no input and guessing the atomworld.
The recipe can be run headless by giving the following command:$python-masp_chef_cli--headless--browser=chromium--url="https://asp-chef.alviano.net/#eJxtkNuOgjAQhl+plNUsl4srUKIQEXu6s+Ch2CIJIpan33bdRC/2ajKnf/75DibtRBt69QLNiUGSbkfJyawRsFAUqqFKMEBNpxl5TNz1YvzXC7w6ee5xHfUV3PWoTRWDauRbq+X3ck82MpfpJf/ePXhZGS6Bn+mltyo3MGvYLS8Z5AsAGVzOuN5AppGtr+Vqkd6rGBtGi07AD6dRchIZBk+nkgQXbr0gOUrhh2BPgqEyaH4w6VTHwfjuldFwFMlF5m1hauL8ZVfhV69cn9We1Ff3w7r5Gu1dW38op4famy/8tOcJGH5vtfjGNDaouRo3x4iaOF2/aT1ZURhNFGZ30Wag0pFlW0z/8vNDw0nRMRgBxwup4Mh0NPGSAep9OgaW5flOIR4YdD8XRxuHOsbDizkOjtgLfgC4qpvc%21"run
EMPTYMODEL
§
world.It is possible to specify a different input as follows:$python-masp_chef_headless--headless--browser=chromium--url="https://asp-chef.alviano.net/#eJxtkNuOgjAQhl+plNUsl4srUKIQEXu6s+Ch2CIJIpan33bdRC/2ajKnf/75DibtRBt69QLNiUGSbkfJyawRsFAUqqFKMEBNpxl5TNz1YvzXC7w6ee5xHfUV3PWoTRWDauRbq+X3ck82MpfpJf/ePXhZGS6Bn+mltyo3MGvYLS8Z5AsAGVzOuN5AppGtr+Vqkd6rGBtGi07AD6dRchIZBk+nkgQXbr0gOUrhh2BPgqEyaH4w6VTHwfjuldFwFMlF5m1hauL8ZVfhV69cn9We1Ff3w7r5Gu1dW38op4famy/8tOcJGH5vtfjGNDaouRo3x4iaOF2/aT1ZURhNFGZ30Wag0pFlW0z/8vNDw0nRMRgBxwup4Mh0NPGSAep9OgaW5flOIR4YdD8XRxuHOsbDizkOjtgLfgC4qpvc%21"run-with--input"hello."hello.
§
hello.
world.
Package: aspec
aspecDeveloper GuideSetup# create conda environment$mambaenvcreate-fenv.yml# update conda environment$mambaenvupdate-naspec--fileenv.ymlInstallpipinstall-e.# install from pypipipinstallaspecnbdev# activate conda environment$condaactivateaspec# make sure the aspec package is installed in development mode$pipinstall-e.# make changes under nbs/ directory# ...# compile to have changes apply to the aspec package$nbdev_preparePublishing# publish to pypi$nbdev_pypi# publish to conda$nbdev_conda--build_args'-c conda-forge'$nbdev_conda--mambabuild--build_args'-c conda-forge -c dsm-72'UsageInstallationInstall latest from the GitHubrepository:$pipinstallgit+https://github.com/dsm-72/aspec.gitor fromconda$condainstall-cdsm-72aspecor frompypi$pipinstallaspecDocumentationDocumentation can be found hosted on GitHubrepositorypages. Additionally you can find
package manager specific guidelines oncondaandpypirespectively.
Package: aspect
Hooks advice to a function or method.advise() is a decorator that takes a set of functions or methods and injects
the decorated function in their place. There is no concept of before/after
callbacks. Instead, the intercepting function is responsible for calling (or
not) the intercepted function.The “classic” logging example:class A(object):
  def a_function(self):
    print 'a_function()'

@advise(A.a_function)
def logit(on, next, *args, **kwargs):
  logging.debug('%r.%r(%r, %r)', on, next, args, kwargs)
  return next(*args, **kwargs)See the function documentation for more information.
Package: aspectify
aspectifyAspect Oriented Programming is a programming paradigm that allows the
user to separate some cross-cutting content from the main code, such as
the logging or a database connection.As it may be known, other programming languages has some functionallity
(implemented or plugged in) to use this paradigm as an additional
abstract layer to the core application.AspectJ(used in Java), can sound
familiar to the reader.In order to bring this amazing and powerful functionality to Python
(which, in addition, will allow us to add it dynamically instead of
using a weaver –as it is done in Java–), we have definedAspectify, a
Python library to manage AOP.Background conceptsBefore introducing the library, it is important to define some concepts
used in AOP. Those are: -Aspect(what): a cross-cutting concept. In fact, anAspectwill
group some functionalies. These, which will modify the natural behaviour
of a method, are calledAdvices. -PointCut(when): a fragment of
code where theAspectis
defined. Can be multiplePointCuts for eachAspect(indeed,
it will). -Advice(when and what to do): The code fragment to
execute when thePointCutoccurs and the moment when the new behaviuor
must occur. Originally, only three moments were defined (before,around–instead of– andafter), but nowadays new moments are
defined, such as “after throwing an exception” (after_throwing) or
“after NOT throwing an exception” (after_returning).InstallationIn order to install the library, it is only needed to execute the pypi
comand that follows:pipinstallaspectifyADVICE: You should use a virtual environment to install the
packages associated with your proyect.Why do we need AspectifyOnce the background is defined and the library is installed, we can
start to create the AOP layer to our projects.The core projectIn order to use the library, we need a project. For example, we will use
therandomlibrary for Python.fromrandomimportRandomNow, we can use it to generate some integers.r=Random()r.randint(5,10)9As you can see in its documentation,randint(called with parametersaandb) can generate thebvalue itself (it is a closed range
[5, 10]).If we want to change this behaviour to the normal random functions
behaviour (the range is closed-opened [5, 10)), you will need to
redefine it. Furthermore, if other functions or library use this method,
they will not use yours.How can we solve it? Using AOP.During this introduction, we have seen the background concepts and how
to install theAspectifylibrary. In the next section we will explain
how to use it with a simple example.
Package: aspectnlp
Aspect Detection NLP ToolkitAspect Detection NLP toolkit (https://pypi.org/project/aspectnlp/) is a Python package that performs various NLP tasks based on aspect detection and aspect based sentiment analysis.InstallationAs this package requires cpu-pytorch, please install with the find link argumentspip install aspect-x.x.x-py3-none-any.whl -f https://download.pytorch.org/whl/torch_stable.htmlFor nightly version please visit our github page:https://github.com/daishuanglu/aspectnlpUsageTo use this package,fromaspectnlp.aspect_detectorimportaspectDetectorfromaspectnlp.aspect_sentimentimportAspectSentimentScorerfromaspectnlp.vae_topic_modelimportVAETopicfromaspectnlp.w2vimportfasttext_embcorpus=["While there's a decent menu, it shouldn't take ten minutes to get your drinks and 45 for a dessert pizza.",'Faster than old XBox, less crashing, definitely smoother experience.','The product is really good but performance with things like sharing deals with partners is terrible and takes forever.',"Mostly still learning the tool. Things tend to change randomly from time to time... so that can be tricky. But its improving steadily!","Office365 is improving, but there is a lot more we could do to make Office365 work for us and model best practices to our customers for how to use Excel.","but it's not working now. Showing 'error loading accounts'.","Changes in the new version of Chrome are in the right direction, but performance still feels mediocre at best.\There are various places where it could prevent page-loading delays.",]asp_detector=aspectDetector()sent_asp=asp_detector.detect(corpus,disp=True)# Topic modeling based on aspect wordscorpus=[i['aspect']foriinsent_asp]topic_model=VAETopic(corpus,n_topics=10)topic_model.fit()top_words,topics,topic_ids=topic_model.get_top_words_and_topics(disp=True)# Aspect based on aspect wordsanalyzer=AspectSentimentScorer()forsentId,sampleinenumerate(sent_asp):content=list(analyzer.generateInputContent(sample))sentiment,scores=analyzer.scoreABSA(content)sent_asp[sentId]['sentiment']=sentimentsent_asp[sentId]['score']=scoressent_asp[sentId]['compound']=[analyzer.lin2compound(s)forsinscores]forcontentinsent_asp:print(content)# aspect fuzzy matcherword_list=['menu','sales','account','User Interface','search','Note','telephony','portal','food']fastext=fasttext_emb()fori,vinenumerate(fastext.w2v(word_list)):print(word_list[i],':',v)Key Features Supported with Aspect NLP toolkitAspect detectionAspect based sentiment analysisText relevanceKeyword extractionTopic summarizationsentiment analysis
Package: aspecto-ot-auto-instrumentation
Aspecto OpenTelemetry Auto InstrumentationThis library does all the magic.Installationpip install aspecto-ot-auto-instrumentationUsagefromopentelemetry.aspectoimportAspectoInstrumentorAspectoInstrumentor(service_name="demo-flask",aspecto_auth="your-aspecto-token",env="development").instrument()AspectoInstrumentorparams:service_name- mandatory, the name of the service you're instrumentingaspecto_auth- your token that was obtained fromaspecto website.Alternatively, your can pass it asASPECTO_AUTHenv param, or place anaspecto.jsonfile at the project root, containing an object withtokenkey.env- optional, if none provided we will useempty.ReferencesAspectoOpenTelemetry Project
Package: aspect-ratio-too
Aspect Ratio TooOverviewAspect ratio calculations.Installationpip install aspect-ratio-tooDevelopmentmake env
make reqs
pip install -e .TestingpytestUsageKnow the aspect ratio you want but don't know the corresponding width/height? Try this:from aspect_ratio_too import AspectRatioCalculator

arc = AspectRatioCalculator(16, 9)

# Get (width/height) tuple
arc.width_to_dimensions(1920)  # (1920, 1080)
arc.height_to_dimensions(1080)  # (1920, 1080)

arc.width_to_height(1920)  # 1080
arc.height_to_width(1080)  # 1920Or calculate the aspect ratio given know pixel dimensions:from aspect_ratio_too import aspect_ratio, aspect_ratio_str

aspect_ratio(1920, 1080)  # 1.7777777777777777

aspect_ratio_str(1920, 1080)  # 16:9IssuesIf you experience any issues, please create anissueon Bitbucket.HistoryAll notable changes to this project will be documented in this file. This project adheres toSemantic Versioning.0.1.1 (2023-06-22)Update packaging method topyproject.toml.0.0.1 (2022-11-07)First release