Saravanan666/pypi-org huggingface dataset:
Package: wssx126
Raspberry waveshare sx1268 433Mhz controller + small tutorialThis guide is for people which are struggling to get WaveShare Raspberry hat with SX1268 (SX126X series) radio transceiver.I will be using "HAT" as sx1268 waveshare rpi hat in the rest of this READMEInstructionsStep 0: Prepare raspberry for waveshare hatHAT is using GPIO 14 and GPIO 15 for UART communication.With that in mind we have to free up this line from other devices.Raspbian/boot/config.txt should contain:enable_uart=1ArchlinuxARM/boot/config.txt should contain:dtoverlay=uart0config.txtcan contain multiple dtoverlay definitions# If you're struggling to install RPi.GPIO and you have GCC version > 10 useexportCFLAGS=-fcommon

pipinstallRPi.GPIO# orpipinstallwaveshareSX126Step 1: InstallationpipinstallwaveshareSX126Step 2: Examples!Set HAT to 'monitor mode'Listen for All messages on network 5 and print them to consolefromwaveshareSX126importsx1268# initialize hat with default parameters using ttyAMA0 serial# by default hat will be set to:# address   : 0x0# networkID : 0x0# channel   : 0x0# mode      : configurationcontroller=sx1268.Controller()controller.initialize(serialPipe="/dev/ttyAMA0")# set HAT address to be broadcast & monitor 0xFFFFcontroller.address=0xFFFF# set HAT to operate on networkID 0x5controller.networkId=0x5# set controller mode to Transmissioncontroller.mode=sx1268.OperatingMode.Transmission# listen and print any messages with will comeformessageincontroller.listen():print(message.decode())Send P2P messageSend P2P message on address 0xB8, network 0x5 every 5 secondsfromwaveshareSX126importsx1268importtime# initialize hat with default parameters using ttyAMA0 serial# by default hat will be set to:# address   : 0x0# networkID : 0x0# channel   : 0x0# mode      : configurationcontroller=sx1268.Controller()controller.initialize(serialPipe="/dev/ttyAMA0")# set HAT address to 0xB8controller.address=0xB8# set HAT to operate on networkID 0x5controller.networkId=0x5# set controller mode to Transmissioncontroller.mode=sx1268.OperatingMode.Transmissionstart_time=time.time()i=0whileTrue:iftime.time()-start_time>5:controller.sendMessage(f"This is message number:{i}")start_time=time.time()i+=1Operate in Watch / WOR mode.Send P2P message every 5 seconds, listen on incoming P2P messagesfromwaveshareSX126importsx1268importtimecontroller=sx1268.Controller()controller.initialize()# set HAT address to 0xB8controller.address=0xB8# set HAT to operate on networkID 0x5controller.networkId=0x5# set WOR mode to Sender (Send and Receive), and start operate in WOR modecontroller.worMode=sx1268.WORMode.Sendercontroller.mode=sx1268.OperatingMode.Watchstart_time=time.time()i=0whileTrue:ifcontroller.messageAvailable():formessageincontroller.readMessages():print(message.decode())iftime.time()-start_time>5:controller.sendMessage(f"This is message number:{i}")start_time=time.time()i+=1time.sleep(0.1)
Package: wstd2daisy
json2daisyUtility for converting JSON board definitions into valid,libDaisycompatible C++ board support files for theDaisy platform.InstallNote that this module is not intended as a standalone application at this time. You should not need to install it manually for most use cases.You can install this package with pip:python -m pip install json2daisyIf you'd like to build the package and install locally, you'll need thebuildpackage:python -m pip install buildOnce that's set up, navigate to the root directory of json2daisy and run:python3 -m build
python3 -m pip install dist/json2daisy-0.2.0.tar.gzIf pip complains about a missing file, make sure you've entered the correct version number in the archive path.UsageThis package can be used as a standalone program on the command line or as an imported module.On the command line:python -m json2daisy path/to/board_description.jsonAs a module:importjson2daisy# If you want to generate from an Electrosmith board:header_string,board_name,component_info,component_aliases=json2daisy.generate_header_from_board('field')# If you're supplying custom JSONheader_string,board_name,component_info,component_aliases=json2daisy.generate_header_from_file('path/to/board_description.json')As you can see, the two functions above will return a number of supplementary objects in addition to the header string. These provide detailed information for how to interact with the generated header. Thecomponent_infodictionary provides getters and setters for I/O, and thecomponent_aliasesdictionary provides valid aliases for everything incomponent_info.For examples of how to structure the board description, take a look at the JSON files insrc/json2daisy/resources.
Package: wsterm
WSTerm使用Websocket协议实现的远程终端，可以用于远程调试（支持自动同步本地工作区文件到远程机器）支持环境操作系统：LinuxWindowsMacOSPython3.5以上版本功能特性远程终端自动监听、同步工作区文件为什么要使用WSTerm？相比于SSH，Websocket协议具有更好的可访问性，很多场景下SSH服务不会被暴露出来，但是一般会暴露出Websocket服务。SSH服务通常只支持Linux和MacOS，Windows需要安装独立的应用；而WSTerm可以直接运行在以上三种系统，使用更加方便。自动同步本地工作区文件，可以实现本地修改代码，直接远程执行的特性，大大降低远程编写、执行代码的复杂性。使用方式安装方法$python3-mpipinstallwsterm服务端$wsterm--urlws://0.0.0.0:8080/terminal/--server此时，服务端会监听在本地的0.0.0.0:8080地址；如果只想监听在回环地址，可以将0.0.0.0替换成127.0.0.1。服务端还支持以下可选参数：--token: 指定鉴权使用的Token--log-level: 日志级别，默认为info--log-file: 日志保存文件路径-d/--daemon: 是否以daemon方式启动，默认为False客户端$wsterm--urlws://1.2.3.4:8080/terminal/客户端支持的可选参数：--workspace: 需要同步的工作区目录--token、--log-level、--log-file等参数与服务端相同服务端与客户端需要指定相同的Token才能正常连接
Package: wstompy
wstompyUsing a transport agnostic protocol and websocket-client to speak STOMP over websocket.FeaturesYesSTOMP 1.2Websocket with SSL/TLS(wss://) from websocket-clientVerbose socket logging thanks to websocket-clientwebsocket.enableTrace(True)Custom headers for transport and protocolNoA non-websocket clientNo, until addedSTOMP versions before 1.2Data Classes/ModelsReady for productionInstructionsInstallpip install wstompyUsageimportwebsocketfromwstompy.connectionimportWebSocketStompClientwebsocket.enableTrace(True)access_token='tokentokentoken'host='localhost'url=f'ws://{host}:8080/ws/websocket'client=WebSocketStompClient(header_host=host,socket_url=url,custom_headers={'Authorization':f'Bearer{access_token}'},subprotocols=['v12.stomp'])client.run_forever(suppress_origin=True)CollaborationSubmit polite and/or well-written tickets for issues.Fork and submit PRs referencing issues.Uses poetry because they were early with pyproject.toml implementation which is neater when publishing.Testing, feedback and reporting on usage with different server implementations.Code is expected to have been run through black before commits, see Makefile.Family, extended relatives and inspirationsstomp.py- tried but its run loop was too sticky using dunders, preventing an easy merge with websocket-client's run loop.stomper- didn't have STOMP 1.2 implemented and I figured it was just as easy to reimplement to have the possibility of adding custom headers.stompest- didn't try it, but has async support in its packaged client.Developingflake8 wstompy/config in .flake8 until they support pyproject.tomlmypy wstompy/config in pyproject.tomlblack wstompy/config in pyproject.tomlNotesThis has initially been implemented usingSpring Framework's STOMP serverwith and without SockJS.
Package: wstool_cd
cdto repositories in workspace which is managed byvcstools/wstool.Installationinstall via pypi:$ pip install wstool_cdadd following to your.bashrcor.zshrc:source `which wstool_cd.sh`Usagemaybe this alias is good:$ alias wlcd='wstool_cd'in workspace which is managed by wstool:$ wstool_cd  # cd to workspace's root
$ wstool_cd repo0  # cd to a repo0you can setWSTOOL_DEFAULT_WORKSPACEto cd from anywhere:$ export WSTOOL_DEFAULT_WORKSPACE=$HOME/ros/indigo/src
$ pwd  # not in workspace
/home/wkentaro
$ wstool_cd ros_comm && pwd # if actually not in workspace, cd to default workspace
/home/wkentaro/ros/indigo/src/ros_commAdvancedthis is sometimes dangerous, but useful:$ source `which wstool_cd_wrapper.sh`
$ wstool cd repo0  # use cd as sub-command of wstoolthis works because:wstool () {
  case "$1" in
    (cd) shift
     wstool_cd $@ ;;
    (*) command wstool $@ ;;
  esac
}ScreencastThis is demo of using wstool_cd:LicenseCopyright (C) 2015 Kentaro WadaReleased under the MIT licensehttp://opensource.org/licenses/mit-license.php
Package: wstools
GeneralHomepage:https://github.com/pycontribs/wstoolsMailing List:https://groups.google.com/forum/#!forum/pycontribsPackage:http://pypi.python.org/pypi/wstools/Docs (TBD):http://packages.python.org/wstoolsCreditsCompanies|makinacom|_Planet Makina Corpus<http://www.makina-corpus.org>_Contact us<mailto:python@makina-corpus.org>_AuthorsMakina Corpuspython@makina-corpus.comContributorsSorin Sbarneasorin.sbarnea@gmail.com
Package: wstools-py3
GeneralHomepage:https://github.com/Synerty/wstools-py3Package:http://pypi.python.org/pypi/wstools-py3/CreditsCompanies|makinacom|_Planet Makina Corpus<http://www.makina-corpus.org>_Contact us<mailto:python@makina-corpus.org>_AuthorsMakina Corpuspython@makina-corpus.comContributorsSorin Sbarneasorin.sbarnea@gmail.com
Package: wstring
Welcome StringWelcome String is a Python library for printing the Title in patternsInstallationUse the package managerpipto install Welcome-String.pipinstallwstringUsageThe wstring takes 1 argument and 4 optional arguments# Printing Welcome with default argumentsfromwstringimportWstringWstring("Welcome")The 4 optional arguments are length,height,symbol and color# Printing Welcome with all 4 argumentsfromwstringimportWstringWstring("Welcome",length=5,height=5,symbol='$',color='red')FeaturesColorColor has been added to the welcome string which makes it more attractive.
For now there are 5 different colors they areredgreenblueyellowpurpleUsers are allowed to pass the color name as an optional attribute, if the color you entered is not present in the mentioned above colors then it will print in the default colorWindows --> blackLinux --> whiteColor has been inspired from the work ofAbhijithAJfrom the projectclrprintWstring is now platform independent and it works even in cmd in windows and terminal in linuxExceptionNew exceptions has been includedCharacterExpectedGotStringExceptionEmptyCharacterFoundExceptionCommand Line InterfaceCommand line interface has been added to this packageusage:wstring[-h]-S[STRING...][-sSYMBOL][-lLENGTH][-HHEIGHT][-cCOLOR]Welcomestringtoprintthegivenstringinpattern

optionalarguments:-h,--helpshowthishelpmessageandexit-S[STRING...],--string[STRING...]Stringtobeprintedaspattern-sSYMBOL,--symbolSYMBOLAcharactertobeusedtoprintthegivenstringasapattern-lLENGTH,--lengthLENGTHLengthofthepattern-HHEIGHT,--heightHEIGHTHeightofthepattern-cCOLOR,--colorCOLORColorthepatternshouldbeprintedTest cases has been includedContributingPull requests are welcome. For major changes, please open an issue first to discuss what you would like to change.Please make sure to update tests as appropriate.LicenseMIT
Package: ws-ui
A simple tui tool to communicate with websocket.Installpip install ws-uiUsageJust call the command with websocket url.$ ws-ui ws://localhost:8080/ws/Enter msg and press Enter to send message

* ['18:25:38'] connecting to ws://localhost:8080/ws/
👌 ['18:25:38'] connected
⬇️ ['18:25:38'] ready
⬆️ ['18:26:35'] hello world
⬇️ ['18:26:35'] msg received











------------------------------------------------------
input text here
Package: wsuks
wsuksWeaponizing the WSUS AttackGaining local administrative access on a Windows machine that is part of a domain is typically the initial step towards acquiring domain admin privileges during a penetration test. In order to exploit the WSUS attack automatically, this tool spoofs the IP address of the WSUS server within the network using ARP, and when the client requests Windows updates, it provides its own malicious updates instead.
By default, a Windows client requests updates every 24 hours.Both the executable file served (Default: PsExec64.exe) and the executed command can be changed as needed.Prerequisits:The target Client must be on the local networkThe Windows Server Update Service (WSUS) must be configured using HTTPResult:After successful execution the user provided will be added to the local admin group. If no user was specified a user with the format user[0-9]{5} (e.g. user12345) and a random password will be createdInstallationUsing pipx (recommended):sudo apt install python3-pipx
pipx ensurepath
pipx install wsuks
sudo ln -s ~/.local/pipx/venvs/wsuks/bin/wsuks /usr/local/bin/wsuksUsing poetry:sudo apt install python3-poetry
git clone https://github.com/NeffIsBack/wsuks
cd wsuks
sudo poetry installUsage❗wsuks must be run as root❗Using pipx you can simply runsudo wsuks ...anywhere on the system.Using poetry you must be in the wsuks folder and begin every command withsudo poetry run wsuks ...Specify known WSUS-Server and create local admin user:sudo wsuks -t 10.0.0.10 --WSUS-Server 10.0.0.20Specify known WSUS-Server and add provided domain user to local admin group (Domain is required!):sudo wsuks -t 10.0.0.10 --WSUS-Server 10.0.0.20 -u User -p Password -d Domain.localAutodiscover the WSUS-Server by only specifying the domain user with the dc-ip:sudo wsuks -t 10.0.0.10 -u User -p Password -d Domain.local --dc-ip 10.0.0.1About & MitigationIn thePyWSUSRepository from GoSecure you can find a great documentation how to you could detect and mitigate this attack.
They also wrote a great Guide demonstrating how this attack works in detailhere.This Tool is based on the following projects:https://github.com/GoSecure/pywsushttps://github.com/GoSecure/wsuspect-proxy
Package: wsw
word-starts-withFind a word that starts with somethingCreated forr/askouija.UsageSimple one word usagepython -m wsw [text]orwsw [text]Where[text]is the text you want to check.Interactive sessionwswThis will start a interactive session where you can put words again and againYou can exit out of this by using Ctrl+CSaving output to a fileYou can just append a> filenameat the end of the command to pipe the output to a file e.g.wsw [text] > text.txt
Package: wswebcam
WSWebcamA WSWebcam é uma biblioteca para facilitar streaming de dispostivos de video via rede utilizando o protocolo websocket.Sua arquitetura é baseada no modelo cliente/servidor. Onde o Dispotivo serial é o servidor e qualquer cliente que conheca seu endereço e porta pode se comunicar com ele.Uso/Exemplos# python -m wswebcam -husage:__main__.py[-h][-c][-s][-pPORT][-aADDRESS][-dDEVICE][-v][-g]wswebcam-WebsockettoWebcamBridgeoptions:-h,--helpshowthishelpmessageandexit-c,--clientRunasaclient-s,--serverRunasaserver-pPORT,--portPORTPorttolistenon-aADDRESS,--addressADDRESSAddresstoconnectto(default:localhost)-dDEVICE,--deviceDEVICESerialdevicetoconnectto(default:0)-v,--verboseEnableverboselogging-g,--guiRunGUItoviewtheframeServer - [Cmdlt, Instance and Context Manager]# Start a server at 8050 with command linepython-mwswebcam-s-p8050# Server as Instancefromwswebcam.serverimportServerimportasyncioasyncdefmain():awaitServer("0.0.0.0",8050,0).run()asyncio.run(main())# Server as context manager]fromwswebcam.serverimportServerimportasyncioasyncdefmain():asyncwithServer("0.0.0.0",8050,0)asserver:awaitasyncio.sleep(10)asyncio.run(main())Client - [Cmdlt, Instance and Context Manager]# Connect a client on server at 0.0.0.0:8050python-mwswebcam-c-a0.0.0.0-p8050# Client as Instancefromwswebcam.clientimportDeviceasClientfromwswebcam.protocolimportpackageimportasyncioasyncdefmain():awaitclient=Client("ws://0.0.0.0:8050")awaitclient.connect()awaitclient.read()awaitclient.disconnect()asyncio.run(main())# Client as context managerfromwswebcam.clientimportCameraasClientimportasyncioasyncdefmain():asyncwithClient("ws://0.0.0.0:8050")asclient:awaitclient.read()
Package: ws.webpasswd
This packages provides a web UI for the UNIXpasswdcommand, e.g. so that
SFTP-only user accounts can still change their password.WARNING: The passwords are passed in plaintext via popen from the CGI process to
the helper process that runs under sudo. So maybe don’t use this in an
adversarial environment where people might spy on your process list or something.UsageSet up your webserver to run the CGI script. Here’s an example apache
configuration snippet:ScriptAlias /passwd /path/to/venv/bin/webpasswd-cgiAs changing the password for another user requires root access, you also need to
setup passwordless sudo execution for thewebpasswd-changehelper.
Add a rule like this, e.g. in/etc/sudoers.d/webpasswd:www-data ALL=NOPASSWD:/path/to/venv/bin/webpasswd-change(www-datameans the user the webserver executing the CGI script runs as.)You can pass the following environment variables to the CGI script:WEBPASSWD_CHANGE:Path towebpasswd-changehelper. If unset, assumes
a virtualenv installation (so it’s located next towebpasswd-cgi)WEBPASSWD_STYLESHEET:URL to a stylesheet to link to instead of using the
built-in stylesRunning testsYou’ll need to add a user accountwebpasswd, and interactively during the
test run reset its password as instructed.CHANGES2.1.0 (2023-04-04)ChangesUpdate to python-pam 2.0 API (pam)Drop Python-2 support (py2)Switch from setup.py to pyproject.toml (wheel)2.1.0 (unreleased)Update to python-pam 2.0 APIDrop Python-2 support2.0.1 (2018-03-05)HandlePATH_INFOinternally2.0.0 (2018-03-04)Rewrite using python-pam, Flask, Python-3 compatible, pip-installable.1.0.0 (2008-07-10)First working version, using PyPAM.so and webpy.org
Package: wsy_captcha
wsy_captcha===================A library that generates image captcha... image:: https://raw.githubusercontent.com/wushuyi/wsy_captcha/master/test.pngInstallation------------Install wsy_captcha with pip::$ pip install wsy_captchaBase Usage-----.. code:: pythonfrom wsy_captcha.comp import print_from wsy_captcha.captcha import Captchacaptcha = Captcha()code = captcha.randomCode()print_(code)captcha.write(code, 'test.png')Advanced Usage-----.. code:: pythonfrom wsy_captcha.comp import print_from wsy_captcha.captcha import Captchaimport wsy_captcha.image as imageclass MyCaptcha(Captcha):def generate_image(self, chars):text_drawings = [image.warp(),image.rotate(),image.offset(),]fn = image.captcha(drawings=[image.background(color='#FFFFFF'),image.text(fonts=self._fonts, drawings=text_drawings),image.curve(width=2),image.curve(width=2),image.curve(width=2),image.noise(number=60, color='#5C87B2', level=2),image.smooth(),],width=self._width,height=self._height,)return fn(chars)captcha = MyCaptcha()code = captcha.randomCode()img = captcha.generate(code)print_(code)f = open('test.png', 'wb')f.write(img.read())f.close()
Package: wsync
A small Python utility/module for synchronizing a local folder with a
remote web repository.InstallJust dopip install wsyncUsageAs a standalone scriptSuppose that you need to mantain a local mirror of the remote repository
athttp://cdimage.debian.org/debian-cd/current/source/iso-dvd/.Then it is enough to do as follows:wsync  \
    --digest-list http://cdimage.debian.org/debian-cd/current/source/iso-dvd/SHA1SUMS  \
    --remote-repo http://cdimage.debian.org/debian-cd/current/source/iso-dvd/          \
    --local-copy ~/debian-iso-dvdOf course, any subsequent execution of the script will detect any change
and download what is needed.You can also use thetestingbranch of the GitHub repository for a quick test: just do:wsync  \
    --digest-list https://raw.githubusercontent.com/reale/wsync/testing/SHA1SUMS  \
    --remote-repo https://raw.githubusercontent.com/reale/wsync/testing/As a moduleAs before:from wsync import *

digest_list_url = "http://cdimage.debian.org/debian-cd/current/source/iso-dvd/SHA1SUMS"
remote_repo_url = "http://cdimage.debian.org/debian-cd/current/source/iso-dvd/"
local_copy = "~/debian-iso-dvd"

wsync = Wsync(digest_list_url, remote_repo_url, local_copy)

wsync.sync()Or:digest_list_url = "https://raw.githubusercontent.com/reale/wsync/testing/SHA1SUMS"
remote_repo_url = "https://raw.githubusercontent.com/reale/wsync/testing/"
Package: wt
wt - static blog generatorWhatYet another static blog generator with following features:markdownfor contentyamlfor configurationjinja2for templatesatomfor feedtwo types of content -pageandpostyaml-formatted front matter for content metadatasimpleHTTPServerfor developmentWhyIt was curiosity - "how would I do it?" and good intentions - "let's create
something easy to work with".Documentationwtdocumentation is availableonline.HowRequirementsThe only hard dependency ispython3.Installation$mkdirblog&&cdblog
$mkdirenv&&virtualenv-ppython3env&&source./env/bin/activate
$pipinstallwtBootstrapping$wtinit.ConfigurationYour blog must have configuration file written inyamland namedwt.yaml(name can be changed).UsageWhile writing content (ie in development mode):$wtdevelopThis command will start the development server listening at 127.0.0.1:9000.When content is ready you will need to build it:$wtbuildRoadmapdocumentationposts list paginationsupport for tagsLicenseMIT
Package: wta
WSQluse - фреймворк на основе psycopg2, используемые в микросервисах проекта Watchman1.3:
Исправлено поведение метода try_execute_get, когда метод get_table_dict запрашивает у него записи и названия полей,
а транзакция проваливается, try_execute_get все равно возвращал status=’succes’, с кривыми данными в ключе info.
Package: wtao
📦 setup.py (for humans)This repo exists to providean example setup.pyfile, that can be used
to bootstrap your next Python project. It includes some advanced
patterns and best practices forsetup.py, as well as some
commented–out nice–to–haves.For example, thissetup.pyprovides a$ python setup.py uploadcommand, which creates auniversal wheel(andsdist) and uploads
your package toPyPiusingTwine, without the need for an annoyingsetup.cfgfile. It also creates/uploads a new git tag, automatically.In short,setup.pyfiles can be daunting to approach, when first
starting out — even Guido has been heard saying, "everyone cargo cults
thems". It's true — so, I want this repo to be the best place to
copy–paste from :)Check out the example!Installationcdyour_project# Download the setup.py file:#  download with wgetwgethttps://raw.githubusercontent.com/navdeep-G/setup.py/master/setup.py-Osetup.py#  download with curlcurl-Ohttps://raw.githubusercontent.com/navdeep-G/setup.py/master/setup.pyTo DoTests via$ setup.py test(if it's concise).Pull requests are encouraged!More ResourcesWhat is setup.py?on Stack OverflowOfficial Python Packaging User GuideThe Hitchhiker's Guide to PackagingCookiecutter template for a Python packageLicenseThis is free and unencumbered software released into the public domain.Anyone is free to copy, modify, publish, use, compile, sell, or
distribute this software, either in source code form or as a compiled
binary, for any purpose, commercial or non-commercial, and by any means.
Package: wtc
WTCWTC is an extension of the lzma compression format, specifically designed to make osu!std replays smaller before storing them. It reduces the size of certain datatypes in the original .osr format, achieving ~40% lossy compression ratios.PartOriginal lzma datatypeWTC datatypew (ms since preivous frame)Long (8 bytes)24bit Integer (3 bytes)x (x-cord)Float (4 bytes)Short (2 bytes)y (y-cord)Float (4 bytes)Short (2 bytes)z (bit combination of keypresses)Integer (4 bytes)Char (1 byte)This compresses the original 20 byte frame to an 8 byte frame, but not without losses. Precision is lost on w, x, and y, but not z, because the keypressed bit combination will never go above 4 bits for osu!standard. Though it may be larger for other gamemodes such as 7k mania, this compressor is explicitly for osu!standard.WTC compression achieves an average of 40% ±5 compression (Not a formally calculated number - simply based on experience).Installation:$pipinstallgit+git://github.com/osu-anticheat/wtc-lzma-compressorUsage:importwtc# to compress an lzma bytestringwtc_bytestring=wtc.compress(lzma_bytestring)# to decompress a wtc bytestring into an lzma bytestringlzma_bytestring=wtc.decompress(wtc_bytestring)# compress and decompress are (almost) inverse operations, so lzma_bytestring ≈ wtc.decompress(wtc.compress(lzma_bytestring)).# some precision is lost, so the strings are not identical.