aboutsummaryrefslogtreecommitdiff
path: root/google/api_core/future/base.py
diff options
context:
space:
mode:
authorchojoyce <chojoyce@google.com>2022-01-05 05:06:59 +0000
committerAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>2022-01-05 05:06:59 +0000
commite82c234cd2a425bd77dc184ad3003fd9c37e57fe (patch)
tree412a59ade78bcacc2449642d7cfd7ccb6a92d8e4 /google/api_core/future/base.py
parentd4dcb747f8ac4df33c321b19ee1c511f6e47707e (diff)
parent01e15770edd19b8841f9f50204584e02749842d6 (diff)
downloadpython-api-core-e82c234cd2a425bd77dc184ad3003fd9c37e57fe.tar.gz
Merge platform/external/python/python-api-core v2.3.0 am: 4e81cd9cc2 am: 95950852f5 am: 01e15770ed
Original change: https://android-review.googlesource.com/c/platform/external/python/python-api-core/+/1931601 Change-Id: Ife443057153866c806b133c15ab2aa5020bd4e77
Diffstat (limited to 'google/api_core/future/base.py')
-rw-r--r--google/api_core/future/base.py64
1 files changed, 64 insertions, 0 deletions
diff --git a/google/api_core/future/base.py b/google/api_core/future/base.py
new file mode 100644
index 0000000..f300586
--- /dev/null
+++ b/google/api_core/future/base.py
@@ -0,0 +1,64 @@
+# Copyright 2017, Google LLC
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+"""Abstract and helper bases for Future implementations."""
+
+import abc
+
+
+class Future(object, metaclass=abc.ABCMeta):
+ # pylint: disable=missing-docstring
+ # We inherit the interfaces here from concurrent.futures.
+
+ """Future interface.
+
+ This interface is based on :class:`concurrent.futures.Future`.
+ """
+
+ @abc.abstractmethod
+ def cancel(self):
+ raise NotImplementedError()
+
+ @abc.abstractmethod
+ def cancelled(self):
+ raise NotImplementedError()
+
+ @abc.abstractmethod
+ def running(self):
+ raise NotImplementedError()
+
+ @abc.abstractmethod
+ def done(self):
+ raise NotImplementedError()
+
+ @abc.abstractmethod
+ def result(self, timeout=None):
+ raise NotImplementedError()
+
+ @abc.abstractmethod
+ def exception(self, timeout=None):
+ raise NotImplementedError()
+
+ @abc.abstractmethod
+ def add_done_callback(self, fn):
+ # pylint: disable=invalid-name
+ raise NotImplementedError()
+
+ @abc.abstractmethod
+ def set_result(self, result):
+ raise NotImplementedError()
+
+ @abc.abstractmethod
+ def set_exception(self, exception):
+ raise NotImplementedError()