Giter Site home page Giter Site logo

mikeebowen / ooxml-validator Goto Github PK

View Code? Open in Web Editor NEW
13.0 1.0 1.0 63 KB

A .NET CLI Package for validating Office Open XML files.

Home Page: https://marketplace.visualstudio.com/items?itemName=mikeebowen.ooxml-validator-vscode

License: MIT License

C# 100.00%
ooxml validator validation validate

ooxml-validator's Introduction

Test and Release

OOXML-Validator

What is it?

The OOXML Validator is a .NET CLI package which validates Open Office XML files (.docx, .docm, .dotm, .dotx, .pptx, .pptm, .potm, .potx, .ppam, .ppsm, .ppsx, .xlsx, .xlsm, .xltm, .xltx, or .xlam) and returns the validation errors as JSON or XML.

How is it used?

The OOXML Validator CLI accepts 1 required and 4 optional parameters. The first argument must be the file or directory path, the order of the other 4 arguments doesn't matter.

Argument Order Type Value Required/Optional
First (Required) string The absolute path to the file or folder to validate Required
Any string The version of Office to validate against* Optional
Any string If the value is --xml or -x, cli will return xml Optional
Any string If the value is --recursive or -r validates files recursively through all folders** Optional
Any string If the value is --all or -a files without any errors are included in the list. Optional

* Must be one of these (case sensitive): Office2007, Office2010, Office2013, Office2016, Office2019, Office2021, Microsoft365. Defaults to Microsoft365

** Only valid if the path passed is a directory and not a file, otherwise it is ignored

XML vs JSON

XML and JSON both return a list of validation errors. In addition to the validation error list, the XML data has 2 attributes: FilePath and IsStrict. FilePath is the path to the file that was validated and IsStrict is true if the document is saved in strict mode and false otherwise.

Validating Directories

If the first argument passed is a directory path, then all Office Open XML files in the directory are validated. Non-OOXML files are ignored. If the -r or --recursive flags are passed then all directories are validated recursively.

ooxml-validator's People

Contributors

mikeebowen avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar

Forkers

mhazy

ooxml-validator's Issues

How to use?

Hi Mike! I have installed the OOXML Validator in VS Code, and I have opened a DOCX. However, when I right click I don't see the option to Validate OOXML as is shown in the "Usage Details" screen captures for the extension in VS Code. Can you please tell me what I might be missing? Thank you.

Bulk Processing of Files

Hi.

We have the need to bulk process all files in a folder and with option to recursively also process any files in any subfolders. There should ideally be no limit to how many files can be processed during one command.

The output should be one XML file.

Optionally, it could be an interesting feature to be able to specify which file formats should be looked for, in the folder. For instance
--xlsx --xlsm
For any files created as Excel files and Excel files with macros.

Output XML

Hello @mikeebowen

My organization uses XML and XML schemas for most of our workflows.

We would like to request the feature of having the validation errors optionally output in XML.

Strict Excel Files Have Invalid int32 Data Types

Hello

I have tested the Strict validation feature with some of my own old Strict test data and a new generic empty Excel file saved as Strict Open XML in Excel 2019.

All are identified as Strict, but they all also have the following errors. No transitional Excel files have these errors. Do you know what is happening?

I validated both using Office2019 paramter and without. The same errors are reported.

<ValidationErrorInfoList FilePath="C:\db\_Testdata\Regneark\Excel-testkorpus\Book1.xlsx" IsStrict="true"> <ValidationErrorInfo> <Description>The attribute 'pos' has invalid value '100%'. The string '100%' is not a valid 'Int32' value.</Description> <Path>DocumentFormat.OpenXml.XmlPath</Path> <Id>Sch_AttributeValueDataTypeDetailed</Id> <ErrorType>Schema</ErrorType> </ValidationErrorInfo> <ValidationErrorInfo> <Description>The attribute 'val' has invalid value '120%'. The string '120%' is not a valid 'Int32' value.</Description> <Path>DocumentFormat.OpenXml.XmlPath</Path> <Id>Sch_AttributeValueDataTypeDetailed</Id> <ErrorType>Schema</ErrorType> </ValidationErrorInfo> <ValidationErrorInfo> <Description>The attribute 'val' has invalid value '63%'. The string '63%' is not a valid 'Int32' value.</Description> <Path>DocumentFormat.OpenXml.XmlPath</Path> <Id>Sch_AttributeValueDataTypeDetailed</Id> <ErrorType>Schema</ErrorType> </ValidationErrorInfo> <ValidationErrorInfo> <Description>The attribute 'pos' has invalid value '50%'. The string '50%' is not a valid 'Int32' value.</Description> <Path>DocumentFormat.OpenXml.XmlPath</Path> <Id>Sch_AttributeValueDataTypeDetailed</Id> <ErrorType>Schema</ErrorType> </ValidationErrorInfo> <ValidationErrorInfo> <Description>The attribute 'val' has invalid value '103%'. The string '103%' is not a valid 'Int32' value.</Description> <Path>DocumentFormat.OpenXml.XmlPath</Path> <Id>Sch_AttributeValueDataTypeDetailed</Id> <ErrorType>Schema</ErrorType> </ValidationErrorInfo> <ValidationErrorInfo> <Description>The attribute 'val' has invalid value '90%'. The string '90%' is not a valid 'Int32' value.</Description> <Path>DocumentFormat.OpenXml.XmlPath</Path> <Id>Sch_AttributeValueDataTypeDetailed</Id> <ErrorType>Schema</ErrorType> </ValidationErrorInfo> <ValidationErrorInfo> <Description>The attribute 'val' has invalid value '130%'. The string '130%' is not a valid 'Int32' value.</Description> <Path>DocumentFormat.OpenXml.XmlPath</Path> <Id>Sch_AttributeValueDataTypeDetailed</Id> <ErrorType>Schema</ErrorType> </ValidationErrorInfo> <ValidationErrorInfo> <Description>The attribute 'val' has invalid value '98%'. The string '98%' is not a valid 'Int32' value.</Description> <Path>DocumentFormat.OpenXml.XmlPath</Path> <Id>Sch_AttributeValueDataTypeDetailed</Id> <ErrorType>Schema</ErrorType> </ValidationErrorInfo> <ValidationErrorInfo> <Description>The attribute 'pos' has invalid value '0%'. The string '0%' is not a valid 'Int32' value.</Description> <Path>DocumentFormat.OpenXml.XmlPath</Path> <Id>Sch_AttributeValueDataTypeDetailed</Id> <ErrorType>Schema</ErrorType> </ValidationErrorInfo> <ValidationErrorInfo> <Description>The attribute 'val' has invalid value '102%'. The string '102%' is not a valid 'Int32' value.</Description> <Path>DocumentFormat.OpenXml.XmlPath</Path> <Id>Sch_AttributeValueDataTypeDetailed</Id> <ErrorType>Schema</ErrorType> </ValidationErrorInfo> <ValidationErrorInfo> <Description>The attribute 'val' has invalid value '98%'. The string '98%' is not a valid 'Int32' value.</Description> <Path>DocumentFormat.OpenXml.XmlPath</Path> <Id>Sch_AttributeValueDataTypeDetailed</Id> <ErrorType>Schema</ErrorType> </ValidationErrorInfo> <ValidationErrorInfo> <Description>The attribute 'val' has invalid value '150%'. The string '150%' is not a valid 'Int32' value.</Description> <Path>DocumentFormat.OpenXml.XmlPath</Path> <Id>Sch_AttributeValueDataTypeDetailed</Id> <ErrorType>Schema</ErrorType> </ValidationErrorInfo> <ValidationErrorInfo> <Description>The attribute 'val' has invalid value '93%'. The string '93%' is not a valid 'Int32' value.</Description> <Path>DocumentFormat.OpenXml.XmlPath</Path> <Id>Sch_AttributeValueDataTypeDetailed</Id> <ErrorType>Schema</ErrorType> </ValidationErrorInfo> <ValidationErrorInfo> <Description>The attribute 'val' has invalid value '170%'. The string '170%' is not a valid 'Int32' value.</Description> <Path>DocumentFormat.OpenXml.XmlPath</Path> <Id>Sch_AttributeValueDataTypeDetailed</Id> <ErrorType>Schema</ErrorType> </ValidationErrorInfo> <ValidationErrorInfo> <Description>The attribute 'val' has invalid value '95%'. The string '95%' is not a valid 'Int32' value.</Description> <Path>DocumentFormat.OpenXml.XmlPath</Path> <Id>Sch_AttributeValueDataTypeDetailed</Id> <ErrorType>Schema</ErrorType> </ValidationErrorInfo> <ValidationErrorInfo> <Description>The attribute 'val' has invalid value '63%'. The string '63%' is not a valid 'Int32' value.</Description> <Path>DocumentFormat.OpenXml.XmlPath</Path> <Id>Sch_AttributeValueDataTypeDetailed</Id> <ErrorType>Schema</ErrorType> </ValidationErrorInfo> <ValidationErrorInfo> <Description>The attribute 'lim' has invalid value '800%'. The string '800%' is not a valid 'Int32' value.</Description> <Path>DocumentFormat.OpenXml.XmlPath</Path> <Id>Sch_AttributeValueDataTypeDetailed</Id> <ErrorType>Schema</ErrorType> </ValidationErrorInfo> <ValidationErrorInfo> <Description>The attribute 'lim' has invalid value '800%'. The string '800%' is not a valid 'Int32' value.</Description> <Path>DocumentFormat.OpenXml.XmlPath</Path> <Id>Sch_AttributeValueDataTypeDetailed</Id> <ErrorType>Schema</ErrorType> </ValidationErrorInfo> <ValidationErrorInfo> <Description>The attribute 'lim' has invalid value '800%'. The string '800%' is not a valid 'Int32' value.</Description> <Path>DocumentFormat.OpenXml.XmlPath</Path> <Id>Sch_AttributeValueDataTypeDetailed</Id> <ErrorType>Schema</ErrorType> </ValidationErrorInfo> <ValidationErrorInfo> <Description>The attribute 'pos' has invalid value '100%'. The string '100%' is not a valid 'Int32' value.</Description> <Path>DocumentFormat.OpenXml.XmlPath</Path> <Id>Sch_AttributeValueDataTypeDetailed</Id> <ErrorType>Schema</ErrorType> </ValidationErrorInfo> <ValidationErrorInfo> <Description>The attribute 'val' has invalid value '78%'. The string '78%' is not a valid 'Int32' value.</Description> <Path>DocumentFormat.OpenXml.XmlPath</Path> <Id>Sch_AttributeValueDataTypeDetailed</Id> <ErrorType>Schema</ErrorType> </ValidationErrorInfo> <ValidationErrorInfo> <Description>The attribute 'val' has invalid value '120%'. The string '120%' is not a valid 'Int32' value.</Description> <Path>DocumentFormat.OpenXml.XmlPath</Path> <Id>Sch_AttributeValueDataTypeDetailed</Id> <ErrorType>Schema</ErrorType> </ValidationErrorInfo> <ValidationErrorInfo> <Description>The attribute 'val' has invalid value '99%'. The string '99%' is not a valid 'Int32' value.</Description> <Path>DocumentFormat.OpenXml.XmlPath</Path> <Id>Sch_AttributeValueDataTypeDetailed</Id> <ErrorType>Schema</ErrorType> </ValidationErrorInfo> <ValidationErrorInfo> <Description>The attribute 'pos' has invalid value '50%'. The string '50%' is not a valid 'Int32' value.</Description> <Path>DocumentFormat.OpenXml.XmlPath</Path> <Id>Sch_AttributeValueDataTypeDetailed</Id> <ErrorType>Schema</ErrorType> </ValidationErrorInfo> <ValidationErrorInfo> <Description>The attribute 'val' has invalid value '100%'. The string '100%' is not a valid 'Int32' value.</Description> <Path>DocumentFormat.OpenXml.XmlPath</Path> <Id>Sch_AttributeValueDataTypeDetailed</Id> <ErrorType>Schema</ErrorType> </ValidationErrorInfo> <ValidationErrorInfo> <Description>The attribute 'val' has invalid value '100%'. The string '100%' is not a valid 'Int32' value.</Description> <Path>DocumentFormat.OpenXml.XmlPath</Path> <Id>Sch_AttributeValueDataTypeDetailed</Id> <ErrorType>Schema</ErrorType> </ValidationErrorInfo> <ValidationErrorInfo> <Description>The attribute 'val' has invalid value '110%'. The string '110%' is not a valid 'Int32' value.</Description> <Path>DocumentFormat.OpenXml.XmlPath</Path> <Id>Sch_AttributeValueDataTypeDetailed</Id> <ErrorType>Schema</ErrorType> </ValidationErrorInfo> <ValidationErrorInfo> <Description>The attribute 'pos' has invalid value '0%'. The string '0%' is not a valid 'Int32' value.</Description> <Path>DocumentFormat.OpenXml.XmlPath</Path> <Id>Sch_AttributeValueDataTypeDetailed</Id> <ErrorType>Schema</ErrorType> </ValidationErrorInfo> <ValidationErrorInfo> <Description>The attribute 'val' has invalid value '94%'. The string '94%' is not a valid 'Int32' value.</Description> <Path>DocumentFormat.OpenXml.XmlPath</Path> <Id>Sch_AttributeValueDataTypeDetailed</Id> <ErrorType>Schema</ErrorType> </ValidationErrorInfo> <ValidationErrorInfo> <Description>The attribute 'val' has invalid value '102%'. The string '102%' is not a valid 'Int32' value.</Description> <Path>DocumentFormat.OpenXml.XmlPath</Path> <Id>Sch_AttributeValueDataTypeDetailed</Id> <ErrorType>Schema</ErrorType> </ValidationErrorInfo> <ValidationErrorInfo> <Description>The attribute 'val' has invalid value '103%'. The string '103%' is not a valid 'Int32' value.</Description> <Path>DocumentFormat.OpenXml.XmlPath</Path> <Id>Sch_AttributeValueDataTypeDetailed</Id> <ErrorType>Schema</ErrorType> </ValidationErrorInfo> <ValidationErrorInfo> <Description>The attribute 'pos' has invalid value '100%'. The string '100%' is not a valid 'Int32' value.</Description> <Path>DocumentFormat.OpenXml.XmlPath</Path> <Id>Sch_AttributeValueDataTypeDetailed</Id> <ErrorType>Schema</ErrorType> </ValidationErrorInfo> <ValidationErrorInfo> <Description>The attribute 'val' has invalid value '81%'. The string '81%' is not a valid 'Int32' value.</Description> <Path>DocumentFormat.OpenXml.XmlPath</Path> <Id>Sch_AttributeValueDataTypeDetailed</Id> <ErrorType>Schema</ErrorType> </ValidationErrorInfo> <ValidationErrorInfo> <Description>The attribute 'val' has invalid value '109%'. The string '109%' is not a valid 'Int32' value.</Description> <Path>DocumentFormat.OpenXml.XmlPath</Path> <Id>Sch_AttributeValueDataTypeDetailed</Id> <ErrorType>Schema</ErrorType> </ValidationErrorInfo> <ValidationErrorInfo> <Description>The attribute 'val' has invalid value '105%'. The string '105%' is not a valid 'Int32' value.</Description> <Path>DocumentFormat.OpenXml.XmlPath</Path> <Id>Sch_AttributeValueDataTypeDetailed</Id> <ErrorType>Schema</ErrorType> </ValidationErrorInfo> <ValidationErrorInfo> <Description>The attribute 'pos' has invalid value '50%'. The string '50%' is not a valid 'Int32' value.</Description> <Path>DocumentFormat.OpenXml.XmlPath</Path> <Id>Sch_AttributeValueDataTypeDetailed</Id> <ErrorType>Schema</ErrorType> </ValidationErrorInfo> <ValidationErrorInfo> <Description>The attribute 'val' has invalid value '73%'. The string '73%' is not a valid 'Int32' value.</Description> <Path>DocumentFormat.OpenXml.XmlPath</Path> <Id>Sch_AttributeValueDataTypeDetailed</Id> <ErrorType>Schema</ErrorType> </ValidationErrorInfo> <ValidationErrorInfo> <Description>The attribute 'val' has invalid value '103%'. The string '103%' is not a valid 'Int32' value.</Description> <Path>DocumentFormat.OpenXml.XmlPath</Path> <Id>Sch_AttributeValueDataTypeDetailed</Id> <ErrorType>Schema</ErrorType> </ValidationErrorInfo> <ValidationErrorInfo> <Description>The attribute 'val' has invalid value '105%'. The string '105%' is not a valid 'Int32' value.</Description> <Path>DocumentFormat.OpenXml.XmlPath</Path> <Id>Sch_AttributeValueDataTypeDetailed</Id> <ErrorType>Schema</ErrorType> </ValidationErrorInfo> <ValidationErrorInfo> <Description>The attribute 'pos' has invalid value '0%'. The string '0%' is not a valid 'Int32' value.</Description> <Path>DocumentFormat.OpenXml.XmlPath</Path> <Id>Sch_AttributeValueDataTypeDetailed</Id> <ErrorType>Schema</ErrorType> </ValidationErrorInfo> <ValidationErrorInfo> <Description>The attribute 'val' has invalid value '67%'. The string '67%' is not a valid 'Int32' value.</Description> <Path>DocumentFormat.OpenXml.XmlPath</Path> <Id>Sch_AttributeValueDataTypeDetailed</Id> <ErrorType>Schema</ErrorType> </ValidationErrorInfo> <ValidationErrorInfo> <Description>The attribute 'val' has invalid value '105%'. The string '105%' is not a valid 'Int32' value.</Description> <Path>DocumentFormat.OpenXml.XmlPath</Path> <Id>Sch_AttributeValueDataTypeDetailed</Id> <ErrorType>Schema</ErrorType> </ValidationErrorInfo> <ValidationErrorInfo> <Description>The attribute 'val' has invalid value '110%'. The string '110%' is not a valid 'Int32' value.</Description> <Path>DocumentFormat.OpenXml.XmlPath</Path> <Id>Sch_AttributeValueDataTypeDetailed</Id> <ErrorType>Schema</ErrorType> </ValidationErrorInfo> </ValidationErrorInfoList>

Is there a way run this with a github action?

I've been trying to automate the release of Excel Addins with github actions and I would love to be able to validate the file as part of the process. I have a repository to demonstrate some of the tools I've created:
https://github.com/Beakerboy/VBA-CI-CD-Test/tree/dev

This repository just has a helloWorld function that I'm trying to bundle into an xlam as a proof of concept. Unfortunately, Excel complained that it is invalid and the decalage2/olevba says it is bad, but not why. I was hoping I could incorporate this tool into the CI/CD workflow.

https://github.com/Beakerboy/VBA-CI-CD-Test/releases/download/0.0.14/Addin.xlam

I found that one problem was that the .rels file says standalone="true" instead of "standalone="yes", but after changing that, excel still says it's corrupt.

I've started a github organisation to publish some of these:
https://github.com/Vba-actions

Thanks!

[FEATURE] Non-CLI calling of Validator.OOXML()

Would be awesome to have some library build of this validator, to be able to call Validator.OOXML() inside of unit test project.

For example, I changed pptx-file by Open XML SDK, then wanna check whether the changes broke the presentation structure.

I believe using CLI version in unit test project is also possible, but a library type artifact would be better, especially for cross-platform testing.

ArgumentException thrown when invoked on a .PPTM or .PPTAM file

I got this exception while using the (excellent) OOXML Validator VS Code extension. The exact message was

Failed to run OOXML Validator. The error was: Unhandled exception. System.ArgumentException: file must be a .docx, .xlsx, or .pptx at OOXMLValidatorCLI.Classes.FunctionUtils.GetDocument(String filePath) in C:\source\OOXMLValidator\OOXMLValidatorCLI\Classes\FunctionUtils.cs:line 42 at OOXMLValidatorCLI.Classes.Validate.OOXML(String filePath, String format) in C:\source\OOXMLValidator\OOXMLValidatorCLI\Classes\Validate.cs:line 22 at OOXMLValidatorCLI.Program.Main(String[] args) in C:\source\OOXMLValidator\OOXMLValidatorCLI\Program.cs:line 20

The validator works well on .PPT and .PPTAM files, if they are renamed to .PPTX. So maybe the macro-enabled extensions could be allowed as well?

Error when trying to run on Ubuntu

I am trying to run v2.1.3 of the release on an Ubuntu 22.04 machine. I get an error while trying to run the application. I am using the prebuilt app from linux-x64.

This is the error message that I get -

ajit@ajit-virtual-machine:~/Downloads$ ./OOXMLValidatorCLI
The application to execute does not exist: '/home/ajit/Downloads/OOXMLValidatorCLI.dll'.

Unhandled exception

Hello!

Thanks for the new directory analysis function.

I tried testing the directory analysis on a directory with 16.000 spreadsheets (a large portion of which is XLS, so the real number of XLSX is much smaller).

Command line gave me the following error and the created XML output file is empty.

Unhandled exception. System.IO.InvalidDataException: End of Central Directory record could not be found.
at System.IO.Compression.ZipArchive.ReadEndOfCentralDirectory()
at System.IO.Compression.ZipArchive..ctor(Stream , ZipArchiveMode , Boolean , Encoding )
at System.IO.Packaging.ZipPackage..ctor(String path, FileMode packageFileMode, FileAccess packageFileAccess, FileShare share)
at System.IO.Packaging.Package.Open(String path, FileMode packageMode, FileAccess packageAccess, FileShare packageShare)
at DocumentFormat.OpenXml.Packaging.PackageLoader.OpenCore(String path, Boolean readWriteMode)
at DocumentFormat.OpenXml.Packaging.SpreadsheetDocument.Open(String path, Boolean isEditable, OpenSettings openSettings)
at OOXMLValidatorCLI.Classes.FunctionUtils.GetDocument(String filePath, String fileExtension)
at OOXMLValidatorCLI.Classes.Validate.OOXML(String filePath, String format, Boolean returnXml, Boolean recursive)
at OOXMLValidatorCLI.Program.Main(String[] args)

I tried testing the same sample base but only including files 3MB or less. The sample size was approx. 15.000 spreadsheets. I got the same error.

I tried putting th first 500 spreadsheets in their own folder and run the test. I got the following error.

Unhandled exception. DocumentFormat.OpenXml.Packaging.OpenXmlPackageException: A malformed URI was found in the document. Please provide a OpenSettings.RelationshipErrorRewriter to handle these errors while opening a package.
---> System.UriFormatException: Invalid URI: The hostname could not be parsed.
at System.Uri.CreateThis(String , Boolean , UriKind , UriCreationOptions& )
at System.Uri..ctor(String uriString, UriKind uriKind)
at System.IO.Packaging.InternalRelationshipCollection.ProcessRelationshipAttributes(XmlCompatibilityReader reader)
at System.IO.Packaging.InternalRelationshipCollection.ParseRelationshipPart(PackagePart part)
at System.IO.Packaging.InternalRelationshipCollection..ctor(Package package, PackagePart part)
at System.IO.Packaging.PackagePart.EnsureRelationships()
at DocumentFormat.OpenXml.Packaging.OpenXmlPart.Load(OpenXmlPackage openXmlPackage, OpenXmlPart parent, Uri uriTarget, String id, Dictionary2 loadedParts) at DocumentFormat.OpenXml.Packaging.OpenXmlPartContainer.LoadReferencedPartsAndRelationships(OpenXmlPackage openXmlPackage, OpenXmlPart sourcePart, RelationshipCollection relationshipCollection, Dictionary2 loadedParts)
at DocumentFormat.OpenXml.Packaging.OpenXmlPartContainer.LoadReferencedPartsAndRelationships(OpenXmlPackage openXmlPackage, OpenXmlPart sourcePart, RelationshipCollection relationshipCollection, Dictionary`2 loadedParts)
at DocumentFormat.OpenXml.Packaging.OpenXmlPackage.Load(Package package)
--- End of inner exception stack trace ---
at DocumentFormat.OpenXml.Packaging.OpenXmlPackage.Load(Package package)
at DocumentFormat.OpenXml.Packaging.SpreadsheetDocument.Open(String path, Boolean isEditable, OpenSettings openSettings)
at OOXMLValidatorCLI.Classes.FunctionUtils.GetDocument(String filePath, String fileExtension)
at OOXMLValidatorCLI.Classes.Validate.OOXML(String filePath, String format, Boolean returnXml, Boolean recursive)
at OOXMLValidatorCLI.Program.Main(String[] args)

I am not using recursive function.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.