From fe8dc883d0733a0091c6cc429e74df680749aa2d Mon Sep 17 00:00:00 2001
From: Masood Malekghassemi <soltanmm@users.noreply.github.com>
Date: Mon, 27 Jul 2015 15:30:33 -0700
Subject: [PATCH] Reorganize Python packages

This is in preparation of moving all tests into a separate package to
enable ease of coverage checking and testing.
---
 src/python/{src => grpcio}/.gitignore         |  0
 src/python/{src => grpcio}/MANIFEST.in        |  0
 src/python/{src => grpcio}/README.rst         |  0
 src/python/{src => grpcio}/commands.py        |  1 +
 .../interop => grpcio/grpc}/__init__.py       |  0
 .../{src => grpcio}/grpc/_adapter/.gitignore  |  0
 .../grpc => grpcio/grpc/_adapter}/__init__.py |  0
 ...blocking_invocation_inline_service_test.py |  0
 .../{src => grpcio}/grpc/_adapter/_c/module.c |  0
 .../{src => grpcio}/grpc/_adapter/_c/types.c  |  0
 .../{src => grpcio}/grpc/_adapter/_c/types.h  |  0
 .../grpc/_adapter/_c/types/call.c             |  0
 .../grpc/_adapter/_c/types/channel.c          |  0
 .../_adapter/_c/types/client_credentials.c    |  0
 .../grpc/_adapter/_c/types/completion_queue.c |  0
 .../grpc/_adapter/_c/types/server.c           |  0
 .../_adapter/_c/types/server_credentials.c    |  0
 .../grpc/_adapter/_c/utility.c                |  0
 .../{src => grpcio}/grpc/_adapter/_c_test.py  |  0
 .../{src => grpcio}/grpc/_adapter/_common.py  |  0
 ...vocation_synchronous_event_service_test.py |  0
 .../grpc/_adapter/_face_test_case.py          |  0
 ...ocation_asynchronous_event_service_test.py |  0
 .../grpc/_adapter/_intermediary_low.py        |  0
 .../grpc/_adapter/_intermediary_low_test.py   |  0
 .../grpc/_adapter/_links_test.py              |  0
 .../grpc/_adapter/_lonely_rear_link_test.py   |  0
 .../{src => grpcio}/grpc/_adapter/_low.py     |  0
 .../grpc/_adapter/_low_test.py                |  0
 .../grpc/_adapter/_proto_scenarios.py         |  0
 .../grpc/_adapter/_test_links.py              |  0
 .../{src => grpcio}/grpc/_adapter/_types.py   |  0
 .../{src => grpcio}/grpc/_adapter/fore.py     |  0
 .../{src => grpcio}/grpc/_adapter/rear.py     |  0
 .../{src => grpcio}/grpc/_cython/.gitignore   |  0
 .../{src => grpcio}/grpc/_cython/README.rst   |  0
 .../{src => grpcio}/grpc/_cython/__init__.py  |  0
 .../grpc/_cython/_cygrpc/__init__.py          |  0
 .../grpc/_cython/_cygrpc/call.pxd             |  0
 .../grpc/_cython/_cygrpc/call.pyx             |  0
 .../grpc/_cython/_cygrpc/channel.pxd          |  0
 .../grpc/_cython/_cygrpc/channel.pyx          |  0
 .../grpc/_cython/_cygrpc/completion_queue.pxd |  0
 .../grpc/_cython/_cygrpc/completion_queue.pyx |  0
 .../grpc/_cython/_cygrpc/credentials.pxd      |  0
 .../grpc/_cython/_cygrpc/credentials.pyx      |  0
 .../grpc/_cython/_cygrpc/grpc.pxd             |  0
 .../grpc/_cython/_cygrpc/records.pxd          |  0
 .../grpc/_cython/_cygrpc/records.pyx          |  0
 .../grpc/_cython/_cygrpc/server.pxd           |  0
 .../grpc/_cython/_cygrpc/server.pyx           |  0
 .../grpc/_cython/adapter_low.py               |  0
 .../grpc/_cython/adapter_low_test.py          |  0
 .../{src => grpcio}/grpc/_cython/cygrpc.pyx   |  0
 .../grpc/_cython/cygrpc_test.py               |  0
 .../grpc/_cython/test_utilities.py            |  0
 .../grpc/_junkdrawer}/__init__.py             |  0
 .../grpc/_junkdrawer/math_pb2.py              |  0
 .../grpc/_junkdrawer/stock_pb2.py             |  0
 .../grpc/_links}/__init__.py                  |  0
 .../_links/_lonely_invocation_link_test.py    |  0
 .../grpc/_links/_proto_scenarios.py           |  0
 .../grpc/_links/_transmission_test.py         |  0
 .../{src => grpcio}/grpc/_links/invocation.py |  0
 .../{src => grpcio}/grpc/_links/service.py    |  0
 .../grpc/early_adopter}/__init__.py           |  0
 .../grpc/early_adopter/implementations.py     |  0
 .../early_adopter/implementations_test.py     |  0
 .../grpc/framework}/__init__.py               |  0
 .../grpc/framework/alpha/__init__.py          |  0
 .../grpc/framework/alpha/_face_utilities.py   |  0
 .../grpc/framework/alpha/_reexport.py         |  0
 .../grpc/framework/alpha/exceptions.py        |  0
 .../grpc/framework/alpha/interfaces.py        |  0
 .../grpc/framework/alpha/utilities.py         |  0
 .../grpc/framework/base}/__init__.py          |  0
 .../grpc/framework/base/_cancellation.py      |  0
 .../grpc/framework/base/_constants.py         |  0
 .../grpc/framework/base/_context.py           |  0
 .../grpc/framework/base/_emission.py          |  0
 .../grpc/framework/base/_ends.py              |  0
 .../grpc/framework/base/_expiration.py        |  0
 .../grpc/framework/base/_ingestion.py         |  0
 .../grpc/framework/base/_interfaces.py        |  0
 .../grpc/framework/base/_reception.py         |  0
 .../grpc/framework/base/_termination.py       |  0
 .../grpc/framework/base/_transmission.py      |  0
 .../grpc/framework/base/exceptions.py         |  0
 .../grpc/framework/base/implementations.py    |  0
 .../framework/base/implementations_test.py    |  0
 .../grpc/framework/base/in_memory.py          |  0
 .../grpc/framework/base/interfaces.py         |  0
 .../framework/base/interfaces_test_case.py    |  0
 .../grpc/framework/base/null.py               |  0
 .../grpc/framework/base/util.py               |  0
 .../grpc/framework/common}/__init__.py        |  0
 .../grpc/framework/common/cardinality.py      |  0
 .../grpc/framework/common/style.py            |  0
 .../grpc/framework/common/test_constants.py   |  0
 .../grpc/framework/common/test_control.py     |  0
 .../grpc/framework/common/test_coverage.py    |  0
 .../grpc/framework/face}/__init__.py          |  0
 .../grpc/framework/face/_calls.py             |  0
 .../grpc/framework/face/_control.py           |  0
 .../grpc/framework/face/_service.py           |  0
 .../grpc/framework/face/_test_case.py         |  0
 ...blocking_invocation_inline_service_test.py |  0
 .../grpc/framework/face/demonstration.py      |  0
 ...vocation_synchronous_event_service_test.py |  0
 .../grpc/framework/face/exceptions.py         |  0
 ...ocation_asynchronous_event_service_test.py |  0
 .../grpc/framework/face/implementations.py    |  0
 .../grpc/framework/face/interfaces.py         |  0
 .../grpc/framework/face/testing}/__init__.py  |  0
 .../grpc/framework/face/testing/base_util.py  |  0
 ...ing_invocation_inline_service_test_case.py |  0
 .../grpc/framework/face/testing/callback.py   |  0
 .../grpc/framework/face/testing/control.py    |  0
 .../grpc/framework/face/testing/coverage.py   |  0
 .../grpc/framework/face/testing/digest.py     |  0
 ...ion_synchronous_event_service_test_case.py |  0
 ...on_asynchronous_event_service_test_case.py |  0
 .../grpc/framework/face/testing/interfaces.py |  0
 .../grpc/framework/face/testing/serial.py     |  0
 .../grpc/framework/face/testing/service.py    |  0
 .../framework/face/testing/stock_service.py   |  0
 .../grpc/framework/face/testing/test_case.py  |  0
 .../grpc/framework/face/utilities.py          |  0
 .../grpc/framework/foundation}/__init__.py    |  0
 .../grpc/framework/foundation/_later_test.py  |  0
 .../foundation/_logging_pool_test.py          |  0
 .../framework/foundation/_timer_future.py     |  0
 .../grpc/framework/foundation/abandonment.py  |  0
 .../grpc/framework/foundation/activated.py    |  0
 .../framework/foundation/callable_util.py     |  0
 .../grpc/framework/foundation/future.py       |  0
 .../grpc/framework/foundation/later.py        |  0
 .../grpc/framework/foundation/logging_pool.py |  0
 .../grpc/framework/foundation/relay.py        |  0
 .../grpc/framework/foundation/stream.py       |  0
 .../framework/foundation/stream_testing.py    |  0
 .../grpc/framework/foundation/stream_util.py  |  0
 .../grpc/framework/interfaces}/__init__.py    |  0
 .../framework/interfaces/links}/__init__.py   |  0
 .../grpc/framework/interfaces/links/links.py  |  0
 .../framework/interfaces/links/test_cases.py  |  0
 .../interfaces/links/test_utilities.py        |  0
 .../framework/interfaces/links/utilities.py   |  0
 src/python/{src => grpcio}/setup.cfg          |  0
 src/python/{src => grpcio}/setup.py           | 22 ++-----------------
 .../grpc_interop}/__init__.py                 |  0
 .../grpc_interop}/_insecure_interop_test.py   |  4 ++--
 .../grpc_interop}/_interop_test_case.py       |  2 +-
 .../grpc_interop}/_secure_interop_test.py     |  6 ++---
 .../grpc_interop}/client.py                   |  4 ++--
 .../grpc_interop}/credentials/README          |  0
 .../grpc_interop}/credentials/ca.pem          |  0
 .../grpc_interop}/credentials/server1.key     |  0
 .../grpc_interop}/credentials/server1.pem     |  0
 .../grpc_interop}/empty_pb2.py                |  0
 .../grpc_interop}/messages_pb2.py             |  0
 .../grpc_interop}/methods.py                  |  4 ++--
 .../grpc_interop}/resources.py                |  0
 .../grpc_interop}/server.py                   |  4 ++--
 .../grpc_interop}/test_pb2.py                 |  0
 src/python/{interop => grpcio_test}/setup.py  | 10 ++++-----
 tools/distrib/python/docgen.py                |  4 ++--
 tools/distrib/python/submit.py                |  2 +-
 tools/run_tests/build_python.sh               | 10 ++++-----
 tools/run_tests/python_tests.json             |  4 ++--
 170 files changed, 29 insertions(+), 48 deletions(-)
 rename src/python/{src => grpcio}/.gitignore (100%)
 rename src/python/{src => grpcio}/MANIFEST.in (100%)
 rename src/python/{src => grpcio}/README.rst (100%)
 rename src/python/{src => grpcio}/commands.py (99%)
 rename src/python/{interop/interop => grpcio/grpc}/__init__.py (100%)
 rename src/python/{src => grpcio}/grpc/_adapter/.gitignore (100%)
 rename src/python/{src/grpc => grpcio/grpc/_adapter}/__init__.py (100%)
 rename src/python/{src => grpcio}/grpc/_adapter/_blocking_invocation_inline_service_test.py (100%)
 rename src/python/{src => grpcio}/grpc/_adapter/_c/module.c (100%)
 rename src/python/{src => grpcio}/grpc/_adapter/_c/types.c (100%)
 rename src/python/{src => grpcio}/grpc/_adapter/_c/types.h (100%)
 rename src/python/{src => grpcio}/grpc/_adapter/_c/types/call.c (100%)
 rename src/python/{src => grpcio}/grpc/_adapter/_c/types/channel.c (100%)
 rename src/python/{src => grpcio}/grpc/_adapter/_c/types/client_credentials.c (100%)
 rename src/python/{src => grpcio}/grpc/_adapter/_c/types/completion_queue.c (100%)
 rename src/python/{src => grpcio}/grpc/_adapter/_c/types/server.c (100%)
 rename src/python/{src => grpcio}/grpc/_adapter/_c/types/server_credentials.c (100%)
 rename src/python/{src => grpcio}/grpc/_adapter/_c/utility.c (100%)
 rename src/python/{src => grpcio}/grpc/_adapter/_c_test.py (100%)
 rename src/python/{src => grpcio}/grpc/_adapter/_common.py (100%)
 rename src/python/{src => grpcio}/grpc/_adapter/_event_invocation_synchronous_event_service_test.py (100%)
 rename src/python/{src => grpcio}/grpc/_adapter/_face_test_case.py (100%)
 rename src/python/{src => grpcio}/grpc/_adapter/_future_invocation_asynchronous_event_service_test.py (100%)
 rename src/python/{src => grpcio}/grpc/_adapter/_intermediary_low.py (100%)
 rename src/python/{src => grpcio}/grpc/_adapter/_intermediary_low_test.py (100%)
 rename src/python/{src => grpcio}/grpc/_adapter/_links_test.py (100%)
 rename src/python/{src => grpcio}/grpc/_adapter/_lonely_rear_link_test.py (100%)
 rename src/python/{src => grpcio}/grpc/_adapter/_low.py (100%)
 rename src/python/{src => grpcio}/grpc/_adapter/_low_test.py (100%)
 rename src/python/{src => grpcio}/grpc/_adapter/_proto_scenarios.py (100%)
 rename src/python/{src => grpcio}/grpc/_adapter/_test_links.py (100%)
 rename src/python/{src => grpcio}/grpc/_adapter/_types.py (100%)
 rename src/python/{src => grpcio}/grpc/_adapter/fore.py (100%)
 rename src/python/{src => grpcio}/grpc/_adapter/rear.py (100%)
 rename src/python/{src => grpcio}/grpc/_cython/.gitignore (100%)
 rename src/python/{src => grpcio}/grpc/_cython/README.rst (100%)
 rename src/python/{src => grpcio}/grpc/_cython/__init__.py (100%)
 rename src/python/{src => grpcio}/grpc/_cython/_cygrpc/__init__.py (100%)
 rename src/python/{src => grpcio}/grpc/_cython/_cygrpc/call.pxd (100%)
 rename src/python/{src => grpcio}/grpc/_cython/_cygrpc/call.pyx (100%)
 rename src/python/{src => grpcio}/grpc/_cython/_cygrpc/channel.pxd (100%)
 rename src/python/{src => grpcio}/grpc/_cython/_cygrpc/channel.pyx (100%)
 rename src/python/{src => grpcio}/grpc/_cython/_cygrpc/completion_queue.pxd (100%)
 rename src/python/{src => grpcio}/grpc/_cython/_cygrpc/completion_queue.pyx (100%)
 rename src/python/{src => grpcio}/grpc/_cython/_cygrpc/credentials.pxd (100%)
 rename src/python/{src => grpcio}/grpc/_cython/_cygrpc/credentials.pyx (100%)
 rename src/python/{src => grpcio}/grpc/_cython/_cygrpc/grpc.pxd (100%)
 rename src/python/{src => grpcio}/grpc/_cython/_cygrpc/records.pxd (100%)
 rename src/python/{src => grpcio}/grpc/_cython/_cygrpc/records.pyx (100%)
 rename src/python/{src => grpcio}/grpc/_cython/_cygrpc/server.pxd (100%)
 rename src/python/{src => grpcio}/grpc/_cython/_cygrpc/server.pyx (100%)
 rename src/python/{src => grpcio}/grpc/_cython/adapter_low.py (100%)
 rename src/python/{src => grpcio}/grpc/_cython/adapter_low_test.py (100%)
 rename src/python/{src => grpcio}/grpc/_cython/cygrpc.pyx (100%)
 rename src/python/{src => grpcio}/grpc/_cython/cygrpc_test.py (100%)
 rename src/python/{src => grpcio}/grpc/_cython/test_utilities.py (100%)
 rename src/python/{src/grpc/_adapter => grpcio/grpc/_junkdrawer}/__init__.py (100%)
 rename src/python/{src => grpcio}/grpc/_junkdrawer/math_pb2.py (100%)
 rename src/python/{src => grpcio}/grpc/_junkdrawer/stock_pb2.py (100%)
 rename src/python/{src/grpc/_junkdrawer => grpcio/grpc/_links}/__init__.py (100%)
 rename src/python/{src => grpcio}/grpc/_links/_lonely_invocation_link_test.py (100%)
 rename src/python/{src => grpcio}/grpc/_links/_proto_scenarios.py (100%)
 rename src/python/{src => grpcio}/grpc/_links/_transmission_test.py (100%)
 rename src/python/{src => grpcio}/grpc/_links/invocation.py (100%)
 rename src/python/{src => grpcio}/grpc/_links/service.py (100%)
 rename src/python/{src/grpc/_links => grpcio/grpc/early_adopter}/__init__.py (100%)
 rename src/python/{src => grpcio}/grpc/early_adopter/implementations.py (100%)
 rename src/python/{src => grpcio}/grpc/early_adopter/implementations_test.py (100%)
 rename src/python/{src/grpc/early_adopter => grpcio/grpc/framework}/__init__.py (100%)
 rename src/python/{src => grpcio}/grpc/framework/alpha/__init__.py (100%)
 rename src/python/{src => grpcio}/grpc/framework/alpha/_face_utilities.py (100%)
 rename src/python/{src => grpcio}/grpc/framework/alpha/_reexport.py (100%)
 rename src/python/{src => grpcio}/grpc/framework/alpha/exceptions.py (100%)
 rename src/python/{src => grpcio}/grpc/framework/alpha/interfaces.py (100%)
 rename src/python/{src => grpcio}/grpc/framework/alpha/utilities.py (100%)
 rename src/python/{src/grpc/framework => grpcio/grpc/framework/base}/__init__.py (100%)
 rename src/python/{src => grpcio}/grpc/framework/base/_cancellation.py (100%)
 rename src/python/{src => grpcio}/grpc/framework/base/_constants.py (100%)
 rename src/python/{src => grpcio}/grpc/framework/base/_context.py (100%)
 rename src/python/{src => grpcio}/grpc/framework/base/_emission.py (100%)
 rename src/python/{src => grpcio}/grpc/framework/base/_ends.py (100%)
 rename src/python/{src => grpcio}/grpc/framework/base/_expiration.py (100%)
 rename src/python/{src => grpcio}/grpc/framework/base/_ingestion.py (100%)
 rename src/python/{src => grpcio}/grpc/framework/base/_interfaces.py (100%)
 rename src/python/{src => grpcio}/grpc/framework/base/_reception.py (100%)
 rename src/python/{src => grpcio}/grpc/framework/base/_termination.py (100%)
 rename src/python/{src => grpcio}/grpc/framework/base/_transmission.py (100%)
 rename src/python/{src => grpcio}/grpc/framework/base/exceptions.py (100%)
 rename src/python/{src => grpcio}/grpc/framework/base/implementations.py (100%)
 rename src/python/{src => grpcio}/grpc/framework/base/implementations_test.py (100%)
 rename src/python/{src => grpcio}/grpc/framework/base/in_memory.py (100%)
 rename src/python/{src => grpcio}/grpc/framework/base/interfaces.py (100%)
 rename src/python/{src => grpcio}/grpc/framework/base/interfaces_test_case.py (100%)
 rename src/python/{src => grpcio}/grpc/framework/base/null.py (100%)
 rename src/python/{src => grpcio}/grpc/framework/base/util.py (100%)
 rename src/python/{src/grpc/framework/base => grpcio/grpc/framework/common}/__init__.py (100%)
 rename src/python/{src => grpcio}/grpc/framework/common/cardinality.py (100%)
 rename src/python/{src => grpcio}/grpc/framework/common/style.py (100%)
 rename src/python/{src => grpcio}/grpc/framework/common/test_constants.py (100%)
 rename src/python/{src => grpcio}/grpc/framework/common/test_control.py (100%)
 rename src/python/{src => grpcio}/grpc/framework/common/test_coverage.py (100%)
 rename src/python/{src/grpc/framework/common => grpcio/grpc/framework/face}/__init__.py (100%)
 rename src/python/{src => grpcio}/grpc/framework/face/_calls.py (100%)
 rename src/python/{src => grpcio}/grpc/framework/face/_control.py (100%)
 rename src/python/{src => grpcio}/grpc/framework/face/_service.py (100%)
 rename src/python/{src => grpcio}/grpc/framework/face/_test_case.py (100%)
 rename src/python/{src => grpcio}/grpc/framework/face/blocking_invocation_inline_service_test.py (100%)
 rename src/python/{src => grpcio}/grpc/framework/face/demonstration.py (100%)
 rename src/python/{src => grpcio}/grpc/framework/face/event_invocation_synchronous_event_service_test.py (100%)
 rename src/python/{src => grpcio}/grpc/framework/face/exceptions.py (100%)
 rename src/python/{src => grpcio}/grpc/framework/face/future_invocation_asynchronous_event_service_test.py (100%)
 rename src/python/{src => grpcio}/grpc/framework/face/implementations.py (100%)
 rename src/python/{src => grpcio}/grpc/framework/face/interfaces.py (100%)
 rename src/python/{src/grpc/framework/face => grpcio/grpc/framework/face/testing}/__init__.py (100%)
 rename src/python/{src => grpcio}/grpc/framework/face/testing/base_util.py (100%)
 rename src/python/{src => grpcio}/grpc/framework/face/testing/blocking_invocation_inline_service_test_case.py (100%)
 rename src/python/{src => grpcio}/grpc/framework/face/testing/callback.py (100%)
 rename src/python/{src => grpcio}/grpc/framework/face/testing/control.py (100%)
 rename src/python/{src => grpcio}/grpc/framework/face/testing/coverage.py (100%)
 rename src/python/{src => grpcio}/grpc/framework/face/testing/digest.py (100%)
 rename src/python/{src => grpcio}/grpc/framework/face/testing/event_invocation_synchronous_event_service_test_case.py (100%)
 rename src/python/{src => grpcio}/grpc/framework/face/testing/future_invocation_asynchronous_event_service_test_case.py (100%)
 rename src/python/{src => grpcio}/grpc/framework/face/testing/interfaces.py (100%)
 rename src/python/{src => grpcio}/grpc/framework/face/testing/serial.py (100%)
 rename src/python/{src => grpcio}/grpc/framework/face/testing/service.py (100%)
 rename src/python/{src => grpcio}/grpc/framework/face/testing/stock_service.py (100%)
 rename src/python/{src => grpcio}/grpc/framework/face/testing/test_case.py (100%)
 rename src/python/{src => grpcio}/grpc/framework/face/utilities.py (100%)
 rename src/python/{src/grpc/framework/face/testing => grpcio/grpc/framework/foundation}/__init__.py (100%)
 rename src/python/{src => grpcio}/grpc/framework/foundation/_later_test.py (100%)
 rename src/python/{src => grpcio}/grpc/framework/foundation/_logging_pool_test.py (100%)
 rename src/python/{src => grpcio}/grpc/framework/foundation/_timer_future.py (100%)
 rename src/python/{src => grpcio}/grpc/framework/foundation/abandonment.py (100%)
 rename src/python/{src => grpcio}/grpc/framework/foundation/activated.py (100%)
 rename src/python/{src => grpcio}/grpc/framework/foundation/callable_util.py (100%)
 rename src/python/{src => grpcio}/grpc/framework/foundation/future.py (100%)
 rename src/python/{src => grpcio}/grpc/framework/foundation/later.py (100%)
 rename src/python/{src => grpcio}/grpc/framework/foundation/logging_pool.py (100%)
 rename src/python/{src => grpcio}/grpc/framework/foundation/relay.py (100%)
 rename src/python/{src => grpcio}/grpc/framework/foundation/stream.py (100%)
 rename src/python/{src => grpcio}/grpc/framework/foundation/stream_testing.py (100%)
 rename src/python/{src => grpcio}/grpc/framework/foundation/stream_util.py (100%)
 rename src/python/{src/grpc/framework/foundation => grpcio/grpc/framework/interfaces}/__init__.py (100%)
 rename src/python/{src/grpc/framework/interfaces => grpcio/grpc/framework/interfaces/links}/__init__.py (100%)
 rename src/python/{src => grpcio}/grpc/framework/interfaces/links/links.py (100%)
 rename src/python/{src => grpcio}/grpc/framework/interfaces/links/test_cases.py (100%)
 rename src/python/{src => grpcio}/grpc/framework/interfaces/links/test_utilities.py (100%)
 rename src/python/{src => grpcio}/grpc/framework/interfaces/links/utilities.py (100%)
 rename src/python/{src => grpcio}/setup.cfg (100%)
 rename src/python/{src => grpcio}/setup.py (85%)
 rename src/python/{src/grpc/framework/interfaces/links => grpcio_test/grpc_interop}/__init__.py (100%)
 rename src/python/{interop/interop => grpcio_test/grpc_interop}/_insecure_interop_test.py (96%)
 rename src/python/{interop/interop => grpcio_test/grpc_interop}/_interop_test_case.py (98%)
 rename src/python/{interop/interop => grpcio_test/grpc_interop}/_secure_interop_test.py (95%)
 rename src/python/{interop/interop => grpcio_test/grpc_interop}/client.py (98%)
 rename src/python/{interop/interop => grpcio_test/grpc_interop}/credentials/README (100%)
 rename src/python/{interop/interop => grpcio_test/grpc_interop}/credentials/ca.pem (100%)
 rename src/python/{interop/interop => grpcio_test/grpc_interop}/credentials/server1.key (100%)
 rename src/python/{interop/interop => grpcio_test/grpc_interop}/credentials/server1.pem (100%)
 rename src/python/{interop/interop => grpcio_test/grpc_interop}/empty_pb2.py (100%)
 rename src/python/{interop/interop => grpcio_test/grpc_interop}/messages_pb2.py (100%)
 rename src/python/{interop/interop => grpcio_test/grpc_interop}/methods.py (99%)
 rename src/python/{interop/interop => grpcio_test/grpc_interop}/resources.py (100%)
 rename src/python/{interop/interop => grpcio_test/grpc_interop}/server.py (97%)
 rename src/python/{interop/interop => grpcio_test/grpc_interop}/test_pb2.py (100%)
 rename src/python/{interop => grpcio_test}/setup.py (95%)

diff --git a/src/python/src/.gitignore b/src/python/grpcio/.gitignore
similarity index 100%
rename from src/python/src/.gitignore
rename to src/python/grpcio/.gitignore
diff --git a/src/python/src/MANIFEST.in b/src/python/grpcio/MANIFEST.in
similarity index 100%
rename from src/python/src/MANIFEST.in
rename to src/python/grpcio/MANIFEST.in
diff --git a/src/python/src/README.rst b/src/python/grpcio/README.rst
similarity index 100%
rename from src/python/src/README.rst
rename to src/python/grpcio/README.rst
diff --git a/src/python/src/commands.py b/src/python/grpcio/commands.py
similarity index 99%
rename from src/python/src/commands.py
rename to src/python/grpcio/commands.py
index 8e87855011..605d9d5612 100644
--- a/src/python/src/commands.py
+++ b/src/python/grpcio/commands.py
@@ -43,6 +43,7 @@ napoleon_numpy_docstring = True
 html_theme = 'sphinx_rtd_theme'
 """
 
+
 class SphinxDocumentation(setuptools.Command):
   """Command to generate documentation via sphinx."""
 
diff --git a/src/python/interop/interop/__init__.py b/src/python/grpcio/grpc/__init__.py
similarity index 100%
rename from src/python/interop/interop/__init__.py
rename to src/python/grpcio/grpc/__init__.py
diff --git a/src/python/src/grpc/_adapter/.gitignore b/src/python/grpcio/grpc/_adapter/.gitignore
similarity index 100%
rename from src/python/src/grpc/_adapter/.gitignore
rename to src/python/grpcio/grpc/_adapter/.gitignore
diff --git a/src/python/src/grpc/__init__.py b/src/python/grpcio/grpc/_adapter/__init__.py
similarity index 100%
rename from src/python/src/grpc/__init__.py
rename to src/python/grpcio/grpc/_adapter/__init__.py
diff --git a/src/python/src/grpc/_adapter/_blocking_invocation_inline_service_test.py b/src/python/grpcio/grpc/_adapter/_blocking_invocation_inline_service_test.py
similarity index 100%
rename from src/python/src/grpc/_adapter/_blocking_invocation_inline_service_test.py
rename to src/python/grpcio/grpc/_adapter/_blocking_invocation_inline_service_test.py
diff --git a/src/python/src/grpc/_adapter/_c/module.c b/src/python/grpcio/grpc/_adapter/_c/module.c
similarity index 100%
rename from src/python/src/grpc/_adapter/_c/module.c
rename to src/python/grpcio/grpc/_adapter/_c/module.c
diff --git a/src/python/src/grpc/_adapter/_c/types.c b/src/python/grpcio/grpc/_adapter/_c/types.c
similarity index 100%
rename from src/python/src/grpc/_adapter/_c/types.c
rename to src/python/grpcio/grpc/_adapter/_c/types.c
diff --git a/src/python/src/grpc/_adapter/_c/types.h b/src/python/grpcio/grpc/_adapter/_c/types.h
similarity index 100%
rename from src/python/src/grpc/_adapter/_c/types.h
rename to src/python/grpcio/grpc/_adapter/_c/types.h
diff --git a/src/python/src/grpc/_adapter/_c/types/call.c b/src/python/grpcio/grpc/_adapter/_c/types/call.c
similarity index 100%
rename from src/python/src/grpc/_adapter/_c/types/call.c
rename to src/python/grpcio/grpc/_adapter/_c/types/call.c
diff --git a/src/python/src/grpc/_adapter/_c/types/channel.c b/src/python/grpcio/grpc/_adapter/_c/types/channel.c
similarity index 100%
rename from src/python/src/grpc/_adapter/_c/types/channel.c
rename to src/python/grpcio/grpc/_adapter/_c/types/channel.c
diff --git a/src/python/src/grpc/_adapter/_c/types/client_credentials.c b/src/python/grpcio/grpc/_adapter/_c/types/client_credentials.c
similarity index 100%
rename from src/python/src/grpc/_adapter/_c/types/client_credentials.c
rename to src/python/grpcio/grpc/_adapter/_c/types/client_credentials.c
diff --git a/src/python/src/grpc/_adapter/_c/types/completion_queue.c b/src/python/grpcio/grpc/_adapter/_c/types/completion_queue.c
similarity index 100%
rename from src/python/src/grpc/_adapter/_c/types/completion_queue.c
rename to src/python/grpcio/grpc/_adapter/_c/types/completion_queue.c
diff --git a/src/python/src/grpc/_adapter/_c/types/server.c b/src/python/grpcio/grpc/_adapter/_c/types/server.c
similarity index 100%
rename from src/python/src/grpc/_adapter/_c/types/server.c
rename to src/python/grpcio/grpc/_adapter/_c/types/server.c
diff --git a/src/python/src/grpc/_adapter/_c/types/server_credentials.c b/src/python/grpcio/grpc/_adapter/_c/types/server_credentials.c
similarity index 100%
rename from src/python/src/grpc/_adapter/_c/types/server_credentials.c
rename to src/python/grpcio/grpc/_adapter/_c/types/server_credentials.c
diff --git a/src/python/src/grpc/_adapter/_c/utility.c b/src/python/grpcio/grpc/_adapter/_c/utility.c
similarity index 100%
rename from src/python/src/grpc/_adapter/_c/utility.c
rename to src/python/grpcio/grpc/_adapter/_c/utility.c
diff --git a/src/python/src/grpc/_adapter/_c_test.py b/src/python/grpcio/grpc/_adapter/_c_test.py
similarity index 100%
rename from src/python/src/grpc/_adapter/_c_test.py
rename to src/python/grpcio/grpc/_adapter/_c_test.py
diff --git a/src/python/src/grpc/_adapter/_common.py b/src/python/grpcio/grpc/_adapter/_common.py
similarity index 100%
rename from src/python/src/grpc/_adapter/_common.py
rename to src/python/grpcio/grpc/_adapter/_common.py
diff --git a/src/python/src/grpc/_adapter/_event_invocation_synchronous_event_service_test.py b/src/python/grpcio/grpc/_adapter/_event_invocation_synchronous_event_service_test.py
similarity index 100%
rename from src/python/src/grpc/_adapter/_event_invocation_synchronous_event_service_test.py
rename to src/python/grpcio/grpc/_adapter/_event_invocation_synchronous_event_service_test.py
diff --git a/src/python/src/grpc/_adapter/_face_test_case.py b/src/python/grpcio/grpc/_adapter/_face_test_case.py
similarity index 100%
rename from src/python/src/grpc/_adapter/_face_test_case.py
rename to src/python/grpcio/grpc/_adapter/_face_test_case.py
diff --git a/src/python/src/grpc/_adapter/_future_invocation_asynchronous_event_service_test.py b/src/python/grpcio/grpc/_adapter/_future_invocation_asynchronous_event_service_test.py
similarity index 100%
rename from src/python/src/grpc/_adapter/_future_invocation_asynchronous_event_service_test.py
rename to src/python/grpcio/grpc/_adapter/_future_invocation_asynchronous_event_service_test.py
diff --git a/src/python/src/grpc/_adapter/_intermediary_low.py b/src/python/grpcio/grpc/_adapter/_intermediary_low.py
similarity index 100%
rename from src/python/src/grpc/_adapter/_intermediary_low.py
rename to src/python/grpcio/grpc/_adapter/_intermediary_low.py
diff --git a/src/python/src/grpc/_adapter/_intermediary_low_test.py b/src/python/grpcio/grpc/_adapter/_intermediary_low_test.py
similarity index 100%
rename from src/python/src/grpc/_adapter/_intermediary_low_test.py
rename to src/python/grpcio/grpc/_adapter/_intermediary_low_test.py
diff --git a/src/python/src/grpc/_adapter/_links_test.py b/src/python/grpcio/grpc/_adapter/_links_test.py
similarity index 100%
rename from src/python/src/grpc/_adapter/_links_test.py
rename to src/python/grpcio/grpc/_adapter/_links_test.py
diff --git a/src/python/src/grpc/_adapter/_lonely_rear_link_test.py b/src/python/grpcio/grpc/_adapter/_lonely_rear_link_test.py
similarity index 100%
rename from src/python/src/grpc/_adapter/_lonely_rear_link_test.py
rename to src/python/grpcio/grpc/_adapter/_lonely_rear_link_test.py
diff --git a/src/python/src/grpc/_adapter/_low.py b/src/python/grpcio/grpc/_adapter/_low.py
similarity index 100%
rename from src/python/src/grpc/_adapter/_low.py
rename to src/python/grpcio/grpc/_adapter/_low.py
diff --git a/src/python/src/grpc/_adapter/_low_test.py b/src/python/grpcio/grpc/_adapter/_low_test.py
similarity index 100%
rename from src/python/src/grpc/_adapter/_low_test.py
rename to src/python/grpcio/grpc/_adapter/_low_test.py
diff --git a/src/python/src/grpc/_adapter/_proto_scenarios.py b/src/python/grpcio/grpc/_adapter/_proto_scenarios.py
similarity index 100%
rename from src/python/src/grpc/_adapter/_proto_scenarios.py
rename to src/python/grpcio/grpc/_adapter/_proto_scenarios.py
diff --git a/src/python/src/grpc/_adapter/_test_links.py b/src/python/grpcio/grpc/_adapter/_test_links.py
similarity index 100%
rename from src/python/src/grpc/_adapter/_test_links.py
rename to src/python/grpcio/grpc/_adapter/_test_links.py
diff --git a/src/python/src/grpc/_adapter/_types.py b/src/python/grpcio/grpc/_adapter/_types.py
similarity index 100%
rename from src/python/src/grpc/_adapter/_types.py
rename to src/python/grpcio/grpc/_adapter/_types.py
diff --git a/src/python/src/grpc/_adapter/fore.py b/src/python/grpcio/grpc/_adapter/fore.py
similarity index 100%
rename from src/python/src/grpc/_adapter/fore.py
rename to src/python/grpcio/grpc/_adapter/fore.py
diff --git a/src/python/src/grpc/_adapter/rear.py b/src/python/grpcio/grpc/_adapter/rear.py
similarity index 100%
rename from src/python/src/grpc/_adapter/rear.py
rename to src/python/grpcio/grpc/_adapter/rear.py
diff --git a/src/python/src/grpc/_cython/.gitignore b/src/python/grpcio/grpc/_cython/.gitignore
similarity index 100%
rename from src/python/src/grpc/_cython/.gitignore
rename to src/python/grpcio/grpc/_cython/.gitignore
diff --git a/src/python/src/grpc/_cython/README.rst b/src/python/grpcio/grpc/_cython/README.rst
similarity index 100%
rename from src/python/src/grpc/_cython/README.rst
rename to src/python/grpcio/grpc/_cython/README.rst
diff --git a/src/python/src/grpc/_cython/__init__.py b/src/python/grpcio/grpc/_cython/__init__.py
similarity index 100%
rename from src/python/src/grpc/_cython/__init__.py
rename to src/python/grpcio/grpc/_cython/__init__.py
diff --git a/src/python/src/grpc/_cython/_cygrpc/__init__.py b/src/python/grpcio/grpc/_cython/_cygrpc/__init__.py
similarity index 100%
rename from src/python/src/grpc/_cython/_cygrpc/__init__.py
rename to src/python/grpcio/grpc/_cython/_cygrpc/__init__.py
diff --git a/src/python/src/grpc/_cython/_cygrpc/call.pxd b/src/python/grpcio/grpc/_cython/_cygrpc/call.pxd
similarity index 100%
rename from src/python/src/grpc/_cython/_cygrpc/call.pxd
rename to src/python/grpcio/grpc/_cython/_cygrpc/call.pxd
diff --git a/src/python/src/grpc/_cython/_cygrpc/call.pyx b/src/python/grpcio/grpc/_cython/_cygrpc/call.pyx
similarity index 100%
rename from src/python/src/grpc/_cython/_cygrpc/call.pyx
rename to src/python/grpcio/grpc/_cython/_cygrpc/call.pyx
diff --git a/src/python/src/grpc/_cython/_cygrpc/channel.pxd b/src/python/grpcio/grpc/_cython/_cygrpc/channel.pxd
similarity index 100%
rename from src/python/src/grpc/_cython/_cygrpc/channel.pxd
rename to src/python/grpcio/grpc/_cython/_cygrpc/channel.pxd
diff --git a/src/python/src/grpc/_cython/_cygrpc/channel.pyx b/src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx
similarity index 100%
rename from src/python/src/grpc/_cython/_cygrpc/channel.pyx
rename to src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx
diff --git a/src/python/src/grpc/_cython/_cygrpc/completion_queue.pxd b/src/python/grpcio/grpc/_cython/_cygrpc/completion_queue.pxd
similarity index 100%
rename from src/python/src/grpc/_cython/_cygrpc/completion_queue.pxd
rename to src/python/grpcio/grpc/_cython/_cygrpc/completion_queue.pxd
diff --git a/src/python/src/grpc/_cython/_cygrpc/completion_queue.pyx b/src/python/grpcio/grpc/_cython/_cygrpc/completion_queue.pyx
similarity index 100%
rename from src/python/src/grpc/_cython/_cygrpc/completion_queue.pyx
rename to src/python/grpcio/grpc/_cython/_cygrpc/completion_queue.pyx
diff --git a/src/python/src/grpc/_cython/_cygrpc/credentials.pxd b/src/python/grpcio/grpc/_cython/_cygrpc/credentials.pxd
similarity index 100%
rename from src/python/src/grpc/_cython/_cygrpc/credentials.pxd
rename to src/python/grpcio/grpc/_cython/_cygrpc/credentials.pxd
diff --git a/src/python/src/grpc/_cython/_cygrpc/credentials.pyx b/src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx
similarity index 100%
rename from src/python/src/grpc/_cython/_cygrpc/credentials.pyx
rename to src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx
diff --git a/src/python/src/grpc/_cython/_cygrpc/grpc.pxd b/src/python/grpcio/grpc/_cython/_cygrpc/grpc.pxd
similarity index 100%
rename from src/python/src/grpc/_cython/_cygrpc/grpc.pxd
rename to src/python/grpcio/grpc/_cython/_cygrpc/grpc.pxd
diff --git a/src/python/src/grpc/_cython/_cygrpc/records.pxd b/src/python/grpcio/grpc/_cython/_cygrpc/records.pxd
similarity index 100%
rename from src/python/src/grpc/_cython/_cygrpc/records.pxd
rename to src/python/grpcio/grpc/_cython/_cygrpc/records.pxd
diff --git a/src/python/src/grpc/_cython/_cygrpc/records.pyx b/src/python/grpcio/grpc/_cython/_cygrpc/records.pyx
similarity index 100%
rename from src/python/src/grpc/_cython/_cygrpc/records.pyx
rename to src/python/grpcio/grpc/_cython/_cygrpc/records.pyx
diff --git a/src/python/src/grpc/_cython/_cygrpc/server.pxd b/src/python/grpcio/grpc/_cython/_cygrpc/server.pxd
similarity index 100%
rename from src/python/src/grpc/_cython/_cygrpc/server.pxd
rename to src/python/grpcio/grpc/_cython/_cygrpc/server.pxd
diff --git a/src/python/src/grpc/_cython/_cygrpc/server.pyx b/src/python/grpcio/grpc/_cython/_cygrpc/server.pyx
similarity index 100%
rename from src/python/src/grpc/_cython/_cygrpc/server.pyx
rename to src/python/grpcio/grpc/_cython/_cygrpc/server.pyx
diff --git a/src/python/src/grpc/_cython/adapter_low.py b/src/python/grpcio/grpc/_cython/adapter_low.py
similarity index 100%
rename from src/python/src/grpc/_cython/adapter_low.py
rename to src/python/grpcio/grpc/_cython/adapter_low.py
diff --git a/src/python/src/grpc/_cython/adapter_low_test.py b/src/python/grpcio/grpc/_cython/adapter_low_test.py
similarity index 100%
rename from src/python/src/grpc/_cython/adapter_low_test.py
rename to src/python/grpcio/grpc/_cython/adapter_low_test.py
diff --git a/src/python/src/grpc/_cython/cygrpc.pyx b/src/python/grpcio/grpc/_cython/cygrpc.pyx
similarity index 100%
rename from src/python/src/grpc/_cython/cygrpc.pyx
rename to src/python/grpcio/grpc/_cython/cygrpc.pyx
diff --git a/src/python/src/grpc/_cython/cygrpc_test.py b/src/python/grpcio/grpc/_cython/cygrpc_test.py
similarity index 100%
rename from src/python/src/grpc/_cython/cygrpc_test.py
rename to src/python/grpcio/grpc/_cython/cygrpc_test.py
diff --git a/src/python/src/grpc/_cython/test_utilities.py b/src/python/grpcio/grpc/_cython/test_utilities.py
similarity index 100%
rename from src/python/src/grpc/_cython/test_utilities.py
rename to src/python/grpcio/grpc/_cython/test_utilities.py
diff --git a/src/python/src/grpc/_adapter/__init__.py b/src/python/grpcio/grpc/_junkdrawer/__init__.py
similarity index 100%
rename from src/python/src/grpc/_adapter/__init__.py
rename to src/python/grpcio/grpc/_junkdrawer/__init__.py
diff --git a/src/python/src/grpc/_junkdrawer/math_pb2.py b/src/python/grpcio/grpc/_junkdrawer/math_pb2.py
similarity index 100%
rename from src/python/src/grpc/_junkdrawer/math_pb2.py
rename to src/python/grpcio/grpc/_junkdrawer/math_pb2.py
diff --git a/src/python/src/grpc/_junkdrawer/stock_pb2.py b/src/python/grpcio/grpc/_junkdrawer/stock_pb2.py
similarity index 100%
rename from src/python/src/grpc/_junkdrawer/stock_pb2.py
rename to src/python/grpcio/grpc/_junkdrawer/stock_pb2.py
diff --git a/src/python/src/grpc/_junkdrawer/__init__.py b/src/python/grpcio/grpc/_links/__init__.py
similarity index 100%
rename from src/python/src/grpc/_junkdrawer/__init__.py
rename to src/python/grpcio/grpc/_links/__init__.py
diff --git a/src/python/src/grpc/_links/_lonely_invocation_link_test.py b/src/python/grpcio/grpc/_links/_lonely_invocation_link_test.py
similarity index 100%
rename from src/python/src/grpc/_links/_lonely_invocation_link_test.py
rename to src/python/grpcio/grpc/_links/_lonely_invocation_link_test.py
diff --git a/src/python/src/grpc/_links/_proto_scenarios.py b/src/python/grpcio/grpc/_links/_proto_scenarios.py
similarity index 100%
rename from src/python/src/grpc/_links/_proto_scenarios.py
rename to src/python/grpcio/grpc/_links/_proto_scenarios.py
diff --git a/src/python/src/grpc/_links/_transmission_test.py b/src/python/grpcio/grpc/_links/_transmission_test.py
similarity index 100%
rename from src/python/src/grpc/_links/_transmission_test.py
rename to src/python/grpcio/grpc/_links/_transmission_test.py
diff --git a/src/python/src/grpc/_links/invocation.py b/src/python/grpcio/grpc/_links/invocation.py
similarity index 100%
rename from src/python/src/grpc/_links/invocation.py
rename to src/python/grpcio/grpc/_links/invocation.py
diff --git a/src/python/src/grpc/_links/service.py b/src/python/grpcio/grpc/_links/service.py
similarity index 100%
rename from src/python/src/grpc/_links/service.py
rename to src/python/grpcio/grpc/_links/service.py
diff --git a/src/python/src/grpc/_links/__init__.py b/src/python/grpcio/grpc/early_adopter/__init__.py
similarity index 100%
rename from src/python/src/grpc/_links/__init__.py
rename to src/python/grpcio/grpc/early_adopter/__init__.py
diff --git a/src/python/src/grpc/early_adopter/implementations.py b/src/python/grpcio/grpc/early_adopter/implementations.py
similarity index 100%
rename from src/python/src/grpc/early_adopter/implementations.py
rename to src/python/grpcio/grpc/early_adopter/implementations.py
diff --git a/src/python/src/grpc/early_adopter/implementations_test.py b/src/python/grpcio/grpc/early_adopter/implementations_test.py
similarity index 100%
rename from src/python/src/grpc/early_adopter/implementations_test.py
rename to src/python/grpcio/grpc/early_adopter/implementations_test.py
diff --git a/src/python/src/grpc/early_adopter/__init__.py b/src/python/grpcio/grpc/framework/__init__.py
similarity index 100%
rename from src/python/src/grpc/early_adopter/__init__.py
rename to src/python/grpcio/grpc/framework/__init__.py
diff --git a/src/python/src/grpc/framework/alpha/__init__.py b/src/python/grpcio/grpc/framework/alpha/__init__.py
similarity index 100%
rename from src/python/src/grpc/framework/alpha/__init__.py
rename to src/python/grpcio/grpc/framework/alpha/__init__.py
diff --git a/src/python/src/grpc/framework/alpha/_face_utilities.py b/src/python/grpcio/grpc/framework/alpha/_face_utilities.py
similarity index 100%
rename from src/python/src/grpc/framework/alpha/_face_utilities.py
rename to src/python/grpcio/grpc/framework/alpha/_face_utilities.py
diff --git a/src/python/src/grpc/framework/alpha/_reexport.py b/src/python/grpcio/grpc/framework/alpha/_reexport.py
similarity index 100%
rename from src/python/src/grpc/framework/alpha/_reexport.py
rename to src/python/grpcio/grpc/framework/alpha/_reexport.py
diff --git a/src/python/src/grpc/framework/alpha/exceptions.py b/src/python/grpcio/grpc/framework/alpha/exceptions.py
similarity index 100%
rename from src/python/src/grpc/framework/alpha/exceptions.py
rename to src/python/grpcio/grpc/framework/alpha/exceptions.py
diff --git a/src/python/src/grpc/framework/alpha/interfaces.py b/src/python/grpcio/grpc/framework/alpha/interfaces.py
similarity index 100%
rename from src/python/src/grpc/framework/alpha/interfaces.py
rename to src/python/grpcio/grpc/framework/alpha/interfaces.py
diff --git a/src/python/src/grpc/framework/alpha/utilities.py b/src/python/grpcio/grpc/framework/alpha/utilities.py
similarity index 100%
rename from src/python/src/grpc/framework/alpha/utilities.py
rename to src/python/grpcio/grpc/framework/alpha/utilities.py
diff --git a/src/python/src/grpc/framework/__init__.py b/src/python/grpcio/grpc/framework/base/__init__.py
similarity index 100%
rename from src/python/src/grpc/framework/__init__.py
rename to src/python/grpcio/grpc/framework/base/__init__.py
diff --git a/src/python/src/grpc/framework/base/_cancellation.py b/src/python/grpcio/grpc/framework/base/_cancellation.py
similarity index 100%
rename from src/python/src/grpc/framework/base/_cancellation.py
rename to src/python/grpcio/grpc/framework/base/_cancellation.py
diff --git a/src/python/src/grpc/framework/base/_constants.py b/src/python/grpcio/grpc/framework/base/_constants.py
similarity index 100%
rename from src/python/src/grpc/framework/base/_constants.py
rename to src/python/grpcio/grpc/framework/base/_constants.py
diff --git a/src/python/src/grpc/framework/base/_context.py b/src/python/grpcio/grpc/framework/base/_context.py
similarity index 100%
rename from src/python/src/grpc/framework/base/_context.py
rename to src/python/grpcio/grpc/framework/base/_context.py
diff --git a/src/python/src/grpc/framework/base/_emission.py b/src/python/grpcio/grpc/framework/base/_emission.py
similarity index 100%
rename from src/python/src/grpc/framework/base/_emission.py
rename to src/python/grpcio/grpc/framework/base/_emission.py
diff --git a/src/python/src/grpc/framework/base/_ends.py b/src/python/grpcio/grpc/framework/base/_ends.py
similarity index 100%
rename from src/python/src/grpc/framework/base/_ends.py
rename to src/python/grpcio/grpc/framework/base/_ends.py
diff --git a/src/python/src/grpc/framework/base/_expiration.py b/src/python/grpcio/grpc/framework/base/_expiration.py
similarity index 100%
rename from src/python/src/grpc/framework/base/_expiration.py
rename to src/python/grpcio/grpc/framework/base/_expiration.py
diff --git a/src/python/src/grpc/framework/base/_ingestion.py b/src/python/grpcio/grpc/framework/base/_ingestion.py
similarity index 100%
rename from src/python/src/grpc/framework/base/_ingestion.py
rename to src/python/grpcio/grpc/framework/base/_ingestion.py
diff --git a/src/python/src/grpc/framework/base/_interfaces.py b/src/python/grpcio/grpc/framework/base/_interfaces.py
similarity index 100%
rename from src/python/src/grpc/framework/base/_interfaces.py
rename to src/python/grpcio/grpc/framework/base/_interfaces.py
diff --git a/src/python/src/grpc/framework/base/_reception.py b/src/python/grpcio/grpc/framework/base/_reception.py
similarity index 100%
rename from src/python/src/grpc/framework/base/_reception.py
rename to src/python/grpcio/grpc/framework/base/_reception.py
diff --git a/src/python/src/grpc/framework/base/_termination.py b/src/python/grpcio/grpc/framework/base/_termination.py
similarity index 100%
rename from src/python/src/grpc/framework/base/_termination.py
rename to src/python/grpcio/grpc/framework/base/_termination.py
diff --git a/src/python/src/grpc/framework/base/_transmission.py b/src/python/grpcio/grpc/framework/base/_transmission.py
similarity index 100%
rename from src/python/src/grpc/framework/base/_transmission.py
rename to src/python/grpcio/grpc/framework/base/_transmission.py
diff --git a/src/python/src/grpc/framework/base/exceptions.py b/src/python/grpcio/grpc/framework/base/exceptions.py
similarity index 100%
rename from src/python/src/grpc/framework/base/exceptions.py
rename to src/python/grpcio/grpc/framework/base/exceptions.py
diff --git a/src/python/src/grpc/framework/base/implementations.py b/src/python/grpcio/grpc/framework/base/implementations.py
similarity index 100%
rename from src/python/src/grpc/framework/base/implementations.py
rename to src/python/grpcio/grpc/framework/base/implementations.py
diff --git a/src/python/src/grpc/framework/base/implementations_test.py b/src/python/grpcio/grpc/framework/base/implementations_test.py
similarity index 100%
rename from src/python/src/grpc/framework/base/implementations_test.py
rename to src/python/grpcio/grpc/framework/base/implementations_test.py
diff --git a/src/python/src/grpc/framework/base/in_memory.py b/src/python/grpcio/grpc/framework/base/in_memory.py
similarity index 100%
rename from src/python/src/grpc/framework/base/in_memory.py
rename to src/python/grpcio/grpc/framework/base/in_memory.py
diff --git a/src/python/src/grpc/framework/base/interfaces.py b/src/python/grpcio/grpc/framework/base/interfaces.py
similarity index 100%
rename from src/python/src/grpc/framework/base/interfaces.py
rename to src/python/grpcio/grpc/framework/base/interfaces.py
diff --git a/src/python/src/grpc/framework/base/interfaces_test_case.py b/src/python/grpcio/grpc/framework/base/interfaces_test_case.py
similarity index 100%
rename from src/python/src/grpc/framework/base/interfaces_test_case.py
rename to src/python/grpcio/grpc/framework/base/interfaces_test_case.py
diff --git a/src/python/src/grpc/framework/base/null.py b/src/python/grpcio/grpc/framework/base/null.py
similarity index 100%
rename from src/python/src/grpc/framework/base/null.py
rename to src/python/grpcio/grpc/framework/base/null.py
diff --git a/src/python/src/grpc/framework/base/util.py b/src/python/grpcio/grpc/framework/base/util.py
similarity index 100%
rename from src/python/src/grpc/framework/base/util.py
rename to src/python/grpcio/grpc/framework/base/util.py
diff --git a/src/python/src/grpc/framework/base/__init__.py b/src/python/grpcio/grpc/framework/common/__init__.py
similarity index 100%
rename from src/python/src/grpc/framework/base/__init__.py
rename to src/python/grpcio/grpc/framework/common/__init__.py
diff --git a/src/python/src/grpc/framework/common/cardinality.py b/src/python/grpcio/grpc/framework/common/cardinality.py
similarity index 100%
rename from src/python/src/grpc/framework/common/cardinality.py
rename to src/python/grpcio/grpc/framework/common/cardinality.py
diff --git a/src/python/src/grpc/framework/common/style.py b/src/python/grpcio/grpc/framework/common/style.py
similarity index 100%
rename from src/python/src/grpc/framework/common/style.py
rename to src/python/grpcio/grpc/framework/common/style.py
diff --git a/src/python/src/grpc/framework/common/test_constants.py b/src/python/grpcio/grpc/framework/common/test_constants.py
similarity index 100%
rename from src/python/src/grpc/framework/common/test_constants.py
rename to src/python/grpcio/grpc/framework/common/test_constants.py
diff --git a/src/python/src/grpc/framework/common/test_control.py b/src/python/grpcio/grpc/framework/common/test_control.py
similarity index 100%
rename from src/python/src/grpc/framework/common/test_control.py
rename to src/python/grpcio/grpc/framework/common/test_control.py
diff --git a/src/python/src/grpc/framework/common/test_coverage.py b/src/python/grpcio/grpc/framework/common/test_coverage.py
similarity index 100%
rename from src/python/src/grpc/framework/common/test_coverage.py
rename to src/python/grpcio/grpc/framework/common/test_coverage.py
diff --git a/src/python/src/grpc/framework/common/__init__.py b/src/python/grpcio/grpc/framework/face/__init__.py
similarity index 100%
rename from src/python/src/grpc/framework/common/__init__.py
rename to src/python/grpcio/grpc/framework/face/__init__.py
diff --git a/src/python/src/grpc/framework/face/_calls.py b/src/python/grpcio/grpc/framework/face/_calls.py
similarity index 100%
rename from src/python/src/grpc/framework/face/_calls.py
rename to src/python/grpcio/grpc/framework/face/_calls.py
diff --git a/src/python/src/grpc/framework/face/_control.py b/src/python/grpcio/grpc/framework/face/_control.py
similarity index 100%
rename from src/python/src/grpc/framework/face/_control.py
rename to src/python/grpcio/grpc/framework/face/_control.py
diff --git a/src/python/src/grpc/framework/face/_service.py b/src/python/grpcio/grpc/framework/face/_service.py
similarity index 100%
rename from src/python/src/grpc/framework/face/_service.py
rename to src/python/grpcio/grpc/framework/face/_service.py
diff --git a/src/python/src/grpc/framework/face/_test_case.py b/src/python/grpcio/grpc/framework/face/_test_case.py
similarity index 100%
rename from src/python/src/grpc/framework/face/_test_case.py
rename to src/python/grpcio/grpc/framework/face/_test_case.py
diff --git a/src/python/src/grpc/framework/face/blocking_invocation_inline_service_test.py b/src/python/grpcio/grpc/framework/face/blocking_invocation_inline_service_test.py
similarity index 100%
rename from src/python/src/grpc/framework/face/blocking_invocation_inline_service_test.py
rename to src/python/grpcio/grpc/framework/face/blocking_invocation_inline_service_test.py
diff --git a/src/python/src/grpc/framework/face/demonstration.py b/src/python/grpcio/grpc/framework/face/demonstration.py
similarity index 100%
rename from src/python/src/grpc/framework/face/demonstration.py
rename to src/python/grpcio/grpc/framework/face/demonstration.py
diff --git a/src/python/src/grpc/framework/face/event_invocation_synchronous_event_service_test.py b/src/python/grpcio/grpc/framework/face/event_invocation_synchronous_event_service_test.py
similarity index 100%
rename from src/python/src/grpc/framework/face/event_invocation_synchronous_event_service_test.py
rename to src/python/grpcio/grpc/framework/face/event_invocation_synchronous_event_service_test.py
diff --git a/src/python/src/grpc/framework/face/exceptions.py b/src/python/grpcio/grpc/framework/face/exceptions.py
similarity index 100%
rename from src/python/src/grpc/framework/face/exceptions.py
rename to src/python/grpcio/grpc/framework/face/exceptions.py
diff --git a/src/python/src/grpc/framework/face/future_invocation_asynchronous_event_service_test.py b/src/python/grpcio/grpc/framework/face/future_invocation_asynchronous_event_service_test.py
similarity index 100%
rename from src/python/src/grpc/framework/face/future_invocation_asynchronous_event_service_test.py
rename to src/python/grpcio/grpc/framework/face/future_invocation_asynchronous_event_service_test.py
diff --git a/src/python/src/grpc/framework/face/implementations.py b/src/python/grpcio/grpc/framework/face/implementations.py
similarity index 100%
rename from src/python/src/grpc/framework/face/implementations.py
rename to src/python/grpcio/grpc/framework/face/implementations.py
diff --git a/src/python/src/grpc/framework/face/interfaces.py b/src/python/grpcio/grpc/framework/face/interfaces.py
similarity index 100%
rename from src/python/src/grpc/framework/face/interfaces.py
rename to src/python/grpcio/grpc/framework/face/interfaces.py
diff --git a/src/python/src/grpc/framework/face/__init__.py b/src/python/grpcio/grpc/framework/face/testing/__init__.py
similarity index 100%
rename from src/python/src/grpc/framework/face/__init__.py
rename to src/python/grpcio/grpc/framework/face/testing/__init__.py
diff --git a/src/python/src/grpc/framework/face/testing/base_util.py b/src/python/grpcio/grpc/framework/face/testing/base_util.py
similarity index 100%
rename from src/python/src/grpc/framework/face/testing/base_util.py
rename to src/python/grpcio/grpc/framework/face/testing/base_util.py
diff --git a/src/python/src/grpc/framework/face/testing/blocking_invocation_inline_service_test_case.py b/src/python/grpcio/grpc/framework/face/testing/blocking_invocation_inline_service_test_case.py
similarity index 100%
rename from src/python/src/grpc/framework/face/testing/blocking_invocation_inline_service_test_case.py
rename to src/python/grpcio/grpc/framework/face/testing/blocking_invocation_inline_service_test_case.py
diff --git a/src/python/src/grpc/framework/face/testing/callback.py b/src/python/grpcio/grpc/framework/face/testing/callback.py
similarity index 100%
rename from src/python/src/grpc/framework/face/testing/callback.py
rename to src/python/grpcio/grpc/framework/face/testing/callback.py
diff --git a/src/python/src/grpc/framework/face/testing/control.py b/src/python/grpcio/grpc/framework/face/testing/control.py
similarity index 100%
rename from src/python/src/grpc/framework/face/testing/control.py
rename to src/python/grpcio/grpc/framework/face/testing/control.py
diff --git a/src/python/src/grpc/framework/face/testing/coverage.py b/src/python/grpcio/grpc/framework/face/testing/coverage.py
similarity index 100%
rename from src/python/src/grpc/framework/face/testing/coverage.py
rename to src/python/grpcio/grpc/framework/face/testing/coverage.py
diff --git a/src/python/src/grpc/framework/face/testing/digest.py b/src/python/grpcio/grpc/framework/face/testing/digest.py
similarity index 100%
rename from src/python/src/grpc/framework/face/testing/digest.py
rename to src/python/grpcio/grpc/framework/face/testing/digest.py
diff --git a/src/python/src/grpc/framework/face/testing/event_invocation_synchronous_event_service_test_case.py b/src/python/grpcio/grpc/framework/face/testing/event_invocation_synchronous_event_service_test_case.py
similarity index 100%
rename from src/python/src/grpc/framework/face/testing/event_invocation_synchronous_event_service_test_case.py
rename to src/python/grpcio/grpc/framework/face/testing/event_invocation_synchronous_event_service_test_case.py
diff --git a/src/python/src/grpc/framework/face/testing/future_invocation_asynchronous_event_service_test_case.py b/src/python/grpcio/grpc/framework/face/testing/future_invocation_asynchronous_event_service_test_case.py
similarity index 100%
rename from src/python/src/grpc/framework/face/testing/future_invocation_asynchronous_event_service_test_case.py
rename to src/python/grpcio/grpc/framework/face/testing/future_invocation_asynchronous_event_service_test_case.py
diff --git a/src/python/src/grpc/framework/face/testing/interfaces.py b/src/python/grpcio/grpc/framework/face/testing/interfaces.py
similarity index 100%
rename from src/python/src/grpc/framework/face/testing/interfaces.py
rename to src/python/grpcio/grpc/framework/face/testing/interfaces.py
diff --git a/src/python/src/grpc/framework/face/testing/serial.py b/src/python/grpcio/grpc/framework/face/testing/serial.py
similarity index 100%
rename from src/python/src/grpc/framework/face/testing/serial.py
rename to src/python/grpcio/grpc/framework/face/testing/serial.py
diff --git a/src/python/src/grpc/framework/face/testing/service.py b/src/python/grpcio/grpc/framework/face/testing/service.py
similarity index 100%
rename from src/python/src/grpc/framework/face/testing/service.py
rename to src/python/grpcio/grpc/framework/face/testing/service.py
diff --git a/src/python/src/grpc/framework/face/testing/stock_service.py b/src/python/grpcio/grpc/framework/face/testing/stock_service.py
similarity index 100%
rename from src/python/src/grpc/framework/face/testing/stock_service.py
rename to src/python/grpcio/grpc/framework/face/testing/stock_service.py
diff --git a/src/python/src/grpc/framework/face/testing/test_case.py b/src/python/grpcio/grpc/framework/face/testing/test_case.py
similarity index 100%
rename from src/python/src/grpc/framework/face/testing/test_case.py
rename to src/python/grpcio/grpc/framework/face/testing/test_case.py
diff --git a/src/python/src/grpc/framework/face/utilities.py b/src/python/grpcio/grpc/framework/face/utilities.py
similarity index 100%
rename from src/python/src/grpc/framework/face/utilities.py
rename to src/python/grpcio/grpc/framework/face/utilities.py
diff --git a/src/python/src/grpc/framework/face/testing/__init__.py b/src/python/grpcio/grpc/framework/foundation/__init__.py
similarity index 100%
rename from src/python/src/grpc/framework/face/testing/__init__.py
rename to src/python/grpcio/grpc/framework/foundation/__init__.py
diff --git a/src/python/src/grpc/framework/foundation/_later_test.py b/src/python/grpcio/grpc/framework/foundation/_later_test.py
similarity index 100%
rename from src/python/src/grpc/framework/foundation/_later_test.py
rename to src/python/grpcio/grpc/framework/foundation/_later_test.py
diff --git a/src/python/src/grpc/framework/foundation/_logging_pool_test.py b/src/python/grpcio/grpc/framework/foundation/_logging_pool_test.py
similarity index 100%
rename from src/python/src/grpc/framework/foundation/_logging_pool_test.py
rename to src/python/grpcio/grpc/framework/foundation/_logging_pool_test.py
diff --git a/src/python/src/grpc/framework/foundation/_timer_future.py b/src/python/grpcio/grpc/framework/foundation/_timer_future.py
similarity index 100%
rename from src/python/src/grpc/framework/foundation/_timer_future.py
rename to src/python/grpcio/grpc/framework/foundation/_timer_future.py
diff --git a/src/python/src/grpc/framework/foundation/abandonment.py b/src/python/grpcio/grpc/framework/foundation/abandonment.py
similarity index 100%
rename from src/python/src/grpc/framework/foundation/abandonment.py
rename to src/python/grpcio/grpc/framework/foundation/abandonment.py
diff --git a/src/python/src/grpc/framework/foundation/activated.py b/src/python/grpcio/grpc/framework/foundation/activated.py
similarity index 100%
rename from src/python/src/grpc/framework/foundation/activated.py
rename to src/python/grpcio/grpc/framework/foundation/activated.py
diff --git a/src/python/src/grpc/framework/foundation/callable_util.py b/src/python/grpcio/grpc/framework/foundation/callable_util.py
similarity index 100%
rename from src/python/src/grpc/framework/foundation/callable_util.py
rename to src/python/grpcio/grpc/framework/foundation/callable_util.py
diff --git a/src/python/src/grpc/framework/foundation/future.py b/src/python/grpcio/grpc/framework/foundation/future.py
similarity index 100%
rename from src/python/src/grpc/framework/foundation/future.py
rename to src/python/grpcio/grpc/framework/foundation/future.py
diff --git a/src/python/src/grpc/framework/foundation/later.py b/src/python/grpcio/grpc/framework/foundation/later.py
similarity index 100%
rename from src/python/src/grpc/framework/foundation/later.py
rename to src/python/grpcio/grpc/framework/foundation/later.py
diff --git a/src/python/src/grpc/framework/foundation/logging_pool.py b/src/python/grpcio/grpc/framework/foundation/logging_pool.py
similarity index 100%
rename from src/python/src/grpc/framework/foundation/logging_pool.py
rename to src/python/grpcio/grpc/framework/foundation/logging_pool.py
diff --git a/src/python/src/grpc/framework/foundation/relay.py b/src/python/grpcio/grpc/framework/foundation/relay.py
similarity index 100%
rename from src/python/src/grpc/framework/foundation/relay.py
rename to src/python/grpcio/grpc/framework/foundation/relay.py
diff --git a/src/python/src/grpc/framework/foundation/stream.py b/src/python/grpcio/grpc/framework/foundation/stream.py
similarity index 100%
rename from src/python/src/grpc/framework/foundation/stream.py
rename to src/python/grpcio/grpc/framework/foundation/stream.py
diff --git a/src/python/src/grpc/framework/foundation/stream_testing.py b/src/python/grpcio/grpc/framework/foundation/stream_testing.py
similarity index 100%
rename from src/python/src/grpc/framework/foundation/stream_testing.py
rename to src/python/grpcio/grpc/framework/foundation/stream_testing.py
diff --git a/src/python/src/grpc/framework/foundation/stream_util.py b/src/python/grpcio/grpc/framework/foundation/stream_util.py
similarity index 100%
rename from src/python/src/grpc/framework/foundation/stream_util.py
rename to src/python/grpcio/grpc/framework/foundation/stream_util.py
diff --git a/src/python/src/grpc/framework/foundation/__init__.py b/src/python/grpcio/grpc/framework/interfaces/__init__.py
similarity index 100%
rename from src/python/src/grpc/framework/foundation/__init__.py
rename to src/python/grpcio/grpc/framework/interfaces/__init__.py
diff --git a/src/python/src/grpc/framework/interfaces/__init__.py b/src/python/grpcio/grpc/framework/interfaces/links/__init__.py
similarity index 100%
rename from src/python/src/grpc/framework/interfaces/__init__.py
rename to src/python/grpcio/grpc/framework/interfaces/links/__init__.py
diff --git a/src/python/src/grpc/framework/interfaces/links/links.py b/src/python/grpcio/grpc/framework/interfaces/links/links.py
similarity index 100%
rename from src/python/src/grpc/framework/interfaces/links/links.py
rename to src/python/grpcio/grpc/framework/interfaces/links/links.py
diff --git a/src/python/src/grpc/framework/interfaces/links/test_cases.py b/src/python/grpcio/grpc/framework/interfaces/links/test_cases.py
similarity index 100%
rename from src/python/src/grpc/framework/interfaces/links/test_cases.py
rename to src/python/grpcio/grpc/framework/interfaces/links/test_cases.py
diff --git a/src/python/src/grpc/framework/interfaces/links/test_utilities.py b/src/python/grpcio/grpc/framework/interfaces/links/test_utilities.py
similarity index 100%
rename from src/python/src/grpc/framework/interfaces/links/test_utilities.py
rename to src/python/grpcio/grpc/framework/interfaces/links/test_utilities.py
diff --git a/src/python/src/grpc/framework/interfaces/links/utilities.py b/src/python/grpcio/grpc/framework/interfaces/links/utilities.py
similarity index 100%
rename from src/python/src/grpc/framework/interfaces/links/utilities.py
rename to src/python/grpcio/grpc/framework/interfaces/links/utilities.py
diff --git a/src/python/src/setup.cfg b/src/python/grpcio/setup.cfg
similarity index 100%
rename from src/python/src/setup.cfg
rename to src/python/grpcio/setup.cfg
diff --git a/src/python/src/setup.py b/src/python/grpcio/setup.py
similarity index 85%
rename from src/python/src/setup.py
rename to src/python/grpcio/setup.py
index 0310a83a7b..1333ae0086 100644
--- a/src/python/src/setup.py
+++ b/src/python/grpcio/setup.py
@@ -79,29 +79,11 @@ _C_EXTENSION_MODULE = _core.Extension(
 _EXTENSION_MODULES = [_C_EXTENSION_MODULE]
 
 _PACKAGES = (
-    'grpc',
-    'grpc._adapter',
-    'grpc._junkdrawer',
-    'grpc._links',
-    'grpc.early_adopter',
-    'grpc.framework',
-    'grpc.framework.alpha',
-    'grpc.framework.base',
-    'grpc.framework.common',
-    'grpc.framework.face',
-    'grpc.framework.face.testing',
-    'grpc.framework.foundation',
-    'grpc.framework.interfaces',
-    'grpc.framework.interfaces.links',
+    setuptools.find_packages('.', exclude=['*._cython', '*._cython.*'])
 )
 
 _PACKAGE_DIRECTORIES = {
-    'grpc': 'grpc',
-    'grpc._adapter': 'grpc/_adapter',
-    'grpc._junkdrawer': 'grpc/_junkdrawer',
-    'grpc._links': 'grpc/_links',
-    'grpc.early_adopter': 'grpc/early_adopter',
-    'grpc.framework': 'grpc/framework',
+    '': '.',
 }
 
 _INSTALL_REQUIRES = (
diff --git a/src/python/src/grpc/framework/interfaces/links/__init__.py b/src/python/grpcio_test/grpc_interop/__init__.py
similarity index 100%
rename from src/python/src/grpc/framework/interfaces/links/__init__.py
rename to src/python/grpcio_test/grpc_interop/__init__.py
diff --git a/src/python/interop/interop/_insecure_interop_test.py b/src/python/grpcio_test/grpc_interop/_insecure_interop_test.py
similarity index 96%
rename from src/python/interop/interop/_insecure_interop_test.py
rename to src/python/grpcio_test/grpc_interop/_insecure_interop_test.py
index 98ea3a6648..825988a072 100644
--- a/src/python/interop/interop/_insecure_interop_test.py
+++ b/src/python/grpcio_test/grpc_interop/_insecure_interop_test.py
@@ -33,8 +33,8 @@ import unittest
 
 from grpc.early_adopter import implementations
 
-from interop import _interop_test_case
-from interop import methods
+from grpc_interop import _interop_test_case
+from grpc_interop import methods
 
 
 class InsecureInteropTest(
diff --git a/src/python/interop/interop/_interop_test_case.py b/src/python/grpcio_test/grpc_interop/_interop_test_case.py
similarity index 98%
rename from src/python/interop/interop/_interop_test_case.py
rename to src/python/grpcio_test/grpc_interop/_interop_test_case.py
index f40ef0ec83..ed8f7ef009 100644
--- a/src/python/interop/interop/_interop_test_case.py
+++ b/src/python/grpcio_test/grpc_interop/_interop_test_case.py
@@ -29,7 +29,7 @@
 
 """Common code for unit tests of the interoperability test code."""
 
-from interop import methods
+from grpc_interop import methods
 
 
 class InteropTestCase(object):
diff --git a/src/python/interop/interop/_secure_interop_test.py b/src/python/grpcio_test/grpc_interop/_secure_interop_test.py
similarity index 95%
rename from src/python/interop/interop/_secure_interop_test.py
rename to src/python/grpcio_test/grpc_interop/_secure_interop_test.py
index be7618f549..a2682dee99 100644
--- a/src/python/interop/interop/_secure_interop_test.py
+++ b/src/python/grpcio_test/grpc_interop/_secure_interop_test.py
@@ -33,9 +33,9 @@ import unittest
 
 from grpc.early_adopter import implementations
 
-from interop import _interop_test_case
-from interop import methods
-from interop import resources
+from grpc_interop import _interop_test_case
+from grpc_interop import methods
+from grpc_interop import resources
 
 _SERVER_HOST_OVERRIDE = 'foo.test.google.fr'
 
diff --git a/src/python/interop/interop/client.py b/src/python/grpcio_test/grpc_interop/client.py
similarity index 98%
rename from src/python/interop/interop/client.py
rename to src/python/grpcio_test/grpc_interop/client.py
index 41f0d94539..2dd2103cbe 100644
--- a/src/python/interop/interop/client.py
+++ b/src/python/grpcio_test/grpc_interop/client.py
@@ -34,8 +34,8 @@ from oauth2client import client as oauth2client_client
 
 from grpc.early_adopter import implementations
 
-from interop import methods
-from interop import resources
+from grpc_interop import methods
+from grpc_interop import resources
 
 _ONE_DAY_IN_SECONDS = 60 * 60 * 24
 
diff --git a/src/python/interop/interop/credentials/README b/src/python/grpcio_test/grpc_interop/credentials/README
similarity index 100%
rename from src/python/interop/interop/credentials/README
rename to src/python/grpcio_test/grpc_interop/credentials/README
diff --git a/src/python/interop/interop/credentials/ca.pem b/src/python/grpcio_test/grpc_interop/credentials/ca.pem
similarity index 100%
rename from src/python/interop/interop/credentials/ca.pem
rename to src/python/grpcio_test/grpc_interop/credentials/ca.pem
diff --git a/src/python/interop/interop/credentials/server1.key b/src/python/grpcio_test/grpc_interop/credentials/server1.key
similarity index 100%
rename from src/python/interop/interop/credentials/server1.key
rename to src/python/grpcio_test/grpc_interop/credentials/server1.key
diff --git a/src/python/interop/interop/credentials/server1.pem b/src/python/grpcio_test/grpc_interop/credentials/server1.pem
similarity index 100%
rename from src/python/interop/interop/credentials/server1.pem
rename to src/python/grpcio_test/grpc_interop/credentials/server1.pem
diff --git a/src/python/interop/interop/empty_pb2.py b/src/python/grpcio_test/grpc_interop/empty_pb2.py
similarity index 100%
rename from src/python/interop/interop/empty_pb2.py
rename to src/python/grpcio_test/grpc_interop/empty_pb2.py
diff --git a/src/python/interop/interop/messages_pb2.py b/src/python/grpcio_test/grpc_interop/messages_pb2.py
similarity index 100%
rename from src/python/interop/interop/messages_pb2.py
rename to src/python/grpcio_test/grpc_interop/messages_pb2.py
diff --git a/src/python/interop/interop/methods.py b/src/python/grpcio_test/grpc_interop/methods.py
similarity index 99%
rename from src/python/interop/interop/methods.py
rename to src/python/grpcio_test/grpc_interop/methods.py
index 194afadb17..f4c94685ee 100644
--- a/src/python/interop/interop/methods.py
+++ b/src/python/grpcio_test/grpc_interop/methods.py
@@ -38,8 +38,8 @@ from oauth2client import client as oauth2client_client
 
 from grpc.framework.alpha import utilities
 
-from interop import empty_pb2
-from interop import messages_pb2
+from grpc_interop import empty_pb2
+from grpc_interop import messages_pb2
 
 _TIMEOUT = 7
 
diff --git a/src/python/interop/interop/resources.py b/src/python/grpcio_test/grpc_interop/resources.py
similarity index 100%
rename from src/python/interop/interop/resources.py
rename to src/python/grpcio_test/grpc_interop/resources.py
diff --git a/src/python/interop/interop/server.py b/src/python/grpcio_test/grpc_interop/server.py
similarity index 97%
rename from src/python/interop/interop/server.py
rename to src/python/grpcio_test/grpc_interop/server.py
index a67d412038..60f630a6be 100644
--- a/src/python/interop/interop/server.py
+++ b/src/python/grpcio_test/grpc_interop/server.py
@@ -35,8 +35,8 @@ import time
 
 from grpc.early_adopter import implementations
 
-from interop import methods
-from interop import resources
+from grpc_interop import methods
+from grpc_interop import resources
 
 _ONE_DAY_IN_SECONDS = 60 * 60 * 24
 
diff --git a/src/python/interop/interop/test_pb2.py b/src/python/grpcio_test/grpc_interop/test_pb2.py
similarity index 100%
rename from src/python/interop/interop/test_pb2.py
rename to src/python/grpcio_test/grpc_interop/test_pb2.py
diff --git a/src/python/interop/setup.py b/src/python/grpcio_test/setup.py
similarity index 95%
rename from src/python/interop/setup.py
rename to src/python/grpcio_test/setup.py
index 75012b0d8f..dbea0f76ae 100644
--- a/src/python/interop/setup.py
+++ b/src/python/grpcio_test/setup.py
@@ -31,16 +31,14 @@
 
 import setuptools
 
-_PACKAGES = (
-    'interop',
-)
+_PACKAGES = setuptools.find_packages('.')
 
 _PACKAGE_DIRECTORIES = {
-    'interop': 'interop',
+    '': '.',
 }
 
 _PACKAGE_DATA = {
-    'interop': [
+    'grpc_interop': [
         'credentials/ca.pem', 'credentials/server1.key',
         'credentials/server1.pem',]
 }
@@ -48,7 +46,7 @@ _PACKAGE_DATA = {
 _INSTALL_REQUIRES = ['oauth2client>=1.4.7', 'grpcio>=0.10.0a0']
 
 setuptools.setup(
-    name='interop',
+    name='grpcio_test',
     version='0.0.1',
     packages=_PACKAGES,
     package_dir=_PACKAGE_DIRECTORIES,
diff --git a/tools/distrib/python/docgen.py b/tools/distrib/python/docgen.py
index 3ab84a6ba1..d76792c56f 100755
--- a/tools/distrib/python/docgen.py
+++ b/tools/distrib/python/docgen.py
@@ -51,8 +51,8 @@ SCRIPT_DIR = os.path.dirname(os.path.abspath(__file__))
 PROJECT_ROOT = os.path.abspath(os.path.join(SCRIPT_DIR, '..', '..', '..'))
 
 CONFIG = args.config
-SETUP_PATH = os.path.join(PROJECT_ROOT, 'src/python/src/setup.py')
-DOC_PATH = os.path.join(PROJECT_ROOT, 'src/python/src/doc/build')
+SETUP_PATH = os.path.join(PROJECT_ROOT, 'src/python/grpcio/setup.py')
+DOC_PATH = os.path.join(PROJECT_ROOT, 'src/python/grpcio/doc/build')
 INCLUDE_PATH = os.path.join(PROJECT_ROOT, 'include')
 LIBRARY_PATH = os.path.join(PROJECT_ROOT, 'libs/{}'.format(CONFIG))
 VIRTUALENV_DIR = os.path.join(SCRIPT_DIR, 'distrib_virtualenv')
diff --git a/tools/distrib/python/submit.py b/tools/distrib/python/submit.py
index a3615b3640..909ba56327 100755
--- a/tools/distrib/python/submit.py
+++ b/tools/distrib/python/submit.py
@@ -59,7 +59,7 @@ 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')
+                      '../../../src/python/grpcio')
 # Remove previous distributions; they somehow confuse twine.
 try:
   shutil.rmtree(os.path.join(pkgdir, 'dist/'))
diff --git a/tools/run_tests/build_python.sh b/tools/run_tests/build_python.sh
index ae0fb42241..265a542e3a 100755
--- a/tools/run_tests/build_python.sh
+++ b/tools/run_tests/build_python.sh
@@ -43,8 +43,8 @@ make_virtualenv() {
     virtualenv -p `which "python"$1` $virtualenv_name
     source $virtualenv_name/bin/activate
     pip install -r src/python/requirements.txt
-    CFLAGS="-I$root/include -std=c89" LDFLAGS=-L$root/libs/$CONFIG GRPC_PYTHON_BUILD_WITH_CYTHON=1 pip install src/python/src
-    pip install src/python/interop
+    CFLAGS="-I$root/include -std=c89" LDFLAGS=-L$root/libs/$CONFIG GRPC_PYTHON_BUILD_WITH_CYTHON=1 pip install src/python/grpcio
+    pip install src/python/grpcio_test
   else
     source $virtualenv_name/bin/activate
     # Uninstall and re-install the packages we care about. Don't use
@@ -52,13 +52,13 @@ make_virtualenv() {
     # unnecessarily to dependencies. Don't use --no-deps to avoid missing
     # dependency upgrades.
     (yes | pip uninstall grpcio) || true
-    (yes | pip uninstall interop) || true
-    (CFLAGS="-I$root/include -std=c89" LDFLAGS=-L$root/libs/$CONFIG GRPC_PYTHON_BUILD_WITH_CYTHON=1 pip install src/python/src) || (
+    (yes | pip uninstall grpcio_test) || true
+    (CFLAGS="-I$root/include -std=c89" LDFLAGS=-L$root/libs/$CONFIG GRPC_PYTHON_BUILD_WITH_CYTHON=1 pip install src/python/grpcio) || (
       # Fall back to rebuilding the entire environment
       rm -rf $virtualenv_name
       make_virtualenv $1
     )
-    pip install src/python/interop
+    pip install src/python/grpcio_test
   fi
 }
 
diff --git a/tools/run_tests/python_tests.json b/tools/run_tests/python_tests.json
index 3d75d8de36..8bb3939fdd 100755
--- a/tools/run_tests/python_tests.json
+++ b/tools/run_tests/python_tests.json
@@ -102,13 +102,13 @@
     ]
   },
   {
-    "module": "interop._insecure_interop_test",
+    "module": "grpc_interop._insecure_interop_test",
     "pythonVersions": [
       "2.7"
     ]
   },
   {
-    "module": "interop._secure_interop_test",
+    "module": "grpc_interop._secure_interop_test",
     "pythonVersions": [
       "2.7"
     ]
-- 
GitLab