Saravanan666/pypi-org huggingface dataset:
Package: bm3d-streak-removal
Multiscale BM3D filter for streak noise / ring artifact attenuationThis package contains the full pipeline for multiscale BM3D streak noise reduction in sinogram data as described inMäkinen, Y., Marchesini, S., Foi, A., 2021,"Ring artifact reduction via multiscale nonlocal collaborative filtering of spatially correlated noise"J. Synchrotron Rad. 28(3). DOI:http://doi.org/10.1107/S1600577521001910Usage:The denoising is applied tosinogram data.NOTE: Input data streaks should be along the first axis:
(theta, y, x)
or
(theta, x)frombm3d_streak_removalimport*For the full pipeline as described in the paper:data_denoised=full_streak_pipeline(data,brightfield,darkfield)For extreme streak attenuation and multiscale denoising without normalizations
(input is presumed to be in log-scale):data_norm=extreme_streak_attenuation(data_norm)data_denoised=multiscale_streak_removal(data_norm)For a demo example, see the "demo" folder inside the package or download the demo files fromhttps://webpages.tuni.fi/foi/streak/bm3d_streak_removal_demo.zip.Adjusting the filter:All algorithm parameters are automatically calculated based on the input data.The main extra parameter is the horizontal binning count ("K"). The automatic value is based solely on axis size; while the usually a good guess, it may be possible to improve denoising quality by adjusting it.
To reduce the number of scales (the denoising result was oversmooth in low frequencies):# Bin count when max_bin_iter_horizontal='auto' (default)default_bin_count=default_horizontal_bins(data_norm)# Use one scale lessdata_denoised=multiscale_streak_removal(data_norm,max_bin_iter_horizontal=default_bin_count-1)Likewise, if the widest streaks were not denoised:# Use one scale moredata_denoised=multiscale_streak_removal(data_norm,max_bin_iter_horizontal=default_bin_count+1)For simple overall BM3D filtering strength adjustment, use the filter_strength parameter (default is 1):# Increase filtering strength slightlydata_denoised=multiscale_streak_removal(data_norm,filter_strength=1.1)For other possible inputs, see the respective function comments in the Python file.LicenseThe package is available for non-commercial use only. For details, see LICENSE.Authors:Ymir Mäkinen (ymir.makinen@tuni.fi)Stefano MarchesiniAlessandro Foi
Package: bm4d
Python wrapper for BM4D denoising - from Tampere with love, againPython wrapper for BM4D for stationary correlated noise (including white noise).BM4D is an algorithm for attenuation of additive spatially correlated
stationary (aka colored) Gaussian noise for volumetric data.
This package provides a wrapper for the BM4D binaries for Python for the denoising of volumetric and volumetric multichannel data. For denoising of images/2-D multichannel data, see also the "bm3d" package.This implementation is based on
Y. Mäkinen, L. Azzari, A. Foi, 2020,
"Collaborative Filtering of Correlated Noise: Exact Transform-Domain Variance for Improved Shrinkage and Patch Matching",
in IEEE Transactions on Image Processing, vol. 29, pp. 8339-8354, and
Y. Mäkinen, S. Marchesini, A. Foi, 2021,
"Ring Artifact and Poisson Noise Attenuation via Volumetric Multiscale Nonlocal Collaborative Filtering of Spatially Correlated Noise", submitted to Journal of Synchrotron Radiation.The package contains the BM4D binaries compiled for:Windows (Win10, MinGW-32)Linux (CentOS 7, 64-bit)Mac OSX (El Capitan, 64-bit)The package is available for non-commercial use only. For details, see LICENSE.Basic usage:y_hat=bm4d(z,sigma);# white noise: include noise stdy_hat=bm4d(z,psd);# correlated noise: include noise PSD (size of z)For usage examples, see the examples folder of the full source (bm4d-***.tar.gz) fromhttps://pypi.org/project/bm4d/#filesContact: Ymir Mäkinenymir.makinen@tuni.fi
Package: bma-benchmark
bma-benchmark-pyPython benchmark libraryInstallationpip3installbma_benchmarkUsagefrombma_benchmarkimportbenchmark@benchmark(base=True)defbenchmark1():# do some job1+1@benchmark(name='benchmark2')defmy_function2():# do some job1*1benchmark.run()# equal to#benchmark.run(#    number=100, precision=3, units='s', print_result=True, sort_result='desc')Decorator argumentsnameoverride benchmark name (default: function name)baseuse as the base benchmark to measure difference from (True/False)Benchmark.run() argumentsnumbernumber of function executionsprecisiondigits after comma for numbersunitsmin/max/avg units (s, ms, us or ns)print_resultautomatically print results (True/False)sort_resultsort result in ascending (asc/a) or descending(desc/d) order,
None to keep unsortedCalling sub-processesThe module can call sub-processes to measure difference between different
library versions in different virtual environments or between different
versions of Python interpreter.Primary scriptfrombma_benchmarkimportbenchmark# define some local benchmarks if required@benchmarkdefbench1():passbenchmark.append_sub('./sub1.py')benchmark.run()Secondary scriptsmake sure the scripts have execution permission (chmod +x):#!/path/to/some/other/pythonfrombma_benchmarkimportbenchmark# define benchmarks@benchmarkdefbench2():passbenchmark.sub()The secondary scripts can contain "base" argument in a decorator as well. The
"sub()" method outputs benchmark results to stdout in JSON format to
synchronize with the primary, so secondary benchmarks must not print anything.Multiple benchmarks in the same script"benchmark" is the default benchmark object. Custom objects can be created from
the "Benchmark class".frombma_benchmarkimportBenchmarkmy_bench=Benchmark()@my_benchdefbench():passStoring results from multiple benchmarksRun a benchmark script with "OUT" OS variable:OUT=b1.jsonpythonscript.pyThe benchmark result will be saved into "b1.json" file. After, multiple
benchmarks can be combined into a single table with "bma-benchmark" console
tool:bma-benchmarkb1.jsonb2.jsonThe tool automatically adds benchmark prefixes as "FILE_NAME.". It also has got
options to specify precision, units etc. (run "bma-benchmark -h" to get list of
all options)
Package: bmai-dm-hbase
hbase连接基于happybase封装简单的hbase使用库，支持连接、创建、查询、插入功能项目结构hbaseLICENSE.mdREADME.mdsetup.pysrc__init__.pyconf_reader.pyhbase_client.pyreconection.py使用方法安装/更新# 安装
pip install --index-url http://192.168.38.1:31410/bmai/pypi --trusted-host 192.168.38.1 bmai-dm-hbase

# 更新
pip install --index-url http://192.168.38.1:31410/bmai/pypi --trusted-host 192.168.38.1 bmai-dm-hbase --upgrade配置文件模板hbase节点信息可配可不配，不配置的话直接使用hbase_client.py内的类，自行传入相关信息即可pro: # 正式环境ec, thrift
  host: 192.168.xx.xx # 失效
  port: 9090

dev: # 开发环境, thrift
  host: 192.168.xx.xx
  host_name: xx-xx-xx
  port: 9090示例import pandas as pd
from dm_hbase.hbase_client import HBaseClient

connection = HBaseClient(
    host='xxx.xxx.xx.xx',
    port=9090,
    env='test'    # 2022-11-15新增, env参数支持'test'或者'prd', 默认为'test'
)
connection.build_pool()
# 查看当前库中所有表
connection.show_tables()
# 查表
connection.scan_tables(
    table_name='xxx:xxxx',
    limit=10
)
# 查列族
connection.get_families('xxx:xxxx')
# 查分区
connection.get_regions('xxx:xxx')
# 插入数据
connection.insert(
    table_name='xxx:xxx',
    datas={row_key: {'column_family:feature': value}}
    batch_size=1000
)
# 以dataframe形式插入数据
df = pd.read_csv('xxx.csv')
connection.insert_df(
    table_name='xxx:xxx',
    df=df,
    rowkeys_col='xxx',
    batch_size=1000
)开发日志2022-4-21打包发至私有pypi2022-4-22修复安装后无法使用的bug2022-5-5构造函数增加配置文件路径参数并修改相关内容构造函数逻辑优化增加简单测试用例优化代码格式2022-5-13构造函数优化，默认port为9090，新增配置文件警告2022-9-8调整连接池默认参数，适配hbase 2.0版本连接2022-10-10优化insert函数，新增bytes类型判断与转换优化insert_df函数2022-11-15优化__init__, 加入环境判断2022-11-17调整thrift, thrift-sasl版本依赖2023-02-11调整prd参数2023-02-13去除thriftpy依赖
Package: bman
bmanA command line bookmark manager.InstallationNote: you need Python 3.>pipinstallbmanAfter that, should have abmancommand available.>bman

Usage:bman[OPTIONS]COMMAND[ARGS]...Yourcommandlinebookmarkmanager.

Options:-h,--helpShowthismessageandexit.

Commands:addAddsanewentrylsListsstoredentriesrmRemovesanentryUsageAdd a bookmarkThe quickest way to add an url is:>bmanaddhttps://google.comBut maybe you prefer to add a tiny description to the bookmark:>bmanaddhttps://google.com"The google homepage"Or, better, add some tags to help you organize all this mess:>bmanaddhttps://google.com"The google homepage"search,homepage,faangList bookmarksYou can query all your bookmarks with thelscommand:>bmanls

https://github.com
Date:2023-07-01T20:49:29.273570
Description:Thegithubhomepage
Tags:['code','homepage','faang']https://google.com
Date:2023-07-01T20:51:49.173430
Description:Thegooglehomepage
Tags:['search','homepage','faang']Of course, once you start adding bookmarks is not feasible to get a dump of all entries every time you usels. You can use a filter:>bmanlsgoog

https://google.com
Date:2023-07-01T20:51:49.173430
Description:Thegooglehomepage
Tags:['search','homepage','faang']The filter works on all fields.Search by tag:>bmanlssearch

https://google.com
Date:2023-07-01T20:51:49.173430
Description:Thegooglehomepage
Tags:['search','homepage','faang']By date:>bmanls2023-07

https://github.com
Date:2023-07-01T20:49:29.273570
Description:Thegithubhomepage
Tags:['code','homepage','faang']https://google.com
Date:2023-07-01T20:51:49.173430
Description:Thegooglehomepage
Tags:['search','homepage','faang']Thelscommand accepts some more interesting options worth exploring:Usage:bmanls[OPTIONS][FILTER]Listsstoredentries

Options:--format[only-url|full|json]Settheoutputformat--use-regexTreatthesearchfilterasaregexpattern--fieldsTEXTCommaseparatedlistoffieldstoshow(andtoapplyfilterto)-h,--helpShowthismessageandexit.Removing bookmarksI know, I know...you rarely delete bookmarks. Neither me. But when you need to, better to have a way to do it :-)>bmanrmhttp://google.comAnd that's it.Editing bookmarksbmandoesn't allow direct edition, but you can add a bookmark twice to update it's entry:For example, returning to the previous example, if you already hadhttp://google.comin your library...>bmanaddhttp://google.com"The _don't be evil_ company"Urlalreadyexistsinthelibrary.Please,use--forcetoupdateitwiththenewvalues.As you see, you need to pass the--forceflag:>bmanaddhttp://google.com"The _don't be evil_ company"--forceData locationBy defaultbmanstores all the data under the~/.bman/directory. This can be overrided setting theBMAN_ROOT_PATHenvironment variable.Under that directory, you'll find:config.jsonfor configuration settings (there's barely anything configurable right now, to be fair)library.jsonwith all your bookmarks.I chose JSON for all data representation to make it easier to work with it using standard tools, if I need to.
Package: bmark-py
BmarkPython benchmarking tool.It's mostly used for benchmarkingFeatherStore,
but can be used to benchmark any Python code.InstallationBmark is available onPyPI:python -m pip install bmark-pyBasic usageFirst let's setup a class to be benchmarked, all methods exceptrun()are
optional.importosimportbmarkimportpandasaspdread_bench=bmark.Benchmark()@read_bench()# Remember the paranthesesclassread_csv(bmark.Benched):def__init__(self,shape,engine):self.name=f'pd.read_csv(engine={engine})'self.rows,self.cols=shapeself._path='_benchmarks'self.file_path=os.path.join(self._path,'table.csv')self.engine=enginesuper().__init__()defrun(self):"""Code to be benchmarked"""pd.read_csv(self.file_path,engine=self.engine)defsetup(self):"""Setup for the entire duration of the timer"""data={f'c{i}':range(self.rows)foriinrange(self.cols)}self.df=pd.DataFrame(data)ifnotos.path.exists(self._path):os.makedirs(self._path)defteardown(self):"""Final teardown after all the timings are done"""os.rmdir(self._path)def__enter__(self):"""Called before each loop in the timer"""self.df.to_csv(self.file_path)returnself# Importantdef__exit__(self,*args):"""Called after each loop in the timer"""os.remove(self.file_path)We initialize a benchmark withbmark.Benchmark(). We can the register classes
to be benchmarked by using theBenchmarkobject as a decorator (as show above).Each time we initialize a registered class it'll get added as an item to be
benchmarked:shape=(100_000,10)read_csv(shape,engine='c')read_csv(shape,engine='python')read_csv(shape,engine='pyarrow')header=f'Read CSV benchmark{shape}'read_bench.run(header,r=5,n=5,sort=True)>>ReadCSVbenchmark(100000,10)Name│Hits│Best│Worst│Comparison─────────────────────────────┼──────┼─────────┼─────────┼────────────pd.read_csv(engine=pyarrow)│25│16.2ms│20.5ms│1.00xpd.read_csv(engine=c)│25│74.2ms│106ms│4.58xpd.read_csv(engine=python)│25│803ms│862ms│49.54xRuntimes:total46.5s,benchmark23.4s,other23.2sWe can also populate benchmarks by passing all the objects we want benchmarked
in a list directly into thebmark.Benchmarkconstructor:shape=(500_000,20)items=(read_csv(shape,engine='c'),read_csv(shape,engine='python'),read_csv(shape,engine='pyarrow'))header=f'Read CSV benchmark{shape}'bmark.Benchmark(items).run(header,r=1,n=5,sort=True)>>ReadCSVbenchmark(500000,20)Name│Hits│Time│Comparison─────────────────────────────┼──────┼────────┼────────────pd.read_csv(engine=pyarrow)│5│112ms│1.00xpd.read_csv(engine=c)│5│655ms│5.85xpd.read_csv(engine=python)│5│7.49s│66.98xRuntimes:total1min21s,benchmark41.3s,other40.2sFor a more in-depth example, see the FeatherStorebenchmarking suite.
Package: bmatrix
This package contains tools for generating internal coordiantes and the
corresponding B matrix[1]for molecules as well as for periodic systems. It
is a part of of the GADGET suite and if you usebmatrixin a scientific
publication, please cite it as:Bučko, T., Hafner, J., & Ángyán, J. G. (2005). Geometry optimization of
periodic systems using internal coordinates.The Journal of Chemical Physics,
122(12), 124508.doi:10.1063/1.1864932[1]Wilson, E. B., Decius, J. C., & Cross, P. C. (1955). Molecular Vibrations: The
Theory of Infrared and Raman Vibrational Spectra. book, Dover Publications.
Package: bmautomation
BMAutomationThis is a test BenchmarkAutomation package. You can check it onGithub BMAutomation.DependencyThis library utilizes these librariespyautogui,uiautomation,pywin32.TestPyPIPlease check test packages on TestPyPIhereIf you are interested in using a test package, install the test package usingpip install -i https://test.pypi.org/simple/ bmautomation
Package: bmc
bmcbmc is a Python 3 wrapper library for MinIO's command line interfacemcandminio.MinIO, an Amazon Simple Storage Service (S3) compatible object storage. It has a usefulPython client librarywhich unfortunately lacks administrative capabilities that themcandminiocommand line interfaces provide, such as adding users and hosts, which we need to do for theikomachine learning platform. This library solves thatproblem.InstallationpipinstallbmcDevelopmentgitclonehttps://gitlab.com/big-mama-tech/bmccdbmc
pipinstall-e.# Generate documentationsphinx-build-bhtmldocsdocs/html[[TOC]]
Package: bmcds
bmcdsCollection of personal functions for data science created during Flatiron Data Science boot camp.Many current functions are in need of updates and polish:Converting project-specific functions to generalized functionsAdding additional documentationBreaking up larger functions into smaller onesFree software: GNU General Public License v3Documentation:https://bmcds.readthedocs.io.FeaturesTODOCreditsThis package was created withCookiecutterand theaudreyr/cookiecutter-pypackageproject template.History0.1.0 (2021-11-20)First release on PyPI.
Package: bm-cli
CLICommand line tools for provisioning servers. A sample of the commands:startStarts the Boring Man Wrapper APIstopStops Boring Man Wrapper API and all servers running thereinaddAdds a server from a preset. Presets are configurable and defined inpresets.pyadd-customAdds a server from a settings file pathremoveKills a server and frees its resourcesstatusDisplays server information in tabular form
Package: bmcs-fragmentation
Probabilistic Multiscale Multiple Cracking ModelThe repository contains a jupyter notebook explaining and demonstrating
the implementation of the algorithm simulating multiple-cracking
of a brittle-matrix composites.Execute and interact using BinderThe notebook can be executed directly
using the binder service. It takes a while for the repository image to build up.- Start the simple version with constant bond explaining and demonstrating the one-by-one crack tracing algorithm- Start the multiscale version with a plugged in nonlinear crack bridge modelCite withThe repository can refered to using a unique doi hosted athttps://zenodo.orgInstall withTo execute the notebooks locally install the anaconda suite. Required packages
are specified in the environment.yml file. The entry point to the jupyter suite
is the fragmentation.ipynb notebook.
Package: bmcs-shear
Discrete cracking within a shear zoneThe package includes the DIC driven modeling of the crack
localization in the shear zone. The notebook demonstrating
showing the mathematical formulation and the implementation
concept, including examples can be launchedThe project implements a discrete crack propagation through
a two dimensional domain cut out from a shear zone of a bended beam.Crack propagation appThe model has been developed by using a sketch
innotebooks/shear_zone.ipynbwhich uses a combination of symbolic derivation supported by
thesympypackage and numericalnumpyandscipyfunctionality.Individual model components have been derived step by step
indicating the mutual dependeces. The model is developed
in the following steps.beam designmaterial models (to be integrated with bmcs_beam)crack pathcrack tip rotationdeformed stateligament stress profilecrack tip shear stresscrack orientation criterioncrack extensioncrack propagationThe directoryshear_crackdemonstrates the
applied development process. Each of the classes is implemented
in a separate Python file, i.e.beam_design.pyand its functionality is demostrated
in the corresponding jupyter file, i.e.beam_design.ipynb.
Package: bmcs-shell
BMCS ShellFramework for numerical modeling and the development of geometries and production processes of brittle-matrix composite shells.
Currently, the focus is on developing flexible foldable shell geometries based on origami waterbomb patterns.ContentGeometryWaterbomb-based geometriesShells based on symmetric 4 parameters waterbomb baseSlabs based on Symmetric 4 parameters waterbomb baseShells based on semi-symmetric 5 parameters waterbomb baseNumerical structural analysisPendingProduction processesPendingInstallationDependenciesDependencies ongmshandpygmshincluded inenvironment.ymlAnaconda versioning seems not up to date.Problem with dependencies inpyfacewith a missing
dependency onanacondacloud. As a fix,importlib-resourcesthat was reported as missing has been included in environment.
Package: bmdcluster
A Python implementation of the Binary Matrix Decomposition algorithm for clustering binary data.Documentation:https://bmdcluster.readthedocs.io.GitHub:https://github.com/csprock/bmdclusterHistory0.0.1 (2019-09-12)Released to PyPI with full documentation and continuous integration0.2.0 (2019-09-17)Fixed bugs in cluster initialization system.Refactored main user API into different classes for each clustering methodRemoved from PyPI on 2019-09-180.2.1 (2019-09-18)Fixed submodule building and importation bugs0.2.2 (2019-09-19)Removed from PyPI0.2.3 (2019-09-19)Fixed bugs when used with setuptools0.3.0 (2019-09-19)Added the ability to predict the cluster label of unseen data; encapsulated in .predict and .transform0.3.0 (2019-09-22)Fixed confusing message output in verbose mode
Package: bmdOilPriceFetch
bmdOilPriceFetchAFastandEfficientway to get thecurrentOil Price from Yahoo Finance API in Python. Data is returned as a dictionary.I've found a lack of good simple ways to get the oil price from a free online API, so I designed one myself based upon Yahoo Finance.It simply returns a dictionary with the current market data for Oil (WTI Front Month).It also accepts a parametertickerwhich will get the market data for that ticker on Yahoo Finance. i.e bmdPriceFetch()Example UsageAn example usage file is included called main.py. It contains the basics for running this code. It is in essense:frombmdOilPriceFetchimportbmdPriceFetchdata=bmdPriceFetch()ifdataisnotNone:outputString=f"The price of WTI is ${data['regularMarketPrice']:.2f}"print(outputString)Example Output DataThe output is a dictionary:{'close':53.650001525878906,'high':53.650001525878906,'lastClose':52.98,'low':53.060001373291016,'open':53.130001068115234,'regularMarketPrice':53.65,'volume':2664,'metadata':{'chartPreviousClose':52.98,'currency':'USD','currentTradingPeriod':{'post':{'end':1611205140,'gmtoffset':-18000,'start':1611205140,'timezone':'EST'},'pre':{'end':1611118800,'gmtoffset':-18000,'start':1611118800,'timezone':'EST'},'regular':{'end':1611205140,'gmtoffset':-18000,'start':1611118800,'timezone':'EST'}},'dataGranularity':'1d','exchangeName':'NYM','exchangeTimezoneName':'America/New_York','firstTradeDate':967003200,'gmtoffset':-18000,'instrumentType':'FUTURE','priceHint':2,'range':'','regularMarketPrice':53.65,'regularMarketTime':1611142219,'symbol':'CL=F','timezone':'EST','validRanges':['1d','5d','1mo','3mo','6mo','1y','2y','5y','10y','ytd','max']}}Changelogv0.6.2    2022-01-03  Revise procedure to include simple example main.py file. No core changev0.6.1    2021-11-30  Readme Fix.v0.6      2021-11-30  Error Catching & Minor Readability Improvements.v0.5      2021-07-11  Yahoo! Finance API decided they want a user agent. Added.v0.4      2021-06-21  Bugfix. ^GSPC Lookup didnt work on weekends for Close. Made more fault tolerant.v0.3      2021-02-06  Released as a package.v0.2      2021-01-22  Minor tidy up, allows input of any Stock. Execution Time around 500ms. Code= 45 Linesv0.1      2021-01-20  Initial Revision. Execution Time around 500ms. Code= 47 LinesNotes for uploading to pypihttps://www.section.io/engineering-education/building-a-python-package-and-publishing-on-pypi/Steps:pip install twinepython setup.py sdist bdist_wheelTwine upload dist/*Enter username d... and password: ....Creditsdesigned in 2021 by bmd.
Package: bme280_exporter
bme280_exporterPython Prometheus exporter for the Bosch BME280 sensorRequirementsAdafruit_Python_BME280Installationpipinstallbme280_exporterUsage$bme280_exporter-husage:bme280_exporter[-h][-v][-pPORT][-aADDRESS][-lLABELS][-iINTERVAL][-fFILTER][-hoHO][-poPO][-toTO]optionalarguments:-h,--helpshowthishelpmessageandexit-v,--verboseincreaseoutputverbosity-pPORT,--portPORTexporterport(default:9500-aADDRESS,--addressADDRESSBME280I2Caddress(default:0x77)-lLABELS,--labelsLABELSJSONobjectofPrometheuslabelstoapply-iINTERVAL,--intervalINTERVALmeasurementsampleinterval(default:2)-fFILTER,--filterFILTERfiltervaluetoapply(0-4,default:0)-hoHOhumidityoversamplingvalue(1-5,default:4)-poPOpressureoversamplingvalue(1-5,default:4)-toTOtemperatureoversamplingvalue(1-5,default:4)Dockerdockerpullashtreefarms/bme280-exporter-rpidockerrun-p9500:9500--device/dev/i2c-1ashtreefarms/bme280-exporter-rpi\--labels'{"zone": "bedroom"}'MIT LicensePermission is hereby granted, free of charge, to any person obtaining a
copy of this software and associated documentation files (the
“Software”), to deal in the Software without restriction, including
without limitation the rights to use, copy, modify, merge, publish,
distribute, sublicense, and/or sell copies of the Software, and to
permit persons to whom the Software is furnished to do so, subject to
the following conditions:The above copyright notice and this permission notice shall be included
in all copies or substantial portions of the Software.THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS
OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.