https://github.com/lyft/pynamodb-attributes
Common attributes for PynamoDB
https://github.com/lyft/pynamodb-attributes
lyft
Last synced: 9 months ago
JSON representation
Common attributes for PynamoDB
- Host: GitHub
- URL: https://github.com/lyft/pynamodb-attributes
- Owner: lyft
- License: apache-2.0
- Created: 2018-12-19T18:47:29.000Z (about 7 years ago)
- Default Branch: master
- Last Pushed: 2024-05-17T15:09:18.000Z (over 1 year ago)
- Last Synced: 2025-04-10T01:09:18.748Z (9 months ago)
- Topics: lyft
- Language: Python
- Homepage:
- Size: 82 KB
- Stars: 58
- Watchers: 389
- Forks: 12
- Open Issues: 4
-
Metadata Files:
- Readme: README.md
- License: LICENSE
- Code of conduct: CODE_OF_CONDUCT.md
Awesome Lists containing this project
README
This Python 3 library contains compound and high-level PynamoDB attributes:
- `FloatAttribute` – same as `NumberAttribute` but whose value is typed as `float`
- `IntegerAttribute` – same as `NumberAttribute` but whose value is typed as `int` (rather than `float`)
- `IntegerSetAttribute` – same as `NumberSetAttribute` but whose value is typed as `int` (rather than `float`)
- `UnicodeDelimitedTupleAttribute` - a delimiter-separated value, useful for storing composite keys
- `UnicodeEnumAttribute` - serializes a string-valued `Enum` into a Unicode (`S`-typed) attribute
- `UnicodeProtobufEnumAttribute` - serializes a Protobuf enum into a Unicode (`S`-typed) attribute
- `IntegerEnumAttribute` - serializes a int-valued `Enum` into a number (`N`-typed) attribute
- `TimedeltaAttribute`, `TimedeltaMsAttribute`, `TimedeltaUsAttribute` – serializes `timedelta`s as integer seconds, milliseconds (ms) or microseconds (µs)
- `TimestampAttribute`, `TimestampMsAttribute`, `TimestampUsAttribute` – serializes `datetime`s as Unix epoch seconds, milliseconds (ms) or microseconds (µs)
- `IntegerDateAttribute` - serializes `date` as an integer representing the Gregorian date (_e.g._ `20181231`)
- `UUIDAttribute` - serializes a `UUID` Python object as a `S` type attribute (_e.g._ `'a8098c1a-f86e-11da-bd1a-00112444be1e'`)
- `UnicodeDatetimeAttribute` - ISO8601 datetime strings with offset information
## Testing
The tests in this repository use an in-memory implementation of [`dynamodb`](https://aws.amazon.com/dynamodb). To run the tests locally, make sure [DynamoDB Local](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/DynamoDBLocal.html) is running. It is available as a standalone binary, through package managers (e.g. [Homebrew](https://formulae.brew.sh/cask/dynamodb-local)) or as a Docker container:
```shell
docker run -d -p 8000:8000 amazon/dynamodb-local
```
Afterwards, run tests as usual:
```shell
pytest tests
```