Merge pull request #22563 from ericgribkoff/cherry_pick_pip

Merge pull request #22560 from ericgribkoff/update_pip
diff --git a/BUILD b/BUILD
index 3af4c8f..d1d6da3 100644
--- a/BUILD
+++ b/BUILD
@@ -79,7 +79,7 @@
 
 core_version = "9.0.0"
 
-version = "1.28.0"
+version = "1.28.1"
 
 GPR_PUBLIC_HDRS = [
     "include/grpc/support/alloc.h",
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 2c0b59c..f7d6191 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -25,12 +25,12 @@
 cmake_minimum_required(VERSION 3.5.1)
 
 set(PACKAGE_NAME          "grpc")
-set(PACKAGE_VERSION       "1.28.0")
+set(PACKAGE_VERSION       "1.28.1")
 set(gRPC_CORE_VERSION     "9.0.0")
 set(gRPC_CORE_SOVERSION   "9")
-set(gRPC_CPP_VERSION      "1.28.0")
+set(gRPC_CPP_VERSION      "1.28.1")
 set(gRPC_CPP_SOVERSION    "1")
-set(gRPC_CSHARP_VERSION   "2.28.0")
+set(gRPC_CSHARP_VERSION   "2.28.1")
 set(gRPC_CSHARP_SOVERSION "2")
 set(PACKAGE_STRING        "${PACKAGE_NAME} ${PACKAGE_VERSION}")
 set(PACKAGE_TARNAME       "${PACKAGE_NAME}-${PACKAGE_VERSION}")
diff --git a/Makefile b/Makefile
index 8ca797b..19058aa 100644
--- a/Makefile
+++ b/Makefile
@@ -470,8 +470,8 @@
 endif
 
 CORE_VERSION = 9.0.0
-CPP_VERSION = 1.28.0
-CSHARP_VERSION = 2.28.0
+CPP_VERSION = 1.28.1
+CSHARP_VERSION = 2.28.1
 
 CPPFLAGS_NO_ARCH += $(addprefix -I, $(INCLUDES)) $(addprefix -D, $(DEFINES))
 CPPFLAGS += $(CPPFLAGS_NO_ARCH) $(ARCH_FLAGS)
diff --git a/build.yaml b/build.yaml
index 54b2d2d..0f5c953 100644
--- a/build.yaml
+++ b/build.yaml
@@ -15,7 +15,7 @@
   core_version: 9.0.0
   csharp_major_version: 2
   g_stands_for: galactic
-  version: 1.28.0
+  version: 1.28.1
 filegroups:
 - name: alts_tsi
   headers:
diff --git a/gRPC-C++.podspec b/gRPC-C++.podspec
index 4c0783f..63ba335 100644
--- a/gRPC-C++.podspec
+++ b/gRPC-C++.podspec
@@ -22,7 +22,7 @@
 Pod::Spec.new do |s|
   s.name     = 'gRPC-C++'
   # TODO (mxyan): use version that match gRPC version when pod is stabilized
-  version = '1.28.0'
+  version = '1.28.1'
   s.version  = version
   s.summary  = 'gRPC C++ library'
   s.homepage = 'https://grpc.io'
diff --git a/gRPC-Core.podspec b/gRPC-Core.podspec
index 22da260..5fc1911 100644
--- a/gRPC-Core.podspec
+++ b/gRPC-Core.podspec
@@ -21,7 +21,7 @@
 
 Pod::Spec.new do |s|
   s.name     = 'gRPC-Core'
-  version = '1.28.0'
+  version = '1.28.1'
   s.version  = version
   s.summary  = 'Core cross-platform gRPC library, written in C'
   s.homepage = 'https://grpc.io'
diff --git a/gRPC-ProtoRPC.podspec b/gRPC-ProtoRPC.podspec
index eb37821..dd1c4a4 100644
--- a/gRPC-ProtoRPC.podspec
+++ b/gRPC-ProtoRPC.podspec
@@ -21,7 +21,7 @@
 
 Pod::Spec.new do |s|
   s.name     = 'gRPC-ProtoRPC'
-  version = '1.28.0'
+  version = '1.28.1'
   s.version  = version
   s.summary  = 'RPC library for Protocol Buffers, based on gRPC'
   s.homepage = 'https://grpc.io'
diff --git a/gRPC-RxLibrary.podspec b/gRPC-RxLibrary.podspec
index a60491a..03e136c 100644
--- a/gRPC-RxLibrary.podspec
+++ b/gRPC-RxLibrary.podspec
@@ -21,7 +21,7 @@
 
 Pod::Spec.new do |s|
   s.name     = 'gRPC-RxLibrary'
-  version = '1.28.0'
+  version = '1.28.1'
   s.version  = version
   s.summary  = 'Reactive Extensions library for iOS/OSX.'
   s.homepage = 'https://grpc.io'
diff --git a/gRPC.podspec b/gRPC.podspec
index 4f18d9e..3487894 100644
--- a/gRPC.podspec
+++ b/gRPC.podspec
@@ -20,7 +20,7 @@
 
 Pod::Spec.new do |s|
   s.name     = 'gRPC'
-  version = '1.28.0'
+  version = '1.28.1'
   s.version  = version
   s.summary  = 'gRPC client library for iOS/OSX'
   s.homepage = 'https://grpc.io'
diff --git a/package.xml b/package.xml
index 24ff2ea..0b5935d 100644
--- a/package.xml
+++ b/package.xml
@@ -13,8 +13,8 @@
  <date>2019-09-24</date>
  <time>16:06:07</time>
  <version>
-  <release>1.28.0</release>
-  <api>1.28.0</api>
+  <release>1.28.1</release>
+  <api>1.28.1</api>
  </version>
  <stability>
   <release>stable</release>
@@ -22,7 +22,7 @@
  </stability>
  <license>Apache 2.0</license>
  <notes>
-- gRPC Core 1.28.0 update
+- gRPC Core 1.28.1 update
  </notes>
  <contents>
   <dir baseinstalldir="/" name="/">
diff --git a/src/cpp/common/version_cc.cc b/src/cpp/common/version_cc.cc
index 80580c5..44ea226a 100644
--- a/src/cpp/common/version_cc.cc
+++ b/src/cpp/common/version_cc.cc
@@ -22,5 +22,5 @@
 #include <grpcpp/grpcpp.h>
 
 namespace grpc {
-grpc::string Version() { return "1.28.0"; }
+grpc::string Version() { return "1.28.1"; }
 }  // namespace grpc
diff --git a/src/csharp/Grpc.Core.Api/VersionInfo.cs b/src/csharp/Grpc.Core.Api/VersionInfo.cs
index 7b26394..2c34b9e 100644
--- a/src/csharp/Grpc.Core.Api/VersionInfo.cs
+++ b/src/csharp/Grpc.Core.Api/VersionInfo.cs
@@ -33,11 +33,11 @@
         /// <summary>
         /// Current <c>AssemblyFileVersion</c> of gRPC C# assemblies
         /// </summary>
-        public const string CurrentAssemblyFileVersion = "2.28.0.0";
+        public const string CurrentAssemblyFileVersion = "2.28.1.0";
 
         /// <summary>
         /// Current version of gRPC C#
         /// </summary>
-        public const string CurrentVersion = "2.28.0";
+        public const string CurrentVersion = "2.28.1";
     }
 }
diff --git a/src/csharp/build/dependencies.props b/src/csharp/build/dependencies.props
index 4811444..da53b77 100644
--- a/src/csharp/build/dependencies.props
+++ b/src/csharp/build/dependencies.props
@@ -1,7 +1,7 @@
 <!-- This file is generated -->
 <Project>
   <PropertyGroup>
-    <GrpcCsharpVersion>2.28.0</GrpcCsharpVersion>
+    <GrpcCsharpVersion>2.28.1</GrpcCsharpVersion>
     <GoogleProtobufVersion>3.11.2</GoogleProtobufVersion>
   </PropertyGroup>
 </Project>
diff --git a/src/csharp/build_unitypackage.bat b/src/csharp/build_unitypackage.bat
index c9366fb..a434386 100644
--- a/src/csharp/build_unitypackage.bat
+++ b/src/csharp/build_unitypackage.bat
@@ -13,7 +13,7 @@
 @rem limitations under the License.
 
 @rem Current package versions
-set VERSION=2.28.0
+set VERSION=2.28.1
 
 @rem Adjust the location of nuget.exe
 set NUGET=C:\nuget\nuget.exe
diff --git "a/src/objective-c/\041ProtoCompiler-gRPCCppPlugin.podspec" "b/src/objective-c/\041ProtoCompiler-gRPCCppPlugin.podspec"
index e180082..8a88ba2 100644
--- "a/src/objective-c/\041ProtoCompiler-gRPCCppPlugin.podspec"
+++ "b/src/objective-c/\041ProtoCompiler-gRPCCppPlugin.podspec"
@@ -42,7 +42,7 @@
   # exclamation mark ensures that other "regular" pods will be able to find it as it'll be installed
   # before them.
   s.name     = '!ProtoCompiler-gRPCCppPlugin'
-  v = '1.28.0'
+  v = '1.28.1'
   s.version  = v
   s.summary  = 'The gRPC ProtoC plugin generates C++ files from .proto services.'
   s.description = <<-DESC
diff --git "a/src/objective-c/\041ProtoCompiler-gRPCPlugin.podspec" "b/src/objective-c/\041ProtoCompiler-gRPCPlugin.podspec"
index ef8bef8..f6600b5 100644
--- "a/src/objective-c/\041ProtoCompiler-gRPCPlugin.podspec"
+++ "b/src/objective-c/\041ProtoCompiler-gRPCPlugin.podspec"
@@ -42,7 +42,7 @@
   # exclamation mark ensures that other "regular" pods will be able to find it as it'll be installed
   # before them.
   s.name     = '!ProtoCompiler-gRPCPlugin'
-  v = '1.28.0'
+  v = '1.28.1'
   s.version  = v
   s.summary  = 'The gRPC ProtoC plugin generates Objective-C files from .proto services.'
   s.description = <<-DESC
diff --git a/src/objective-c/GRPCClient/version.h b/src/objective-c/GRPCClient/version.h
index 4a0c5ee..c41c5e3 100644
--- a/src/objective-c/GRPCClient/version.h
+++ b/src/objective-c/GRPCClient/version.h
@@ -22,4 +22,4 @@
 // instead. This file can be regenerated from the template by running
 // `tools/buildgen/generate_projects.sh`.
 
-#define GRPC_OBJC_VERSION_STRING @"1.28.0"
+#define GRPC_OBJC_VERSION_STRING @"1.28.1"
diff --git a/src/objective-c/tests/version.h b/src/objective-c/tests/version.h
index d0553eb..b037458 100644
--- a/src/objective-c/tests/version.h
+++ b/src/objective-c/tests/version.h
@@ -22,5 +22,5 @@
 // instead. This file can be regenerated from the template by running
 // `tools/buildgen/generate_projects.sh`.
 
-#define GRPC_OBJC_VERSION_STRING @"1.28.0"
+#define GRPC_OBJC_VERSION_STRING @"1.28.1"
 #define GRPC_C_VERSION_STRING @"9.0.0"
diff --git a/src/php/composer.json b/src/php/composer.json
index 8f8aad0..78ff79b 100644
--- a/src/php/composer.json
+++ b/src/php/composer.json
@@ -2,7 +2,7 @@
   "name": "grpc/grpc-dev",
   "description": "gRPC library for PHP - for Development use only",
   "license": "Apache-2.0",
-  "version": "1.28.0",
+  "version": "1.28.1",
   "require": {
     "php": ">=5.5.0",
     "google/protobuf": "^v3.3.0"
diff --git a/src/php/ext/grpc/version.h b/src/php/ext/grpc/version.h
index 6c1ba5f..1ddc513 100644
--- a/src/php/ext/grpc/version.h
+++ b/src/php/ext/grpc/version.h
@@ -20,6 +20,6 @@
 #ifndef VERSION_H
 #define VERSION_H
 
-#define PHP_GRPC_VERSION "1.28.0"
+#define PHP_GRPC_VERSION "1.28.1"
 
 #endif /* VERSION_H */
diff --git a/src/python/grpcio/grpc/_grpcio_metadata.py b/src/python/grpcio/grpc/_grpcio_metadata.py
index e1833d1..83bfa2f 100644
--- a/src/python/grpcio/grpc/_grpcio_metadata.py
+++ b/src/python/grpcio/grpc/_grpcio_metadata.py
@@ -14,4 +14,4 @@
 
 # AUTO-GENERATED FROM `$REPO_ROOT/templates/src/python/grpcio/grpc/_grpcio_metadata.py.template`!!!
 
-__version__ = """1.28.0"""
+__version__ = """1.28.1"""
diff --git a/src/python/grpcio/grpc/experimental/__init__.py b/src/python/grpcio/grpc/experimental/__init__.py
index 6364e36..2c63908 100644
--- a/src/python/grpcio/grpc/experimental/__init__.py
+++ b/src/python/grpcio/grpc/experimental/__init__.py
@@ -85,6 +85,6 @@
     'insecure_channel_credentials',
 )
 
-if sys.version_info[0] >= 3:
+if sys.version_info[0] == 3 and sys.version_info[1] >= 6:
     from grpc._simple_stubs import unary_unary, unary_stream, stream_unary, stream_stream
     __all__ = __all__ + (unary_unary, unary_stream, stream_unary, stream_stream)
diff --git a/src/python/grpcio/grpc_version.py b/src/python/grpcio/grpc_version.py
index 72d740e..491b5c5 100644
--- a/src/python/grpcio/grpc_version.py
+++ b/src/python/grpcio/grpc_version.py
@@ -14,4 +14,4 @@
 
 # AUTO-GENERATED FROM `$REPO_ROOT/templates/src/python/grpcio/grpc_version.py.template`!!!
 
-VERSION = '1.28.0'
+VERSION = '1.28.1'
diff --git a/src/python/grpcio_channelz/grpc_version.py b/src/python/grpcio_channelz/grpc_version.py
index 1f30680..d72530b 100644
--- a/src/python/grpcio_channelz/grpc_version.py
+++ b/src/python/grpcio_channelz/grpc_version.py
@@ -14,4 +14,4 @@
 
 # AUTO-GENERATED FROM `$REPO_ROOT/templates/src/python/grpcio_channelz/grpc_version.py.template`!!!
 
-VERSION = '1.28.0'
+VERSION = '1.28.1'
diff --git a/src/python/grpcio_health_checking/grpc_version.py b/src/python/grpcio_health_checking/grpc_version.py
index cf8239e..19006b9 100644
--- a/src/python/grpcio_health_checking/grpc_version.py
+++ b/src/python/grpcio_health_checking/grpc_version.py
@@ -14,4 +14,4 @@
 
 # AUTO-GENERATED FROM `$REPO_ROOT/templates/src/python/grpcio_health_checking/grpc_version.py.template`!!!
 
-VERSION = '1.28.0'
+VERSION = '1.28.1'
diff --git a/src/python/grpcio_reflection/grpc_version.py b/src/python/grpcio_reflection/grpc_version.py
index 2171c02..aff4f53 100644
--- a/src/python/grpcio_reflection/grpc_version.py
+++ b/src/python/grpcio_reflection/grpc_version.py
@@ -14,4 +14,4 @@
 
 # AUTO-GENERATED FROM `$REPO_ROOT/templates/src/python/grpcio_reflection/grpc_version.py.template`!!!
 
-VERSION = '1.28.0'
+VERSION = '1.28.1'
diff --git a/src/python/grpcio_status/grpc_version.py b/src/python/grpcio_status/grpc_version.py
index 2dfce67..115020e 100644
--- a/src/python/grpcio_status/grpc_version.py
+++ b/src/python/grpcio_status/grpc_version.py
@@ -14,4 +14,4 @@
 
 # AUTO-GENERATED FROM `$REPO_ROOT/templates/src/python/grpcio_status/grpc_version.py.template`!!!
 
-VERSION = '1.28.0'
+VERSION = '1.28.1'
diff --git a/src/python/grpcio_testing/grpc_version.py b/src/python/grpcio_testing/grpc_version.py
index 8fedfb9..7601663 100644
--- a/src/python/grpcio_testing/grpc_version.py
+++ b/src/python/grpcio_testing/grpc_version.py
@@ -14,4 +14,4 @@
 
 # AUTO-GENERATED FROM `$REPO_ROOT/templates/src/python/grpcio_testing/grpc_version.py.template`!!!
 
-VERSION = '1.28.0'
+VERSION = '1.28.1'
diff --git a/src/python/grpcio_tests/grpc_version.py b/src/python/grpcio_tests/grpc_version.py
index ddcf718..d15c5b6 100644
--- a/src/python/grpcio_tests/grpc_version.py
+++ b/src/python/grpcio_tests/grpc_version.py
@@ -14,4 +14,4 @@
 
 # AUTO-GENERATED FROM `$REPO_ROOT/templates/src/python/grpcio_tests/grpc_version.py.template`!!!
 
-VERSION = '1.28.0'
+VERSION = '1.28.1'
diff --git a/src/python/grpcio_tests/tests/protoc_plugin/_python_plugin_test.py b/src/python/grpcio_tests/tests/protoc_plugin/_python_plugin_test.py
index 94ffecc..d64f00b 100644
--- a/src/python/grpcio_tests/tests/protoc_plugin/_python_plugin_test.py
+++ b/src/python/grpcio_tests/tests/protoc_plugin/_python_plugin_test.py
@@ -504,7 +504,8 @@
         service.server.stop(None)
 
 
-@unittest.skipIf(sys.version_info[0] < 3, "Unsupported on Python 2.")
+@unittest.skipIf(sys.version_info[0] != 3 or sys.version_info[1] < 6,
+                 "Unsupported on interpreters older than 3.6.")
 class SimpleStubsPluginTest(unittest.TestCase):
     servicer_methods = _ServicerMethods()
 
diff --git a/src/ruby/lib/grpc/version.rb b/src/ruby/lib/grpc/version.rb
index d86976b..f92a8ee 100644
--- a/src/ruby/lib/grpc/version.rb
+++ b/src/ruby/lib/grpc/version.rb
@@ -14,5 +14,5 @@
 
 # GRPC contains the General RPC module.
 module GRPC
-  VERSION = '1.28.0'
+  VERSION = '1.28.1'
 end
diff --git a/src/ruby/tools/version.rb b/src/ruby/tools/version.rb
index c2fb518..0100d1f 100644
--- a/src/ruby/tools/version.rb
+++ b/src/ruby/tools/version.rb
@@ -14,6 +14,6 @@
 
 module GRPC
   module Tools
-    VERSION = '1.28.0'
+    VERSION = '1.28.1'
   end
 end
diff --git a/tools/distrib/python/grpcio_tools/grpc_version.py b/tools/distrib/python/grpcio_tools/grpc_version.py
index 43b8c62..370bfb4 100644
--- a/tools/distrib/python/grpcio_tools/grpc_version.py
+++ b/tools/distrib/python/grpcio_tools/grpc_version.py
@@ -14,4 +14,4 @@
 
 # AUTO-GENERATED FROM `$REPO_ROOT/templates/tools/distrib/python/grpcio_tools/grpc_version.py.template`!!!
 
-VERSION = '1.28.0'
+VERSION = '1.28.1'
diff --git a/tools/doxygen/Doxyfile.c++ b/tools/doxygen/Doxyfile.c++
index 26437dc..82bb2a7 100644
--- a/tools/doxygen/Doxyfile.c++
+++ b/tools/doxygen/Doxyfile.c++
@@ -40,7 +40,7 @@
 # could be handy for archiving the generated documentation or if some version
 # control system is used.
 
-PROJECT_NUMBER         = 1.28.0
+PROJECT_NUMBER         = 1.28.1
 
 # Using the PROJECT_BRIEF tag one can provide an optional one line description
 # for a project that appears at the top of each page and should give viewer a
diff --git a/tools/doxygen/Doxyfile.c++.internal b/tools/doxygen/Doxyfile.c++.internal
index bd948d6..5a08109 100644
--- a/tools/doxygen/Doxyfile.c++.internal
+++ b/tools/doxygen/Doxyfile.c++.internal
@@ -40,7 +40,7 @@
 # could be handy for archiving the generated documentation or if some version
 # control system is used.
 
-PROJECT_NUMBER         = 1.28.0
+PROJECT_NUMBER         = 1.28.1
 
 # Using the PROJECT_BRIEF tag one can provide an optional one line description
 # for a project that appears at the top of each page and should give viewer a
diff --git a/tools/doxygen/Doxyfile.objc b/tools/doxygen/Doxyfile.objc
index 4f1e185..6804a1a 100644
--- a/tools/doxygen/Doxyfile.objc
+++ b/tools/doxygen/Doxyfile.objc
@@ -40,7 +40,7 @@
 # could be handy for archiving the generated documentation or if some version
 # control system is used.
 
-PROJECT_NUMBER         = 1.28.0
+PROJECT_NUMBER         = 1.28.1
 
 # Using the PROJECT_BRIEF tag one can provide an optional one line description
 # for a project that appears at the top of each page and should give viewer a
diff --git a/tools/doxygen/Doxyfile.objc.internal b/tools/doxygen/Doxyfile.objc.internal
index e7d2691..9eae6eb 100644
--- a/tools/doxygen/Doxyfile.objc.internal
+++ b/tools/doxygen/Doxyfile.objc.internal
@@ -40,7 +40,7 @@
 # could be handy for archiving the generated documentation or if some version
 # control system is used.
 
-PROJECT_NUMBER         = 1.28.0
+PROJECT_NUMBER         = 1.28.1
 
 # Using the PROJECT_BRIEF tag one can provide an optional one line description
 # for a project that appears at the top of each page and should give viewer a