diff options
author | Daniele Varrazzo <daniele.varrazzo@gmail.com> | 2017-08-23 13:18:47 +0100 |
---|---|---|
committer | Daniele Varrazzo <daniele.varrazzo@gmail.com> | 2017-08-23 13:42:49 +0100 |
commit | 22c7114168e8343a009b284804f221c20c9ec058 (patch) | |
tree | f681879280f061b9e7f4a4ee8c67f7605c37c396 | |
parent | 2c836a2935af8ee0fb8f1de197355a33f2812804 (diff) | |
download | psycopg2-22c7114168e8343a009b284804f221c20c9ec058.tar.gz |
Disable uploading docs on pythonhosted
The service is deprecated in favour of RTD. There is also no more way to
upload redirects there, so #581 cannot be fixed.
Official docs are on http://initd.org/psycopg/docs/
-rw-r--r-- | doc/Makefile | 2 | ||||
-rwxr-xr-x | doc/src/tools/pypi_docs_upload.py | 166 | ||||
-rwxr-xr-x | scripts/upload-docs.sh | 15 |
3 files changed, 1 insertions, 182 deletions
diff --git a/doc/Makefile b/doc/Makefile index 2f5e8e6..2903b9d 100644 --- a/doc/Makefile +++ b/doc/Makefile @@ -30,7 +30,7 @@ upload: # this command requires ssh configured to the proper target tar czf - -C html . | ssh psycoweb tar xzvf - -C docs/current # this command requires a .pypirc with the right privileges - python src/tools/pypi_docs_upload.py psycopg2 $$(pwd)/html + # python src/tools/pypi_docs_upload.py psycopg2 $$(pwd)/html clean: $(MAKE) $(SPHOPTS) -C src $@ diff --git a/doc/src/tools/pypi_docs_upload.py b/doc/src/tools/pypi_docs_upload.py deleted file mode 100755 index 197ec87..0000000 --- a/doc/src/tools/pypi_docs_upload.py +++ /dev/null @@ -1,166 +0,0 @@ -# -*- coding: utf-8 -*- -""" - Standalone script to upload a project docs on PyPI - - Hacked together from the following distutils extension, avaliable from - https://bitbucket.org/jezdez/sphinx-pypi-upload/overview (ver. 0.2.1) - - sphinx_pypi_upload - ~~~~~~~~~~~~~~~~~~ - - setuptools command for uploading Sphinx documentation to PyPI - - :author: Jannis Leidel - :contact: jannis@leidel.info - :copyright: Copyright 2009, Jannis Leidel. - :license: BSD, see LICENSE for details. -""" - -import os -import sys -import socket -import zipfile -import httplib -import base64 -import urlparse -import tempfile -import cStringIO as StringIO -from ConfigParser import ConfigParser - -from distutils import log -from distutils.command.upload import upload -from distutils.errors import DistutilsOptionError - -class UploadDoc(object): - """Distutils command to upload Sphinx documentation.""" - def __init__(self, name, upload_dir, repository=None): - self.name = name - self.upload_dir = upload_dir - - p = ConfigParser() - p.read(os.path.expanduser('~/.pypirc')) - self.username = p.get('pypi', 'username') - self.password = p.get('pypi', 'password') - - self.show_response = False - self.repository = repository or upload.DEFAULT_REPOSITORY - - def create_zipfile(self): - # name = self.distribution.metadata.get_name() - name = self.name - tmp_dir = tempfile.mkdtemp() - tmp_file = os.path.join(tmp_dir, "%s.zip" % name) - zip_file = zipfile.ZipFile(tmp_file, "w") - for root, dirs, files in os.walk(self.upload_dir): - if not files: - raise DistutilsOptionError, \ - "no files found in upload directory '%s'" % self.upload_dir - for name in files: - full = os.path.join(root, name) - relative = root[len(self.upload_dir):].lstrip(os.path.sep) - dest = os.path.join(relative, name) - zip_file.write(full, dest) - zip_file.close() - return tmp_file - - def upload_file(self, filename): - content = open(filename,'rb').read() - # meta = self.distribution.metadata - data = { - ':action': 'doc_upload', - 'name': self.name, # meta.get_name(), - 'content': (os.path.basename(filename),content), - } - # set up the authentication - auth = "Basic " + base64.encodestring(self.username + ":" + self.password).strip() - - # Build up the MIME payload for the POST data - boundary = '--------------GHSKFJDLGDS7543FJKLFHRE75642756743254' - sep_boundary = '\n--' + boundary - end_boundary = sep_boundary + '--' - body = StringIO.StringIO() - for key, value in data.items(): - # handle multiple entries for the same name - if type(value) != type([]): - value = [value] - for value in value: - if type(value) is tuple: - fn = ';filename="%s"' % value[0] - value = value[1] - else: - fn = "" - value = str(value) - body.write(sep_boundary) - body.write('\nContent-Disposition: form-data; name="%s"'%key) - body.write(fn) - body.write("\n\n") - body.write(value) - if value and value[-1] == '\r': - body.write('\n') # write an extra newline (lurve Macs) - body.write(end_boundary) - body.write("\n") - body = body.getvalue() - - self.announce("Submitting documentation to %s" % (self.repository), log.INFO) - - # build the Request - # We can't use urllib2 since we need to send the Basic - # auth right with the first request - schema, netloc, url, params, query, fragments = \ - urlparse.urlparse(self.repository) - assert not params and not query and not fragments - if schema == 'http': - http = httplib.HTTPConnection(netloc) - elif schema == 'https': - http = httplib.HTTPSConnection(netloc) - else: - raise AssertionError, "unsupported schema "+schema - - data = '' - loglevel = log.INFO - try: - http.connect() - http.putrequest("POST", url) - http.putheader('Content-type', - 'multipart/form-data; boundary=%s'%boundary) - http.putheader('Content-length', str(len(body))) - http.putheader('Authorization', auth) - http.endheaders() - http.send(body) - except socket.error, e: - self.announce(str(e), log.ERROR) - return - - response = http.getresponse() - if response.status == 200: - self.announce('Server response (%s): %s' % (response.status, response.reason), - log.INFO) - elif response.status == 301: - location = response.getheader('Location') - if location is None: - location = 'http://packages.python.org/%s/' % self.name # meta.get_name() - self.announce('Upload successful. Visit %s' % location, - log.INFO) - else: - self.announce('Upload failed (%s): %s' % (response.status, response.reason), - log.ERROR) - if self.show_response: - print '-'*75, response.read(), '-'*75 - - def run(self): - zip_file = self.create_zipfile() - self.upload_file(zip_file) - os.remove(zip_file) - - def announce(self, msg, *args, **kwargs): - print msg - -if __name__ == '__main__': - if len(sys.argv) != 3: - print >>sys.stderr, "usage: %s PROJECT UPLOAD_DIR" % sys.argv[0] - sys.exit(2) - - project, upload_dir = sys.argv[1:] - up = UploadDoc(project, upload_dir=upload_dir) - up.run() - diff --git a/scripts/upload-docs.sh b/scripts/upload-docs.sh deleted file mode 100755 index c450270..0000000 --- a/scripts/upload-docs.sh +++ /dev/null @@ -1,15 +0,0 @@ -#!/bin/bash - -DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" -DOCDIR="$DIR/../doc" - -# this command requires ssh configured to the proper target -tar czf - -C "$DOCDIR/html" . | ssh psycoweb tar xzvf - -C docs/current - -# download the script to upload the docs to PyPI -test -e "$DIR/pypi_docs_upload.py" \ - || wget -O "$DIR/pypi_docs_upload.py" \ - https://gist.githubusercontent.com/dvarrazzo/dac46237070d69dbc075/raw - -# this command requires a ~/.pypirc with the right privileges -python "$DIR/pypi_docs_upload.py" psycopg2 "$DOCDIR/html" |