aboutsummaryrefslogtreecommitdiff
path: root/devel/py-gdata
diff options
context:
space:
mode:
authorLi-Wen Hsu <lwhsu@FreeBSD.org>2009-11-21 07:50:53 +0000
committerLi-Wen Hsu <lwhsu@FreeBSD.org>2009-11-21 07:50:53 +0000
commit7134bd18ab20438055303e70f1bb187010398504 (patch)
tree4e46d7798d3a5e9c0019c00a177ac44d9760010d /devel/py-gdata
parentcbfda45aa269b8e8ab0470fce934f82b1b51b11b (diff)
downloadports-7134bd18ab20438055303e70f1bb187010398504.tar.gz
ports-7134bd18ab20438055303e70f1bb187010398504.zip
Notes
Diffstat (limited to 'devel/py-gdata')
-rw-r--r--devel/py-gdata/Makefile27
-rw-r--r--devel/py-gdata/distinfo6
-rw-r--r--devel/py-gdata/files/extra-patch-src_atom-mock_service.py13
-rw-r--r--devel/py-gdata/files/extra-patch-src_gdata_tlslite-TLSRecordLayer.py46
-rw-r--r--devel/py-gdata/files/extra-patch-src_gdata_tlslite-mathls.py69
-rw-r--r--devel/py-gdata/files/extra-patch-src_gdata_tlslite-messages.py22
-rw-r--r--devel/py-gdata/files/extra-patch-src_gdata_tlslite_utils-cryptomath.py20
-rw-r--r--devel/py-gdata/files/extra-patch-src_gdata_tlslite_utils-jython_compat.py29
-rw-r--r--devel/py-gdata/pkg-descr27
-rw-r--r--devel/py-gdata/pkg-plist65
10 files changed, 300 insertions, 24 deletions
diff --git a/devel/py-gdata/Makefile b/devel/py-gdata/Makefile
index 8cf168607b50..92ffd4e6d66a 100644
--- a/devel/py-gdata/Makefile
+++ b/devel/py-gdata/Makefile
@@ -6,7 +6,7 @@
#
PORTNAME= gdata
-PORTVERSION= 2.0.0
+PORTVERSION= 2.0.4
CATEGORIES= devel python
MASTER_SITES= ${MASTER_SITE_GOOGLE_CODE}
PKGNAMEPREFIX= ${PYTHON_PKGNAMEPREFIX}
@@ -18,6 +18,11 @@ PROJECTHOST= gdata-python-client
USE_PYTHON= yes
USE_PYDISTUTILS= yes
+# optional modules (see src/gdata/tlslite/utils/cryptomath.py)
+OPTIONS= M2CRYPTO "Add cryptography and SSL toolkit for Python" off \
+ PYCRYPTO "Add cryptography toolkit for Python" off \
+ GMPY "Add multiprecision arithmetic for Python" off
+
EXAMPLESDIR= ${PREFIX}/share/examples/py-${PORTNAME}
.include <bsd.port.pre.mk>
@@ -26,6 +31,26 @@ EXAMPLESDIR= ${PREFIX}/share/examples/py-${PORTNAME}
RUN_DEPENDS+= ${PYTHON_SITELIBDIR}/elementtree/__init__.py:${PORTSDIR}/devel/py-elementtree
.endif
+# avoid warning with Python > 2.5
+.if ${PYTHON_REL} > 250
+EXTRA_PATCHES+= ${FILESDIR}/extra-patch-src_atom-mock_service.py \
+ ${FILESDIR}/extra-patch-src_gdata_tlslite-mathls.py \
+ ${FILESDIR}/extra-patch-src_gdata_tlslite-messages.py \
+ ${FILESDIR}/extra-patch-src_gdata_tlslite-TLSRecordLayer.py \
+ ${FILESDIR}/extra-patch-src_gdata_tlslite_utils-cryptomath.py \
+ ${FILESDIR}/extra-patch-src_gdata_tlslite_utils-jython_compat.py
+.endif
+
+.if defined(WITH_M2CRYPTO)
+RUN_DEPENDS+= ${PYTHON_SITELIBDIR}/M2Crypto/__init__.py:${PORTSDIR}/security/py-m2crypto
+.endif
+.if defined(WITH_PYCRYPTO)
+RUN_DEPENDS+= ${PYTHON_SITELIBDIR}/Crypto/__init__.py:${PORTSDIR}/security/py-pycrypto
+.endif
+.if defined(WITH_GMPY)
+RUN_DEPENDS+= ${PYTHON_SITELIBDIR}/gmpy.so:${PORTSDIR}/math/py-gmpy
+.endif
+
.if !defined(NOPORTEXAMPLES)
post-install:
@${MKDIR} ${EXAMPLESDIR}
diff --git a/devel/py-gdata/distinfo b/devel/py-gdata/distinfo
index 51f5c8b2cbc6..9b753b5d6b1c 100644
--- a/devel/py-gdata/distinfo
+++ b/devel/py-gdata/distinfo
@@ -1,3 +1,3 @@
-MD5 (gdata-2.0.0.tar.gz) = 09de4e7a958cc2584e159b07185bdd31
-SHA256 (gdata-2.0.0.tar.gz) = 7ef2fbd46eeaa6bc1e6c93214fee2962598de5279b5110369a376746eef70f78
-SIZE (gdata-2.0.0.tar.gz) = 1070675
+MD5 (gdata-2.0.4.tar.gz) = 41dc20f46aa9d6584dfb268f7c4b73b8
+SHA256 (gdata-2.0.4.tar.gz) = ccd52834e0670adcb3e13f96eb61d61a25a77a9b0deda01eb2c3285e86d7384f
+SIZE (gdata-2.0.4.tar.gz) = 1284173
diff --git a/devel/py-gdata/files/extra-patch-src_atom-mock_service.py b/devel/py-gdata/files/extra-patch-src_atom-mock_service.py
new file mode 100644
index 000000000000..eeeb6b64fb40
--- /dev/null
+++ b/devel/py-gdata/files/extra-patch-src_atom-mock_service.py
@@ -0,0 +1,13 @@
+--- src/atom/mock_service.py.orig 2008-09-03 23:11:05.000000000 +0200
++++ src/atom/mock_service.py 2009-11-03 21:39:47.358018717 +0100
+@@ -34,8 +34,8 @@
+ real_request_handler = None
+
+ def ConcealValueWithSha(source):
+- import sha
+- return sha.new(source[:-5]).hexdigest()
++ import hashlib
++ return hashlibsha1.new(source[:-5]).hexdigest()
+
+ def DumpRecordings(conceal_func=ConcealValueWithSha):
+ if conceal_func:
diff --git a/devel/py-gdata/files/extra-patch-src_gdata_tlslite-TLSRecordLayer.py b/devel/py-gdata/files/extra-patch-src_gdata_tlslite-TLSRecordLayer.py
new file mode 100644
index 000000000000..68949ab471fd
--- /dev/null
+++ b/devel/py-gdata/files/extra-patch-src_gdata_tlslite-TLSRecordLayer.py
@@ -0,0 +1,46 @@
+--- src/gdata/tlslite/TLSRecordLayer.py.orig 2008-12-02 03:35:33.000000000 +0100
++++ src/gdata/tlslite/TLSRecordLayer.py 2009-11-03 21:51:47.220882123 +0100
+@@ -12,8 +12,7 @@
+ from utils.cryptomath import getRandomBytes
+ from utils import hmac
+ from FileObject import FileObject
+-import sha
+-import md5
++import hashlib
+ import socket
+ import errno
+ import traceback
+@@ -116,8 +115,8 @@
+ self._readBuffer = ""
+
+ #Handshake digests
+- self._handshake_md5 = md5.md5()
+- self._handshake_sha = sha.sha()
++ self._handshake_md5 = hashlib.md5()
++ self._handshake_sha = hashlib.sha1()
+
+ #TLS Protocol Version
+ self.version = (0,0) #read-only
+@@ -935,8 +934,8 @@
+
+ def _handshakeStart(self, client):
+ self._client = client
+- self._handshake_md5 = md5.md5()
+- self._handshake_sha = sha.sha()
++ self._handshake_md5 = hashlib.md5()
++ self._handshake_sha = hashlib.sha1()
+ self._handshakeBuffer = []
+ self.allegedSharedKeyUsername = None
+ self.allegedSrpUsername = None
+@@ -1114,9 +1113,9 @@
+ imac_md5.update(label + masterSecretStr + '\x36'*48)
+ imac_sha.update(label + masterSecretStr + '\x36'*40)
+
+- md5Str = md5.md5(masterSecretStr + ('\x5c'*48) + \
++ md5Str = hashlib.md5(masterSecretStr + ('\x5c'*48) + \
+ imac_md5.digest()).digest()
+- shaStr = sha.sha(masterSecretStr + ('\x5c'*40) + \
++ shaStr = hashlib.sha1(masterSecretStr + ('\x5c'*40) + \
+ imac_sha.digest()).digest()
+
+ return stringToBytes(md5Str + shaStr)
diff --git a/devel/py-gdata/files/extra-patch-src_gdata_tlslite-mathls.py b/devel/py-gdata/files/extra-patch-src_gdata_tlslite-mathls.py
new file mode 100644
index 000000000000..5938e8a270af
--- /dev/null
+++ b/devel/py-gdata/files/extra-patch-src_gdata_tlslite-mathls.py
@@ -0,0 +1,69 @@
+--- src/gdata/tlslite/mathtls.py.orig 2008-12-02 03:35:35.000000000 +0100
++++ src/gdata/tlslite/mathtls.py 2009-11-03 21:45:19.140316480 +0100
+@@ -4,8 +4,7 @@
+ from utils.cryptomath import *
+
+ import hmac
+-import md5
+-import sha
++import hashlib
+
+ #1024, 1536, 2048, 3072, 4096, 6144, and 8192 bit groups]
+ goodGroupParameters = [(2,0xEEAF0AB9ADB38DD69C33F80AFA8FC5E86072618775FF3C0B9EA2314C9C256576D674DF7496EA81D3383B4813D692C6E0E0D5D8E250B98BE48E495C1D6089DAD15DC7D7B46154D6B6CE8EF4AD69B15D4982559B297BCF1885C529F566660E57EC68EDBC3C05726CC02FD4CBF4976EAA9AFD5138FE8376435B9FC61D2FC0EB06E3),\
+@@ -38,8 +37,10 @@
+ S2 = secret[ int(math.floor(len(secret)/2.0)) : ]
+
+ #Run the left half through P_MD5 and the right half through P_SHA1
+- p_md5 = P_hash(md5, S1, concatArrays(stringToBytes(label), seed), length)
+- p_sha1 = P_hash(sha, S2, concatArrays(stringToBytes(label), seed), length)
++ p_md5 = P_hash(hashlib.md5, S1, concatArrays(stringToBytes(label), \
++ seed), length)
++ p_sha1 = P_hash(hashlib.sha1, S2, concatArrays(stringToBytes(label), \
++ seed), length)
+
+ #XOR the output values and return the result
+ for x in range(length):
+@@ -54,8 +55,8 @@
+ index = 0
+ for x in range(26):
+ A = chr(ord('A')+x) * (x+1) # 'A', 'BB', 'CCC', etc..
+- input = secretStr + sha.sha(A + secretStr + seedStr).digest()
+- output = md5.md5(input).digest()
++ input = secretStr + hashlib.sha1(A + secretStr + seedStr).digest()
++ output = hashlib.md5(input).digest()
+ for c in output:
+ if index >= length:
+ return bytes
+@@ -68,7 +69,8 @@
+ raise ValueError("username too long")
+ if len(salt)>=256:
+ raise ValueError("salt too long")
+- return stringToNumber(sha.sha(salt + sha.sha(username + ":" + password)\
++ return stringToNumber(hashlib.sha1(salt + \
++ hashlib.sha1(username + ":" + password)\
+ .digest()).digest())
+
+ #This function is used by VerifierDB.makeVerifier
+@@ -88,10 +90,10 @@
+ return s
+
+ def makeU(N, A, B):
+- return stringToNumber(sha.sha(PAD(N, A) + PAD(N, B)).digest())
++ return stringToNumber(hashlib.sha1(PAD(N, A) + PAD(N, B)).digest())
+
+ def makeK(N, g):
+- return stringToNumber(sha.sha(numberToString(N) + PAD(N, g)).digest())
++ return stringToNumber(hashlib.sha1(numberToString(N) + PAD(N, g)).digest())
+
+
+ """
+@@ -113,8 +115,7 @@
+ digestmod: A module supporting PEP 247. Defaults to the md5 module.
+ """
+ if digestmod is None:
+- import md5
+- digestmod = md5
++ digestmod = hashlib.md5
+
+ if key == None: #TREVNEW - for faster copying
+ return #TREVNEW
diff --git a/devel/py-gdata/files/extra-patch-src_gdata_tlslite-messages.py b/devel/py-gdata/files/extra-patch-src_gdata_tlslite-messages.py
new file mode 100644
index 000000000000..b8945df772ac
--- /dev/null
+++ b/devel/py-gdata/files/extra-patch-src_gdata_tlslite-messages.py
@@ -0,0 +1,22 @@
+--- src/gdata/tlslite/messages.py.orig 2008-12-02 03:35:34.000000000 +0100
++++ src/gdata/tlslite/messages.py 2009-11-03 21:48:12.189964805 +0100
+@@ -8,8 +8,7 @@
+ from X509 import X509
+ from X509CertChain import X509CertChain
+
+-import sha
+-import md5
++import hashlib
+
+ class RecordHeader3:
+ def __init__(self):
+@@ -405,7 +404,8 @@
+ try:
+ bytes = clientRandom + serverRandom + self.write()[4:]
+ s = bytesToString(bytes)
+- return stringToBytes(md5.md5(s).digest() + sha.sha(s).digest())
++ return stringToBytes(hashlib.md5(s).digest() \
++ + hashlib.sha1(s).digest())
+ finally:
+ self.cipherSuite = oldCipherSuite
+
diff --git a/devel/py-gdata/files/extra-patch-src_gdata_tlslite_utils-cryptomath.py b/devel/py-gdata/files/extra-patch-src_gdata_tlslite_utils-cryptomath.py
new file mode 100644
index 000000000000..257943ae1fde
--- /dev/null
+++ b/devel/py-gdata/files/extra-patch-src_gdata_tlslite_utils-cryptomath.py
@@ -0,0 +1,20 @@
+--- src/gdata/tlslite/utils/cryptomath.py.orig 2008-12-02 03:35:26.000000000 +0100
++++ src/gdata/tlslite/utils/cryptomath.py 2009-11-03 21:06:12.475992458 +0100
+@@ -6,7 +6,7 @@
+ import math
+ import base64
+ import binascii
+-import sha
++import hashlib
+
+ from compat import *
+
+@@ -195,7 +195,7 @@
+ return int(math.ceil(bits / 8.0))
+
+ def hashAndBase64(s):
+- return stringToBase64(sha.sha(s).digest())
++ return stringToBase64(hashlib.sha1(s).digest())
+
+ def getBase64Nonce(numChars=22): #defaults to an 132 bit nonce
+ bytes = getRandomBytes(numChars)
diff --git a/devel/py-gdata/files/extra-patch-src_gdata_tlslite_utils-jython_compat.py b/devel/py-gdata/files/extra-patch-src_gdata_tlslite_utils-jython_compat.py
new file mode 100644
index 000000000000..126066c65aa3
--- /dev/null
+++ b/devel/py-gdata/files/extra-patch-src_gdata_tlslite_utils-jython_compat.py
@@ -0,0 +1,29 @@
+--- src/gdata/tlslite/utils/jython_compat.py.orig 2008-12-02 03:35:28.000000000 +0100
++++ src/gdata/tlslite/utils/jython_compat.py 2009-11-03 21:55:05.916366480 +0100
+@@ -1,7 +1,7 @@
+ """Miscellaneous functions to mask Python/Jython differences."""
+
+ import os
+-import sha
++import hashlib
+
+ if os.name != "java":
+ BaseException = Exception
+@@ -43,7 +43,7 @@
+
+ #Factory function for getting a SHA1 object
+ def getSHA1(s):
+- return sha.sha(s)
++ return hashlib.sha1(s)
+
+ import sys
+ import traceback
+@@ -175,7 +175,7 @@
+ #release, and needs to be patched
+ def getSHA1(s):
+ #return JCE_SHA1(s)
+- return sha.sha(s)
++ return hashlib.sha1(s)
+
+
+ #Adjust the string to an array of bytes
diff --git a/devel/py-gdata/pkg-descr b/devel/py-gdata/pkg-descr
index b8499ac860e4..be89e8439daa 100644
--- a/devel/py-gdata/pkg-descr
+++ b/devel/py-gdata/pkg-descr
@@ -3,23 +3,16 @@ writing data on the web.
Each of the following Google services provides a Google data API:
- * Base
- * Blogger
- * Calendar
- * Health
- * Picasa Web Albums
- * Spreadsheets
- * Documents List
- * Contacts
- * YouTube
- * Google Apps Provisioning
- * Code Search
- * Notebook
- * Webmaster Tools API
- * Google Analytics Data Export API
- * Google Book Search Data API
- * Google Finance Portfolio Data API
- * Google Maps Data API
+ * Base * Code Search
+ * Blogger * Notebook
+ * Calendar * Webmaster Tools API
+ * Health * Google Analytics Data Export API
+ * Picasa Web Albums * Google Book Search Data API
+ * Spreadsheets * Google Finance Portfolio Data API
+ * Documents List * Google Maps Data API
+ * Contacts * Sites Data API
+ * YouTube * Issue Tracker Data API
+ * Google Apps Provisioning
The GData Python Client Library provides a library and source code that
make it easy to access data through Google Data APIs.
diff --git a/devel/py-gdata/pkg-plist b/devel/py-gdata/pkg-plist
index 208a40e05784..882dc9828dc5 100644
--- a/devel/py-gdata/pkg-plist
+++ b/devel/py-gdata/pkg-plist
@@ -124,6 +124,12 @@
%%PYTHON_SITELIBDIR%%/gdata/apps/__init__.py
%%PYTHON_SITELIBDIR%%/gdata/apps/__init__.pyc
%%PYTHON_SITELIBDIR%%/gdata/apps/__init__.pyo
+%%PYTHON_SITELIBDIR%%/gdata/apps/adminsettings/__init__.py
+%%PYTHON_SITELIBDIR%%/gdata/apps/adminsettings/__init__.pyc
+%%PYTHON_SITELIBDIR%%/gdata/apps/adminsettings/__init__.pyo
+%%PYTHON_SITELIBDIR%%/gdata/apps/adminsettings/service.py
+%%PYTHON_SITELIBDIR%%/gdata/apps/adminsettings/service.pyc
+%%PYTHON_SITELIBDIR%%/gdata/apps/adminsettings/service.pyo
%%PYTHON_SITELIBDIR%%/gdata/apps/emailsettings/__init__.py
%%PYTHON_SITELIBDIR%%/gdata/apps/emailsettings/__init__.pyc
%%PYTHON_SITELIBDIR%%/gdata/apps/emailsettings/__init__.pyo
@@ -223,6 +229,15 @@
%%PYTHON_SITELIBDIR%%/gdata/health/service.py
%%PYTHON_SITELIBDIR%%/gdata/health/service.pyc
%%PYTHON_SITELIBDIR%%/gdata/health/service.pyo
+%%PYTHON_SITELIBDIR%%/gdata/maps/__init__.py
+%%PYTHON_SITELIBDIR%%/gdata/maps/__init__.pyc
+%%PYTHON_SITELIBDIR%%/gdata/maps/__init__.pyo
+%%PYTHON_SITELIBDIR%%/gdata/maps/client.py
+%%PYTHON_SITELIBDIR%%/gdata/maps/client.pyc
+%%PYTHON_SITELIBDIR%%/gdata/maps/client.pyo
+%%PYTHON_SITELIBDIR%%/gdata/maps/data.py
+%%PYTHON_SITELIBDIR%%/gdata/maps/data.pyc
+%%PYTHON_SITELIBDIR%%/gdata/maps/data.pyo
%%PYTHON_SITELIBDIR%%/gdata/media/__init__.py
%%PYTHON_SITELIBDIR%%/gdata/media/__init__.pyc
%%PYTHON_SITELIBDIR%%/gdata/media/__init__.pyo
@@ -238,12 +253,30 @@
%%PYTHON_SITELIBDIR%%/gdata/photos/service.py
%%PYTHON_SITELIBDIR%%/gdata/photos/service.pyc
%%PYTHON_SITELIBDIR%%/gdata/photos/service.pyo
+%%PYTHON_SITELIBDIR%%/gdata/projecthosting/__init__.py
+%%PYTHON_SITELIBDIR%%/gdata/projecthosting/__init__.pyc
+%%PYTHON_SITELIBDIR%%/gdata/projecthosting/__init__.pyo
+%%PYTHON_SITELIBDIR%%/gdata/projecthosting/client.py
+%%PYTHON_SITELIBDIR%%/gdata/projecthosting/client.pyc
+%%PYTHON_SITELIBDIR%%/gdata/projecthosting/client.pyo
+%%PYTHON_SITELIBDIR%%/gdata/projecthosting/data.py
+%%PYTHON_SITELIBDIR%%/gdata/projecthosting/data.pyc
+%%PYTHON_SITELIBDIR%%/gdata/projecthosting/data.pyo
%%PYTHON_SITELIBDIR%%/gdata/sample_util.py
%%PYTHON_SITELIBDIR%%/gdata/sample_util.pyc
%%PYTHON_SITELIBDIR%%/gdata/sample_util.pyo
%%PYTHON_SITELIBDIR%%/gdata/service.py
%%PYTHON_SITELIBDIR%%/gdata/service.pyc
%%PYTHON_SITELIBDIR%%/gdata/service.pyo
+%%PYTHON_SITELIBDIR%%/gdata/sites/__init__.py
+%%PYTHON_SITELIBDIR%%/gdata/sites/__init__.pyc
+%%PYTHON_SITELIBDIR%%/gdata/sites/__init__.pyo
+%%PYTHON_SITELIBDIR%%/gdata/sites/client.py
+%%PYTHON_SITELIBDIR%%/gdata/sites/client.pyc
+%%PYTHON_SITELIBDIR%%/gdata/sites/client.pyo
+%%PYTHON_SITELIBDIR%%/gdata/sites/data.py
+%%PYTHON_SITELIBDIR%%/gdata/sites/data.pyc
+%%PYTHON_SITELIBDIR%%/gdata/sites/data.pyo
%%PYTHON_SITELIBDIR%%/gdata/spreadsheet/__init__.py
%%PYTHON_SITELIBDIR%%/gdata/spreadsheet/__init__.pyc
%%PYTHON_SITELIBDIR%%/gdata/spreadsheet/__init__.pyo
@@ -253,12 +286,18 @@
%%PYTHON_SITELIBDIR%%/gdata/spreadsheet/text_db.py
%%PYTHON_SITELIBDIR%%/gdata/spreadsheet/text_db.pyc
%%PYTHON_SITELIBDIR%%/gdata/spreadsheet/text_db.pyo
+%%PYTHON_SITELIBDIR%%/gdata/spreadsheets/__init__.py
+%%PYTHON_SITELIBDIR%%/gdata/spreadsheets/__init__.pyc
+%%PYTHON_SITELIBDIR%%/gdata/spreadsheets/__init__.pyo
+%%PYTHON_SITELIBDIR%%/gdata/spreadsheets/client.py
+%%PYTHON_SITELIBDIR%%/gdata/spreadsheets/client.pyc
+%%PYTHON_SITELIBDIR%%/gdata/spreadsheets/client.pyo
+%%PYTHON_SITELIBDIR%%/gdata/spreadsheets/data.py
+%%PYTHON_SITELIBDIR%%/gdata/spreadsheets/data.pyc
+%%PYTHON_SITELIBDIR%%/gdata/spreadsheets/data.pyo
%%PYTHON_SITELIBDIR%%/gdata/test_config.py
%%PYTHON_SITELIBDIR%%/gdata/test_config.pyc
%%PYTHON_SITELIBDIR%%/gdata/test_config.pyo
-%%PYTHON_SITELIBDIR%%/gdata/test_config_template.py
-%%PYTHON_SITELIBDIR%%/gdata/test_config_template.pyc
-%%PYTHON_SITELIBDIR%%/gdata/test_config_template.pyo
%%PYTHON_SITELIBDIR%%/gdata/test_data.py
%%PYTHON_SITELIBDIR%%/gdata/test_data.pyc
%%PYTHON_SITELIBDIR%%/gdata/test_data.pyo
@@ -462,10 +501,14 @@
@dirrm %%PYTHON_SITELIBDIR%%/gdata/tlslite/utils
@dirrm %%PYTHON_SITELIBDIR%%/gdata/tlslite/integration
@dirrm %%PYTHON_SITELIBDIR%%/gdata/tlslite
+@dirrm %%PYTHON_SITELIBDIR%%/gdata/spreadsheets
@dirrm %%PYTHON_SITELIBDIR%%/gdata/spreadsheet
+@dirrm %%PYTHON_SITELIBDIR%%/gdata/sites
+@dirrm %%PYTHON_SITELIBDIR%%/gdata/projecthosting
@dirrm %%PYTHON_SITELIBDIR%%/gdata/photos
@dirrm %%PYTHON_SITELIBDIR%%/gdata/oauth
@dirrm %%PYTHON_SITELIBDIR%%/gdata/media
+@dirrm %%PYTHON_SITELIBDIR%%/gdata/maps
@dirrm %%PYTHON_SITELIBDIR%%/gdata/health
@dirrm %%PYTHON_SITELIBDIR%%/gdata/geo
@dirrm %%PYTHON_SITELIBDIR%%/gdata/finance
@@ -480,6 +523,7 @@
@dirrm %%PYTHON_SITELIBDIR%%/gdata/apps/migration
@dirrm %%PYTHON_SITELIBDIR%%/gdata/apps/groups
@dirrm %%PYTHON_SITELIBDIR%%/gdata/apps/emailsettings
+@dirrm %%PYTHON_SITELIBDIR%%/gdata/apps/adminsettings
@dirrm %%PYTHON_SITELIBDIR%%/gdata/apps
@dirrm %%PYTHON_SITELIBDIR%%/gdata/analytics
@dirrm %%PYTHON_SITELIBDIR%%/gdata/alt
@@ -491,6 +535,7 @@
@dirrm %%PYTHON_SITELIBDIR%%/gdata/Crypto
@dirrm %%PYTHON_SITELIBDIR%%/gdata
@dirrm %%PYTHON_SITELIBDIR%%/atom
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/apps/adminsettings_example.py
%%PORTEXAMPLES%%%%EXAMPLESDIR%%/authsub/secure_authsub.py
%%PORTEXAMPLES%%%%EXAMPLESDIR%%/base/baseAttributesQueryExample.py
%%PORTEXAMPLES%%%%EXAMPLESDIR%%/base/baseItemTypesQueryExample.py
@@ -504,11 +549,19 @@
%%PORTEXAMPLES%%%%EXAMPLESDIR%%/blogger/app/list_blogs.html
%%PORTEXAMPLES%%%%EXAMPLESDIR%%/blogger/app/post_editor.html
%%PORTEXAMPLES%%%%EXAMPLESDIR%%/blogger/app/welcome.html
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/blogger/oauth-appengine/app.yaml
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/blogger/oauth-appengine/css/index.css
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/blogger/oauth-appengine/index.html
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/blogger/oauth-appengine/index.yaml
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/blogger/oauth-appengine/main.py
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/blogger/oauth-appengine/oauth.py
%%PORTEXAMPLES%%%%EXAMPLESDIR%%/calendar/calendarExample.py
%%PORTEXAMPLES%%%%EXAMPLESDIR%%/codesearch/CodesearchExample.py
%%PORTEXAMPLES%%%%EXAMPLESDIR%%/contacts/contacts_example.py
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/contacts/profiles_example.py
%%PORTEXAMPLES%%%%EXAMPLESDIR%%/docs/docs_example.py
%%PORTEXAMPLES%%%%EXAMPLESDIR%%/finance/test_finance.py
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/maps/MapsExample.py
%%PORTEXAMPLES%%%%EXAMPLESDIR%%/mashups/birthdaySample.py
%%PORTEXAMPLES%%%%EXAMPLESDIR%%/oauth/2_legged_oauth.py
%%PORTEXAMPLES%%%%EXAMPLESDIR%%/oauth/oauth_example.py
@@ -535,12 +588,14 @@
%%PORTEXAMPLES%%%%EXAMPLESDIR%%/oauth/oauth_on_appengine/js/jquery.corners.min.js
%%PORTEXAMPLES%%%%EXAMPLESDIR%%/oauth/oauth_on_appengine/main_hmac.py
%%PORTEXAMPLES%%%%EXAMPLESDIR%%/oauth/oauth_on_appengine/main_rsa.py
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/sites/sites_example.py
%%PORTEXAMPLES%%%%EXAMPLESDIR%%/spreadsheets/spreadsheetExample.py
%%PORTEXAMPLES%%%%EXAMPLESDIR%%/webmastertools/AddDeleteExampleDotCom.py
%%PORTEXAMPLES%%%%EXAMPLESDIR%%/webmastertools/SitemapsFeedSummary.py
%%PORTEXAMPLES%%%%EXAMPLESDIR%%/webmastertools/SitesFeedSummary.py
%%PORTEXAMPLES%%@dirrm %%EXAMPLESDIR%%/webmastertools
%%PORTEXAMPLES%%@dirrm %%EXAMPLESDIR%%/spreadsheets
+%%PORTEXAMPLES%%@dirrm %%EXAMPLESDIR%%/sites
%%PORTEXAMPLES%%@dirrm %%EXAMPLESDIR%%/oauth/oauth_on_appengine/js
%%PORTEXAMPLES%%@dirrm %%EXAMPLESDIR%%/oauth/oauth_on_appengine/images
%%PORTEXAMPLES%%@dirrm %%EXAMPLESDIR%%/oauth/oauth_on_appengine/css
@@ -548,13 +603,17 @@
%%PORTEXAMPLES%%@dirrm %%EXAMPLESDIR%%/oauth/oauth_on_appengine
%%PORTEXAMPLES%%@dirrm %%EXAMPLESDIR%%/oauth
%%PORTEXAMPLES%%@dirrm %%EXAMPLESDIR%%/mashups
+%%PORTEXAMPLES%%@dirrm %%EXAMPLESDIR%%/maps
%%PORTEXAMPLES%%@dirrm %%EXAMPLESDIR%%/finance
%%PORTEXAMPLES%%@dirrm %%EXAMPLESDIR%%/docs
%%PORTEXAMPLES%%@dirrm %%EXAMPLESDIR%%/contacts
%%PORTEXAMPLES%%@dirrm %%EXAMPLESDIR%%/codesearch
%%PORTEXAMPLES%%@dirrm %%EXAMPLESDIR%%/calendar
+%%PORTEXAMPLES%%@dirrm %%EXAMPLESDIR%%/blogger/oauth-appengine/css
+%%PORTEXAMPLES%%@dirrm %%EXAMPLESDIR%%/blogger/oauth-appengine
%%PORTEXAMPLES%%@dirrm %%EXAMPLESDIR%%/blogger/app
%%PORTEXAMPLES%%@dirrm %%EXAMPLESDIR%%/blogger
%%PORTEXAMPLES%%@dirrm %%EXAMPLESDIR%%/base
%%PORTEXAMPLES%%@dirrm %%EXAMPLESDIR%%/authsub
+%%PORTEXAMPLES%%@dirrm %%EXAMPLESDIR%%/apps
%%PORTEXAMPLES%%@dirrm %%EXAMPLESDIR%%