Skip to main content
Help us improve PyPI by participating in user testing. All experience levels needed!

A collection of useful tools for Python apps running on Google App Engine.

Project description

GAEK: Google App Engine Kit
===============================

[![Build Status](https://travis-ci.org/erichiggins/gaek.svg)](https://travis-ci.org/erichiggins/gaek)


A collection of useful tools for Python apps running on Google App Engine.

* Free software: BSD license
* Documentation: http://erichiggins.github.io/gaek/

NDB JSON module
---------------

Usage:

from gaek import ndb_json

# Serialize NDB Model(s) to a JSON string.
json_str = ndb_json.dumps(models)

# Parse a JSON string into a Python dictionary.
ndb_json.loads(json_str)

When the encoder meets a property of the `ndb.Key` type,
there are three encoding options available:

* `ndb_keys_as_entities` - encode Key property as a `Future` whose eventual result is the entity for the key.
This is the default option.
* `ndb_keys_as_pairs` - encode Key property as a tuple of (kind, id) pairs.
* `ndb_keys_as_urlsafe` - encode Key property as a websafe-base64-encoded serialized version of the key.

Please refer to [NDB Key Class](https://cloud.google.com/appengine/docs/python/ndb/keyclass) documentation for details.

For example, for the following data models:

```
class Master(ndb.Model):
name = ndb.StringProperty()
```
```
class Details(ndb.Model):
master = ndb.KeyProperty()
description = ndb.StringProperty()
```

and following records:

```
master = Master(id=123456L, name='Europe')
details = Details(
master=ndb.Key(Master, 123456L),
description='List of European customers'
)
```

The calls
```
json_str = ndb_json.dumps(details)
json_str = ndb_json.dumps(details, ndb_keys_as_entities=True)
```
will return

```
{"master": {"name": "Europe"}, "description": "List of European customers"}
```

The call
```
json_str = ndb_json.dumps(details, ndb_keys_as_pairs=True)
```
will return

```
{"master": [["Master", 123456]], "description": "List of European customers"}
```

The call
```
json_str = ndb_json.dumps(details, ndb_keys_as_urlsafe=True)
```
will return

```
{"master": "agFfcg4LEgZNYXN0ZXIYwMQHDA", "description": "List of European customers"}
```


Feature parity with the Python `json` module functions.

* `ndb_json.dumps`
* `ndb_json.dump`
* `ndb_json.loads`


Environment module
------------------

* `environ.get_dot_target_name(version=None, module=None)`

Returns the current version/module in `-dot-` notation which is used by `target:` parameters.

* `environ.get_dot_target_name_safe(version=None, module=None)`

Same as `environ.get_dot_target_name`, but this function returns `None` if there is no version or module found.

* `environ.get_environ_dict()`

Return a dictionary of all environment keys/values.

* `environ.is_host_google()`

True if the app is being hosted from Google App Engine servers.

* `environ.is_development()`

True if the dev_appserver is running (localhost or local development server).

* `environ.is_staging(version=None)`

True if the app is hosted by Google (appspot.com) but the version is not the default.

* `environ.is_staging_safe(version=None)`

Same as `environ.is_staging`, but returns `None` if there is no version found.

* `environ.is_production(version=None)`

True if the app is being hosted by Google and the default version.

* `environ.is_production_safe(version=None)`

Same as `environ.is_production`, but returns `None` if there is no version found.

* `environ.is_default_version(version=None)`

True if the current or specified app version is the default.

* `environ.is_default_version_safe(version=None)`

Same as `environ.is_default_version`, but returns `None` if there is no version found.

* `environ.get_current_version_name_safe()`

Wrapper around `google.appengine.api.modules.get_current_version_name`. Returns `None` if there is any error raised, otherwise it returns the current version name.

* `environ.get_current_module_name_safe()`

Wrapper around `google.appengine.api.modules.get_current_module_name`. Returns `None` if there is any error raised, otherwise it returns the current version name.


Project details


Release history Release notifications

This version
History Node

0.4.0

History Node

0.3.0

History Node

0.2.3

History Node

0.2.2

History Node

0.2.1

History Node

0.1.2

History Node

0.1.1

History Node

0.1.0

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Filename, size & hash SHA256 hash help File type Python version Upload date
gaek-0.4.0-py2-none-any.whl (9.3 kB) Copy SHA256 hash SHA256 Wheel py2 Jan 16, 2018
gaek-0.4.0.tar.gz (162.1 kB) Copy SHA256 hash SHA256 Source None Jan 16, 2018

Supported by

Elastic Elastic Search Pingdom Pingdom Monitoring Google Google BigQuery Sentry Sentry Error logging CloudAMQP CloudAMQP RabbitMQ AWS AWS Cloud computing Fastly Fastly CDN DigiCert DigiCert EV certificate StatusPage StatusPage Status page