| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
|
Give the discussion in #446, it seems that syntax should actually be Entity(Key('SomeKind',1), ...) in which case I think Entity(key, props) makes more sense than Entity(key, **props). This also allows for easy addition of other special kwargs (although as per the design doc I think the only necessary one is exclude_from_indexes). |
Sorry, something went wrong.
|
First, let me note that my trailing comments give a context for this PR, but don't actually pertain to the code in the PR. To address @elibixby remarks: Yes #444 needs to be implemented for Entity('Kind', 1, prop1=u'foo')to have a chance of working. I think in addition to the constructors I mentioned above we should also enable >>> key
<Key[{'kind': 'SomeKind', 'id': 1}]>
>>> Entity(key, prop1=u'foo', prop2=u'bar')
<Entity[{'kind': 'SomeKind', 'id': 1}] {'prop1': u'foo', 'prop2': u'bar'}>
>>> Entity(key, {'prop1': u'foo', 'prop2': u'bar'})
<Entity[{'kind': 'SomeKind', 'id': 1}] {'prop1': u'foo', 'prop2': u'bar'}>This will allow for things like keys from multiple datasets in the same application and keys with namespaces. |
Sorry, something went wrong.
|
Is this providing too many ways to achieve the same thing? I do like the idea of being able to instantiate an entity with a path (and providing the key with the "default" dataset from the environment), but I'm not sure if Entity(key, dict(prop1=u'foo', prop2=u'bar')) is much more burdensome than Entity(key, prop1=u'foo', prop2=u'bar'). If both exist, then users must remember to pass a dict rather than kwargs when setting exclude_from_indexes (or any meta-properties that may crop up in the future) Just a my $.02. I think the ideas have been fantastic so far, and am really excited with all the discussion. |
Sorry, something went wrong.
|
@elibixby You're probably right that we should only accept a key as a positional arg since the syntax would be the same. RE: exclude_from_indexes I'm fine with >>> e = Entity(key, prop1=u'foo', prop2=u'bar')
>>> e.remove_prop_from_index('prop1')A full-blown ORM (like ndb) makes this easier when Propertys are objects: class Foo(ndb.Model):
bar = ndb.StringProperty(indexed=False) |
Sorry, something went wrong.
|
Yes! I like that! |
Sorry, something went wrong.
|
Changes Unknown when pulling 0d79df0 on dhermes:do-not-inherit-dict into * on GoogleCloudPlatform:master*. |
Sorry, something went wrong.
|
Overall, I don't see any advantage to the "object-with-a-dict" versus "object-derived-from-dict". |
Sorry, something went wrong.
|
@tseaver let's forget about this for now. I initially did it because I didn't want a split MRO on Entity but it won't matter in the long-run since Entity won't need a dataset. In the interest of "only one way", the note above for me is the best option for a constructor. (First positional arg must be a key, if more than one, second must be a dict. Otherwise, kwargs acts as the dict.) I'll rebase #456 to forget about this PR and we'll go from there (after wrapping up #444). |
Sorry, something went wrong.
|
Closing PR but leaving the branch alive in my fork so may revisit. It likely won't be necessary as Entity gets stripped down further. |
Sorry, something went wrong.
Co-authored-by: release-please[bot] <55107282+release-please[bot]@users.noreply.github.com>
Source-Link: googleapis/synthtool@25083af Post-Processor: gcr.io/cloud-devrel-public-resources/owlbot-python:latest@sha256:e6cbd61f1838d9ff6a31436dfc13717f372a7482a82fc1863ca954ec47bff8c8 Co-authored-by: Owl Bot <gcf-owl-bot[bot]@users.noreply.github.com>
* docs: Fix formatting of request arg in docstring chore: Update gapic-generator-python to v1.9.1 PiperOrigin-RevId: 518604533 Source-Link: googleapis/googleapis@8a085ae Source-Link: googleapis/googleapis-gen@b2ab4b0 Copy-Tag: eyJwIjoiLmdpdGh1Yi8uT3dsQm90LnlhbWwiLCJoIjoiYjJhYjRiMGEwYWUyOTA3ZTgxMmMyMDkxOThhNzRlMDg5OGFmY2IwNCJ9 * 🦉 Updates from OwlBot post-processor See https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md --------- Co-authored-by: Owl Bot <gcf-owl-bot[bot]@users.noreply.github.com>
* docs: minor comment update PiperOrigin-RevId: 512725339 Source-Link: googleapis/googleapis@ea8d826 Source-Link: googleapis/googleapis-gen@dc453f7 Copy-Tag: eyJwIjoiLmdpdGh1Yi8uT3dsQm90LnlhbWwiLCJoIjoiZGM0NTNmNzcwMmNkNGQzOThmZTU3NzMxMTgwNGFlYTFhZDIwNTFkYSJ9 * 🦉 Updates from OwlBot post-processor See https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md --------- Co-authored-by: Owl Bot <gcf-owl-bot[bot]@users.noreply.github.com>
…445) Source-Link: googleapis/synthtool@95d9289 Post-Processor: gcr.io/cloud-devrel-public-resources/owlbot-python:latest@sha256:c8878270182edaab99f2927969d4f700c3af265accd472c3425deedff2b7fd93 Co-authored-by: Owl Bot <gcf-owl-bot[bot]@users.noreply.github.com>
Source-Link: googleapis/synthtool@050953d Post-Processor: gcr.io/cloud-devrel-public-resources/owlbot-python:latest@sha256:65e656411895bff71cffcae97246966460160028f253c2e45b7a25d805a5b142 Co-authored-by: Owl Bot <gcf-owl-bot[bot]@users.noreply.github.com>
* chore(deps): update all dependencies * 🦉 Updates from OwlBot post-processor See https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md * revert Co-authored-by: Owl Bot <gcf-owl-bot[bot]@users.noreply.github.com> Co-authored-by: Anthonios Partheniou <partheniou@google.com>
- [ ] Regenerate this pull request now. PiperOrigin-RevId: 472561635 Source-Link: googleapis/googleapis@332ecf5 Source-Link: googleapis/googleapis-gen@4313d68 Copy-Tag: eyJwIjoiLmdpdGh1Yi8uT3dsQm90LnlhbWwiLCJoIjoiNDMxM2Q2ODI4ODBmZDlkNzI0NzI5MTE2NGQ0ZTlkM2Q1YmQ5ZjE3NyJ9
Co-authored-by: release-please[bot] <55107282+release-please[bot]@users.noreply.github.com>
* feat: use nullable Int64 and boolean dtypes if available * allow google-cloud-bigquery 3.x * document dtypes mapping
🤖 I have created a release *beep* *boop* --- ## [0.17.0](googleapis/python-bigquery-pandas@v0.16.0...v0.17.0) (2022-01-19) ### ⚠ BREAKING CHANGES * use nullable Int64 and boolean dtypes if available (#445) ### Features * accepts a table ID, which downloads the table without a query ([#443](googleapis/python-bigquery-pandas#443)) ([bf0e863](googleapis/python-bigquery-pandas@bf0e863)) * use nullable Int64 and boolean dtypes if available ([#445](googleapis/python-bigquery-pandas#445)) ([89078f8](googleapis/python-bigquery-pandas@89078f8)) ### Bug Fixes * `read_gbq` supports extreme DATETIME values such as `0001-01-01 00:00:00` ([#444](googleapis/python-bigquery-pandas#444)) ([d120f8f](googleapis/python-bigquery-pandas@d120f8f)) * `to_gbq` allows strings for DATE and floats for NUMERIC with `api_method="load_parquet"` ([#423](googleapis/python-bigquery-pandas#423)) ([2180836](googleapis/python-bigquery-pandas@2180836)) * allow extreme DATE values such as `datetime.date(1, 1, 1)` in `load_gbq` ([#442](googleapis/python-bigquery-pandas#442)) ([e13abaf](googleapis/python-bigquery-pandas@e13abaf)) * avoid iteritems deprecation in pandas prerelease ([#469](googleapis/python-bigquery-pandas#469)) ([7379cdc](googleapis/python-bigquery-pandas@7379cdc)) * use data project for destination in `to_gbq` ([#455](googleapis/python-bigquery-pandas#455)) ([891a00c](googleapis/python-bigquery-pandas@891a00c)) ### Miscellaneous Chores * release 0.17.0 ([#470](googleapis/python-bigquery-pandas#470)) ([29ac8c3](googleapis/python-bigquery-pandas@29ac8c3)) --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please).
* test: address issue with fixtures not raising exceptions under emulator, flag tests as not emulator compatible * test: modify not_in_emulator to skip_on_emulator * 🦉 Updates from OwlBot See https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md Co-authored-by: Owl Bot <gcf-owl-bot[bot]@users.noreply.github.com>
Co-authored-by: Dov Shlachter <dovs@google.com>
#### Summary `dev_requirements.txt` was recently changed to upgrade the dependency on pytest-flake8 from 1.1.0 to 1.1.1. Unfortunately, pytest-flake8 requires pytest 7 or above, and the current pinned dependency for pytest is 6.2.5. I tried moving up to pytest 7 but it seems like there's a decent amount of work going into that, so in order to fix main, this PR moves the pytest-flake8 pinned version back to 1.1.0. Fixes #445.
* chore(python): use python 3.10 for docs build Source-Link: googleapis/synthtool@9ae0785 Post-Processor: gcr.io/cloud-devrel-public-resources/owlbot-python:latest@sha256:52210e0e0559f5ea8c52be148b33504022e1faef4e95fbe4b32d68022af2fa7e * use python 3.10 for docs build --------- Co-authored-by: Owl Bot <gcf-owl-bot[bot]@users.noreply.github.com> Co-authored-by: Anthonios Partheniou <partheniou@google.com>
fixes #227 Co-authored-by: Emmanuel T Odeke <emmanuel@orijtech.com>
This adds python built-in [ConnectionError](https://docs.python.org/3/library/exceptions.html#ConnectionError) to default retryable types. ConnectionError was recently added in the [BigQuery library](googleapis/python-bigquery#571) to allow retries. Fixes #426 🦕
| Back | FazBrowse Home | New Git URL |
This fixes #396, but I am happy to close it if there are issues with it. (Hence the DISCUSSION in the description.)
It is a first-step towards the discussion in #336 with @elibixby and @proppy.
The Entity class doesn't attempt to be a dictionary, rather it provides __getitem__ (and set and del) semantics and update_properties and clear_properties methods for updating the properties and leaving the rest of the entity alone.
The long term goal is to provide a way to do something like:
and I think to get there this is necessary to separate the property data (as _data) from the other metadata.
I am still trying to figure out a way to squeeze in "special" keyword arguments like
but that is outside the scope of this PR / discussion.