Git Product home page Git Product logo

gdata-python-client's People

Contributors

alainv avatar aliafshar avatar avivien avatar dhermes avatar jcgregorio avatar jeffposnick avatar rvkubiak avatar tommiller avatar vinces1979 avatar wibblymat avatar

Watchers

 avatar

gdata-python-client's Issues

Support international character sets

Post from groups:
Very nice library! Thank You

For international use:

change title.text
to title.text.encode("utf-8")

to avoid:
Traceback (most recent call last):
  File "calendarExample.py", line 323, in ?
    main()
  File "calendarExample.py", line 320, in main
    sample.Run(delete)
  File "calendarExample.py", line 270, in Run
    self._PrintUserCalendars()
  File "calendarExample.py", line 65, in _PrintUserCalendars
    print '\t%s. %s' % (i, a_calendar.title.text,)
UnicodeEncodeError: 'ascii' codec can't encode character u'\xf8' in
position 5: ordinal not in range(128) 


See:
http://groups.google.com/group/gdata-python-client-library-contributors/browse_t
hread/thread/2ca322b74822ee69/#

Original issue reported on code.google.com by [email protected] on 30 Mar 2007 at 12:14

Incorrect indendation in calendar sample code

Line 161 of calendarExample.py is incorrectly indented.  This report comes
from an internal source -- see patch below for fix:


--- calendarExample.py.orig     2007-03-26 12:01:06.000000000 +0900
+++ calendarExample.py  2007-04-16 21:51:20.455931000 +0900
@@ -155,7 +155,7 @@
        start_time = time.strftime('%Y-%m-%dT%H:%M:%S.000Z', time.gmtime())
        end_time = time.strftime('%Y-%m-%dT%H:%M:%S.000Z',
            time.gmtime(time.time() + 3600))
-        event.when.append(gcalendar.When(start_time=start_time,
+      event.when.append(gcalendar.When(start_time=start_time,
            end_time=end_time))

    new_event = self.cal_client.InsertEvent(event,


Original issue reported on code.google.com by [email protected] on 16 Apr 2007 at 1:43

Selected property of a CalendarListEntry is not set

Each entry in the calendar meta feed has a a gCal:selected property indicating 
whether the calendar 
is selected in a user's list of calendars.  

This property needs added to the CalendarListEntry class, and a class called 
Selected needs to be 
created.

See:
http://code.google.com/apis/calendar/reference.html#gCalselected

Original issue reported on code.google.com by [email protected] on 22 Apr 2007 at 3:22

Change package structure

Organize the modules into packages with the following structure:

atom
  - atom.py
  - app_servive.py

gdata
  - gdata.py
  - gdata_service.py
  gbase
    - gbase.py
    - gbase_service.py
  gcalendar
    - gcalendar.py
    - gcalendar_service.py
...

Original issue reported on code.google.com by [email protected] on 3 Apr 2007 at 12:23

Adding an exception to a recurrent event

Here is an example of e recurrence_exception:
<gd:recurrenceException specialized="true">
<gd:entryLink>
<entry>
<id>8dn7t5k9fu7fd0tajlle593ab4_20070523T100000Z</id>
<published>2007-05-23T19:53:23.000Z</published>
<updated>2007-05-23T19:53:28.000Z</updated>
<category scheme="http://schemas.google.com/g/2005#kind"
term="http://schemas.google.com/g/2005#event"/>
<title type="text">mano</title>
<content type="text"/>
<link rel="alternate" type="text/html"
href="http://www.google.com/calendar/event?eid=OGRuN3Q1azlmdTdmZDB0YWpsbGU1OTNhY
jRfMjAwNzA1MjNUMTAwMDAwWiBpNWNndDE1MW9xc2Jkb2Zua2ZxOGVlZWkxb0Bn"
title="alternate"/>
<author>
<name>david hautbois</name>
<email>[email protected]</email>
</author>
<gd:originalEvent id="8dn7t5k9fu7fd0tajlle593ab4"
href="http://www.google.com/calendar/feeds/i5cgt151oqsbdofnkfq8eeei1o%40group.ca
lendar.google.com/private/composite/8dn7t5k9fu7fd0tajlle593ab4">
<gd:when startTime="2007-05-23T12:00:00.000+02:00"/>
</gd:originalEvent>
<gd:comments>
<gd:feedLink
href="http://www.google.com/calendar/feeds/i5cgt151oqsbdofnkfq8eeei1o%40group.ca
lendar.google.com/private/full/8dn7t5k9fu7fd0tajlle593ab4_20070523T100000Z/comme
nts">
<feed>
<updated>2007-05-24T12:13:13.238Z</updated>
<category scheme="http://schemas.google.com/g/2005#kind"
term="http://schemas.google.com/g/2005#message"/>
<title type="text">Comments for: mano</title>
<link rel="alternate" type="text/html"
href="http://www.google.com/calendar/feeds/i5cgt151oqsbdofnkfq8eeei1o%40group.ca
lendar.google.com/private/full/8dn7t5k9fu7fd0tajlle593ab4_20070523T100000Z/comme
nts"
title="alternate"/>
</feed>
</gd:feedLink>
</gd:comments>
<gd:eventStatus value="http://schemas.google.com/g/2005#event.canceled"/>
<gd:visibility value="http://schemas.google.com/g/2005#event.default"/>
<gd:transparency value="http://schemas.google.com/g/2005#event.opaque"/>
<gCal:sendEventNotifications value="false"/>
<gd:when startTime="2007-05-23T12:00:00.000+02:00"
endTime="2007-05-23T18:00:00.000+02:00"/>
<gd:where valueString=""/>
</entry>
</gd:entryLink>
</gd:recurrenceException>

We can get the dates of this exception :
> exception.entry_link.entry.when[0].start_time
Ok, no problem.

Now, I want to create an exception:
> my_exception = gdata.calendar.RecurrenceException()

If I print the content of this exception:
> print my_exception

I get :
<ns0:recurrenceException specialized="True"
xmlns:ns0="http://schemas.google.com/g/2005" />
(very small content ....)

I can't add a "when" attribute :
>
my_exception.entry_link.entry.when.append(gcalendar.When(start_time='20070523T12
0000',
end_time='20070523T180000'))

The error :
AttributeError: 'NoneType' object has no attribute 'entry'

So, a "new" and "empty" exception does not contain entry_link and entry.

I don't found any documentation how to play with exceptions....
But I think there is a problem.

David.

Original issue reported on code.google.com by [email protected] on 24 May 2007 at 1:18

Add support for app:draft

Atom Entry should contain a control element, and the control element 
should contain a draft element.

Original issue reported on code.google.com by [email protected] on 13 Apr 2007 at 11:19

Timezone query parameter

Adding the support of the new Timezone query parameter.

See :
http://groups.google.com/group/google-calendar-help-dataapi/browse_thread/thread
/1ca5efd8712533fb/d6055f07d7ffe1c1#d6055f07d7ffe1c1

David.

Original issue reported on code.google.com by [email protected] on 24 Jul 2007 at 7:29

Comment references to GDataClient should be GDataService

In gdata.service.GDataService, the comments (docstring and just
before _SetAuthSubToken) refer to GDataClient. GDataClient is not
defined anywhere, and it appears this should be referring to itself,
i.e. change GDataClient references to GDataService.

What version of the product are you using?
1.0.4

Please provide any additional information below.
This is a documentation bug.

Original issue reported on code.google.com by [email protected] on 10 Jul 2007 at 3:42

Error when query the feed with &quot;composite&quot; projection

When query the feed with "composite" projection (to get recurrent exceptions) :

query =
gcalendar_service.CalendarEventQuery('i5cgt151oqsbdofnkfq8eeei1o%40group.calenda
r.google.com',
'private', 'composite')

It returns this error :

  File "/usr/lib/python2.5/site-packages/gdata/gcalendar.py", line 398, in
_TakeChildFromElementTree
    self.entry_link = _EntryLinkFromElementTree(child)
NameError: global name '_EntryLinkFromElementTree' is not defined

Original issue reported on code.google.com by [email protected] on 5 Apr 2007 at 8:33

OriginalEvent not available in the feed

What steps will reproduce the problem?
I fetch a feed with these parameters :
private/composite feed
start_max and updated_min query parameters

This problem is only for deleted occurrence returned in the feed.

What is the expected output? What do you see instead?
If I print the feed, I see the OriginalEvent attribute :
ns0:entry>
<ns1:where xmlns:ns1="http://schemas.google.com/g/2005" />
<ns1:when endTime="2007-06-13T14:00:00.000+02:00"
startTime="2007-06-13T13:00:00.000+02:00"
xmlns:ns1="http://schemas.google.com/g/2005" />
<ns1:transparency value="http://schemas.google.com/g/2005#event.opaque"
xmlns:ns1="http://schemas.google.com/g/2005" />
<ns1:visibility value="http://schemas.google.com/g/2005#event.default"
xmlns:ns1="http://schemas.google.com/g/2005" />
<ns1:comments xmlns:ns1="http://schemas.google.com/g/2005">
<ns1:feedLink
href="http://www.google.com/calendar/feeds/9401v3n5oe0neebmjphmdfld90%40group.ca
lendar.google.com/private/full/bf5lr62jqq7ll3ruu35i2foqok_20070613T110000Z/comme
nts">
<ns0:feed>
<ns0:updated>2007-06-17T17:21:06.020Z</ns0:updated>
<ns0:category scheme="http://schemas.google.com/g/2005#kind"
term="http://schemas.google.com/g/2005#message" />
<ns0:title type="text">Comments for: test</ns0:title>
<ns0:link
href="http://www.google.com/calendar/feeds/9401v3n5oe0neebmjphmdfld90%40group.ca
lendar.google.com/private/full/bf5lr62jqq7ll3ruu35i2foqok_20070613T110000Z/comme
nts"
rel="alternate" title="alternate" type="text/html" />
</ns0:feed>
</ns1:feedLink>
</ns1:comments>
<ns1:sendEventNotifications value="false"
xmlns:ns1="http://schemas.google.com/gCal/2005" />
<ns1:eventStatus value="http://schemas.google.com/g/2005#event.canceled"
xmlns:ns1="http://schemas.google.com/g/2005" />
<ns0:content type="text" />
<ns0:published>2007-06-17T17:02:07.000Z</ns0:published>
<ns0:author>
<ns0:name>david hautbois</ns0:name>
<ns0:email>[email protected]</ns0:email>
</ns0:author>
<ns0:category scheme="http://schemas.google.com/g/2005#kind"
term="http://schemas.google.com/g/2005#event" />
<ns0:id>http://www.google.com/calendar/feeds/9401v3n5oe0neebmjphmdfld90%40group.
calendar.google.com/private/composite/bf5lr62jqq7ll3ruu35i2foqok_20070613T110000
Z</ns0:id>
<ns0:link
href="http://www.google.com/calendar/event?eid=YmY1bHI2MmpxcTdsbDNydXUzNWkyZm9xb
2tfMjAwNzA2MTNUMTEwMDAwWiA5NDAxdjNuNW9lMG5lZWJtanBobWRmbGQ5MEBn"
rel="alternate" title="alternate" type="text/html" />
<ns0:link
href="http://www.google.com/calendar/feeds/9401v3n5oe0neebmjphmdfld90%40group.ca
lendar.google.com/private/composite/bf5lr62jqq7ll3ruu35i2foqok_20070613T110000Z"
rel="self" type="application/atom+xml" />
<ns0:title type="text">test</ns0:title>
<ns0:updated>2007-06-17T17:08:54.000Z</ns0:updated>
<ns1:originalEvent
href="http://www.google.com/calendar/feeds/9401v3n5oe0neebmjphmdfld90%40group.ca
lendar.google.com/private/composite/bf5lr62jqq7ll3ruu35i2foqok"
id="bf5lr62jqq7ll3ruu35i2foqok" xmlns:ns1="http://schemas.google.com/g/2005">
<ns1:when startTime="2007-06-13T13:00:00.000+02:00" />
</ns1:originalEvent>
</ns0:entry>
<ns0:entry>

But it is not accessible from a method.

What version of the product are you using?
1.0.3

Please provide any additional information below.

Original issue reported on code.google.com by [email protected] on 17 Jun 2007 at 5:30

Insert Row is not working in gdata.py-1.02

What steps will reproduce the problem?
1. python gdata.py-1.0.2\samples\spreadsheets\spreadsheetExample.py --user
username --pw password
2. choose a spreadsheet file and then open a worksheet
3. type "list"
4. type "insert A=a B=b" (Assume the open file has this two rows)
5. Error:
----------------------8<----------------------------------
Traceback (most recent call last):
  File "spreadsheetExample.py", line 176, in <module>
    main()
  File "spreadsheetExample.py", line 172, in main
    sample.Run()
  File "spreadsheetExample.py", line 146, in Run
    self._PromptForListAction()
  File "spreadsheetExample.py", line 74, in _PromptForListAction
    self._ListInsertAction(command[1])
  File "spreadsheetExample.py", line 100, in _ListInsertAction
    entry = self.gd_client.InsertRow(self._StringToDictionary(row_data),
self.curr_key, self.curr_wksht_id)
  File "D:\nix\Python25\Lib\site-packages\gdata\spreadsheet\service.py",
line 225, in InsertRow
    response = self.Post(new_entry, a_link.href)
  File "D:\nix\Python25\Lib\site-packages\gdata\service.py", line 658, in Post
    'reason': server_response.reason, 'body': result_body}
gdata.service.RequestError: {'status': 404, 'body':
'<HTML>\n<HEAD>\n<TITLE>Not Found</TITLE>\n</HEAD>\n<BODY BGCOLOR="#FFFFFF"
TEXT="#000000">\n<H1>Not Foun
d</H1>\n<H2>Error 404</H2>\n</BODY>\n</HTML>\n', 'reason': 'Not Found'}
----------------------8<----------------------------------

What is the expected output? What do you see instead?
It should insert the row, but I see the error above instead.

What version of the product are you using?
GData Python Library 1.02

Please provide any additional information below.
At line 224 of gdata.py-1.0.2\src\gdata\spreadsheet\service.py, changing
the "2005" to "2006" fix the problem.

Original issue reported on code.google.com by [email protected] on 19 May 2007 at 2:21

Simplify accessing extension elements

Finding specific child elements is difficult because they are all thrown
into a list. Make it easier to find specific child nodes by adding
FindExtensions and FindChildren methods.

Original issue reported on code.google.com by [email protected] on 11 Apr 2007 at 5:06

Add Picasa Web Album Extension

What steps will reproduce the problem?
1.
2.
3.

What is the expected output? What do you see instead?


Please use labels and text to provide additional information.

Original issue reported on code.google.com by [email protected] on 29 Jun 2007 at 6:15

Atom data module doesn't handle UTF-8 characters

When reading data from feeds which have non ascii characters, the
conversion from xml to objects fails. Try the following on a spreadsheet
with non ascii characters in the first row:

feed = client.GetListFeed(sid)

Original issue reported on code.google.com by [email protected] on 6 Jun 2007 at 9:46

Move Google data classes from calendar module to Google data module

I had originally decided to put some Google data classes into calendar's 
module instead of the Google data core module because they are only used 
in calendar (oops :). Technically they do belong in the core module so we 
need to move those classes. Specific classes include events with kinds.

Original issue reported on code.google.com by [email protected] on 5 Apr 2007 at 6:25

Add support for License links

The license link is described in
http://www.ietf.org/internet-drafts/draft-snell-atompub-feed-license-11.txt

A GetLicenseLink method should be added to LinkFinder. Also LinkFinder
should move into the atom module to allow it's Get methods to be used on
Atom Entries and Feeds.

Original issue reported on code.google.com by [email protected] on 2 May 2007 at 9:57

Query parameters mangement

I'm using CVS revision 167.
I play with the query parameters :

cal_client = gdata.calendar.service.CalendarService()
cal_client.email = "[email protected]"
cal_client.password = "password"
cal_client.source = 'Google-Calendar_Python_Sample-1.0'
cal_client.ProgrammaticLogin()

query = gdata.calendar.service.CalendarEventQuery(
    bt0jm0vhomggrjnqkn4c1c3420%40group.calendar.google.com',
    'private','composite',None,{"ctz":"utc"})
feed = cal_client.CalendarQuery(query)
feed = cal_client.CalendarQuery(query)

Note the two queries....
The first query works fine.
But the second query fails :
Traceback (most recent call last):
  File "./test2.py", line 46, in <module>
    feed = cal_client.CalendarQuery(query)
  File "/usr/lib/python2.5/site-packages/gdata/calendar/service.py", line
106, in CalendarQuery
    result = self.Query(query.ToUri())
  File "/usr/lib/python2.5/site-packages/gdata/calendar/service.py", line
102, in Query
    result = self.Get(uri)
  File "/usr/lib/python2.5/site-packages/gdata/service.py", line 525, in Get
    'reason': server_response.reason, 'body': result_body}
gdata.service.RequestError: {'status': 400, 'body': 'Too many instances of
ctz', 'reason': 'Bad Request'}

Original issue reported on code.google.com by [email protected] on 27 Jul 2007 at 5:41

spreadsheetExample.py

In spreadsheetExample.py, the checks should be changed to see if the entry
is an instance of gdata.spreadsheet.SpreadsheetsList, not cell.

The relevant functions:

def _ListInsertAction(self, row_data):
   entry = self.gd_client.InsertRow(self._StringToDictionary(row_data),
       self.curr_key, self.curr_wksht_id)
   if isinstance(entry, gdata.spreadsheet.SpreadsheetsCell):
     print 'Inserted!'

 def _ListUpdateAction(self, index, row_data):
   self.list_feed = self.gd_client.GetListFeed(self.curr_key,
self.curr_wksht_id)
   entry = self.gd_client.UpdateRow(
       self.list_feed.entry[string.atoi(index)],
       self._StringToDictionary(row_data))
   if isinstance(entry, gdata.spreadsheet.SpreadsheetsCell):
     print 'Updated!'

This should also be reflected in the documentation, as it uses code copied
from this py file.

Original issue reported on code.google.com by [email protected] on 25 May 2007 at 5:29

Who class requires a name

When translating from a Who instance to an XML string, the conversion will
fail if the Who instance does not have a name defined (name is None).
Instead the Who class should only attempt to convert the name if it exists.

Original issue reported on code.google.com by [email protected] on 23 Jun 2007 at 12:58

gdata module won't install

What steps will reproduce the problem?
1. Running the setup.py file from the command line in Windows XP
2. Opening the program in IDLE and running it from there.


What is the expected output? What do you see instead?

I don't know what the output should be exactly, but I assume it would show
what files are copied and where. Instead, I get the following traceback:

Traceback (most recent call last):
  File
"J:\Python\Lib\site-packages\gdata.py-1.0.4\gdata.py-1.0.4\setup.py", line
39, in ?
    package_dir = {'gdata':'src/gdata', 'atom':'src/atom'}
  File "J:\Python\lib\distutils\core.py", line 137, in setup
    raise SystemExit, gen_usage(dist.script_name) + "\nerror: %s" % msg
SystemExit: usage: setup.py [global_opts] cmd1 [cmd1_opts] [cmd2
[cmd2_opts] ...]
   or: setup.py --help [cmd1 cmd2 ...]
   or: setup.py --help-commands
   or: setup.py cmd --help

error: no commands supplied

What version of the product are you using?

gdata.py-1.0.4

Please provide any additional information below.

I am using Python 2.4.3 on Windows XP Pro SP2. 

Original issue reported on code.google.com by [email protected] on 30 Jun 2007 at 11:35

Add code style guide

What steps will reproduce the problem?
1.
2.
3.

What is the expected output? What do you see instead?


Please use labels and text to provide additional information.

Original issue reported on code.google.com by [email protected] on 17 Feb 2007 at 1:21

Add Google Apps. Provisioning API service

What steps will reproduce the problem?
1.
2.
3.

What is the expected output? What do you see instead?


Please use labels and text to provide additional information.

Original issue reported on code.google.com by [email protected] on 28 Mar 2007 at 6:17

XML parsing is slow

Speed up the XML parsing and generation. This may require switching out
element tree with something else.

Original issue reported on code.google.com by [email protected] on 26 Jun 2007 at 6:14

Add code style guide

What steps will reproduce the problem?
1.
2.
3.

What is the expected output? What do you see instead?


Please use labels and text to provide additional information.

Original issue reported on code.google.com by [email protected] on 17 Feb 2007 at 1:22

Add secure AuthSub to gdata_service

Auth sub is present in gdata_service but secure mode is not. Add secure
AuthSub mode using signed requests as described here:
http://code.google.com/apis/accounts/AuthForWebApps.html#specialtopics

Original issue reported on code.google.com by [email protected] on 21 Feb 2007 at 1:54

Support proxy settings

Current connection are all direct. Add ability to specify a proxy for all
connections. This proxy could be set in a service instance.

Original issue reported on code.google.com by [email protected] on 25 Jun 2007 at 4:23

Incorrect names in DependencyModules page

ElementTree has no space.

Also, httplib and urllib are incorrectly named as they are spelled with
caps and a space.

I suspect the spelling issues were done for wiki issues to prevent them
turning into links, but it wouldn't hurt to use the correct names for
people who know the modules already.

Original issue reported on code.google.com by bcannon on 27 Mar 2007 at 3:05

Change type of custom elements in spreadsheet list

The custom elements in a spreadsheet list entry is implemented as a list,
but it could be implemented as a dict because all column headers are
unique. See discussion thread
http://groups.google.com/group/gdata-python-client-library-contributors/browse_t
hread/thread/a06972914830659e

Original issue reported on code.google.com by [email protected] on 29 May 2007 at 11:27

Support ElementTree included with Python 2.5

As of Python 2.5 ElementTree is included with Python as
xml.etree.ElementTree.  Changing the various imports that use ElementTree to::

 try:
   from xml.etree.ElementTree import ElementTree
 except ImportError:
   from elementTree import ElementTree

will allow supporting Python 2.5 usage of ElementTree as well as older
version of Python where people have installed ElementTree manually.

Original issue reported on code.google.com by bcannon on 27 Mar 2007 at 3:08

Add wiki style developer's guide

What steps will reproduce the problem?
1.
2.
3.

What is the expected output? What do you see instead?


Please use labels and text to provide additional information.

Original issue reported on code.google.com by [email protected] on 17 Feb 2007 at 12:45

Binary uploads not working in Windows

Reported in group:
http://groups.google.com/group/google-help-dataapi/browse_thread/thread/bad1a17c
ee7d1801/72f381e3a2a2e883#72f381e3a2a2e883

Occurs on Windows, not Linux.

The problem seems to be in the MediaSource class where the file handle is
opened. The flags passed in are 'r' when 'rb' is required (since the file
needs to be read as a binary one on Windows).

Original issue reported on code.google.com by [email protected] on 31 Jul 2007 at 12:07

Add parameters to calendar query class

Support for the following query parameters should be added to the calendar
query class:
futureevents
orderby
recurrence-expansion-start
recurrence-expansion-end
singleevents
sortorder

Original issue reported on code.google.com by [email protected] on 19 Jun 2007 at 4:35

Add script to run all tests

In the interest of promoting use of tests to ensure that changes have not 
broken functionality, create one script which will run all tests.

Original issue reported on code.google.com by [email protected] on 3 Apr 2007 at 12:33

XML produced is too verbose

The conversion from python objects to XML is done in such a way that the
namespace for each element is explicitly stated even when it is the same
namespace of its parent. This could be avoided if the appending of new
child nodes using element tree was done in this order:

create new element
append new element to parent
transfer object data to new element

Original issue reported on code.google.com by [email protected] on 30 May 2007 at 6:58

gdata.service Redirects don't preserve all parameters

If a GDataService object is making a request and it is given a redirect,
not all of the parameters are copied to the second request.

For example, a redirect on a Get will lose the encoding and converter
arguments.

Original issue reported on code.google.com by [email protected] on 6 Jul 2007 at 6:50

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.