Releases: aschleg/petpy
petpy 2.1.0 Release
The 2.1.0
release of petpy
implements several user-defined exceptions to help users debug any
errors that may occur. Although the petpy
library attempts to find any invalid passed parameter values and raise the appropriate error before the call to the Petfinder API is made to reduce the number of calls made to the API; however, some errors cannot be caught until after the API call is made. This update introduces these custom, user-defined exceptions for debugging error responses from the Petfinder API. For more information on the Petfinder API error definitions, please see the [Petfinder API documentation (https://www.petfinder.com/developers/v2/docs/#errors).
The following is a list of the new user-defined exceptions.
PetfinderInvalidCredentials
- Raised when a user enters invalid API key and secret key credentials.
PetfinderInsufficientAccess
- Raised when a status code 403 occurs. This error would typically be
raised when the current authentication token to the Petfinder API has expired and requires the connnection to be re-authenticated.
- Raised when a status code 403 occurs. This error would typically be
PetfinderResourceNotFound
- Raised when a status code 404 occurs.
PetfinderUnexpectedError
- Raised when a status code 500 occurs.
PetfinderInvalidParameters
- Raised when a 400 status code occurs. The exception will include the invalid parameters detected by the Petfinder API and include those parameters as part of the error output as a JSON object. For more information on this error, please see the Petfinder API documentation.
- Please note the
petpy
library will attempt to catch any invalid parameters before the API call is made to avoid extraneous issuage of the API, but if an invalid parameter does get through then this error should help provide the necessary information for users to debug any errors related to their chosen parameters.
- Please note the
- Raised when a 400 status code occurs. The exception will include the invalid parameters detected by the Petfinder API and include those parameters as part of the error output as a JSON object. For more information on this error, please see the Petfinder API documentation.
The following other changes have been made in the 2.1.0
release.
- The
host
andauth
attributes of thePetfinder
class are now private (to the extent that Python allows private attributes, denoted with an underscore in front of the attribute).
2.0.2 Relase
Minor bug fix release with following:
breeds()
method now correctly returns data when a single animal type is supplied.animals()
method now properly displays the correct error message when thedistance
parameter is
0 <= distance <= 500.
petpy 2.0.1 released
The 2.0.1 release of petpy
introduces some small bug fixes and a few other minor changes to shore up changes made for the 2.0.0 release.
Full Changelog, which can also be found in the repository's root directory.
- Fixes the
animals()
andorganizations()
method to return all matching search results when thepages
parameter
is set toNone
. - The resulting JSON (dictionary) from the
breeds()
method when the parameterreturn_df=False
will now consistently
havetypes
as the key. Prior to this change, if thebreeds()
method was called with a single animal type, the
resulting key name in the returned object would be namedtype
, whereas if more than one animal type is specified
the key name would betypes
. - The
distance
parameter for theanimals()
andorganizations()
parameters will now raise aValueError
if it is
less than 0.
petpy 2.0.0 Released!
New major release coinciding with the release of v2.0 of the Petfinder API!
The legacy version of the Petfinder API, v1.0, will be retired in January 2020, therefore, the petpy
library has
been updated almost from the ground up to be compatible as possible with the new version of the Petfinder API! The
new version of the Petfinder API is a huge improvement over the legacy version, with many changes and additions to
the design of the API itself.
Below is a summary of all the changes made in the release of petpy 2.0
.
petpy
now supports the latest release of Python 3.7- Support for Python 2.7 is discontinued as Python 2.7 will be officially discontinued in January 2020.
- The following methods have been added to
petpy
to make it compatible with v2.0 of the Petfinder API.animal_types()
is used to getting animal types (or type) available from the Petfinder API. The release
of v2.0 of the Petfinder API added several endpoints for accessing animal types in the Petfinder database.
This method wraps both Petfinder API endpoints for getting animal types. More information on the animal type
endpoints in the Petfinder API can be found in its documentation:breeds()
is the new method for getting available animal breeds from the Petfinder database. The API
endpoint documentation is available on the Petfinder API documentation page.animals()
is the method for extracting animal data available on the Petfinder API and deprecates the
pets()
related methods. The method wraps both theanimals
andanimal/{id}
endpoints of the Petfinder API. The documentation for these endpoints can be
found in the Petfinder API documentation:organizations()
is now the method for extracting animal welfare organization data available on Petfinder
and deprecates previousshelter()
related methods and endpoints. Theorganizations()
method wraps both
the Petfinder APIorganizations
andorganizations/{id}
endpoints. The Petfinder API documentation for
these two endpoints can be found below:
- The following methods have been removed as they are no longer valid endpoints with the release of v2.0 of the
PetFinder API.pet_get_random()
shelter_list_by_breed()
shelter_get_pets()
- General refactoring and code clean-up.
petpy 1.8.2 release
This release fixes some import issues with pandas (issue #8) as well as implementing some additional checks around parameter inputs. The latter was officially released in version 1.8.1.
Version 1.8.2
- Add
pandas
back as an installation requirement as it is included in top-level imports.pandas
is
still not necessary to use the primary functionality ofpetpy
.
Version 1.8.1
- Implement check to make sure
count
parameter is not larger than 1,000 records (per the Petfinder API
limits). Ifcount
exceeds 1,000 aValueError
is raised. - Add check for ensuring the number of total records to return does not exceed 2,000 when paging results with
thepages
andcount
parameters. If the desired amount of records is higher than 2,000, a
ValueError
is raised. - Remove Python 3.3 support. Although
petpy
should work fine for those still using Python 3.3, testing for 3.3
has been discontinued.
petpy 1.8.0 Release
General refactoring of the petpy
library to remove unneeded methods from being exposed when importing the library. The best way to import and begin using petpy
is from petpy import Petfinder
or, less optimally, import petpy
, then calling the Petfinder
class by petpy.Petfinder
.
petpy 1.7.2 Release
The 1.7.2 release of petpy
fixes a variety of bugs and changes to requirements. The specific changes notes are:
- There is now a proper message when the daily API call limit is exceeded. Prior to the change, methods would
return aJSONDecodeError
. - The Python 2 to 3 compatibility package
six
, has been added as a requirement for package installation.
Thesix
library is lightweight and ensures thepetpy
package works properly for Python 2 and 3. - Numpy is no longer required for installing the package. Numpy's
nan
was originally used to denoted shelters
animals that were not found in the Petfinder database. The value returned when a shelter or animal is not found
is now 'na'.
The full change history can be found in the documentation.
petpy 1.7.1 Release
The 1.7.1 release of petpy is intended to fix a couple of bugs when using the shelter methods and transforming the results into pandas DataFrames. This version and other version changes can also be found in the complete petpy documentation.
Release Notes
- Fix to the
shelter_get()
method for handling empty responses when no shelters returned for when
the parameterreturn_df = True
. - Fix to getting pets available at a shelter with
shelter_get_pets()
when the parameter
return_df = True
when the given shelter does not return any available animals.
petpy 1.7.0 Release
The 1.7.0 release introduces a variety of fixes and changes to the package. The full release notes can be found below, as well as in the petpy version documentation.
Release Notes
- Refactoring of library to clean up code files.
- Fixed a bug with the
shelter_get_pets()
method that caused an error to be thrown when there is only
one pet record and the parameterreturn_df = True
. - Many changes to simplify expressions and internal code within methods.
- The Petfinder class method names and parameters have been renamed to be PEP8 compatible. I apologize as this
will cause backward compatibility issues upon updating for anyone using previous versions. The original
intention of the naming was to reflect the Petfinder API's method names as closely as possible, but after
further consideration and given the relative short life of the library, I think the change is necessary for the
future growth and maturity of the package.- How the methods interact with the Petfinder API is unchanged, thus there is no immediate need to update your
version of petpy if it will break any current code.
- How the methods interact with the Petfinder API is unchanged, thus there is no immediate need to update your
- The Github repo README has been updated with the new API methods.
- Below is a table detailing the changed method names:
Previous Method Name | New Method Name |
---|---|
pet_getRandom() | pet_get_random() |
shelter_getPets() | shelter_get_pets() |
shelter_listByBreed() | shelter_list_by_breed() |
- The following lists the method parameter names that have changed with the release:
Previous Parameter Name | New Parameter Name |
---|---|
petId | pet_id |
shelterId | shelter_id |
petpy 1.6 released
This release removes pandas as an installation requirement for the package. Although pandas is required to convert the API results into a DataFrame, this is optional and not necessary to the building or use of the package itself.