Saravanan666/pypi-org huggingface dataset:
Package: pyEDAA.CLITool
Provide unified interfaces to execute EDA tools via CLI from Python, agnostic to any specific configuration format/object.Main GoalsProvide a pythonic solution to construct command line calls for EDA tools based onpyTooling.CLIAbstractionLaunch CLI tools and connect to STDIn, STDOUT, STDERR for realtime output post-processing.FeaturesSupport multiple native platforms: Linux, macOS, Windows.Support nested platforms like MSYS2 with MinGW32, MinGW64, URCT64, Clang64, ...Find CLI programs either inPATHor specify an exact installation location.Generate CLI options in correct order.Generate correctly escaped CLI options.Supported ToolsAldec🚧 Active-HDL🚧 Riviera-PROAltera🚧 Quartus🚫 ModelSim Altera (Student) EditionCadence🙋 need a list of toolsIntelFPGA🚧 Quartus🚫 ModelSim Altera (Student) EditionLattice🚧 Diamond🚫 Active-HDL Lattice Edition🚫 ModelSim Lattice EditionMentorGraphics✅ ModelSim DE/SE/PE🚫 QuestaSimSiemensEDA🚫 ModelSim DE/SE/PE🚫 QuestaSimSynopsys🙋 need a list of toolsXilinx🚧 ISE🚧 Vivado🚫 Vivado-SDK🚫 VitisSystem Tools✅ GitOpen Source✅ GHDL✅ GTKWaveYosys🙋 need a list of toolsLegend:✅ → implemented and tested🚧 → under test🚫 → planned but not yet implemented ⇒ accepting PRs🙋 → need helpExamplesfrompyEDAA.CLITool.GHDLimportGHDLtool=GHDL()tool[tool.CommandAnalyze]=Truetool[tool.FlagVHDLStandard]="08"tool[tool.FlagSynopsys]=Truetool[tool.FlagRelaxed]=Truetool[tool.FlagExplicit]=Truetool[tool.FlagMultiByteComments]=Truetool[tool.FlagLibrary]="lib_Test"print(f"Calling GHDL:{tool}")# Calling GHDL: "ghdl" "analyze" "--std=08" "-fsynopsys" "-frelaxed" "-fexplicit" "--work=lib_Test" "--mb-comments"ConsumersThis layer is used by:🚧pyEDAA.Workflow🚧pyEDAA.Launcher🚧Open Source Verification Bundle (OSVB)Referencesdocs.siliconcompiler.com: Tools directoryGHDL:Paebbels/pyIPCMI: pyIPCMI/Simulator/GHDLSimulator.pyVUnit/vunit: vunit/sim_if/ghdl.pyolofk/edalize: edalize/ghdl.pyim-tomu/fomu-workshop: hdl/mixed/blink/MakefilePyFPGA/pyfpga: fpga/tool/openflow.pyXedaHQ/xeda: xeda/flows/ghdl/init.pycocotb/cocotb: cocotb/runner.py(cocotb/cocotb#2634)stnolting/neorv32: tasks/examples.py(stnolting/neorv32#110)ghdl/ghdl: scripts/vendors/shared.shghdl/ghdl: scripts/vendors/shared.psm1OSVVM/OSVVM-Scripts: VendorScripts_GHDL.tclContributorsPatrick Lehmann(Maintainer)Unai Martinez-Corraland more...LicenseThis Python package (source code) is licensed underApache License 2.0.The accompanying documentation is licensed underCreative Commons - Attribution 4.0 (CC-BY 4.0).SPDX-License-Identifier: Apache-2.0
Package: pyEDAA.IPXACT
An IP-XACT Document Object Model (DOM) forIEEE 1685-2014written in Python.FeaturesGenerate IP-XACT files forIP-XACT catalogsIP-XACT ResourcesStandards:IEEE 1685-2009IEEE 1685-2014Schema files:IPXACT-Schemaat GitHubIP-XACTatAccelleraContributorsPatrick Lehmann(Maintainer)LicenseThis Python library (source code) is licensed underApache License 2.0.SPDX-License-Identifier: Apache-2.0
Package: pyEDAA.ProjectModel
Main GoalsThis package provides a unified abstract project model for HDL designs and EDA tools.
Third-party frameworks can derive own classes and implement additional logic to create
a concrete project model for their tools.Frameworks consuming this model can build higher level features and services on top of
such a model, while supporting multiple input sources.Data ModelThe toplevel element is aProject, which contains one or multiple designs.ADesignis a variant of a project and contains filesets.AFileSetcontains files or further sub-filesets.AFilerepresents a single file. E.g. source files, configuration files, constraint files.AVHDLLibraryrepresents a group ofVHDLSourceFiles being compiled into the same VHDL library.FeaturesConstruct a project model:top-down (project → design → fileset → file) orbottom-up (file → fileset → design → project) orparsing a project file.Designs, filesets and files can use absolute or relative paths.ResolvedPathreturns the resolved absolute path to an object.Projects, designs, filesets and files can be validated (e.g. if the path exists).Projects, designs, filesets and files can have user-defined attributes.User-defined attributes are resolved bottom-up.Project File ReadersOSVVM*.proFile ReaderProjectModel can read*.profiles and extract source files. Included*.profiles
are represented as sub-filesets.Xilinx Vivado*.xprReaderProjectModel can read*.xprfiles and extract source, constraint and simulation
files while preserving the fileset structure.Use CasesReading OSVVM's*.profiles.Reading Xilinx Vivado's*.xprfiles.ExamplesfrompathlibimportPathfrompyEDAA.ProjectModelimportProject,Design,FileSet,VHDLSourceFileprint(f"Current working directory:{Path.cwd()}")projectDirectory=Path.cwd()/"../project"print(f"Project directory:{projectDirectory!s}-{projectDirectory.exists()}")project=Project("myProject",rootDirectory=projectDirectory)designA=Design("designA",project=project,directory=Path("designA"))designAFileset=FileSet("srcA",design=designA)forvhdlFilePathindesignAFileset.ResolvedPath.glob("*.vhdl"):designAFileset.AddFile(VHDLSourceFile(vhdlFilePath))libFileset=FileSet("lib",Path("../lib"),design=designA)forvhdlFilePathinlibFileset.ResolvedPath.glob("*.vhdl"):libFileset.AddFile(VHDLSourceFile(vhdlFilePath))print(f"All VHDL files in{designA.Name}:")forfileindesignA.Files(fileType=VHDLSourceFile):print(f"{file.Path}")ConsumersThis layer is used by:🚧 pyEDAA.WorkflowReferencesPaebbels/pyIPCMI: pyIPCMI/Base/Project.pyVUnit/vunit: vunit/project.pyPyFPGA/pyfpga: fpga/project.pyolofk/fusesoc: fusesoc/capi2/core.pyXedaHQ/xeda: xeda/flows/flow.pytsfpga/tsfpga: tsfpga/build_project_list.pyhdl-make: hdlmake/OSVVM/OSVVM-Scripts: OsvvmProjectScripts.tclContributorsPatrick Lehmann(Maintainer)Unai Martinez-CorralStefan Unreinand more...LicenseThis Python package (source code) licensed underApache License 2.0.The accompanying documentation is licensed underCreative Commons - Attribution 4.0 (CC-BY 4.0).SPDX-License-Identifier: Apache-2.0
Package: pyEDAA.Reports
Proposal to define an abstract model for outputs from EDA tools and logging libraries.The main intended use case of pyEDAA.Reports is to import multiple log/report formats (raw logs, CSVs, YAML, JSON, etc.)
and provide a unified model that can generate reports using popular formats such as XUnit or Cobertura.
Since most vendors, CI services and monitoring tools support XML, the internals of pyEDAA.Reports are to be based on
XML transformations.As an abstract model, the main capability of pyEDAA.Reports is handling messages using an structured format.
The readers categorize messages by IDs and append attributes such as the severity, which allow complex filtering and
fancy coloring for better human readability.Report KindsTest Report SummaryTest SuiteTest CaseTest ParameterCode Coverage ReportLine CoverageStatement CoverageBranch CoverageExpression CoverageState CoverageTransition CoverageFunctional CoverageCoverage ModelDimensionBinItemRangeSynthesisArea/resourcesTimingImplementationArea/resourcesTimingTarget input logs/formatsActiveHDLCoCoTbDiamondGHDLIcarus VerilogISEModelSim/QuestaSimnextpnrOSVVMRivieraPROSymbiYosysSynplifyQuartusVerilatorVerilog-to-RoutingVivadoVUnitXceliumYosys...Referencesolofk/edalize(seeedalize.reporting,edalize.vivado_reporting,edalize.quartus_reporting,edalize.ise_reporting, ...)librecores/eda-log-parserSymbiFlow/fpga-tool-perfmattvenn/logLUTstiagolascasas/Vivado-HLS-Report-Parsercuelang.org/cuelang.org/docs/tutorialscue-lang/cue#162pypi.org/project/pycuephilipdexter/pycue
Package: pyEDAA.ToolSetup
Main GoalsProvide abstract information of where a tool is installed and configured on the local machine.Find local EDA tool installations and gather all necessary information in a configuration file.Support multiple versions and variants of the same tool.In case of multiple tool versions/variants select one default installation.Allow switching the default version/variant.Allow reading and writing such a configuration file via API.Allow reading and writing such a configuration file via CLI.FeaturesFind tool installations:at default installation locations (based on operating system).inPATH.via environment variables.Support multiple versions of the same tool.E.g. Vivado 2018.3, 2021.2Support multiple variants of the same tool.E.g. ModelSim Altera Edition vs. ModelSim SE vs. QuestaSimConfiguring a default version/variant per tool.Condensed View onToolInformationClassfrompathlibimportPathfrompyTooling.Decoratorsimportexport@exportclassToolInformation:def__init__(self,installationDirectory:Path,binaryDirectory:Path,version:str=None,edition:str=None):...@propertydefInstallationDirectory(self)->Path:returnself._installationDirectory@propertydefBinaryDirectory(self)->Path:returnself._binaryDirectory@propertydefVersion(self)->str:returnself._version@propertydefEdition(self)->str:returnself._editionExamplesfrompathlibimportPathfrompyEDAA.ToolSetupimportInstallationsyamlFile=Path("configuration.yml")installation=Installations(yamlFile)activeHDL=installation.Aldec.ActiveHDLactiveHDLVersion=activeHDL["10.3"]print(activeHDLVersion.BinaryDirectory)ConsumersThis layer is used by:🚧 pyEDAA.WorkflowReferencesPaebbels/pyIPCMI: pyIPCMI/Simulator/GHDLSimulator.pyContributorsPatrick Lehmann(Maintainer)Martin ZabelUnai Martinez-Corraland more...LicenseThis Python package (source code) is licensed underApache License 2.0.The accompanying documentation is licensed underCreative Commons - Attribution 4.0 (CC-BY 4.0).SPDX-License-Identifier: Apache-2.0
Package: pyEDAA.UCIS
Unified Coverage Interoperability Standard (UCIS)Main GoalsParse UCDB files and provide a UCDB data model.Export and convert data from UCDB to Cobertura format.Also support flavors not following the Unified Coverage Interoperability Standard (UCIS).Use CasesCollect and merge code coverage with Active-HDL / Riviera-PRO and convert via UCDB format to Cobertura files, so code coverage can be published to e.g. GitLab, Codacy or CodeCov.Usage# Convert ACDB file into UCDB file (XML format)acdb2xml-iaggregate.acdb-oucdb.xml# Convert UCDB file into Cobertura formatpyedaa-ucisexport--ucdbucdb.xml--coberturacobertura.xmlReferencesaccellera.org/activities/working-groups/ucisaccellera.org/downloads/standards/ucisfvutils/pyucisfvutils/pyucis-viewerUCIS licensing [umarcor/umarcor#3]ContributorsPatrick Lehmann(Maintainer)Unai Martinez-Corral(Maintainer)Artur Porebski (Aldec Inc.)Michal Pacula (Aldec Inc.)and more...LicenseThis Python package (source code) licensed underApache License 2.0.The accompanying documentation is licensed underCreative Commons - Attribution 4.0 (CC-BY 4.0).SPDX-License-Identifier: Apache-2.0
Package: pyEddyTracker
READMEMethodMethod was described in :Pegliasco, C., Delepoulle, A., Morrow, R., Faugère, Y., and Dibarboure, G.: META3.1exp : A new Global Mesoscale Eddy Trajectories Atlas derived from altimetry, Earth Syst. Sci. Data Discuss.Mason, E., A. Pascual, and J. C. McWilliams, 2014: A new sea surface height–based code for oceanic mesoscale eddy tracking.Use caseMethod is used in :Mason, E., A. Pascual, P. Gaube, S.Ruiz, J. Pelegrí, A. Delepoulle, 2017: Subregional characterization of mesoscale eddies across the Brazil-Malvinas ConfluenceHow do I get set up?Short storypipinstallpyeddytrackerLong storyTo avoid problems with installation, use of the virtualenv Python virtual environment is recommended.Then use pip to install all dependencies (numpy, scipy, matplotlib, netCDF4, ...), e.g.:pipinstallnumpyscipynetCDF4matplotlibopencv-pythonpyyamlpintpolygon3Clone :gitclonehttps://github.com/AntSimi/py-eddy-trackerThen run the following to install the eddy tracker :pythonsetup.pyinstallTools gallerySeveral examples based on py eddy tracker module arehere.Quick useEddyIdshare/nrt_global_allsat_phy_l4_20190223_20190226.nc20190223adtugosvgoslongitudelatitude./-vINFOfor identification, followed by:EddyTrackingtracking.yamlfor tracking (Edit the corresponding yaml files and then run the code).
Package: pyEDFlib
ContentsWhat is pyEDFlibDocumentationInstallationHighlevel interfaceLicenseWhat is pyEDFlibpyEDFlib is a python library to read/write EDF+/BDF+ files based on EDFlib.EDF meansEuropean Data Formatand was firstly publishedKemp1992.
In 2003, an improved version of the file protocol  named EDF+ has been published and can be found atKemp2003.The EDF/EDF+ format saves all data with 16 Bit. The companyBioSemiintroduced a version which saves all data with 24 Bit.The definition of the EDF/EDF+/BDF/BDF+ format can be found underedfplus.info.This Python toolbox is a fork of thetoolbox from Christopher Lee-Messerand uses theEDFlibfrom Teunis van Beelen.
The EDFlib is able to read and write EDF/EDF+/BDF/BDF+ files.DocumentationDocumentation is available online athttps://pyedflib.readthedocs.io.InstallationpyEDFlib can be used withPython>=3.7. It depends on theNumpypackage.
To use the newest source code from git, you have to download the source code.
You need a C compiler and a recent version ofCython. Go then to the source directory and type:python setup.py build
python setup.py installThere are binary wheels which can be installed by (use pip3 when available):pip install pyEDFlibUsers of theAnacondaPython distribution can directly obtain pre-built
Windows, Intel Linux or macOS / OSX binaries from the conda-forge channel.
This can be done via:conda install -c conda-forge pyedflibThe most recentdevelopmentversion can be found on GitHub athttps://github.com/holgern/pyedflib.The latest release, including source and binary packages for Linux,
macOS and Windows, is available for download from thePython Package Index.
You can find source releases at theReleases Page.Highlevel interfacepyEDFlib includes an highlevel interface for easy access to read and write edf files.
Additionally functionality as anonymizing, dropping or renaming channels can be found there.frompyedflibimporthighlevel# write an edf filesignals=np.random.rand(5,256*300)*200# 5 minutes of random signalchannel_names=['ch1','ch2','ch3','ch4','ch5']signal_headers=highlevel.make_signal_headers(channel_names,sample_frequency=256)header=highlevel.make_header(patientname='patient_x',gender='Female')highlevel.write_edf('edf_file.edf',signals,signal_headers,header)# read an edf filesignals,signal_headers,header=highlevel.read_edf('edf_file.edf',ch_names=['ch1','ch2'])print(signal_headers[0]['sample_frequency'])# prints 256# drop a channel from the file or anonymize edfhighlevel.drop_channels('edf_file.edf',to_drop=['ch2','ch4'])highlevel.anonymize_edf('edf_file.edf',new_file='anonymized.edf'to_remove=['patientname','birthdate'],new_values=['anonymized',''])# check if the two files have the same contenthighlevel.compare_edf('edf_file.edf','anonymized.edf')# change polarity of certain channelshighlevel.change_polarity('file.edf',channels=[1,3])# rename channels within a filehighlevel.rename_channels('file.edf',mapping={'C3-M1':'C3'})LicensepyEDFlib is a free Open Source software released under the BSD 2-clause license.Releases can be cited via Zenodo.
Package: pyedgeloop
pyedgeloopPyEdgeLoop is a fast and simple python package to detect loops, outer boundary and edges in binary images.This library was initially created to help detect loops and boundaries/edges in word images. It plays an important role in segmentation of cursive handwriting
segmentation. But it can be used for many other purposes also.Installationpip install pyedgeloopUsageimport pyedgeloop as detectimport cv2Im = cv2.imread(your_filename)Loops, Edges, Boundary = detect.DetectLoopsEdges(Im)ExamplesHere are some examples where we are finding loops and boundary of a handwritten word image-Input12OutputLoops12Outer Boundary12Edges12Here is another example where we need to detect only edges-InputOutput EdgesContributingPull 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.AuthorAditya Dutt -https://github.com/AdityaDuttLicenseMIT
Package: pyedhrec
PyEDHRecOverviewThis is a python wrapper around the excellentEDHRECwebsite. Currently, EDHREC does not provide an API
so the intent of this library is to enable people to build automated tooling around the useful information EDHREC provides.InstallationThis package is available on PyPI and can be installed with pippipinstallpyedhrecUsageCreate an instance of the edhrec clientfrompyedhrecimportEDHRecedhrec=EDHRec()# Reference cards by the exact card name, the library will format as neededmiirym="Miirym, Sentinel Wyrm"# Get basic card detailsdetails=edhrec.get_card_details(miirym)# Get details for a list of cardscard_list=edhrec.get_card_list(["Pongify","Farseek"])# Get an edhrec.com link for a given cardmiirym_link=edhrec.get_card_link(miirym)# Get combos for a cardmiirym_combos=edhrec.get_card_combos(miirym)# Get commander datamiirym_commander_data=edhrec.get_commander_data(miirym)# Get cards commonly associated with a commandermiirym_cards=edhrec.get_commander_cards(miirym)# Get the average decklist for a commandermiirym_avg_deck=edhrec.get_commanders_average_deck(miirym)# Get known deck lists for a commandermiirym_decks=edhrec.get_commander_decks(miirym)# This library provides several methods to get specific types of recommended cardsnew_cards=edhrec.get_new_cards(miirym)high_synergy_cards=edhrec.get_high_synergy_cards(miirym)# Get all top cardstop_cards=edhrec.get_top_cards(miirym)# Get specific top cards by typetop_creatures=edhrec.get_top_creatures(miirym)top_instants=edhrec.get_top_instants(miirym)top_sorceries=edhrec.get_top_sorceries(miirym)top_enchantments=edhrec.get_top_enchantments(miirym)top_artifacts=edhrec.get_top_artifacts(miirym)top_mana_artifacts=edhrec.get_top_mana_artifacts(miirym)top_battles=edhrec.get_top_battles(miirym)top_planeswalkers=edhrec.get_top_planeswalkers(miirym)top_utility_lands=edhrec.get_top_utility_lands(miirym)top_lands=edhrec.get_top_lands(miirym)CachingTo avoid excessive requests to edhrec.com this library uses in-memory caching for card retrieval methods. Each time you run
a script using this library we'll cache the results for any given card. If you request the card again during the same execution we
will use the cached value until the cache expires (defaults to 24 hours). If you use a long running script know that card data will only
be updated once a day. Due to the nature of the game not changing often this should normally not cause issues and will help alleviate
excessive traffic to EDHREC servers.
Package: pyedi830
pyedi830Pyedi830 uses JSON format definitions to make it easy to parse and convert from EDI830 file to JSON and CSV file/data.TODOsFinish 830 definitionImplement colorful exceptionsEDI Format DefinitionsEDI830 parser messages consist of a set of Segments (usually lines) comprised of Elements. Some segments can be part of a Loop. These formats are defined in JSON. See the provided format(s) for examples.A loop has certain expected properties:id(Loop ID)repeat(Max times the loop can repeat)Each segment has certain expected properties:id(Segment ID)name(Human-readable segment name)req(Whether segment is required: [M]andatory, [O]ptional)max_uses(Some segments can be included more than once)notes(Optional details for hinting documentation)syntax(An optional list of syntax rules, defined below)elements(List of included elements)Each element has certain expected features:id(Element ID)name(Human-readable element name)req(Whether segment is required: [M]andatory, [O]ptional)data_type(Type of segment data, defined below)data_type_ids(Ifdata_typeisID, this is a dict of valid IDs with descriptions)length(Dict specifying field length)min(Min length of field)max(Max length of field)Valid data types include:AN(Any data type)DT(Date, must be provided as Python DATE or DATETIME object)ID(Alphanumeric ID. List of valid IDs provided as dict with descriptions)R(Percentage)Nx(Number withxdecimal points)TM(Time, must be provided as Python TIME or DATETIME object)Syntax rules are specified as a dict with aruleand a list ofcriteria. Valid syntax rules include:ATLEASTONE(where at least one of the element IDs in thecriterialist is included and is not empty)ALLORNONE(where either all of the element IDs in thecriterialist are included, or none are)IFATLEASTONE(if the first element incriteriais included, then at least one of the other elements must be included)Code Examplesfrompyedi830importEDIParserfrompyedi830importEDI2CSVfrompyedi830importEDI2PDFedi_file_path="test/test_edi_830_forecast.edi"# Convert to json filejson_file_path="test_edi_830_forecast.json"edi_parser=EDIParser(edi_format="830_Forecast",element_delimiter="*",segment_delimiter="~",use_parent_key_detail=True,use_parent_detail=True,parent_headers=['symbol','name','type','notes'],use_child_key_detail=True,use_child_detail=False,use_debug=True)edi_parser.to_json(edi_file_path,json_file_path)# Parse to json datajson_data=edi_parser.parse(edi_file_path)# Convert to csv file.csv_file_path="edi_830.csv"edi2csv=EDI2CSV(use_debug=True)edi2csv.to_csv(edi_file_path=edi_file_path,csv_file_path=csv_file_path)# Convert to htmlhtml_file_path="edi_830.html"edi2csv=EDI2PDF(use_debug=True)edi2csv.to_html(edi_file_path=edi_file_path,html_file_path='html_file_path')# Convert to pdfpdf_file_path="edi_830.pdf"edi2csv.to_pdf(edi_file_path=edi_file_path,pdf_file_path=pdf_file_path,temp_html_file_path=html_file_path)InstallInstall system-widepip install pyedi830Or install in a virtual environmentvirtualenv my_env
pip -E my_env install pyedi830Licensingpyedi830 has a BSD license. The full license text is included with the source code for the package.
Package: pyedictor
PyEDICTOR: Simple Access to EDICTOR DatabasesInstallation:$ pip install pyedictorUsage>>>frompyedictorimportfetch>>>wl=fetch("deepadungpalaung",to_lingpy=True)>>>print(wl.width)16To load as a LexStat wordlist:>>>fromlingpyimport*>>>frompyedictorimportfetch>>>lex=fetch("deepadungpalaung",to_lingpy=True,transform=LexStat)To convert your dataset to EDICTOR format from CLDF:$ edictor wordlist -d cldf/cldf-metadata.json mydatasetThis will create a wordlist filemydataset.tsvfrom your CLDF data located incldf/cldf-metadata.json.
Package: pyedid
pyEDIDGetting startedThis is a python library to parse extended display identification data (EDID).This project based onpyedidEDID data formatThe EDID data frame format is described in detail on theWikipediapage.RequirementsPython 3.6+requestsSetuppip3installpyedidFeaturesParsing EDID data from hex or bytesEmbedded PNP ID registry with dump/restore to CSV fileUpdatable PNP ID registry fromwww.uefi.orgDocsToDOQuickstartParsing some hex EDID data with the default registryimportpyedidedid_hex=('00ffffffffffff000469982401010101''1e1b01031e351e78ea9265a655559f28''0d5054bfef00714f818081409500a940''b300d1c00101023a801871382d40582c''4500132b2100001e000000fd00324c1e''5311000a202020202020000000fc0056''533234380a20202020202020000000ff''0048374c4d51533132323136310a0000')# returned Edid object, used the Default embedded registryedid=pyedid.parse_edid(edid_hex)edid.name# 'VS248'edid.manufacturer# 'Ancor Communications Inc'edid.serial# 'H7LMQS122161'edid.year# 2017 (year of manufacture)edid.week# 30 (week of manufacture)edid.width# 53.0 cmedid.height# 30.0 cmedid.resolutions# list with resulutions (x, y, rate), ex (720, 400, 70.0)edid...# some other EDID datajson_str=str(edid)# making JSON string objectGetting EDID fromxrandr --verbosefrompyedidimportget_edid_from_xrandr_verbosefromsubprocessimportcheck_output# getting `xrandr --verbose` outputrandr=check_output(['xrandr','--verbose'])# parsing xrandr outputs to a bytes edid's listedids=get_edid_from_xrandr_verbose(randr)# parsing edidedid=pyedid.parse_edid(edids[0])Working with registryfrompyedidimportRegistry,DEFAULT_REGISTRY# making a registry object from www.uefi.orgr_web=Registry.from_web()# dumping the default registry to csv fileDEFAULT_REGISTRY.to_csv('/path/to/csv.file')# restoring registry from csv filer_csv=Registry.from_csv('/path/to/csv.file')LicensingSee LICENSE