Code Monkey home page Code Monkey logo

sharepy's Introduction

SharePy - Simple SharePoint Online authentication for Python

This module will handle authentication for your SharePoint Online/O365 site, allowing you to make straightforward HTTP requests from Python. It extends the commonly used Requests module, meaning that returned objects are familliar, easy to work with and well documented.

Installation

SharePy can be installed from the Python Package Index, PyPI.

pip install sharepy

Initiating a SharePoint session

import sharepy
s = sharepy.connect("example.sharepoint.com")

You will be prompted to enter your username and password, which are used to request a security token from Microsoft. An access cookie and request digest token are then retrieved and saved to properties for later use. The digest token will be refreshed automatically as it expires.

A username and password can also be provided as arguments of the connect function, if prompts are not desirable.

Making API calls

r = s.get("https://example.sharepoint.com/_api/web/lists/GetByTitle('Test Library')")

This will return a Requests response object. See the requests documentation for details. By default, the headers Accept: application/json; odata=verbose and Content-type: application/json; odata=verbose are sent with all requests, so API responses will be formatted as JSON where available.

Headers can be added or overridden by supplying a dictionary to the relevant method:

r = s.get("https://example.sharepoint.com/_api/...", headers={"Accept": "application/atom+xml"})

The request will send a digest header, allowing modifications to be made to SharePoint objects.

Downloading a file

r = s.getfile("https://example.sharepoint.com/Library/Test%20File.pdf")

This will download the file to the current directory and return a response object. Alternatively you can specify a location to save the file to:

r = s.getfile("https://example.sharepoint.com/Library/Test%20File.pdf", filename="downloads/file.pdf")

Uploading a file

Successfully uploading a file to SharePoint is a complex task which is described in detail in issue #4.

The actual file upload can be achieved with the following code, where filepath is the path to the file to upload, folder is the library on the SharePoint server and filename is the name to give to the file on upload.

with open(filepath, "rb") as f:
    data = f.read()

url = "https://example.sharepoint.com/_api/web/GetFolderByServerRelativeUrl('{}')/Files/add(url='{}',overwrite=true)"
r = s.post(url.format(folder, filename), data=data, headers={"content-length": len(data)})

Saving an authenticated session

Properties of the authentication session can be saved to a file using the save method, so the session can be used without having to re-authenticate each time a program is run:

s.save()

Later, the load function can be used to restore the session:

s = sharepy.load()

The default file name for saving and loading sessions is sp-session.pkl, however an alternative location can be provided as an argument to save() and load().

Advanced usage

Requests authentication

SharePy implements Requests authentication classes that can also be used directly with Requests itself:

import requests
import sharepy

auth = sharepy.auth.SharePointOnline(username="[email protected]")
auth.login(site="example.sharepoint.com")
r = requests.get("https://example.sharepoint.com", auth=auth)

Available authentication classes are:

  • SharepointOnline - For normal SharePoint Online sites
  • SharepointADFS - For ADFS-enabled sites

Custom authentication URL

The authentication URL is detected automatically when using sharepy.connect(). If a different URL is required for a region-specific account, it can be specified by manually creating an auth object and setting its login_url property:

import sharepy

auth = sharepy.auth.SharePointOnline(username="[email protected]")
auth.login_url = "https://login.microsoftonline.de/extSES.srf"
s = sharepy.SharePointSession("example.sharepoint.com", auth)

Useful reading

Licence

This software is distributed under the GNU General Public License v3. Copyright 2016-2021 Jonathan Holvey.

Credits

  1. The authentication method used here is based on this post by Luc Stakenborg.
  2. Additional help regarding request digests from sadegh's comment on this post by Paul Ryan.
  3. Contributed code from @joemeneses for ADFS authentication.

sharepy's People

Contributors

jonathanholvey avatar ufgccaplan avatar

Stargazers

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

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

sharepy's Issues

Download Files Sharepoint Online

Hi,
Thank you for this python applet, complete and light.

I've been looking for a long time how to upload a set of files to a sharepoint online document library in a recursive way..

mysite.sharepoint.com/subsites/namesite/Documents/ ..

I don't know how to write the download function of a complete directory.

Can you help me ?

I thank you in advance for you help,

Next Release Date?

Hi,

First off, thank you for sharing project!

The development branch fixes some issues we are having after we migrated to ADFS. Is there a release date planned?

Cheers,
Jon

Downloading API link files directly to the SharePoint channel

Hi,

I am new in Python scripting, I am looking to download files directly to Sharepoint channel using Python instead of downloading it into the download folder. I don't want python to use my local drive to download files.

Can anybody help me in here?

v2 Issues with POST and DELETE Calls

Hey Jonathan,
thanks for the quick replies so far.

As suggested in the last Issue (#47) I freshly downloaded the beta v2.0.0 Branch and tried running a small test script which creates a new Folder (POST), gets some information of it (GET) and finally deletes the folder (DELETE).

from Local import sharepy as sharepy

s = sharepy.connect(server_url, username=user, password=passwd)

uri = "https://example.sharepoint.com/sites/Test-Site/_api/web/folders/add('/sites/Test-Site/Freigegebene Dokumente/test')"
r = s.post(uri)

uri = "https://example.sharepoint.com/sites/Test-Site/_api/web/GetFolderByServerRelativeUrl('/sites/Test-Site/Freigegebene Dokumente/test')"
r = s.get(uri)
r = s.delete(uri)

The new version changed which errors I get as a response from the API:
POST Error Message:

{
  "error": {
    "code": "-2130575251, System.Runtime.InteropServices.COMException",
    "message": {
      "lang": "de-DE",
      "value": "Die Sicherheits\u00fcberpr\u00fcfung f\u00fcr diese Seite ist ung\u00fcltig. Klicken Sie auf die Schaltfl\u00e4che 'Zur\u00fcck' Ihres Browsers, aktualisieren Sie dann die Seite, und starten Sie den Vorgang erneut."
    }
  }
}

value -> The Security check for this site is invalid... and so on

GET Error Message -> just the usual IOException because of the missing folder (works if I manually create the folder)

DELETE Error Message (after manually creating the folder):

{
  "error": {
    "code": "-2130575251, System.Runtime.InteropServices.COMException",
    "message": {
      "lang": "de-DE",
      "value": "Die Sicherheits\u00fcberpr\u00fcfung f\u00fcr diese Seite ist ung\u00fcltig. Klicken Sie auf die Schaltfl\u00e4che 'Zur\u00fcck' Ihres Browsers, aktualisieren Sie dann die Seite, und starten Sie den Vorgang erneut."
    }
  }
}

value -> The Security check for this site is invalid... and so on

The Authentication type is SharepointOnline from what I understood.

Auth Failure: Direct login to WLID not allowed for federate name space

Hi Jonathan,

I am using your library to try and connect to my organization's sharepoint and download files. However, when I try to access the file I need I get : "Authentication Failure: Direct login to WLID is not allowed for this federated namespace". Have you seen this before / can your library handle this issue? I recognize that there is also a possibility that this is a configuration issue on my organization's side.

Thanks,
Emma

Raise exceptions when errors occur

Requested by @Gitii in #9:

Print error messages to console if in interactive mode. Raise exceptions otherwise. I use sharepy in a small python script at work which runs automatically. I never see the output unless the script crashses. Same for the password prompt.

fails on special characters in username/password

Solution works fine apart from when there are characters, special to XML, in the username or password.

I would advise to fix by escaping the username and password before adding them to the XML template. The method to use for this would be 'escape' from xml.sax.saxutils.

Importing

How to import sharepy ? How to install it in python .

Argument for getfile() or similar function to only return response

Extending getfile() to return the response only (and not write to disk) would be helpful in programmatic use-cases (i.e. streaming many files to tables for an ETL process). Possibly with an additional arg or a function like getfile() without [file.write(chunk) for chunk in response].

Send DELETE API Calls via Sharepy

Hey I wanted to ask if there is a way to send delete API Calls via the sharepy Library as there is no requests equivalent of delete() in your source code.

Grateful for any helping hand.

AttributeError: 'SharePointSession' object has no attribute 'cookie'

Traceback (most recent call last):
  File "xxx\lambda_function.py", line 66, in <module>
    uploadToSharepoint(SPUrl, username, password, siteName, libraryName, path)
  File "xxx\lambda_function.py", line 14, in uploadToSharepoint
    s = sharepy.load()
  File "xxx\sharepy\session.py", line 27, in load
    if session._redigest() or session._spauth():
  File "xxx\sharepy\session.py", line 124, in _redigest
    response = requests.post("https://" + self.site + "/_api/contextinfo", data="", headers={"Cookie": self.cookie})
AttributeError: 'SharePointSession' object has no attribute 'cookie'

I am getting this error while executing.

module 'sharepy' has no attribute 'auth'

Hi, I'm a bit of a novice, but the documentation code from the read me (Requests authentication) triggers an error "module 'sharepy' has no attribute 'auth'".

print(dir(sharepy)) which printed ['SharePointSession', 'builtins', 'cached', 'doc', 'file', 'loader', 'name', 'package', 'path', 'spec', 'connect', 'load', 'session']. I was expecting to see auth listed. Where am I going wrong?

I read the release notes from Jan 2021, is it possible the read me documentation hasn't been updated?

This package appears to be exactly what i'm looking for, I'm just having trouble getting it up and running. Thanks for any response in advance!

Problems importing sharepy

I am getting a syntax error when I try to import sharepy: line 78
print("Requesting security token...\r", end="")

Too many redirects error

I get this error when running this code:

File "/usr/local/lib/python3.6/site-packages/requests/sessions.py", line 166, in resolve_redirects
raise TooManyRedirects('Exceeded {} redirects.'.format(self.max_redirects), response=resp)
requests.exceptions.TooManyRedirects: Exceeded 30 redirects.

Can max_redirects be added to the code?

Multifactor authentication for sharepoint account

I am trying to access our company's sharepoint account but there is a multi-factor authentication required to login. Basically we receive a text message containing a one-time password every time we try to login into sharepoint. Due to this, I can connect to sharepoint using python. What are the possible solutions for this?

json.decoder.JSONDecodeError: Expecting value: line 2 column 1 (char 2)

Effectively trying to load an .xlsx file on Sharepoint into a pandas dataframe but I can't seem to be able to get the json() out properly. Are there any additional headers I need to be passing in? Or how would you suggest to decode this properly?

Thanks.

>>> import sharepy
>>> s = sharepy.connect('mysite.sharepoint.com', username=username, password=password)
Requesting security token...
Requesting access cookie... 
Authentication successful   

>>> response = s.get('https://mysite.sharepoint.com/sites/SiteDir/_layouts/15/Doc.aspx?OR=teams&action=edit&sourcedoc={99E8E198-999C-99E9-93D3-9972990AE2D6}')

>>> response.headers
{'Cache-Control': 'no-cache, no-store', 'Pragma': 'no-cache', 'Content-Length': '23637', 'Content-Type': 'text/html; charset=utf-8', 'Content-Encoding': 'gzip', 'Expires': '-1', 'Vary': 'Accept-Encoding', ......

>>> response.json()
Traceback (most recent call last):
  File "<input>", line 1, in <module>
  File "/usr/local/lib/python3.6/site-packages/requests/models.py", line 892, in json
    return complexjson.loads(self.text, **kwargs)
  File "/usr/local/Cellar/python/3.6.4_3/Frameworks/Python.framework/Versions/3.6/lib/python3.6/json/__init__.py", line 354, in loads
    return _default_decoder.decode(s)
  File "/usr/local/Cellar/python/3.6.4_3/Frameworks/Python.framework/Versions/3.6/lib/python3.6/json/decoder.py", line 339, in decode
    obj, end = self.raw_decode(s, idx=_w(s, 0).end())
  File "/usr/local/Cellar/python/3.6.4_3/Frameworks/Python.framework/Versions/3.6/lib/python3.6/json/decoder.py", line 357, in raw_decode
    raise JSONDecodeError("Expecting value", s, err.value) from None
json.decoder.JSONDecodeError: Expecting value: line 2 column 1 (char 2)

guest authentication

Hi,
is there a way to use a guest authentication for sharepoints?
I would like to write a script, running on a server, but I don't feel like putting my password on the server.
Therefor I added a guest account to the sharepoint, which is able to read the sharepoint on the website. However I can't login using the authentication system from sharepy.
Any suggestions for doing this?
Best regards,

Feature: Upload Large Files [Help Needed]

Hi,

I am trying to initiate a chuck upload for large files. The sharepoint REST API offers this but i am failing to implement it via Python. I think it would be beneficial to add another function which reads the input file in chunks sends it accordingly. Do you think this is in your pipeline for this project?

Thanks :)

authentication error

Hi am trying use this code to connect to my office sharepoint link but it keeps giving username password error. Am pretty sure there is no issue with the credentials. Is it something with authentication mechanism

Authentication Failure: AADSTS70002

Hello,

I'm getting "Authentication Failure: AADSTS70002: Error validating credentials. AADSTS50126: Invalid username or password" when I try to connect with s.connect(). I know the creds are valid since I use them all the time, and I have validate the URL.

import sharepy fails after pip install for Python 2.7

→ pip install sharepy
Collecting sharepy
  Downloading https://files.pythonhosted.org/packages/74/29/1acfb5c02cb0dbd117a73e8f38c5c5840813923a009c27c1c1705e6d9f03/sharepy-1.3.0.tar.gz
Building wheels for collected packages: sharepy
  Running setup.py bdist_wheel for sharepy ... done
  Stored in directory: /Users/person/Library/Caches/pip/wheels/7e/eb/cf/63bc25516388731f73ef0114f9bb24b32ca7e0f8dbeeb7baf7
Successfully built sharepy
Installing collected packages: sharepy
Successfully installed sharepy-1.3.0
You are using pip version 9.0.1, however version 10.0.1 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.

 in ~/Projects/proof/poc/sharepoint/sharepy on git:master ● [13:20:55]
→ python
Python 2.7.12 (default, Jun 29 2016, 14:05:02)
[GCC 4.2.1 Compatible Apple LLVM 7.3.0 (clang-703.0.31)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import sharepy
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/local/lib/python2.7/site-packages/sharepy/__init__.py", line 1, in <module>
    from .session import SharePointSession
  File "/usr/local/lib/python2.7/site-packages/sharepy/session.py", line 81
    print("Requesting security token...\r", end="")

This seems like Python 3.0 syntax so it likely won't work as-is on 2.7?

Testers wanted for SharePy v2

A release of SharePy v2 has been in the works for quite a while, but has been held up due to a lack of testing. This release introduces support for federated authentication, with the SharePointADFS auth class, however, I don't have access to an ADFS-enabled site to test it throughly.

If you want to help out with testing, please install it using pip:

pip install --pre sharepy

If you find a bug, please create an issue with v2 in the title. Be sure to include as much detail as possible in your bug report, including:

  • The version of SharePy you installed
  • The authentication type your site is using (run sharepy.auth.detect('[email protected]') if you're not sure)
  • Any errors and tracebacks you see

Changelog

A major refactor of SharePy to provide a standard Requests auth interface.

  • Converted the existing SharePoint Online authentication to a Requests auth class
  • Added ADFS auth to compliment the default SharePoint Online authentication. Thanks to @joemeneses
  • Added automatic authentication method detection for sharepy.connect()
  • Added version checking for saved session objects. Major version number changes invalidate a session
  • Removed auth_tld argument from sharepy.connect() and replaced with an login_url property in auth classes
  • Removed connection status messages and added Python exceptions when errors are encountered
  • Fixed session files not being closed when reading and writing
  • Fixed missing dependencies in PyPI package
  • Added setup.py script to repository

Authentication Failure: AADSTS90023: Invalid STS request

I'm unable to connect to sharepoint O365 with an email + password: the error message I receive seems not to have been reported yet:
Invalid Request: AADSTS90023: Invalid STS request
Any idea what could be causing this?
The email + password successfully work with an other python package (shareplum) which unfortunately does not offer the functionalities I need.

Issues connecting to sharepoint

I am a python noob. I had no troubles accessing Sharepoint Rest API for an HTTP version of SharePoint through the standard requests module. But once I move over to the HTTPS version of my SharePoint server no matter what I seem to do, it won't work. So I am attempting to use this lovely module...

I either get this error when using username "[email protected]"
File "C:\Python36\lib\site-packages\sharepy\session.py", line 97, in _spauth
print("{}: {}".format(root.find(".//S:Text", ns).text,
AttributeError: 'NoneType' object has no attribute 'text'

or when using "mpowell" or "winntdom\mpowell"
Authentication Failure: AADSTS90019: No tenant-identifying information found in either the request or implied by any provided credentials
Caused by SSLError(SSLError(1, '[SSL: CERTIFICATE_VERIFY_FAILED]

I know its something I'm not understanding but I hope that you guys can help.

Some things to know, it is a SharePoint on in intranet location at my work, we don't have standard Office365 accounts, our 365 accounts contain our company address so mine is [email protected]. Unfortunately I cannot share my SharePoint site. I am currently using Python 3.6

Authenticating through sharepy using client ID and Secret

Is it possible to authenticate through Sharepy using Client ID and secret(of sharepoint teams site) as can be done in Office365-REST-Python-Client. This would be huge as I don't want to have my username and password credentials in code that needs to be used by several others and having the input prompt is not viable in an automated environment

Can't connect to Sharepoint - AttributeError: 'NoneType' object has no attribute 'text'

I'm unable to connect to Sharepoint, the process fails when requesting a security token. My company uses multi-factor authentication through the Microsoft Authenticator app, and I wonder if that could be the problem. Is there any way around this or is something else causing the error?

s = sharepy.connect('https://company.sharepoint.com/')

Enter your username: [email protected]
Enter your password: ········
Requesting security token...
---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
/var/folders/cf/x7x_4qzj751c392s5rsm74d00000gp/T/ipykernel_90800/209908182.py in <module>
----> 1 s = sharepy.connect('https://company.sharepoint.com/')

/Applications/anaconda3/lib/python3.9/site-packages/sharepy/session.py in connect(site, username, password, auth_tld)
     18 
     19 def connect(site, username=None, password=None, auth_tld=None):
---> 20     return SharePointSession(site, username, password, auth_tld)
     21 
     22 

/Applications/anaconda3/lib/python3.9/site-packages/sharepy/session.py in __init__(self, site, username, password, auth_tld)
     59             self.password = password
     60 
---> 61             if self._spauth():
     62                 self._redigest()
     63                 self.headers.update({

/Applications/anaconda3/lib/python3.9/site-packages/sharepy/session.py in _spauth(self)
     97         # Check for errors and print error messages
     98         if token is None or root.find(".//S:Fault", ns) is not None:
---> 99             print("{}: {}".format(root.find(".//S:Text", ns).text,
    100                                   root.find(".//psf:text", ns).text).strip().strip("."))
    101             return

AttributeError: 'NoneType' object has no attribute 'text'

How to upload file using sharepy

Hi Jonathan,

I was able to download file using get method but not getting any success in uploading file to sharepoint location. Can you please suggest how to use post method to upload the file

Auth Failure: Can't get new session, old sessions work

I've been using this module successfully for about a week and have been able to connect, download, and upload files.
I recently added an option to my script to delete the old sp-session.pkl so when the script is run again the user must enter their credentials again instead of automatically loading the sp-session.pkl.
Now when I attempt to authenticate a new session I receive the message:

Authentication Failure: AADSTS70002: Error validating credentials. AADSTS50126: Invalid username or password"

If I load a copy of the old sp-session.pkl it authenticates and works fine.
Attempting to login with another user also fails, but logging in to sharepoint online in a web browser works fine.
Any idea what could be causing this?

sharepy - read file instead of download file

Hello,

I cannot find, using this library Sharepy, which I find so far very useful, a way to read a file (meaning its content) instead of downloading it.

Is there an equivalent to "getfile" that would be something like "readfile". I have seen the following functions that are built in Sharepy session but it doesn't seem to do the trick _( _init, _spauth, redigest, save, post, getfile, buildcookie).

I can give piece of code if the description of my problem is not clear enough.
Thank you

Authentication Failure: AADSTS90023: Invalid STS request

Our customer login Outlook 365 and receive this error. All off user in organization login successfully. But him can't login. He has two account Microsoft accounts.
Do you have any solution for this issue. Please give us advise.Thanks!
image

Support for custom extSTS.srf-url

Hi,

the german office 365 has a differenct endpoint:
The extSTS.srf must be downloaded from
https://login.microsoftonline.de/extSTS.srf
instead of
https://login.microsoftonline.com/extSTS.srf

I would like to override (e.g. in connect()) the standard url to support this use case instead of monkey patching the source.

Thanks

Token requested, but response did not include the STS SAML Assertion.

Hi Jonathan,

Thank you for the python module.
I recently starting getting this error when using Sharepy when i have switched VPN. I think previous version of shrepy was updated at my local end by one of my friend contacting you. The updated one used a SAML xml template to structure request. THe New VPN uses SAM 2.0. Do you have any idea about this ?

Issue Connecting to SharePoint - AttributeError: 'NoneType' object has no attribute 'text'

I am getting the following error message when trying to initiate a simple session. Any idea of what could be going wrong?

Error: `------------------------------------------------------------------------
AttributeError                         Traceback (most recent call last)
<ipython-input-43-215fda3deba1> in <module>()
      1 # (1) Authenticate
----> 2 s = sharepy.connect("https://company.sharepoint.com/")

~\AppData\Local\Continuum\anaconda3\lib\site-packages\sharepy\session.py in connect(site, username, password, auth_tld)
     18 
     19 def connect(site, username=None, password=None, auth_tld=None):
---> 20     return SharePointSession(site, username, password, auth_tld)
     21 
     22 

~\AppData\Local\Continuum\anaconda3\lib\site-packages\sharepy\session.py in __init__(self, site, username, password, auth_tld)
     59             self.password = password
     60 
---> 61             if self._spauth():
     62                 self._redigest()
     63                 self.headers.update({

~\AppData\Local\Continuum\anaconda3\lib\site-packages\sharepy\session.py in _spauth(self)
     97         # Check for errors and print error messages
     98         if token is None or root.find(".//S:Fault", ns) is not None:
---> 99             print("{}: {}".format(root.find(".//S:Text", ns).text,
    100                                   root.find(".//psf:text", ns).text).strip().strip("."))
    101             return

AttributeError: 'NoneType' object has no attribute 'text'`



Code:
`s = sharepy.connect("https://company.sharepoint.com/")`

Add version handling for saved sessions

Requested by @Gitii in #9:

Some kind of version handling for the cookie. Old cookies may not be compatible if sharepy is updated.
...
I mean the serialized pickle file, sorry for the confusion.

Accessing data on subsite

@alex00321 said:

Hi I'm new to this case, but I'm trying to use sharePy to post file. The problem I got here is I don't have the main site like company.sharepoint.com. I only could access the sub site like company.sharepoint.com/sites/mine. So is there any way you could help? Thanks!

Copied from #42 (comment)

Session file is not closed

The load and save methods do not close the session.pkl file. In both cases the file is opened without a with block.

Digest request failed

I am getting an error of Digest request failed printed and an exception at line 150 of session.py (kwargs["headers"]["Authorization"] = "Bearer " + self._redigest()) after a few thousand (~7,000 to 14,000) create and post requests. The number of requests before the error occurs vary. I believe the digest request is returning None. Code has been running OK for a few months until yesterday. I am wondering if anyone else is running into the same issue or has found a workaround.

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.