forked from platypush/platypush
httplib2 should be an explicit dependency for Google integrations.
Plus, some misc LINT/Black chores.
This commit is contained in:
parent
a7bb81553c
commit
966a6ce29e
12 changed files with 184 additions and 89 deletions
|
@ -25,7 +25,7 @@ class DbPlugin(Plugin):
|
||||||
_db_error_wait_interval = 5.0
|
_db_error_wait_interval = 5.0
|
||||||
_db_error_retries = 3
|
_db_error_retries = 3
|
||||||
|
|
||||||
def __init__(self, engine=None, **kwargs):
|
def __init__(self, engine=None, *args, **kwargs):
|
||||||
"""
|
"""
|
||||||
:param engine: Default SQLAlchemy connection engine string (e.g.
|
:param engine: Default SQLAlchemy connection engine string (e.g.
|
||||||
``sqlite:///:memory:`` or ``mysql://user:pass@localhost/test``)
|
``sqlite:///:memory:`` or ``mysql://user:pass@localhost/test``)
|
||||||
|
@ -42,7 +42,7 @@ class DbPlugin(Plugin):
|
||||||
|
|
||||||
super().__init__()
|
super().__init__()
|
||||||
self.engine_url = engine
|
self.engine_url = engine
|
||||||
self.engine = self.get_engine(engine, **kwargs)
|
self.engine = self.get_engine(engine, *args, **kwargs)
|
||||||
|
|
||||||
def get_engine(
|
def get_engine(
|
||||||
self, engine: Optional[Union[str, Engine]] = None, *args, **kwargs
|
self, engine: Optional[Union[str, Engine]] = None, *args, **kwargs
|
||||||
|
|
|
@ -15,7 +15,8 @@ class FoursquarePlugin(Plugin):
|
||||||
- Copy the ``client_id`` and ``client_secret``.
|
- Copy the ``client_id`` and ``client_secret``.
|
||||||
- Add a redirect URL. It must point to a valid IP/hostname with a web server running, even if it runs
|
- Add a redirect URL. It must point to a valid IP/hostname with a web server running, even if it runs
|
||||||
locally. You can also use the local URL of the platypush web server - e.g. http://192.168.1.2:8008/.
|
locally. You can also use the local URL of the platypush web server - e.g. http://192.168.1.2:8008/.
|
||||||
- Open the following URL: ``https://foursquare.com/oauth2/authenticate?client_id=CLIENT_ID&response_type=token&redirect_uri=REDIRECT_URI``.
|
- Open the following URL:
|
||||||
|
``https://foursquare.com/oauth2/authenticate?client_id=CLIENT_ID&response_type=token&redirect_uri=REDIRECT_URI``.
|
||||||
Replace ``CLIENT_ID`` and ``REDIRECT_URI`` with the parameters from your app.
|
Replace ``CLIENT_ID`` and ``REDIRECT_URI`` with the parameters from your app.
|
||||||
- Allow the application. You will be redirected to the URL you provided. Copy the ``access_token`` provided in
|
- Allow the application. You will be redirected to the URL you provided. Copy the ``access_token`` provided in
|
||||||
the URL.
|
the URL.
|
||||||
|
@ -26,14 +27,16 @@ class FoursquarePlugin(Plugin):
|
||||||
|
|
||||||
def __init__(self, access_token: str, **kwargs):
|
def __init__(self, access_token: str, **kwargs):
|
||||||
"""
|
"""
|
||||||
:param access_token:
|
:param access_token: The access token to use to authenticate to the Foursquare API.
|
||||||
"""
|
"""
|
||||||
super().__init__(**kwargs)
|
super().__init__(**kwargs)
|
||||||
self.access_token = access_token
|
self.access_token = access_token
|
||||||
|
|
||||||
def _get_url(self, endpoint):
|
def _get_url(self, endpoint):
|
||||||
return '{url}/{endpoint}?oauth_token={token}&v={version}'.format(
|
return '{url}/{endpoint}?oauth_token={token}&v={version}'.format(
|
||||||
url=self.api_base_url, endpoint=endpoint, token=self.access_token,
|
url=self.api_base_url,
|
||||||
|
endpoint=endpoint,
|
||||||
|
token=self.access_token,
|
||||||
version=datetime.date.today().strftime('%Y%m%d'),
|
version=datetime.date.today().strftime('%Y%m%d'),
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -44,24 +47,32 @@ class FoursquarePlugin(Plugin):
|
||||||
:return: A list of checkins, as returned by the Foursquare API.
|
:return: A list of checkins, as returned by the Foursquare API.
|
||||||
"""
|
"""
|
||||||
url = self._get_url('users/self/checkins')
|
url = self._get_url('users/self/checkins')
|
||||||
return requests.get(url).json().get('response', {}).get('checkins', {}).get('items', [])
|
return (
|
||||||
|
requests.get(url)
|
||||||
|
.json()
|
||||||
|
.get('response', {})
|
||||||
|
.get('checkins', {})
|
||||||
|
.get('items', [])
|
||||||
|
)
|
||||||
|
|
||||||
# noinspection DuplicatedCode
|
# noinspection DuplicatedCode
|
||||||
@action
|
@action
|
||||||
def search(self,
|
def search(
|
||||||
latitude: Optional[float] = None,
|
self,
|
||||||
longitude: Optional[float] = None,
|
latitude: Optional[float] = None,
|
||||||
altitude: Optional[float] = None,
|
longitude: Optional[float] = None,
|
||||||
latlng_accuracy: Optional[float] = None,
|
altitude: Optional[float] = None,
|
||||||
altitude_accuracy: Optional[float] = None,
|
latlng_accuracy: Optional[float] = None,
|
||||||
near: Optional[str] = None,
|
altitude_accuracy: Optional[float] = None,
|
||||||
query: Optional[str] = None,
|
near: Optional[str] = None,
|
||||||
limit: Optional[int] = None,
|
query: Optional[str] = None,
|
||||||
url: Optional[int] = None,
|
limit: Optional[int] = None,
|
||||||
categories: Optional[List[str]] = None,
|
url: Optional[int] = None,
|
||||||
radius: Optional[int] = None,
|
categories: Optional[List[str]] = None,
|
||||||
sw: Optional[Union[Tuple[float], List[float]]] = None,
|
radius: Optional[int] = None,
|
||||||
ne: Optional[Union[Tuple[float], List[float]]] = None,) -> List[Dict[str, Any]]:
|
sw: Optional[Union[Tuple[float], List[float]]] = None,
|
||||||
|
ne: Optional[Union[Tuple[float], List[float]]] = None,
|
||||||
|
) -> List[Dict[str, Any]]:
|
||||||
"""
|
"""
|
||||||
Search for venues.
|
Search for venues.
|
||||||
|
|
||||||
|
@ -82,7 +93,9 @@ class FoursquarePlugin(Plugin):
|
||||||
:param ne: North/east boundary box as a ``[latitude, longitude]`` pair.
|
:param ne: North/east boundary box as a ``[latitude, longitude]`` pair.
|
||||||
:return: A list of venues, as returned by the Foursquare API.
|
:return: A list of venues, as returned by the Foursquare API.
|
||||||
"""
|
"""
|
||||||
assert (latitude and longitude) or near, 'Specify either latitude/longitude or near'
|
assert (
|
||||||
|
latitude and longitude
|
||||||
|
) or near, 'Specify either latitude/longitude or near'
|
||||||
args = {}
|
args = {}
|
||||||
|
|
||||||
if latitude and longitude:
|
if latitude and longitude:
|
||||||
|
@ -111,27 +124,31 @@ class FoursquarePlugin(Plugin):
|
||||||
args['ne'] = ne
|
args['ne'] = ne
|
||||||
|
|
||||||
url = self._get_url('venues/search')
|
url = self._get_url('venues/search')
|
||||||
return requests.get(url, params=args).json().get('response', {}).get('venues', [])
|
return (
|
||||||
|
requests.get(url, params=args).json().get('response', {}).get('venues', [])
|
||||||
|
)
|
||||||
|
|
||||||
# noinspection DuplicatedCode
|
# noinspection DuplicatedCode
|
||||||
@action
|
@action
|
||||||
def explore(self,
|
def explore(
|
||||||
latitude: Optional[float] = None,
|
self,
|
||||||
longitude: Optional[float] = None,
|
latitude: Optional[float] = None,
|
||||||
altitude: Optional[float] = None,
|
longitude: Optional[float] = None,
|
||||||
latlng_accuracy: Optional[float] = None,
|
altitude: Optional[float] = None,
|
||||||
altitude_accuracy: Optional[float] = None,
|
latlng_accuracy: Optional[float] = None,
|
||||||
section: Optional[str] = None,
|
altitude_accuracy: Optional[float] = None,
|
||||||
near: Optional[str] = None,
|
section: Optional[str] = None,
|
||||||
query: Optional[str] = None,
|
near: Optional[str] = None,
|
||||||
limit: Optional[int] = None,
|
query: Optional[str] = None,
|
||||||
categories: Optional[List[str]] = None,
|
limit: Optional[int] = None,
|
||||||
radius: Optional[int] = None,
|
categories: Optional[List[str]] = None,
|
||||||
open_now: bool = True,
|
radius: Optional[int] = None,
|
||||||
sort_by_distance: Optional[bool] = None,
|
open_now: bool = True,
|
||||||
sort_by_popularity: Optional[bool] = None,
|
sort_by_distance: Optional[bool] = None,
|
||||||
price: Optional[List[int]] = None,
|
sort_by_popularity: Optional[bool] = None,
|
||||||
saved: Optional[bool] = None) -> List[Dict[str, Any]]:
|
price: Optional[List[int]] = None,
|
||||||
|
saved: Optional[bool] = None,
|
||||||
|
) -> List[Dict[str, Any]]:
|
||||||
"""
|
"""
|
||||||
Explore venues around a location.
|
Explore venues around a location.
|
||||||
|
|
||||||
|
@ -168,7 +185,9 @@ class FoursquarePlugin(Plugin):
|
||||||
|
|
||||||
:return: A list of venues, as returned by the Foursquare API.
|
:return: A list of venues, as returned by the Foursquare API.
|
||||||
"""
|
"""
|
||||||
assert (latitude and longitude) or near, 'Specify either latitude/longitude or near'
|
assert (
|
||||||
|
latitude and longitude
|
||||||
|
) or near, 'Specify either latitude/longitude or near'
|
||||||
args = {}
|
args = {}
|
||||||
|
|
||||||
if latitude and longitude:
|
if latitude and longitude:
|
||||||
|
@ -203,15 +222,19 @@ class FoursquarePlugin(Plugin):
|
||||||
args['price'] = ','.join([str(p) for p in price])
|
args['price'] = ','.join([str(p) for p in price])
|
||||||
|
|
||||||
url = self._get_url('venues/explore')
|
url = self._get_url('venues/explore')
|
||||||
return requests.get(url, params=args).json().get('response', {}).get('venues', [])
|
return (
|
||||||
|
requests.get(url, params=args).json().get('response', {}).get('venues', [])
|
||||||
|
)
|
||||||
|
|
||||||
@action
|
@action
|
||||||
def trending(self,
|
def trending(
|
||||||
latitude: Optional[float] = None,
|
self,
|
||||||
longitude: Optional[float] = None,
|
latitude: Optional[float] = None,
|
||||||
near: Optional[str] = None,
|
longitude: Optional[float] = None,
|
||||||
limit: Optional[int] = None,
|
near: Optional[str] = None,
|
||||||
radius: Optional[int] = None) -> List[Dict[str, Any]]:
|
limit: Optional[int] = None,
|
||||||
|
radius: Optional[int] = None,
|
||||||
|
) -> List[Dict[str, Any]]:
|
||||||
"""
|
"""
|
||||||
Get the trending venues around a location.
|
Get the trending venues around a location.
|
||||||
|
|
||||||
|
@ -224,7 +247,9 @@ class FoursquarePlugin(Plugin):
|
||||||
|
|
||||||
:return: A list of venues, as returned by the Foursquare API.
|
:return: A list of venues, as returned by the Foursquare API.
|
||||||
"""
|
"""
|
||||||
assert (latitude and longitude) or near, 'Specify either latitude/longitude or near'
|
assert (
|
||||||
|
latitude and longitude
|
||||||
|
) or near, 'Specify either latitude/longitude or near'
|
||||||
args = {}
|
args = {}
|
||||||
|
|
||||||
if latitude and longitude:
|
if latitude and longitude:
|
||||||
|
@ -237,24 +262,29 @@ class FoursquarePlugin(Plugin):
|
||||||
args['radius'] = radius
|
args['radius'] = radius
|
||||||
|
|
||||||
url = self._get_url('venues/trending')
|
url = self._get_url('venues/trending')
|
||||||
return requests.get(url, params=args).json().get('response', {}).get('venues', [])
|
return (
|
||||||
|
requests.get(url, params=args).json().get('response', {}).get('venues', [])
|
||||||
|
)
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def _parse_time(t):
|
def _parse_time(t):
|
||||||
if isinstance(t, int) or isinstance(t, float):
|
if isinstance(t, (int, float)):
|
||||||
return datetime.datetime.fromtimestamp(t)
|
return datetime.datetime.fromtimestamp(t)
|
||||||
if isinstance(t, str):
|
if isinstance(t, str):
|
||||||
return datetime.datetime.fromisoformat(t)
|
return datetime.datetime.fromisoformat(t)
|
||||||
|
|
||||||
assert isinstance(t, datetime.datetime), 'Cannot parse object of type {} into datetime: {}'.format(
|
assert isinstance(
|
||||||
type(t), t)
|
t, datetime.datetime
|
||||||
|
), 'Cannot parse object of type {} into datetime: {}'.format(type(t), t)
|
||||||
return t
|
return t
|
||||||
|
|
||||||
@action
|
@action
|
||||||
def time_series(self,
|
def time_series(
|
||||||
venue_id: Union[str, List[str]],
|
self,
|
||||||
start_at: Union[int, float, datetime.datetime, str],
|
venue_id: Union[str, List[str]],
|
||||||
end_at: Union[int, float, datetime.datetime, str]) -> List[Dict[str, Any]]:
|
start_at: Union[int, float, datetime.datetime, str],
|
||||||
|
end_at: Union[int, float, datetime.datetime, str],
|
||||||
|
) -> List[Dict[str, Any]]:
|
||||||
"""
|
"""
|
||||||
Get the visitors stats about one or multiple venues over a time range. The user must be a manager of
|
Get the visitors stats about one or multiple venues over a time range. The user must be a manager of
|
||||||
those venues.
|
those venues.
|
||||||
|
@ -275,13 +305,17 @@ class FoursquarePlugin(Plugin):
|
||||||
}
|
}
|
||||||
|
|
||||||
url = self._get_url('venues/timeseries')
|
url = self._get_url('venues/timeseries')
|
||||||
return requests.get(url, params=args).json().get('response', {}).get('venues', [])
|
return (
|
||||||
|
requests.get(url, params=args).json().get('response', {}).get('venues', [])
|
||||||
|
)
|
||||||
|
|
||||||
@action
|
@action
|
||||||
def stats(self,
|
def stats(
|
||||||
venue_id: str,
|
self,
|
||||||
start_at: Union[int, float, datetime.datetime, str],
|
venue_id: str,
|
||||||
end_at: Union[int, float, datetime.datetime, str]) -> List[Dict[str, Any]]:
|
start_at: Union[int, float, datetime.datetime, str],
|
||||||
|
end_at: Union[int, float, datetime.datetime, str],
|
||||||
|
) -> List[Dict[str, Any]]:
|
||||||
"""
|
"""
|
||||||
Get the stats about a venue over a time range. The user must be a manager of that venue.
|
Get the stats about a venue over a time range. The user must be a manager of that venue.
|
||||||
|
|
||||||
|
@ -297,7 +331,9 @@ class FoursquarePlugin(Plugin):
|
||||||
}
|
}
|
||||||
|
|
||||||
url = self._get_url('venues/{}/stats'.format(venue_id))
|
url = self._get_url('venues/{}/stats'.format(venue_id))
|
||||||
return requests.get(url, params=args).json().get('response', {}).get('venues', [])
|
return (
|
||||||
|
requests.get(url, params=args).json().get('response', {}).get('venues', [])
|
||||||
|
)
|
||||||
|
|
||||||
@action
|
@action
|
||||||
def managed(self) -> List[Dict[str, Any]]:
|
def managed(self) -> List[Dict[str, Any]]:
|
||||||
|
@ -306,18 +342,26 @@ class FoursquarePlugin(Plugin):
|
||||||
:return: A list of venues, as returned by the Foursquare API.
|
:return: A list of venues, as returned by the Foursquare API.
|
||||||
"""
|
"""
|
||||||
url = self._get_url('venues/managed')
|
url = self._get_url('venues/managed')
|
||||||
return requests.get(url).json().get('response', {}).get('venues', []).get('items', [])
|
return (
|
||||||
|
requests.get(url)
|
||||||
|
.json()
|
||||||
|
.get('response', {})
|
||||||
|
.get('venues', [])
|
||||||
|
.get('items', [])
|
||||||
|
)
|
||||||
|
|
||||||
@action
|
@action
|
||||||
def checkin(self,
|
def checkin(
|
||||||
venue_id: str,
|
self,
|
||||||
latitude: Optional[float] = None,
|
venue_id: str,
|
||||||
longitude: Optional[float] = None,
|
latitude: Optional[float] = None,
|
||||||
altitude: Optional[float] = None,
|
longitude: Optional[float] = None,
|
||||||
latlng_accuracy: Optional[float] = None,
|
altitude: Optional[float] = None,
|
||||||
altitude_accuracy: Optional[float] = None,
|
latlng_accuracy: Optional[float] = None,
|
||||||
shout: Optional[str] = None,
|
altitude_accuracy: Optional[float] = None,
|
||||||
broadcast: Optional[List[str]] = None) -> Dict[str, Any]:
|
shout: Optional[str] = None,
|
||||||
|
broadcast: Optional[List[str]] = None,
|
||||||
|
) -> Dict[str, Any]:
|
||||||
"""
|
"""
|
||||||
Create a new check-in.
|
Create a new check-in.
|
||||||
|
|
||||||
|
@ -350,10 +394,14 @@ class FoursquarePlugin(Plugin):
|
||||||
if shout:
|
if shout:
|
||||||
args['shout'] = shout
|
args['shout'] = shout
|
||||||
if broadcast:
|
if broadcast:
|
||||||
args['broadcast'] = ','.join(broadcast) if isinstance(broadcast, list) else broadcast
|
args['broadcast'] = (
|
||||||
|
','.join(broadcast) if isinstance(broadcast, list) else broadcast
|
||||||
|
)
|
||||||
|
|
||||||
url = self._get_url('checkins/add')
|
url = self._get_url('checkins/add')
|
||||||
return requests.post(url, data=args).json().get('response', {}).get('checkin', {})
|
return (
|
||||||
|
requests.post(url, data=args).json().get('response', {}).get('checkin', {})
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
# vim:sw=4:ts=4:et:
|
# vim:sw=4:ts=4:et:
|
||||||
|
|
|
@ -5,20 +5,25 @@ manifest:
|
||||||
- py3-google-api-python-client
|
- py3-google-api-python-client
|
||||||
- py3-google-auth
|
- py3-google-auth
|
||||||
- py3-oauth2client
|
- py3-oauth2client
|
||||||
|
- py3-httplib2
|
||||||
apt:
|
apt:
|
||||||
- python3-google-auth
|
- python3-google-auth
|
||||||
- python3-oauth2client
|
- python3-oauth2client
|
||||||
|
- python3-httplib2
|
||||||
dnf:
|
dnf:
|
||||||
- python-google-api-client
|
- python-google-api-client
|
||||||
- python-google-auth
|
- python-google-auth
|
||||||
- python-oauth2client
|
- python-oauth2client
|
||||||
|
- python-httplib2
|
||||||
pacman:
|
pacman:
|
||||||
- python-google-api-python-client
|
- python-google-api-python-client
|
||||||
- python-google-auth
|
- python-google-auth
|
||||||
- python-oauth2client
|
- python-oauth2client
|
||||||
|
- python-httplib2
|
||||||
pip:
|
pip:
|
||||||
- google-api-python-client
|
- google-api-python-client
|
||||||
- google-auth
|
- google-auth
|
||||||
- oauth2client
|
- oauth2client
|
||||||
|
- httplib2
|
||||||
package: platypush.plugins.google.calendar
|
package: platypush.plugins.google.calendar
|
||||||
type: plugin
|
type: plugin
|
||||||
|
|
|
@ -5,20 +5,25 @@ manifest:
|
||||||
- py3-google-api-python-client
|
- py3-google-api-python-client
|
||||||
- py3-google-auth
|
- py3-google-auth
|
||||||
- py3-oauth2client
|
- py3-oauth2client
|
||||||
|
- py3-httplib2
|
||||||
apt:
|
apt:
|
||||||
- python3-google-auth
|
- python3-google-auth
|
||||||
- python3-oauth2client
|
- python3-oauth2client
|
||||||
|
- python3-httplib2
|
||||||
dnf:
|
dnf:
|
||||||
- python-google-api-client
|
- python-google-api-client
|
||||||
- python-google-auth
|
- python-google-auth
|
||||||
- python-oauth2client
|
- python-oauth2client
|
||||||
|
- python-httplib2
|
||||||
pacman:
|
pacman:
|
||||||
- python-google-api-python-client
|
- python-google-api-python-client
|
||||||
- python-google-auth
|
- python-google-auth
|
||||||
- python-oauth2client
|
- python-oauth2client
|
||||||
|
- python-httplib2
|
||||||
pip:
|
pip:
|
||||||
- google-api-python-client
|
- google-api-python-client
|
||||||
- google-auth
|
- google-auth
|
||||||
- oauth2client
|
- oauth2client
|
||||||
|
- httplib2
|
||||||
package: platypush.plugins.google.drive
|
package: platypush.plugins.google.drive
|
||||||
type: plugin
|
type: plugin
|
||||||
|
|
|
@ -5,20 +5,25 @@ manifest:
|
||||||
- py3-google-api-python-client
|
- py3-google-api-python-client
|
||||||
- py3-google-auth
|
- py3-google-auth
|
||||||
- py3-oauth2client
|
- py3-oauth2client
|
||||||
|
- py3-httplib2
|
||||||
apt:
|
apt:
|
||||||
- python3-google-auth
|
- python3-google-auth
|
||||||
- python3-oauth2client
|
- python3-oauth2client
|
||||||
|
- python3-httplib2
|
||||||
dnf:
|
dnf:
|
||||||
- python-google-api-client
|
- python-google-api-client
|
||||||
- python-google-auth
|
- python-google-auth
|
||||||
- python-oauth2client
|
- python-oauth2client
|
||||||
|
- python-httplib2
|
||||||
pacman:
|
pacman:
|
||||||
- python-google-api-python-client
|
- python-google-api-python-client
|
||||||
- python-google-auth
|
- python-google-auth
|
||||||
- python-oauth2client
|
- python-oauth2client
|
||||||
|
- python-httplib2
|
||||||
pip:
|
pip:
|
||||||
- google-api-python-client
|
- google-api-python-client
|
||||||
- google-auth
|
- google-auth
|
||||||
- oauth2client
|
- oauth2client
|
||||||
|
- httplib2
|
||||||
package: platypush.plugins.google.fit
|
package: platypush.plugins.google.fit
|
||||||
type: plugin
|
type: plugin
|
||||||
|
|
|
@ -5,20 +5,25 @@ manifest:
|
||||||
- py3-google-api-python-client
|
- py3-google-api-python-client
|
||||||
- py3-google-auth
|
- py3-google-auth
|
||||||
- py3-oauth2client
|
- py3-oauth2client
|
||||||
|
- py3-httplib2
|
||||||
apt:
|
apt:
|
||||||
- python3-google-auth
|
- python3-google-auth
|
||||||
- python3-oauth2client
|
- python3-oauth2client
|
||||||
|
- python3-httplib2
|
||||||
dnf:
|
dnf:
|
||||||
- python-google-api-client
|
- python-google-api-client
|
||||||
- python-google-auth
|
- python-google-auth
|
||||||
- python-oauth2client
|
- python-oauth2client
|
||||||
|
- python-httplib2
|
||||||
pacman:
|
pacman:
|
||||||
- python-google-api-python-client
|
- python-google-api-python-client
|
||||||
- python-google-auth
|
- python-google-auth
|
||||||
- python-oauth2client
|
- python-oauth2client
|
||||||
|
- python-httplib2
|
||||||
pip:
|
pip:
|
||||||
- google-api-python-client
|
- google-api-python-client
|
||||||
- google-auth
|
- google-auth
|
||||||
- oauth2client
|
- oauth2client
|
||||||
|
- httplib2
|
||||||
package: platypush.plugins.google.mail
|
package: platypush.plugins.google.mail
|
||||||
type: plugin
|
type: plugin
|
||||||
|
|
|
@ -5,20 +5,25 @@ manifest:
|
||||||
- py3-google-api-python-client
|
- py3-google-api-python-client
|
||||||
- py3-google-auth
|
- py3-google-auth
|
||||||
- py3-oauth2client
|
- py3-oauth2client
|
||||||
|
- py3-httplib2
|
||||||
apt:
|
apt:
|
||||||
- python3-google-auth
|
- python3-google-auth
|
||||||
- python3-oauth2client
|
- python3-oauth2client
|
||||||
|
- python3-httplib2
|
||||||
dnf:
|
dnf:
|
||||||
- python-google-api-client
|
- python-google-api-client
|
||||||
- python-google-auth
|
- python-google-auth
|
||||||
- python-oauth2client
|
- python-oauth2client
|
||||||
|
- python-httplib2
|
||||||
pacman:
|
pacman:
|
||||||
- python-google-api-python-client
|
- python-google-api-python-client
|
||||||
- python-google-auth
|
- python-google-auth
|
||||||
- python-oauth2client
|
- python-oauth2client
|
||||||
|
- python-httplib2
|
||||||
pip:
|
pip:
|
||||||
- google-api-python-client
|
- google-api-python-client
|
||||||
- google-auth
|
- google-auth
|
||||||
- oauth2client
|
- oauth2client
|
||||||
|
- httplib2
|
||||||
package: platypush.plugins.google.maps
|
package: platypush.plugins.google.maps
|
||||||
type: plugin
|
type: plugin
|
||||||
|
|
|
@ -5,21 +5,26 @@ manifest:
|
||||||
- py3-google-api-python-client
|
- py3-google-api-python-client
|
||||||
- py3-google-auth
|
- py3-google-auth
|
||||||
- py3-oauth2client
|
- py3-oauth2client
|
||||||
|
- py3-httplib2
|
||||||
apt:
|
apt:
|
||||||
- python3-google-auth
|
- python3-google-auth
|
||||||
- python3-oauth2client
|
- python3-oauth2client
|
||||||
|
- python3-httplib2
|
||||||
dnf:
|
dnf:
|
||||||
- python-google-api-client
|
- python-google-api-client
|
||||||
- python-google-auth
|
- python-google-auth
|
||||||
- python-oauth2client
|
- python-oauth2client
|
||||||
|
- python-httplib2
|
||||||
pacman:
|
pacman:
|
||||||
- python-google-api-python-client
|
- python-google-api-python-client
|
||||||
- python-google-auth
|
- python-google-auth
|
||||||
- python-oauth2client
|
- python-oauth2client
|
||||||
|
- python-httplib2
|
||||||
pip:
|
pip:
|
||||||
- google-api-python-client
|
- google-api-python-client
|
||||||
- google-auth
|
- google-auth
|
||||||
- oauth2client
|
- oauth2client
|
||||||
- google-cloud-pubsub
|
- google-cloud-pubsub
|
||||||
|
- httplib2
|
||||||
package: platypush.plugins.google.pubsub
|
package: platypush.plugins.google.pubsub
|
||||||
type: plugin
|
type: plugin
|
||||||
|
|
|
@ -5,21 +5,26 @@ manifest:
|
||||||
- py3-google-api-python-client
|
- py3-google-api-python-client
|
||||||
- py3-google-auth
|
- py3-google-auth
|
||||||
- py3-oauth2client
|
- py3-oauth2client
|
||||||
|
- py3-httplib2
|
||||||
apt:
|
apt:
|
||||||
- python3-google-auth
|
- python3-google-auth
|
||||||
- python3-oauth2client
|
- python3-oauth2client
|
||||||
|
- python3-httplib2
|
||||||
dnf:
|
dnf:
|
||||||
- python-google-api-client
|
- python-google-api-client
|
||||||
- python-google-auth
|
- python-google-auth
|
||||||
- python-oauth2client
|
- python-oauth2client
|
||||||
|
- python-httplib2
|
||||||
pacman:
|
pacman:
|
||||||
- python-google-api-python-client
|
- python-google-api-python-client
|
||||||
- python-google-auth
|
- python-google-auth
|
||||||
- python-oauth2client
|
- python-oauth2client
|
||||||
|
- python-httplib2
|
||||||
pip:
|
pip:
|
||||||
- google-api-python-client
|
- google-api-python-client
|
||||||
- google-auth
|
- google-auth
|
||||||
- oauth2client
|
- oauth2client
|
||||||
- google-cloud-translate
|
- google-cloud-translate
|
||||||
|
- httplib2
|
||||||
package: platypush.plugins.google.translate
|
package: platypush.plugins.google.translate
|
||||||
type: plugin
|
type: plugin
|
||||||
|
|
|
@ -5,20 +5,25 @@ manifest:
|
||||||
- py3-google-api-python-client
|
- py3-google-api-python-client
|
||||||
- py3-google-auth
|
- py3-google-auth
|
||||||
- py3-oauth2client
|
- py3-oauth2client
|
||||||
|
- py3-httplib2
|
||||||
apt:
|
apt:
|
||||||
- python3-google-auth
|
- python3-google-auth
|
||||||
- python3-oauth2client
|
- python3-oauth2client
|
||||||
|
- python3-httplib2
|
||||||
dnf:
|
dnf:
|
||||||
- python-google-api-client
|
- python-google-api-client
|
||||||
- python-google-auth
|
- python-google-auth
|
||||||
- python-oauth2client
|
- python-oauth2client
|
||||||
|
- python-httplib2
|
||||||
pacman:
|
pacman:
|
||||||
- python-google-api-python-client
|
- python-google-api-python-client
|
||||||
- python-google-auth
|
- python-google-auth
|
||||||
- python-oauth2client
|
- python-oauth2client
|
||||||
|
- python-httplib2
|
||||||
pip:
|
pip:
|
||||||
- google-api-python-client
|
- google-api-python-client
|
||||||
- google-auth
|
- google-auth
|
||||||
- oauth2client
|
- oauth2client
|
||||||
|
- httplib2
|
||||||
package: platypush.plugins.google.youtube
|
package: platypush.plugins.google.youtube
|
||||||
type: plugin
|
type: plugin
|
||||||
|
|
|
@ -134,7 +134,7 @@ class DocstringParser:
|
||||||
return None
|
return None
|
||||||
|
|
||||||
lines = text.split("\n")
|
lines = text.split("\n")
|
||||||
return (lines[0] + " " + tw.dedent("\n".join(lines[1:]) or "")).strip()
|
return (lines[0] + "\n" + tw.dedent("\n".join(lines[1:]) or "")).strip()
|
||||||
|
|
||||||
ctx = ParseContext(obj)
|
ctx = ParseContext(obj)
|
||||||
yield ctx
|
yield ctx
|
||||||
|
@ -203,17 +203,18 @@ class DocstringParser:
|
||||||
return
|
return
|
||||||
|
|
||||||
# Update the current parameter docstring if required
|
# Update the current parameter docstring if required
|
||||||
if (
|
if ctx.state == ParseState.PARAM and cls._is_continuation_line(line):
|
||||||
ctx.state == ParseState.PARAM
|
if ctx.cur_param in ctx.parsed_params:
|
||||||
and cls._is_continuation_line(line)
|
ctx.parsed_params[ctx.cur_param].doc = (
|
||||||
and ctx.cur_param in ctx.parsed_params
|
(
|
||||||
):
|
(ctx.parsed_params[ctx.cur_param].doc or "")
|
||||||
ctx.parsed_params[ctx.cur_param].doc = (
|
+ "\n"
|
||||||
((ctx.parsed_params[ctx.cur_param].doc or "") + "\n" + line.rstrip())
|
+ line.rstrip()
|
||||||
if ctx.parsed_params.get(ctx.cur_param)
|
)
|
||||||
and ctx.parsed_params[ctx.cur_param].doc
|
if ctx.parsed_params.get(ctx.cur_param)
|
||||||
else ""
|
and ctx.parsed_params[ctx.cur_param].doc
|
||||||
)
|
else ""
|
||||||
|
)
|
||||||
return
|
return
|
||||||
|
|
||||||
# Update the current docstring if required
|
# Update the current docstring if required
|
||||||
|
|
12
setup.py
12
setup.py
|
@ -110,6 +110,7 @@ setup(
|
||||||
# Support for Google text2speech plugin
|
# Support for Google text2speech plugin
|
||||||
'google-tts': [
|
'google-tts': [
|
||||||
'oauth2client',
|
'oauth2client',
|
||||||
|
'httplib2',
|
||||||
'google-api-python-client',
|
'google-api-python-client',
|
||||||
'google-auth',
|
'google-auth',
|
||||||
'google-cloud-texttospeech',
|
'google-cloud-texttospeech',
|
||||||
|
@ -130,7 +131,12 @@ setup(
|
||||||
'google-assistant-legacy': ['google-assistant-library', 'google-auth'],
|
'google-assistant-legacy': ['google-assistant-library', 'google-auth'],
|
||||||
'google-assistant': ['google-assistant-sdk[samples]', 'google-auth'],
|
'google-assistant': ['google-assistant-sdk[samples]', 'google-auth'],
|
||||||
# Support for the Google APIs
|
# Support for the Google APIs
|
||||||
'google': ['oauth2client', 'google-auth', 'google-api-python-client'],
|
'google': [
|
||||||
|
'oauth2client',
|
||||||
|
'google-auth',
|
||||||
|
'google-api-python-client',
|
||||||
|
'httplib2',
|
||||||
|
],
|
||||||
# Support for Last.FM scrobbler plugin
|
# Support for Last.FM scrobbler plugin
|
||||||
'lastfm': ['pylast'],
|
'lastfm': ['pylast'],
|
||||||
# Support for custom hotword detection
|
# Support for custom hotword detection
|
||||||
|
@ -213,9 +219,9 @@ setup(
|
||||||
# Support for Trello integration
|
# Support for Trello integration
|
||||||
'trello': ['py-trello'],
|
'trello': ['py-trello'],
|
||||||
# Support for Google Pub/Sub
|
# Support for Google Pub/Sub
|
||||||
'google-pubsub': ['google-cloud-pubsub', 'google-auth'],
|
'google-pubsub': ['google-cloud-pubsub', 'google-auth', 'httplib2'],
|
||||||
# Support for Google Translate
|
# Support for Google Translate
|
||||||
'google-translate': ['google-cloud-translate', 'google-auth'],
|
'google-translate': ['google-cloud-translate', 'google-auth', 'httplib2'],
|
||||||
# Support for keyboard/mouse plugin
|
# Support for keyboard/mouse plugin
|
||||||
'inputs': ['pyuserinput'],
|
'inputs': ['pyuserinput'],
|
||||||
# Support for Buienradar weather forecast
|
# Support for Buienradar weather forecast
|
||||||
|
|
Loading…
Reference in a new issue