Skip to content

Commit

Permalink
Merge pull request #1154 from soltanmm/pypi
Browse files Browse the repository at this point in the history
Enable PyPI package management
  • Loading branch information
tbetbetbe committed Apr 6, 2015
2 parents fdd65f3 + 451887b commit e4f2f15
Show file tree
Hide file tree
Showing 7 changed files with 129 additions and 11 deletions.
22 changes: 21 additions & 1 deletion src/python/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,14 @@ $ tools/run_tests/run_python.sh
Installing
-----------------------

- [Install the gRPC core](https://github.com/grpc/grpc/blob/master/INSTALL)
- Install the gRPC core
- [Debian package](https://github.com/grpc/grpc/releases)
```
$ wget https://github.com/grpc/grpc/releases/download/release-0_5_0/libgrpc_0.5.0_amd64.deb
$ wget https://github.com/grpc/grpc/releases/download/release-0_5_0/libgrpc-dev_0.5.0_amd64.deb
$ sudo dpkg -i libgrpc_0.5.0_amd64.deb libgrpc-dev_0.5.0_amd64.deb
```
- [From source](https://github.com/grpc/grpc/blob/master/INSTALL)

- Install gRPC Python's dependencies
```
Expand All @@ -53,3 +60,16 @@ $ pip install -r src/python/requirements.txt
```
$ pip install src/python/src
```

Packaging to PyPI
-----------------------

- Install packaging dependencies
```
$ pip install setuptools twine
```

- Push to PyPI
```
$ ../../tools/distrib/python/submit.py
```
16 changes: 10 additions & 6 deletions src/python/interop/setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@

"""A setup module for the GRPC Python interop testing package."""

from distutils import core as _core
import setuptools

_PACKAGES = (
'interop',
Expand All @@ -45,9 +45,13 @@
'credentials/server1.pem',]
}

_INSTALL_REQUIRES = ['grpc-2015>=0.0.1']
_INSTALL_REQUIRES = ['grpcio>=0.4.0a4']

_core.setup(
name='interop', version='0.0.1', packages=_PACKAGES,
package_dir=_PACKAGE_DIRECTORIES, package_data=_PACKAGE_DATA,
install_requires=_INSTALL_REQUIRES)
setuptools.setup(
name='interop',
version='0.0.1',
packages=_PACKAGES,
package_dir=_PACKAGE_DIRECTORIES,
package_data=_PACKAGE_DATA,
install_requires=_INSTALL_REQUIRES
)
3 changes: 3 additions & 0 deletions src/python/src/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
MANIFEST
grpcio.egg-info/
dist/
1 change: 1 addition & 0 deletions src/python/src/MANIFEST.in
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
graft grpc
27 changes: 27 additions & 0 deletions src/python/src/README.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
gRPC Python
===========

Package for GRPC Python.

Dependencies
------------

Ensure that you have installed GRPC core.

On debian linux systems, install from our released deb package:

::

$ wget https://github.com/grpc/grpc/releases/download/release-0_5_0/libgrpc_0.5.0_amd64.deb
$ wget https://github.com/grpc/grpc/releases/download/release-0_5_0/libgrpc-dev_0.5.0_amd64.deb
$ sudo dpkg -i libgrpc_0.5.0_amd64.deb libgrpc-dev_0.5.0_amd64.deb

Otherwise, install from source:

::

git clone https://github.com/grpc/grpc.git
cd grpc
./configure
make && make install

17 changes: 13 additions & 4 deletions src/python/src/setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@
"""A setup module for the GRPC Python package."""

from distutils import core as _core
import setuptools

_EXTENSION_SOURCES = (
'grpc/_adapter/_c.c',
Expand Down Expand Up @@ -80,7 +81,15 @@
'grpc.framework': 'grpc/framework',
}

_core.setup(
name='grpc-2015', version='0.4.0',
ext_modules=[_EXTENSION_MODULE], packages=list(_PACKAGES),
package_dir=_PACKAGE_DIRECTORIES)
setuptools.setup(
name='grpcio',
version='0.4.0a8',
ext_modules=[_EXTENSION_MODULE],
packages=list(_PACKAGES),
package_dir=_PACKAGE_DIRECTORIES,
install_requires=[
'enum34==1.0.4',
'futures==2.2.0',
'protobuf==3.0.0-alpha-1'
]
)
54 changes: 54 additions & 0 deletions tools/distrib/python/submit.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
#!/usr/bin/env python

import argparse
import os
import shutil
import subprocess

parser = argparse.ArgumentParser(
description='Submit the package to a PyPI repository.')
parser.add_argument(
'--repository', '-r', metavar='r', type=str, default='pypi',
help='The repository to push the package to. '
'Ensure the value appears in your .pypirc file. '
'Defaults to "pypi".'
)
parser.add_argument(
'--identity', '-i', metavar='i', type=str,
help='GPG identity to sign the files with.'
)
parser.add_argument(
'--username', '-u', metavar='u', type=str,
help='Username to authenticate with the repository. Not needed if you have '
'configured your .pypirc to include your username.'
)
parser.add_argument(
'--password', '-p', metavar='p', type=str,
help='Password to authenticate with the repository. Not needed if you have '
'configured your .pypirc to include your password.'
)
args = parser.parse_args()

# Move to the root directory of Python GRPC.
pkgdir = os.path.join(os.path.dirname(os.path.abspath(__file__)),
'../../../src/python/src')
# Remove previous distributions; they somehow confuse twine.
try:
shutil.rmtree(os.path.join(pkgdir, 'dist/'))
except:
pass

# Make the push.
cmd = ['python', 'setup.py', 'sdist']
subprocess.call(cmd)

cmd = ['twine', 'upload', '-r', args.repository]
if args.identity is not None:
cmd.extend(['-i', args.identity])
if args.username is not None:
cmd.extend(['-u', args.username])
if args.password is not None:
cmd.extend(['-p', args.password])
cmd.append('dist/*')

subprocess.call(cmd, cwd=pkgdir)

0 comments on commit e4f2f15

Please sign in to comment.