Releases: wppbav/bavapi-sdk-python
v1.1.0
1.1.0 (2024-05-20)
Feature
- ✨ Added new
bavapi.toolsmodule to support the Tools/TurboPitch endpoints in the BAV API.
Docs
- 🧹 Fixed minor typos in docstrings for
bavapi.Clientandsyncmethods. - 📓 Blocked
configmodule from appearing in API reference docs. - ✨ Added documentation cross-linkage support for
pydanticandpandas. References topydanticandpandasfunctions or classes now link to their documentation page.
Internal
- 🧹 New
configmodule to hold the user agent and URL to use with the package.
Typing
- 🐛 Fixed too-strict type definitions for
parsing.params.list_to_str.
v1.0.4
1.0.4 (2024-04-09)
Feature
- ✨ Added new "audience-groups" endpoint to
bavapi.
Docs
- 🚀 Added
v2roadmap to the documentation. - 📓 Added documentation for Audience Groups.
- 🧹 Fixed various typos.
Test
- 🧪 Clean up testing of
httpandclientmodules through dependency injection.
Typing
- 🦆 Moved commonly used protocols to
typingmodule. - 🐛 Changed type of
exc_typeargument in thearetryfunction to correctTupleinstead ofIterable.
Internal
- 🧹 Removed old
testingcode for reproducing SSL issues in earlier versions ofbavapi.
v1.0.3
v1.0.2
1.0.2 (2024-02-08)
Fix
⚠️ Fix deprecation warning when parsing responses into dataframes withpandas>=2.2.
Docs
- ✨ Add ability to copy code blocks from the documentation.
Test
- 🧪 Added tests for correct dtype conversions.
Internal
- 🧹 Cleaned up unused and ignored logging for development scripts.
v1.0.1
v1.0.0
1.0.0 (2024-01-04)
Feature
- 🎉 Added five new endpoints to
bavapiwith accompanyingFountFiltersclasses:citiescompaniescountriesregionsyears
Changes
- ♻️ Initial handshake API request will now be retried on SSL errors.
Docs
- 🧹 Reordered some sections in the Basic usage and Advanced usage sections of the documentation.
- 🧹 Updated and standardized Jupyter notebook demo.
- 🧹 Clarified when a query is considered to be a single-page query in the
bavapi.Query.is_single_pagedocstring. - 🧹 Fixed some minor errors in
bavapi.Clientmethod docstrings. - 🎉 Added examples of the batch logic in the Jupyter demo notebook.
- 🧹 Repurposed the getting started section on reference classes as the primary documentation page for the references functionality, rather than keeping a section in Basic usage.
- ✨ Changed Release notes dates to ISO-8601 format.
Internal
- ℹ️ Cleaned up and added comments to documentation scripts.
- ✨ Removed
tqdmas a dependency from the batching logic. - ℹ️ Added comments to
noxsession for deploying the docs. - 🧹 Simplified some logic in
Query.ensure. - 🎉 Added support for specifying exceptions to retry on for
aretryinternal function.
CI
- ♻️ CI won't run unless a package or test file is changed, or the CI action file is changed.
- ✨ Added manual trigger to documentation so deploying fixes to the docs doesn't require a version change.
v0.13.0
0.13.0 (December 11th, 2023)
This version of bavapi is expected to be the last beta version before a release candidate.
Feature
- 🎉
bavapiwill now retry page requests upon failure. You can control the number of retry attempts with theretriesparameter in top-level functions and theClientinterface. - 🎉 It is now possible to control the behavior of errors in the request process. If
on_errorsis set to"warn"(default), successful requests will be returned and a warning will be issued detailing which pages resulted in errors and each exception associated with it. Ifon_errorsis set to"raise"(old behavior) instead, an exception will be raised as soon as any request fails. - 🎉 Added
bav_studyandreleasedfilters tostudiesendpoint function and method.
Changes
- 🚀 Reduced the size of the initial request to 1 item if a paginated request is detected for improved performance.
- 🚀 Paginated requests are now performed in batches instead of starting every request from the start. This should mitigate several issues (like SSL errors) with large queries and improve overall run times. You can control this behavior through the
batch_sizeandn_workersparameters in top-level functions and theClientinterface. - 🔨 Instead of having failed requests immediately raise exceptions,
bavapiwill continue downloading pages, collect successful responses, and warn the user about the pages that failed to be collected. This can be controlled by theon_errorsparameter in top-level functions and theClientinterface. - ✨ Using
bavapi.Queryinstances in request functions and methods will now combine method parameters with parameters in the query object. Parameters specified in the query object will take precedence over parameters specified in the function or method. Filter values in the method parameters will be ignored if the query object contains filters.
Fix
- 🐛 Refactored the expanding step of the result parsing pipeline to fix undefined behavior when multiple expandable columns are found in the result.
Internal
- 🧹 Removed trailing whitespaces
- 🔨 New data fetching algorithm based on asynchronous workers.
- 🐛 Fixed unmatched checkout action versions in
ci. - 🔨 Refactored filter consolidation logic to avoid unnecessary copies of parameters.
Docs
- 📓 Added clarification about prefixed column names in
brandscape-dataendpoint results. - ✨ Various improvements to documentation, focused on warnings/tips and code snippets.
Test
- 🧪 Added tests for new
_batchedand_fetchermodules. - 🧪 Added new test case for
parsing.responsesto test correct behavior with multiple expandable columns in the response. - 🧪 Added new tests for query consolidation logic.
- 🔧 Fixed
HTTPClienttests to work with new architecture. - ✨ Simplified integration tests thanks to the new retry functionality
v0.12.1
Fix
- 🐛 Incorrect
datetimeformat used when formatting string values. - 🐛 Removed unused testing helper code that could lead to recursion errors.
Internal
- 🧪 Add tests for all arguments in
bavapi-gen-refsargument parser. - 🧹 Removed unnecessary development flags for coverage and typing.
Typing
- ✨ Improved typing of
generate_referencesandsyncmodules.
Docs
- 🧹 Fixed incorrect warning about mixing filters and endpoints.
- ✅ Normalized docstring default definitions to follow
numpydocspec.
v0.12.0
0.12.0 (November 15th, 2023)
Feature
- 🎉 Added support for
metric_group_keys, for use with thebrandscape-dataendpoint. - 🎉 It is now possible to use
pageas the start page of a paginated request. Useper_pageand/ormax_pagesto change the behavior of the pagination. More info in the Basic Usage section of the documentation. - ✨ As a result of the new paginated behavior, it is now possible to chunk requests by setting the start and end of the request with
pageandper_page, respectively. See more info in the Project tips section of the documentation.
Changes
⚠️ ExceptionsDataNotFoundErrorandRateLimitExceededErrorare now subclasses ofAPIError.- 🔨 Refactored pagination logic to allow for control over the start and end of the paginated request to the Fount. Shouldn't break existing uses of
pageunlessper_pageand/ormax_pageswere also in use. More info in the Basic Usage section of the documentation. - ⚙️
Query.with_pageparameters are now optional and default toNone. - 🔧
Queryattributespage,per_page, andmax_pagesmust be greater than0. - 🛑 (BREAKING)
Query.paginatedparameter order has changed to makeper_pageoptional.
Fix
- ⚙️ Various issues and inconsistencies with pagination logic.
- 🐛 Fixed
per_pagenot applying to single page results.
Docs
- ✨ Added instructions for performing batched requests in the Project Tips section of the documentation.
v0.11.0
0.11.0 (October 27th, 2023)
In preparation for a stable release of bavapi, some aspects of the endpoint function/method interface have been normalized across the library.
This means that all endpoints now support a query parameter directly, to allow for better reproducibility and parametrization of queries. raw_query now also uses query instead of params, with query being required unlike with other endpoints.
Another change is that the order of parameters has been altered. The main reason for this is that parameters like brand_id were positional parameters before, when they are exclusive with almost all othe r parameters. This was also the case for parameters like studies, which are exclusive with country_codes and year_numbers. Now {endpoint}_id parameters and other exclusive or niche filters have been turned to keyword-only parameters. Filters like inactive and not_in_most_influential have been removed from endpoint functions. Use the filters parameter instead. See each endpoint documentation page for more information.
Feature
- 🎉 It is now possible to pass a
bavapi.Queryobject to all endpoint functions and methods with thequeryparameter. Ifqueryis used, all the parameters that would be used in the query (listed beforequeryin each endpoint documentation) will be ignored. - 🎉 It is now possible to specify a destination folder for the
bavapi-gen-refscommand with the-d/--dest-folderargument. - 🎉 Reference classes generated via
bavapi-gen-refscan now be imported withfrom bavapi_refs import Countriesfor example.
Changes
- 🛑 (BREAKING) Changed
raw_queryparamsparameter name toqueryto match all other endpoints. - 🛑 (BREAKING) Changed the order of several endpoint parameters for more effective queries. Now, each endpoint function has a set of parameters that can be set as positional arguments for exploratory filtering, while niche filters and IDs have become keyword only parameters.
audiences:- Positional filters:
name,active,public - Keyword filters:
audience_id,private,groups
- Positional filters:
brand_metrics:- Positional filters:
name,active,public - Keyword filters:
metric_id,private,groups
- Positional filters:
brand_metric_groups:- Positional filters:
name,active - Keyword filters:
group_id
- Positional filters:
brands:- Positional filters:
name,country_codes,year_numbers - Keyword filters:
brand_id,studies
- Positional filters:
brandscape_data:- Positional filters:
country_code,year_number,audiences,brand_name - Keyword filters:
studies
- Positional filters:
categories:- Positional filters:
name,sector - Keyword filters:
category_id
- Positional filters:
collections:- Positional filters:
name,public - Keyword filters:
collection_id,shared_with_me,mine
- Positional filters:
sectors:- Positional filters:
name,in_most_influential - Keyword filters:
sector_id
- Positional filters:
studies:- Positional filters:
country_codes,year_numbers,full_year - Keyword filters:
study_id
- Positional filters:
Error Messages
⚠️ Improved error message forbavapi-gen-refscommand when neither-a/--allnor-n/--namearguments aren't used.
Fix
- 🐛 Fixed that requests with
item_idwould ignore other query parameters. - 🐛 Addressed undefined behavior when
max_pagesis larger than the total number of pages as reported by the API. Now the max number of pages is always capped by the reported total.
Internal
- 🐛 Fixed typing of
tupleinternaldocs_deployfunction annotations not being compatible with Python <3.9. - 🚀 Removed slow and unnecessary test for the
verboseparameter inHTTPClient. - 🚀 Refactored tests that instantiate
httpx.AsyncClientinstances for a 20x reduction in test run time.
Docs
- ✨ Filter classes table in Basic usage page now points to each endpoint function docs.
- ✨ Automatically add comment to
docs/contributing.mdto edit./CONTRIBUTING.mdinstead. - 📓 Updated Jupyter notebook demo with latest features and conventions.
- 📓 Documented the use of
bavapi.Queryobject in functions and methods. - 📓 Improved code example for the Using reference classes section of the Basic usage page.
- 📓 Clarified which endpoint filters are positional and keyword-only in respective endpoint documentation pages
- 🐛 Fixed incorrect rendering of tabs in the Suppressing progess bar section of the Basic usage page.
- ❌ Removed
datetimeformatting section from the Basic usage page.