Changelog#
This project uses a curated changelog to highlight notable changes by release. Detailed commit history remains available in GitHub.
The format is based on the Keep a Changelog guidelines, and this project adheres to Semantic Versioning.
Unreleased#
Added#
The
salespyforce.utils.version.get_version_from_pyproject()function was added as a fallback method for retrieving the current package version when the package is not installed.The
salespyforce.errors.exceptions.PATCHRequestErrorexception class has been added to leverage with PATCH request exceptions.The
ensure_starts_with()andensure_ends_with()core utility functions have been added to assist with input validation.
Changed#
The constants used by the package have been centralized within the new
salespyforce.constantsmodule and the other modules have been updated accordingly.The
download_image()method now logs errors and raises exceptions when failing to successfully download an image.The
salespyforce.utils.version.get_full_version()andsalespyforce.utils.version.get_major_minor_version()functions now attempt to retrieve the version from thepyproject.tomlfile if it cannot be retrieved via the package metadata.The
salespyforce.Salesforce.Knowledge.delete_article_draft()method (and underlying function) now supports thesobjectparameter to specify the sObject against which to query.The
salespyforce.Salesforce.Knowledge.get_validation_status()method (and underlying function) now includes theuse_knowledge_articles_endpointparameter so you can specify the REST path to utilize.The following methods (and underlying functions) now raise the
MissingRequiredDataErrorexception rather than genericRuntimeErrororValueErrorexceptions when required data is missing:The
salespyforce.utils.core_utils.download_image()function now raises more specific exceptions instead of the genericRuntimeErrorexception.The
salespyforce.errors.exceptions.MissingRequiredDataErrorexception is raised if neither an image URL nor an API response are provided when calling the function.The
salespyforce.errors.exceptions.GETRequestErrorexception is raised if the GET request fails to download the image.
The
salespyforce.utils.helper.import_helper_file()andsalespyforce.utils.helper.get_helper_settings()functions now support bothymlandyamlextensions for YAML files.The documentation for this project has updated to a more modern and intuitive theme, layout, and structure. The intent was to be less verbose and instead make the documentation more human-oriented with helpful guides and tutorials.
The previous Sphinx content has been preserved in
docs_legacy/for historical purposes.
The test suite has been moved from
src/salespyforce/utils/tests/to the root-leveltests/directory to better align with standard Python project layout practices.The root-level test suite is now organized into
tests/unit/andtests/integration/to separate deterministic unit coverage from opt-in environment-dependent integration coverage.
Removed#
The
salespyforce.utils.helper.HelperParsingclass has been removed as its functionality has been replaced by theYAML_BOOLEAN_MAPPINGconstant in thesalespyforce.constantsmodule.
1.4.0 - 2026-02-04#
Added#
Several new methods have been introduced within the core object to perform various tasks:
The
delete()method performs DELETE API calls.The
get_latest_api_version()method retrieves the latest Salesforce API version.The
retrieve_current_user_info()method retrieves information for the current/running user that was leveraged to connect to the Salesforce REST API.This method now runs during the core object instantiation so that the running user information can be utilized as default parameter values with certain methods/functions.
Several new methods were added to check the user access for a specific record:
The
get_18_char_id()method converts a 15-characterIdvalue into a valid 18-character value.
Added several new functions in the utilities modules:
The new
salespyforce.utils.core_utils.is_valid_salesforce_url()function is now utilized to ensure that URLs passed to the API call methods (e.g.,get(),put(), etc.) to ensure they are valid Salesforce URLs.
Changed#
The
Salesforceclient now defines and stores theorg_id(str)
andcurrent_user_info(dict) for use in client API calls as default parameter values.The
salespyforce.Salesforce.Knowledge.get_validation_status()method has been updated to use a more specific exception class, and to return an empty string on lookup failures versus aNonevalue.The
salespyforce.Salesforce.Knowledge.get_article_details()method now accepts the optionaluse_knowledge_articles_endpointparameter, which forces theknowledgeArticlesendpoint to be used for the GET request rather than thesobjectsendpoint.The client methods for API calls (e.g.
get(),post(), etc.) now support passing full URLs as the endpoint as long as they are valid Salesforce.com URLs.The
salespyforce.Salesforce.Knowledge.get_articles_list()method now logs errors using the logger rather than writing tostderrin the console.
Deprecated#
The function
salespyforce.utils.core_utils.display_warning()has been deprecated
and has been moved tosalespyforce.errors.handlers.display_warning()instead.
Fixed#
A logic issue was found and resolved in the
salespyforce.Salesforce.Knowledge.get_article_id_from_number()method.
Security#
Several dependency versions were updated to mitigate known vulnerabilities found in earlier versions:
Explicitly pinned
urllib3to require version1.26.19or above (below v3) in order to avoid CVE-2024-37891.Explicitly pinned
idnato require version3.7or above (below v4) in order to avoid CVE-2024-3651.Explicitly pinned
certifito require version2024.7.4or above in order to mitigate CA removals (e-Tugra, GLOBALTRUST) per CVE-2023-37920 and CVE-2024-39689.
1.3.0 - 2025-11-11#
Added#
The new
salespyforce.Salesforce.Knowledge.archive_article()method was added to easily archive knowledge articles.
Changed#
The
next_records_urlparameter was added to thesoql_query()method which introduces the ability to query using anextRecordsUrlvalue.
1.2.2 - 2023-11-14#
Changed#
The
salespyforce.Salesforce.Knowledge.check_for_existing_article()method has been updated to introduce theinclude_archivedparameter, which specifies whether archived articles will be included in the query results.
1.2.1 - 2023-09-01#
Changed#
The
salespyforce.Salesforce.Knowledge.publish_article()method now returns a Boolean value by default, which indicates whether the operation was successful. It is still possible to optionally return the full API response.
1.2.0 - 2023-08-31#
Added#
The new
salespyforce.Salesforce.Knowledge.assign_data_category()method has been added, which introduces the ability to assign data categories to a knowledge article draft.
Fixed#
The underlying function for the
salespyforce.Salesforce.Knowledge.get_article_url()method was updated to fix an extraneous slash issue.
1.1.2 - 2023-06-05#
Changed#
Only the version was changed in this release to address an issue with PyPI distribution.
1.1.1 - 2023-06-05#
Changed#
Only the version was changed in this release to address an issue with PyPI distribution.
1.1.0 - 2023-05-29#
Added#
The
get_org_limits()method was added to retrieve the governor limits for the connected Salesforce org.The
search_string()method was added to introduce the ability to perform a SOSL query to search for a given string.
1.0.0 - 2023-05-08#
This was the first release of the salespyforce package on PyPI with its original
features and functionality.