gtalarico / pyairtable

Python Api Client for Airtable
https://pyairtable.readthedocs.io
MIT License
786 stars 139 forks source link

There should be a way to always set `return_fields_by_field_id` to `True` on all supported calls. #365

Closed jonathanlaniado closed 2 months ago

jonathanlaniado commented 7 months ago

Is this already supported? If so, I have not been able to find it. If not, then it would be a welcome feature addition!

mesozoic commented 6 months ago

This isn't supported today by the "traditional" API, but #355 added the ability to set this on every ORM model. That will be part of the 3.0 release.

If we wanted this to be a global setting, I think we'd need to add it as an optional parameter to the Api constructor, and we'd need to use that as the default value in places like this and this.

Is there a reason it's challenging to pass this flag to the API calls you're making?

jonathanlaniado commented 6 months ago

If we wanted this to be a global setting, I think we'd need to add it as an optional parameter to the Api constructor, and we'd need to use that as the default value in places like this and this.

I'd love to see this happen. This is a great approach for implementation.

Is there a reason it's challenging to pass this flag to the API calls you're making?

It's not challenging as much as it is verbose. In large projects, it becomes redundant and wordy. Additionally, it's easy to forget to set it which can be frustrating in testing.

mesozoic commented 6 months ago

The tradeoff is a slightly more opaque API, because at the point where you're calling table.all() you don't necessarily know whether it's returning field names or field IDs. However, since the default behavior won't change, I'm not opposed to adding this in as long as it's well-tested. Pull requests are welcome! (Please read our contribution guidelines first.)

BAPCon commented 6 months ago

The tradeoff is a slightly more opaque API, because at the point where you're calling table.all() you don't necessarily know whether it's returning field names or field IDs. However, since the default behavior won't change, I'm not opposed to adding this in as long as it's well-tested. Pull requests are welcome! (Please read our contribution guidelines first.)

So basically taking the functionality of what is present in the ORM but for general API calls?

mesozoic commented 6 months ago

Same idea, yes.