Primary Modules¶
Additions to the primary modules.
- Added the following new functions:
khoros.structures.boards._construct_where_clause()khoros.structures.boards._construct_order_by_clause()
This page documents the additions, changes, fixes, deprecations and removals made in each release.
Release Date: 2023-11-01
Additions to the Khoros Core Object.
Additions to the primary modules.
khoros.structures.boards._construct_where_clause()
khoros.structures.boards._construct_order_by_clause()
Changes to the Khoros Core Object.
Updated the khoros.core.Khoros.Board.get_all_messages() method to include
the where_filter and descending parameters to further filter the LiQL query
that is performed.
Changes to the primary modules.
Updated the khoros.structures.boards.get_all_messages() function to include
the where_filter and descending parameters to further filter the LiQL query
that is performed.
return statement from the following functions:khoros.objects.messages._verify_required_fields()
khoros.objects.messages._confirm_field_supplied()
Fixes to the primary modules.
Converted some unnecessary f-strings into standard strings in the
khoros.structures.boards._structure_label_settings() function.
Converted an unnecessary f-string into a standard string in the
khoros.objects.messages.parse_v2_response() function.
Bumped urllib3 from 1.26.16 to 1.26.17 to address CVE-2023-43804.
Release Date: 2023-08-08
Additions to the Khoros Core Object.
Added the khoros.core.Khoros.Board.get_message_count() method.
Added the khoros.core.Khoros.Board.get_all_messages() method.
(Feature #63)
khoros.core.Khoros.Label class with the following methods:Added the khoros.core.Khoros.User.get_users_count() method.
Added the khoros.core.Khoros.User.get_all_users() method.
(Feature #64)
Added the ability to define the logging level when instantiating the core object.
Added additional log messages to the core object.
Additions to the primary modules.
Added the khoros.structures.boards.get_message_count() function.
khoros.structures.boards module:khoros.structures.boards._perform_single_query()
khoros.structures.boards._add_missing_cols()
Added the khoros.objects.labels.get_labels_for_message() function.
khoros.objects.users module:khoros.objects.users.get_all_users()
(Feature #64)
khoros.objects.users._perform_single_query()
khoros.objects.users._add_missing_cols()
Additions to the supporting modules.
Added the khoros.utils.tests.test_messages.test_count_messages() test function.
Changes to the primary modules.
Changed the generic exception in khoros.api._report_failed_attempt()
to a RuntimeError exception.
khoros.api._api_request_with_payload()
khoros.api._api_request_without_payload()
khoros.api._report_failed_attempt()
khoros.api._raise_exception_for_repeated_timeouts()
khoros.api._attempt_json_conversion()
khoros.api._confirm_field_supplied()
khoros.auth._get_session_key_header()
khoros.bulk_data._construct_headers()
khoros.api._display_ssl_verify_warning()
Changes to the supporting modules.
Updated the khoros.utils.tests.test_users.test_get_counts() function
to test the khoros.core.Khoros.User.get_users_count() method.
Bumped Certifi from 2022.12.7 to 2023.7.22 to address the security vulnerability CVE-2023-37920.
Release Date: 2023-05-23
Updated requests to v2.31.0 to address the security vulnerability CVE-2023-32681.
Updated the pyproject.toml and poetry.lock files accordingly.
Release Date: 2023-01-02
Added poetry support by adding the pyproject.toml
and poetry.lock files.
Updated pytest to v7.2.0 to address the security vulnerability CVE-2022-42969.
Addressed the security vulnerability CVE-2022-40897.
Disabled the bandit.yml workflow as it is experiencing unknown runtime errors.
Release Date: 2022-12-05
Additions to the Khoros Core Object.
Added the khoros.core.Khoros.User.get_all_users_count() method.
Added the khoros.core.Khoros.Archives.is_archived() method.
Additions to the primary modules.
Added the khoros.objects.users.get_all_users_count() function.
Added the khoros.objects.archives.is_archived() function.
khoros.bulk_data module:khoros.bulk_data._validate_bulk_data_export()
Additions to the supporting modules.
Added the khoros.errors.exceptions.InvalidParameterError exception class.
Added the khoros.utils.tests.resources.mock_bulk_data_json() function.
Added the khoros.utils.tests.test_archives.test_archive_check() test function.
Added the khoros.utils.tests.test_bulk_data.test_bulk_data_query() test function.
Changes to the primary modules.
Improved the error handling in the khoros.bulk_data.query() function to display
the response text in the raised exception when available.
Changes to the supporting modules.
Updated the khoros.utils.tests.test_exceptions.test_raising_exceptions() function
to test raising the khoros.errors.exceptions.InvalidParameterError exception class.
Updated the khoros.utils.tests.resources.MockResponse class to introduce the
status_code attribute to the object.
Changed the setuptools version in requirements.txt to be 65.5.1 in order to mitigate
the Regular Expression Denial of Service
vulnerability identified by Snyk in Pull Request #62.
Changed the versions for the Sphinx-related packages in requirements.txt to be more current.
Release Date: 2022-10-28
Fixes in the Khoros Core Object.
Fixed the docstring for the khoros.core.Khoros.Settings.define_node_setting() method
to reflect the proper default value of the return_json parameter and to define the correct
return value.
Fixes in the primary modules.
Fixed the docstring for the khoros.objects.settings.define_node_setting() function
to reflect the proper default value of the return_json parameter and to define the correct
return value.
Fixes in the supporting modules.
Fixed an issue with testing the retrieval of views in the
khoros.utils.tests.test_categories.test_category_details() function to ensure a
successful assertion.
Release Date: 2022-10-04
Additions to the supporting modules.
Added the khoros.utils.tests.resources.MockResponse class.
Added the khoros.utils.tests.resources.mock_success_post() and
khoros.utils.tests.resources.mock_error_post() functions.
Added the khoros.utils.tests.test_categories.test_create_category() function.
khoros.utils.tests.test_albums module with the following functions:khoros.utils.tests.test_archives module with the following functions:khoros.utils.tests.test_users module with the following functions:khoros.utils.tests.test_core_utils module:Added the khoros.utils.tests.test_exceptions module with the
khoros.utils.tests.test_exceptions.test_raising_exceptions() function.
khoros.utils.tests.test_error_handling module with the following functions:khoros.utils.tests.test_error_handling.test_get_html_error()
khoros.utils.tests.test_error_handling.test_verify_core_object_present()
khoros.utils.tests.test_error_handling.test_translate_error()
khoros.utils.tests.test_error_handling.test_translation_check()
khoros.utils.tests.test_error_handling.test_parse_translation_error()
Added the khoros.utils.tests.test_studio module with the
khoros.utils.tests.test_studio.test_studio_functions() function.
Changes to the supporting modules.
Updated the khoros.utils.tests.test_roles.test_get_role_id() function
to support GitHub Workflows and to test the raising of exceptions for invalid data.
Updated the khoros.errors.exceptions.InvalidEndpointError exception to
remove part of the default message that was specifically for Khoros JX.
Fixes in the supporting modules.
Fixed the khoros.errors.exceptions.DataMismatchError exception so that it will
display an appropriate error message when a keyword argument is passed.
Fixed an issue with the message not displaying properly in the
khoros.errors.exceptions.MessageTypeNotFoundError exception when a message type
is explicitly defined.
Fixed an issue with how the message is displayed in the
khoros.errors.exceptions.NodeIDNotFoundError and
khoros.errors.exceptions.NodeTypeNotFoundError exceptions when a value is passed
as an argument.
Fixed an issue with the message not displaying properly in the
khoros.errors.exceptions.InvalidRoleError and
khoros.errors.exceptions.InvalidRoleTypeError exceptions when a role or role type
is explicitly defined.
Fixed an issue with the message not displaying properly in the
khoros.errors.exceptions.UserCreationError exception when a user or exception
message is explicitly defined.
Release Date: 2022-09-29
Additions to the supporting modules.
Changes to the supporting modules.
Updated the khoros.utils.tests.resources.instantiate_with_local_helper() function
to raise a FileNotFoundError exception if the helper file cannot be found.
Updated the khoros.utils.tests.resources.control_data_exists() and
khoros.utils.tests.resources.import_control_data() functions to support the
GitHub Workflows control data.
Updated the khoros.utils.tests.test_categories() functions to support the GitHub
Workflows helper file instantiation.
Updated the khoros.utils.tests.test_messages() functions to support the GitHub
Workflows helper file instantiation.
Updated the khoros.utils.tests.test_liql() functions to support the GitHub
Workflows helper file instantiation.
Fixes in the primary modules.
Fixed the issue reported in Issue #59
where the khoros.structures.base.get_structure_field() function was failing with
a KeyError exception.
Removals in the supporting modules.
Removed the khoros.utils.tests.test_categores.get_control_data() and
khoros.utils.tests.test_categories.get_core_object() functions that became obsolete.
Release Date: 2022-09-28
Additions to the Khoros Core Object.
Additions to the primary modules.
khoros.objects.messages module:khoros.objects.messages._set_spam()
Additions to the supporting modules.
khoros.utils.tests.resources module:khoros.utils.tests.resources._get_control_dataset_file()
khoros.utils.tests.test_messages module:khoros.utils.tests.test_communities module:khoros.utils.tests.test_categories module:khoros.utils.tests.test_communities.get_core_object()
khoros.utils.tests.test_communities.get_control_data()
khoros.utils.tests.test_communities.test_get_category_id()
khoros.utils.tests.test_communities.test_total_count()
khoros.utils.tests.test_communities.test_if_category_exists()
khoros.utils.tests.test_communities.test_category_details()
Fixes to the primary modules.
Fixed the issue reported in Issue #58
where the khoros.structures.categories.get_creation_date() function was failing with
an exception.
Release Date: 2022-09-20
Additions to the Khoros Core Object.
Added and configured the self.bulk_data_settings dictionary in the core object.
khoros.core.Khoros.BulkData inner class with the following methods:khoros.core.Khoros.Message inner class:Added the khoros.core.Khoros.Message.get_context_id() method.
Added the khoros.core.Khoros.Message.get_context_url() method.
Added the khoros.core.Khoros.Message.define_context_id() method.
Added the khoros.core.Khoros.Message.define_context_url() method.
Added the khoros.core.Khoros.User.get_registered_users_count() method.
Added the khoros.core.Khoros.User.get_online_users_count() method.
Added the khoros.core.Khoros.Community.sso_enabled() method.
Additions to the primary modules.
khoros.bulk_data module with the following functions:khoros.bulk_data._construct_headers()
khoros.bulk_data._get_export_header()
khoros.bulk_data._construct_parameters()
khoros.bulk_data._validate_date_field()
khoros.objects.messages module:Added the khoros.objects.messages.get_context_id() function.
Added the khoros.objects.messages.get_context_url() function.
Added the khoros.objects.messages.define_context_id() function.
Added the khoros.objects.messages.define_context_url() function.
Added the khoros.objects.users.get_registered_users_count() function.
Added the khoros.objects.users.get_online_users_count() function.
Added the khoros.structures.communities.sso_enabled() function.
Additions to the supporting modules.
Added the khoros.utils.helper._get_bulk_data_info() function.
Added the khoros.utils.tests.resources.instantiate_with_placeholder() function.
khoros.utils.tests.test_bulk_data module with the following test functions:Added the khoros.utils.tests.test_settings.test_sso_status_retrieval() test function.
khoros.utils.tests.test_roles() module with the following functions:Added the bulk_data section to the examples/helper.yml file.
Changes to the Khoros Core Object.
Merged two if statements in the khoros.core.Khoros._populate_auth_settings() method.
Added a reference to the Khoros Developer Documentation in the
khoros.core.Khoros.Role.get_users_with_role() method.
Changes to the primary modules.
Improved the error handling in the khoros.auth.get_session_key() function.
if statements in the following functions:Added a reference to the Khoros Developer Documentation in the
khoros.objects.roles.get_users_with_role() function.
Changes to the supporting modules.
Added a function call in khoros.utils.helper._get_connection_info() to parse the
Bulk Data API connection information when applicable.
Merged two if statements in the khoros.utils.version.warn_when_not_latest() function.
Made a minor change to the docstring for khoros.errors.handlers._exceptions_module_imported().
Updated the Security Policy to add support for version 5.0.x and to remove support for version 3.x.x.
Fixes to the Khoros Core Object.
Removed the redundant return statement from the
khoros.core.Khoros.Tag.add_tags_to_message() method.
Fixes to the primary modules.
Updated the khoros.structures.grouphubs._create_group_hub_with_avatar() to pass a defined
content-type value which was previously stored in an unused variable.
return statements from the following functions in the khoros.api module:khoros.api._confirm_field_supplied()
khoros.api._display_ssl_verify_warning()
khoros.api._report_failed_attempt()
Removed redundant return statements from the following functions in the
khoros.objects.tags module:
Removed the redundant return statement from the
khoros.structures.boards._warn_about_ignored_settings() function.
Removed the redundant return statement from the
khoros.structures.communities._check_for_multiple_tenants() function.
Removed the redundant return statement from the
khoros.structures.grouphubs.refresh_enabled_discussion_styles() function.
Removed the DeprecationWarning from the
khoros.structures.base.Mapping class to address Issue
#57.
Fixes to the supporting modules.
Removed redundant return statements from the following functions in the
khoros.utils.version module:
Removed redundant return statements from the following functions in the
khoros.utils.environment module:
khoros.utils.environment._update_env_list()
khoros.utils.environment._update_env_mapping()
Removed redundant return statements from the following functions in the
khoros.errors.handlers module:
khoros.errors.handlers._import_exceptions_module()
khoros.errors.handlers._import_exception_classes()
Removed the redundant return statement from the
khoros.utils.core_utils.display_warning() function.
Removed the redundant return statement from the
khoros.utils.tests.resources.set_package_path() and
khoros.utils.tests.resources.parse_testing_config_file() functions.
Removed the redundant return statement from all or most functions in the
following modules:
Release Date: 2022-01-16
Additions to the Khoros Core Object.
Added the khoros.core.Khoros.Message.get_metadata() method.
Additions to the primary modules.
Added the khoros.objects.messages.get_metadata() function.
Additions to the supporting modules.
Added the khoros.errors.exceptions.InvalidMetadataError exception class.
Changes to the Khoros Core Object.
Replaced the phrase “This function” with “This method” in all of the core method docstrings.
Release Date: 2021-10-12
Changes to the Khoros Core Object.
Introduced the proxy_user_object parameter to the khoros.core.Khoros.Message.create()
method to allow messages to be created on behalf of other users.
Introduced the proxy_user_object parameter to the khoros.core.Khoros.Message.update()
method to allow messages to be updated on behalf of other users.
Changes to the primary modules.
Introduced the proxy_user_object parameter to the khoros.objects.messages.create()
function to allow messages to be created on behalf of other users.
Introduced the proxy_user_object parameter to the khoros.objects.messages.update()
function to allow messages to be updated on behalf of other users.
Release Date: 2021-10-10
Added Python version 3.10 to setup.py.
Release Date: 2021-10-10
Additions to the Khoros Core Object.
Added the khoros.core.Khoros.Message.validate_message_payload() static method.
khoros.core.Khoros.SAML inner class with the following methods:Added the khoros.core.Khoros._import_saml_class() method.
Additions to the primary modules.
khoros.saml module with the following functions:khoros.saml._is_decoded()
khoros.saml._get_api_uri()
Added the khoros.objects.messages.validate_message_payload() function.
Added the khoros.objects.labels module to begin addressing the enhancement
request #48.
Added the global variable ssl_verify_disabled to the khoros.api module
to allow the verification to be performed even in functions that do not leverage the
instantiated core object.
Added the khoros.api._display_ssl_verify_warning() function.
Additions to the supporting modules.
Added the khoros.errors.exceptions.InvalidMessagePayloadError exception class.
Added the khoros.utils.tests.test_messages.test_payload_validation() test function.
Added the khoros.saml and khoros.objects.labels modules to the
Primary Modules page.
Added a TODO section in the docstring for the
khoros.objects.messages.construct_payload() function to indicate the missing
functionality that still remains to be added.
Added the new Managing Node Settings page to the documentation.
Created the GitHub issue template .github/ISSUE_TEMPLATE/documentation_request.md.
Changes to the Khoros Core Object.
Added support for the full_payload parameter in the khoros.core.Khoros.Message.create()
method to implement the enhancement request #46.
Added support for the wrap_json parameter in the khoros.core.Khoros.Tag.structure_tags_for_message()
function to implement the enhancement request #47.
Updated the __init__ module for the core object class to define the ssl_verify_disabled global
variable in the khoros.api module as True when the ssl_verify flag in the core settings are
explicitly set to False. (See line 186)
Changes to the primary modules.
Added support for the full_payload parameter in the khoros.objects.messages.create()
function to implement the enhancement request #46.
Added support for the wrap_json parameter in the khoros.objects.tags.structure_tags_for_message()
function to implement the enhancement request #47.
Updated the __all__ variable in the khoros.objects init module (__init__py.) and
added import statements for the khoros.objects.attachments, khoros.objects.base and
khoros.objects.labels modules.
Updated the khoros.api.should_verify_tls() function to introduce the ssl_verify_disabled global
variable, which allows the check to be performed even when the core object is not passed to the function.
Changes to the supporting modules.
Added support for utilizing the defined_settings parameter in the
khoros.utils.tests.resources.initialize_khoros_object() function.
Updated the GitHub issue template .github/ISSUE_TEMPLATE/bug_report.md to be more intuitive.
Added quotes in pythonpackage.yml to avoid issue referenced in
actions/setup-python#160.
Added Python v3.10 to pythonpackage.yml.
Refactored pythonpackage.yml to perform macOS builds in order to ensure support for Python
v3.10 per request #50.
Fixes in the Khoros Core Object.
Fixed some incorrect information in the docstring for khoros.core.Khoros.User.get_username().
Fixed an issue in the __init__ method of the core object where the ssl_verify parameter
was being mostly disregarded.
Fixed an issue in the __init__ method of the core object where the auto_connect parameter
defined via the defined_settings parameter was being disregarded.
Fixes in the primary modules.
Fixed an issue in the following functions that prevented the SSL verification from being disabled when configured to do so in the helper settings.
khoros.api._api_request_with_payload()
khoros.api._api_request_without_payload()
Refactored the khoros.liql.parse_where_clause() function to be more efficient and Pythonic,
and added missing parenthesis on the exception classes. Docstring syntax errors were also fixed.
Fixes in the supporting modules.
Fixed an issue in the khoros.utils.helper.get_helper_settings() function where the
ssl_verify field was being overridden even if defined elsewhere.
Release Date: 2021-09-24
Fixes to the primary modules.
Updated the khoros.api.put_request_with_retries() function call within the
khoros.roles._assign_role_with_v2() function to explicitly define the content-type
as application/json in order to resolve Issue #45.
Release Date: 2021-09-13
Additions to the Khoros Core Object.
Added the khoros.core.Khoros._connect_with_lithium_token() method to connect using
LithiumSSO Token authentication.
Note
This change was introduced by stevenspasbo via Pull Request #42.
Additions to the primary modules.
Added the khoros.auth.get_sso_key() function.
Added the khoros.auth._get_khoros_login_url() private function.
Note
This change was introduced by
stevenspasbo via
Pull Request #42.
However, the use of the xml.etree.ElementTree module was replaced
with the defusedxml.ElementTree module to proactively mitigate a
known XML attack vulnerability
in the former module.
Additions to the supporting modules.
Added the khoros.errors.exceptions.SsoAuthenticationError exception for use with
LithiumSSO Token authentication.
khoros.utils.tests.test_ssl_verify module with the following test functions:Added example syntax for authenticating using a
LithiumSSO token
in the README.md file.
Note
This change was introduced by stevenspasbo via Pull Request #42.
Changes to the Khoros Core Object.
Support was introduced in the khoros.core.Khoros core object class to support
LithiumSSO Token authentication.
Note
This change was introduced by stevenspasbo via Pull Request #42.
Support was introduced in the khoros.core.Khoros core object class to support
user impersonation with LithiumSSO token authentication.
Note
This change was introduced by stevenspasbo via Pull Request #44.
The following methods within the khoros.core.Khoros core object class
were improved to avoid unnecessary KeyError exceptions:
khoros.core.Khoros._populate_core_settings()
khoros.core.Khoros._populate_auth_settings()
khoros.core.Khoros._populate_construct_settings()
khoros.core.Khoros._parse_helper_settings()
khoros.core.Khoros._validate_base_url()
khoros.core.Khoros._define_url_settings()
khoros.core.Khoros._session_auth_credentials_defined()
khoros.core.Khoros._connect_with_session_key()
General code improvements were made throughout the __init__ method for the
khoros.core.Khoros core object class.
Changes to the primary modules.
The URI in the khoros.auth.get_session_key() function is now generated utilizing the
khoros.auth._get_khoros_login_url() function.
Note
This change was introduced by stevenspasbo via Pull Request #42.
Support was introduced in the khoros.objects.users.ImpersonatedUser object class
to support user impersonation with LithiumSSO token authentication.
Note
This change was introduced by stevenspasbo via Pull Request #44.
Added the defusedxml package to requirements.txt and as a required install package
in setup.py.
Fixes to the Khoros Core Object.
Resolved Issue #41 which involved the
requests.exceptions.InvalidSchema exception being raised when using absolute URLs
with the khoros.core.Khoros.get(), khoros.core.Khoros.post() and
khoros.core.Khoros.put() core methods.
Corrected how the exception error message is defined in the khoros.core.Khoros.connect()
method.
Release Date: 2021-08-05
Changes to the primary modules.
Updated the khoros.objects.archives.aggregate_results_data() function to properly
handle the ARCHIVED status when it is returned.
Release Date: 2021-06-29
Additions to the Khoros Core Object.
Added the khoros.core.Khoros.Archives inner class within the
core khoros.Khoros object with the following methods:
Added the khoros.core.Khoros._import_archives_class() method.
Added the khoros.core.Khoros.Tag inner class within the core
khoros.Khoros object with the following methods:
Added the khoros.core.Khoros._import_tag_class() method.
Additions to the primary modules.
Added the khoros.objects.archives.aggregate_results_data() function.
Additions to the supporting modules.
Added the following functions to utilize with the pytest package
for unit testing:
khoros.utils.tests.resources.instantiate_with_local_helper()
khoros.utils.tests.resources._get_local_helper_file_name()
khoros.utils.tests.test_liql module:Added sections for the khoros.core.Khoros.Archives and
khoros.core.Khoros.Archives inner classes on the
Khoros Core Object page.
Added a section for the khoros.utils.tests.test_settings
module on the Supporting Modules page.
Changes to the Khoros Core Object.
Removed the following parameters from the khoros.core.Khoros.Archives.archive()
and khoros.core.Khoros.Archives.unarchive() methods: full_response,
return_id, return_url, return_api_url, return_http_code, return_status,
return_error_messages and split_errors
Introduced the return_items parameter in the khoros.core.Khoros.query()
function to automatically reduce the JSON response to only the returned items when
desired. (False by default)
Changes to the primary modules.
Some minor docstring adjustments were made in the khoros.objects.archives.archive and khoros.objects.archives.unarchive functions.
Explicitly set the full_response flag in the khoros.objects.archives.archive()
and khoros.objects.archives.unarchive() functions because of unique response format
and subsequently removed the following parameters: full_response, return_id,
return_url, return_api_url, return_http_code, return_status,
return_error_messages and split_errors
Introduced the optional aggregate_results parameter in the khoros.objects.archives.archive
and khoros.objects.archives.unarchive functions.
Introduced the return_items parameter in the khoros.liql.perform_query()
function to automatically reduce the JSON response to only the returned items when
desired. (False by default)
Imported the khoros.objects.tags module within the __init__ file for the
khoros.objects module and added tags to the __all__ special variable.
Changes to the supporting modules.
Renamed the khoros.utils.tests.test_liql_where_parsing module to be
khoros.utils.tests.test_liql to allow other LiQL tests to be performed
within the same module.
Updated the khoros.utils.tests.test_liql.set_package_path() function to
leverage a global variable to ensure the operation is only performed once.
Updated the supporting modules to account for the
renamed khoros.utils.tests.test_liql module.
Adjusted the Sphinx-related package versions in requirements.txt.
Fixes to the Khoros Core Object.
Corrected an issue in the khoros.core.Khoros.Role.get_roles_for_user() docstring
where the wrong raised exception was referenced.
Note
This change was introduced by stevenspasbo via Pull Request #33.
Added some missing exception references in the khoros.core.Khoros.query() docstring.
Fixes to the primary modules.
Fixed an issue with the khoros.objects.archives.structure_archive_payload()
function call in the khoros.objects.archives.archive() function.
Renamed the incorrect JSON field messageID to be messageId instead in the
khoros.objects.archives._format_single_archive_entry() function to prevent the
following error from getting returned:
{
'status': 'error',
'message': 'A possible invalid request has been made.
Make sure you are following the API spec and have used the correct URL,
are included all required parameters and if a request payload is required
you have included one.',
'data': {
'type': 'error_data',
'code': 309,
'developer_message': '',
'more_info': ''
},
'metadata': {}
}
Added a missing section of the docstring for the
khoros.objects.tags.structure_tags_for_message() function.
Release Date: 2021-05-20
Additions to the Khoros Core Object.
Added the khoros.core.Khoros.User.impersonate_user() method.
Added the khoros.core.Khoros.Role.get_role_id() method.
khoros.core.Khoros.V2 class with the following methods:Added and called the khoros.core.Khoros._import_v2_class() protected class.
Additions to the primary modules.
Added the khoros.objects.users.ImpersonatedUser object class for performing API calls
as other users.
Added the khoros.objects.users.impersonate_user() function to assist in instantiating
the khoros.objects.users.ImpersonatedUser object.
khoros.objects.roles() module:khoros.objects.roles._assign_role_with_v1()
khoros.objects.roles._assign_role_with_v2()
khoros.objects.roles._validate_node_type()
khoros.objects.roles._query_for_users()
Added the khoros.api._add_json_query_to_uri() function.
Additions to the supporting modules.
Added the khoros.errors.exceptions.FeatureNotConfiguredError exception.
Added the read() and get_version() functions to setup.py
to address Issue #28.
Note
This change was introduced by truthbyron via Pull Request #31.
Changes to the Khoros Core Object.
Updated the methods below to introduce the proxy_user_object parameter to allow API requests
to be performed on behalf of other users.
Changed the default value of the return_json parameter to True in the
khoros.core.Khoros.Settings.define_node_setting() function.
Updated the khoros.core.Khoros.User.create() method to return the API
response and introduced the ignore_exceptions parameter.
Changes to the primary modules.
Updated the functions below to introduce the proxy_user_object parameter to allow API requests
to be performed on behalf of other users.
Introduced the user_and_type parameter in the khoros.api.get_v1_user_path() function
that can be passed instead of a parameter for a specific type.
Changed the default value of the return_json parameter to True in the
khoros.objects.settings.define_node_setting() function.
Added proper support for group hubs in the
khoros.objects.settings.define_node_setting() and
khoros.objects.settings._get_v1_node_setting() functions.
Removed node type validation from the khoros.objects.settings.define_node_setting() function.
Added node type validation in the khoros.objects.settings._get_v2_node_setting() function.
Updated the khoros.objects.users.create() function to return the API response and
introduced the ignore_exceptions parameter.
Updated the khoros.objects.users.delete() function to raise the new
khoros.errors.exceptions.FeatureNotConfiguredError exception when appropriate.
Added group hub support in the khoros.api.get_v1_node_collection() function.
Changes to the supporting modules.
Introduced the ability for the
khoros.errors.exceptions.MissingRequiredDataErrorexception to accept theparamkeyword argument and display a more specific message.Updated the
khoros.utils.environmentmodule to no longer import thePyYAMLpackage directly and instead to leverage theimportlibmodule in thekhoros.utils.environment._import_custom_names_file()function as necessary.
Changes to the documentation.
khoros.api._confirm_field_supplied()
Updated the example in the header block for the khoros.objects.users module.
Updated the header block in the setup.py script to have more information.
Moved the PyYAML, urllib3, requests and setuptools packages from the
requirements.txt file to the setup.py file within the install_requires list
to address Issue #28.
Note
This change was introduced by truthbyron via Pull Request #31.
Fixes to the primary modules.
Fixed issues with the primary functions in the khoros.api module that was resulting
in raised exceptions if JSON responses were requested in v1 API calls without explicitly
including the restapi.response_format=json query string.
Fixed issues in the khoros.objects.users.structure_payload() and
khoros.objects.users.process_user_settings() functions that were resulting
in a KeyError exception potentially getting raised.
Added the missing type key to the payload dictionary in the
khoros.objects.users.structure_payload() function that was preventing users from
getting created successfully.
Fixed an issue in the khoros.objects.subscriptions._construct_category_payload()
where the payload was getting double-wrapped with the data dictionary key.
Refactored the khoros.objects.roles.get_users_with_role() function to leverage a
while loop instead of recursion in order to avoid raising a RecursionError
exception with larger queries.
Wrapped the cursor string in the khoros.liql.structure_cursor_clause() function
in single quotes to fix an Invalid query syntax error that was raising the
khoros.errors.exceptions.LiQLParseError exception.
Release Date: 2021-03-26
Additions to the Khoros Core Object.
Added the khoros.core.Khoros.get_session_key() method.
Added the khoros.core.Khoros.Role.get_users_with_role() method.
khoros.core.Khoros.Subscription inner class with the following methods:Added the khoros.core.Khoros._import_subscription_class() method and leveraged it to
allow subscription-related methods to be called with the khoros.subscriptions namespace.
Additions to the primary modules.
Added the khoros.api.get_v1_user_path() and khoros.api.get_v1_node_collection()
functions to facilitate crafting API v1 endpoint URIs.
khoros.objects.subscriptions module with the following functions:khoros.objects.subscriptions._construct_category_payload()
khoros.objects.subscriptions._construct_target_subscription()
Updated the __init__.py file for the khoros.objects module to import the new
khoros.objects.subscriptions module and add it to the __all__ variable.
Added the khoros.auth._get_session_key_payload() function.
Added the khoros.auth._get_session_key_header() function.
khoros.objects.roles module.Added the khoros.errors.exceptions.structure_cursor_clause() function.
Additions to the supporting modules.
Added the khoros.utils.core_utils.convert_dict_list_to_simple_list() function.
Added the khoros.utils.core_utils.is_iterable() function.
Additions to the documentation.
Added the .github/workflows/bandit.yml GitHub Action workflow configuration file
to leverage the
Python security check using Bandit
action to perform security audits with each push event.
Added badges in the README page.
Added comments in multiple scripts within the library to address how the bandit GitHub Action will identify users.
Changes to the Khoros Core Object.
Updated the khoros.core.Khoros.Role.get_roles_for_user() method to allow SELECT fields
to be explicitly defined.
Removed the unnecessary pass statement in the khoros.core.Khoros.close() method.
Removed the unnecessary return statements in the khoros.core.Khoros.signout() and
khoros.core.Khoros.User.create() methods.
Replaced type() with isinstance() when performing typechecks throughout the
khoros.core module.
Changes to the primary modules.
The khoros.auth.get_session_key() function has been updated to allow a secondary user to be
authenticated by passing either a username and password or by passing only a username when calling the
function as a previously authenticated user with Administrator privileges.
Added the community, grouphub and global keys to the ROLE_TYPES dictionary constant in
the khoros.objects.roles module.
Updated the khoros.objects.roles.get_roles_for_user() function to allow SELECT fields to be
explicitly defined.
Renamed the khoros.liql._parse_select_fields() function to be
khoros.liql.parse_select_fields() instead. (i.e. private to public function)
Refactored the khoros.liql.parse_select_fields() function to leverage the isinstance()
built-in function.
Removed the mandatory dependency on the requests_toolbelt package by leveraging the importlib
package to attempt to import it locally as needed within the khoros.api.encode_multipart_data() function.
Removed an unnecessary else statement in the khoros.api.define_headers() function after the
khoros.errors.exceptions.MissingAuthDataError exception is raised.
Replaced type() with isinstance() when performing the typecheck in the
khoros.api.perform_v1_search() function.
pass statement in the following functions:khoros.api._api_request_with_payload()
khoros.api._api_request_without_payload()
Changes to the supporting modules.
Added the khoros.utils.log_utils.initialize_logging() function call to initialize logging within
the khoros.utils.core_utils module.
Changed the default value for the shell parameter to be False in the
khoros.utils.core_utils.run_cmd() function to improve overall
security
of the library.
Added the optional delimiter parameter to the khoros.utils.core_utils.convert_string_to_tuple()
function and added functionality to convert delimited strings.
Removed the stale branch 3.0.0 from the .github/workflows/codeql-analysis.yml file.
Removed requests_toolbelt from requirements.txt.
Fixes to the Khoros Core Object.
Updated the khoros.core.Khoros.post() function so that the query_url
no longer gets prefixed with a slash (/) if the relative_url parameter is
set to False.
Fixes in the primary modules.
Fixed an issue with the khoros.api.payload_request_with_retries() function
where non-payload API calls (including those with query parameters defined in the URI)
were incorrectly raising a khoros.errors.exceptions.PayloadMismatchError exception.
Release Date: 2021-03-06
Additions to the Khoros Core Object.
Added the khoros.core.Khoros.get_platform_version() method.
Additions to the primary modules.
Added the khoros.api.should_verify_tls() function to determine if SSL/TLS certificates should
be verified when making REST API calls.
Added a warning to the khoros.api.should_verify_tls() to inform of the suppressed warnings.
Changes to the Khoros Core Object.
Updated the __init__ method for the khoros.core.Khoros object class to include the ssl_verify
parameter and to establish a key-value pair for it in the core_settings dictionary.
Changes to the primary modules.
Removed an unnecessary pass statement from the khoros.api.get_request_with_retries() function
and initially defined the response variable with a NoneType value to prevent a linting error from
being reported.
Introduced support for the ssl_verify core setting in the khoros.core.Khoros object within
the following functions:
khoros.api._api_request_with_payload()
khoros.api._api_request_without_payload()
Renamed the function khoros.liql.__parse_select_fields() to be khoros.liql.__parse_select_fields().
Renamed the function khoros.liql.__wrap_string_vales() to be khoros.liql._wrap_string_values().
Renamed the function khoros.liql.__convert_where_dicts_to_lists() to be
khoros.liql._convert_where_dicts_to_lists().
Renamed the function khoros.liql.__parse_where_clause() to be khoros.liql.parse_where_clause()
and converted it from a private to a public function.
Changes to the supporting modules.
Added support for the ssl_verify field in the khoros.utils.helper module.
Refactored the khoros.utils.version.get_latest_stable() function to leverage the
Python standard library
instead of the requests library which helps address
issue #28.
Release Date: 2021-01-25
Fixes in the primary modules.
Added error handling in the khoros.objects.settings._get_v2_node_setting() function to prevent
an AttributeError exception from being raised.
Release Date: 2021-01-08
Additions to the Khoros Core Object.
Added the optional skip_env_variables argument to the __init__ method of the
khoros.core.Khoros class to explicitly ignore valid environment variables
when instantiating the core object.
Added the optional empty argument to the __init__ method of the
khoros.core.Khoros class to instantiate an empty core object with default values.
Added the method khoros.core.Khoros._populate_empty_object() to populates necessary
fields to allow an empty object to be instantiated successfully.
Logging (via the khoros.utils.log_utils module) was introduced in methods throughout
the khoros.core module.
Changes to the Khoros Core Object.
Introduced the return_json parameter in the khoros.core.Khoros.Settings.define_node_setting()
method and the khoros.objects.settings.define_node_setting() function to optionally return the
Community API response in JSON format. (This option prevents the
khoros.errors.exceptions.POSTRequestError exception from being raised after an unsuccessful API call.)
Introduced the convert_json parameter in the khoros.core.Khoros.Settings.get_node_setting() method
and the khoros.objects.settings.get_node_setting() function to optionally convert JSON strings into
Python dictionaries.
Changes to the primary modules.
Introduced the return_json parameter in the khoros.objects.settings.define_node_setting() to
optionally return the Community API response in JSON format. (This option prevents the
khoros.errors.exceptions.POSTRequestError exception from being raised after an unsuccessful API call.)
Changes to the documentation.
Merged the release notes for version 3.3.0.post0 into those for the subsequent
stable version 3.3.1.
Added an example function call in the header block of the khoros.utils.log_utils module.
Made further improvements to the documentation styling in the custom.css file.
Fixes in the Khoros Core Object.
Updated the __init__ method for the khoros.core.Khoros class to only skip method arguments
when they explicitly have a None value and are not just implicitly False.
Fixes in the primary modules.
The error handling has been improved in the khoros.liql.get_returned_items() function to avoid
IndexError exceptions from being raised when no items were found in the LiQL response.
Release Date: 2021-01-06
Additions to the documentation.
Added the Settings Subclass (khoros.core.Khoros.Settings) section to the Khoros Core Object page.
Added the Settings Module (khoros.objects.settings) section to the Primary Modules page.
Updated the CSS styling in custom.css to improve readability of methods and functions.
Changes to the documentation.
Alphabetized the sections on the Khoros Core Object page.
Removed the introductory sentence for each of the modules on the Primary Modules page as they had become redundant with the same information already present in the docstrings.
Moved the Studio Subclass (khoros.core.Khoros.Studio) section out of the Core Object Subclasses (khoros.core.Khoros) section and into its own, similar to where it is located on the Primary Modules page.
Fixes in the primary modules.
Fixed an issue with the khoros.api.make_v1_request() function call within
the khoros.objects.settings._get_v2_node_setting() that was resulting in
IndexError exceptions.
Fixed an issue in khoros.objects.settings._get_v2_node_setting() resulting in
an IndexError exception if the setting field is not found, and made changes
to return a None value in that situation.
Fixes in the documentation.
A minor fix was made to the docstring in the khoros.objects.settings.define_node_setting() function
to correct a Sphinx parsing issue. The function itself was not changed.
Release Date: 2020-12-26
Additions to the Khoros Core Object.
Defined the version variable within the khoros.core.Khoros core object to make it
easy to determine the current version of the package after having instantiated said object.
Added Khoros to the __all__ dictionary in the primary __init__.py file.
Changes to the Khoros Core Object.
Renamed the _settings dictionary (private) to be core_settings (public) in the core object
to avoid warning messages being displayed in PyCharm and other IDEs as reported in Issue
#26.
Renamed the settings argument in the __init__ method for the khoros.core.Khoros
object to be defined_settings to avoid conflicting with the khoros.core.Khoros.Settings()
method.
Made some minor PEP8 compliance-related adjustments in the khoros.core module.
Changes to the primary modules.
_settings to core_settings.Changes to the supporting modules.
Updated the khoros.errors.translations.translation_enabled() function to change _settings
to core_settings.
Release Date: 2020-12-23
Created the dev-requirements.txt to indicate which packages may be required for contributors,
whereas the requirements.txt file now only contains the absolute necessities to use the package.
Additions to the Khoros Core Object.
khoros.core.Khoros.Settings class with the following methods:Added the khoros.core.Khoros._import_settings_class() method.
Additions to the primary modules.
khoros.objects.settings module with the following functions:khoros.objects.settings._get_v1_node_setting()
khoros.objects.settings._get_v2_node_setting()
khoros.objects.settings._validate_node_type()
Added the khoros.objects.settings module to the __init__.py file for the
khoros.objects module.
Added the new khoros.liql.get_returned_items() function.
Added the new khoros.api.encode_payload_values() function.
Additions to the supporting modules.
Updated setup.py to enable support for Python v3.8.x and v3.9.x now that compatibility testing
has been performed and no issues have been identified.
Updated the Development Status classifier in setup.py to be 5 - Production/Stable.
Added some additional Topic classifiers in setup.py.
Significantly cleaned up the requirements.txt file to only include the absolute necessities.
Updated requirements.txt to replace == with >= to be less strict on dependency versions
as long as they meet a minimum version requirement.
Made a minor adjustment to the README.md file relating to documentation.
Updated the docs/conf.py file to require Sphinx version 3.4.0.
Re-added the Sphinx-related dependencies to requirements.txt to allow ReadTheDocs builds
to be successful.
Changes to the Khoros Core Object.
Changes to the primary modules.
Changes to the supporting modules.
Moved the exceptions within the Base Object Exceptions section of khoros.errors.exceptions
into a new section entitled Node Exceptions.
status_code and message as arguments:Updated the khoros.errors.exceptions.SessionAuthenticationError exception to optionally accept
message as an argument.
Updated the khoros.utils.core_utils.encode_query_string() function to support
API v1 calls using JSON payloads.
Updated the function khoros.utils.core_utils.convert_single_value_to_tuple() to be
more PEP8 compliant.
Fixes in the Khoros Core Object.
Fixed an argument mismatch issue in the khoros.core.Khoros.parse_v2_response() and
khoros.core.Khoros.Message.parse_v2_response() (deprecated) methods.
Updated the methods below to pass the query parameters in the message body to avoid exceeding
the URI limit and receiving responses with 413 or 414 status codes.
Fixes in the primary modules.
Added a missing docstring for the khoros.api.payload_request_with_retries() function.
Updated the function khoros.api.make_v1_request() to pass the query parameters in the message
body to avoid exceeding the URI limit and receiving responses with 413 or 414 status codes.
Fixed an issue where v1 GET requests were not appending the restapi.response_format=json query
string when a JSON response has been requested.
Fixes in the supporting modules.
Updated the default message in the khoros.errors.exceptions.TooManyResultsError exception to be
appropriate as it was inadvertently using the same message leveraged in the
khoros.errors.exceptions.OperatorMismatchError exception.
Release Date: 2020-11-02
Fixes to the Khoros Core Object.
Additions to the primary modules.
Fixed issues in the function khoros.api.post_request_with_retries() to address the bug
#20.
Release Date: 2020-10-28
Additions to the Khoros Core Object.
Added the khoros.get() method to perform simple GET requests that leverage the core
object authorization headers where necessary.
Added the khoros.post() method to perform simple POST requests that leverage the core
object authorization headers where necessary.
Added the khoros.put() method to perform simple PUT requests that leverage the core
object authorization headers where necessary.
Additions to the primary modules.
Added the khoros.api.payload_request_with_retries() function to act as a “master function” for
khoros.api.post_request_with_retries() and khoros.api.put_request_with_retries().
Added the khoros.api._is_plaintext_payload() function.
Additions to the documentation.
Added missing sections to the Core Object Methods page.
Changes to the primary modules.
text/plain payloads and introduced the content_type parameter in the following functions:khoros.api._api_request_with_payload()
Updated the khoros.api.post_request_with_retries() and
khoros.api.put_request_with_retries() functions to leverage the new
khoros.api.payload_request_with_retries() function.
Release Date: 2020-10-19
Additions to the Khoros Core Object.
khoros.core.Khoros.V1 inner class with the following methods:Added the khoros.core.Khoros._import_v1_class() and accompanying method call.
Additions to the primary modules.
Added the khoros.api.get_platform_version()
Added the khoros.api._normalize_base_url()
Additions to the supporting modules.
khoros.utils.log_utils module with the following functions, classes and methods:khoros.utils.log_utils._apply_defaults()
khoros.utils.log_utils._get_log_levels_from_dict()
khoros.utils.log_utils._set_logging_level()
khoros.utils.log_utils._add_handlers()
khoros.utils.log_utils._add_file_handler()
khoros.utils.log_utils._add_stream_handler()
khoros.utils.log_utils._add_split_stream_handlers()
khoros.utils.log_utils._add_syslog_handler()
Added a logging section to the examples/helper.yml file to indicate how logging can be configured.
Added the khoros.utils.core_utils.encode_base64() function.
Added the khoros.utils.version.log_current_version() function.
Added the changelog-1.1.0-thru-2.5.2.rst file and embedded it into this Change Log page to have less content per RST document.
Added Return to Top links at the bottom of each version section.
Changes to the Khoros Core Object.
Replaced the basic logging initialization with a call to the
khoros.utils.log_utils.initialize_logging() function.
Changes to the primary modules.
Updated the khoros.api.make_v1_request() function to make the query_params
argument optional.
Updated the khoros.api.make_v1_request() function to allow full query strings to be
passed within the endpoint argument.
Changes to the supporting modules.
khoros.utils.version module:Initialized a logger at the beginning of the module.
Added a debug log entry to the khoros.utils.versions.get_full_version() which reports
the current version of the library.
Reduced the khoros.utils.version.latest_version() function to a single return statement.
Added error handling and logging in the khoros.utils.version.get_latest_stable() function
to avoid an exception if PyPI cannot be queried successfully.
Updated the khoros.utils.version.warn_when_not_latest() function to use logging for the
warning rather than the warnings module.
Updated the Sphinx configuration file (conf.py) to suppress the duplicate label warnings.
Added version 3.0.x to the SECURITY.md file under Supported.
Changed the pyYAML version in requirements.txt to be
5.3.1 rather than 5.3 in order to avoid the CI build failure in GitHub Actions.
Deprecations in the Khoros Core Object.
Deprecated the khoros.core.Khoros.perform_v1_search() method as it has been replaced
by the khoros.core.Khoros.V1.search() method.
Release Date: 2020-07-06
Additions to the Khoros Core Object.
Added the khoros.core.Khoros.Message.update() method.
Added the translate_errors default setting to the core object.
Additions to the primary modules.
khoros.objects.messages module:khoros.objects.messages._verify_message_id()
khoros.objects.messages._add_moderation_status_to_payload()
khoros.objects.tags module with the following functions:Added the khoros.objects.attachments._structure_attachments_to_add() function.
Introduced the ability for error messages to be translated where possible to be more relevant
within the khoros.api.parse_v2_response(), khoros.api.deliver_v2_response()
and khoros.api._get_v2_return_values() functions, and added the optional
khoros_object or _khoros_object argument to facilitate this.
Additions to the supporting modules.
Added the khoros.errors.handlers.verify_core_object_present() function.
khoros.errors.translations module with the following functions:Added the khoros.errors.translations module to the __all__ special variable
and imported it by default within the khoros.errors (__init__.py) module.
khoros.utils.tests.test_tags module with the following functions:khoros.utils.tests.test_tags.test_message_structure_one_tag()
khoros.utils.tests.test_tags.test_message_structure_two_tags()
khoros.utils.tests.test_tags.test_message_structure_one_string_tag_ignore()
khoros.utils.tests.test_tags.test_message_structure_two_string_tags_ignore()
khoros.utils.tests.test_tags.test_message_structure_str_int()
khoros.utils.tests.test_tags.test_message_structure_str_int_ignore()
khoros.utils.tests.test_messages module with the following functions:khoros.utils.tests.test_messages.test_construct_only_subject()
khoros.utils.tests.test_messages.test_construct_with_node_id()
khoros.utils.tests.test_messages.test_construct_with_node_url()
khoros.utils.tests.test_messages.test_construct_with_one_str_tag()
khoros.utils.tests.test_messages.test_construct_with_one_int_tag()
khoros.utils.tests.test_messages.test_construct_with_str_iter_int_tags()
khoros.utils.tests.test_messages.test_construct_with_str_iter_int_tags_ignore()
khoros.utils.tests.test_messages.test_construct_with_tag_iterables()
Added the khoros.utils.core_utils.remove_tld() function.
Added the khoros.utils.tests.test_core_utils.test_remove_tld() function.
Added the khoros.utils.core_utils.merge_and_dedup() function.
Added the khoros.utils.tests.test_core_utils.test_merge_and_dedup() function.
Additions to the documentation.
Added the khoros.objects.tags module to the Primary Modules page.
Added the khoros.errors.translations module to the Supporting Modules page.
Added the khoros.utils.tests.test_tags module to the Supporting Modules page.
Added the khoros.utils.tests.test_messages module to the Supporting Modules page.
Added a reference to the KHOROS_TRANSLATE_ERRORS environment variable and added a new
Roadmap section to both the Introduction page and the
README.md file.
Created the currently in-progress Working with Messages page, per Enhancement #1.
Added the file v2_message_attachment_update_payload.json to the
examples/example_output directory.
Additions to the Khoros Core Object.
Introduced the ignore_non_string_tags, return_status, return_error_messages and
split_errors arguments in the khoros.core.Khoros.Message.create() method, and
changed the default value of the full_response, return_id, return_url,
return_api_url and return_http_code arguments to None rather than False.
Added support for the translate_errors Helper setting and any other future top-level
setting within the khoros.core.Khoros._parse_helper_settings() method.
Changes to the primary modules.
khoros.objects.messages.update() function.khoros.objects.messages.structure_payload()
Updated the if statement in khoros.objects.messages._verify_required_fields() to leverage
the isinstance() function.
Added the return_status, return_error_messages and split_errors arguments
to the khoros.objects.messages.create() function, and changed the default value
of the full_response, return_id, return_url, return_api_url`` and
return_http_code arguments to None rather than False.
Changes to the supporting modules.
Updated the khoros.utils.helper.get_helper_settings() function to capture the
translate_errors value when defined in the configuration file.
Refactored the khoros.utils.helper._get_construct_info() function to leverage the
khoros.utils.helper._collect_values() function.
Changes to the documentation.
Updated the Supported Versions chart in the Security Policy.
Made a very minor formatting change on the Introduction page.
Added the Working with Messages page to the master Table of Contents.
Added a link to the PyPI package page in the first paragraph of the index page.
Changed the intersphinx inventory URL for the built-in Python 3 modules from
https://docs.python.org/ to https://docs.python.org/3/ in the
docs/conf.py file.
Updated the examples/helper.yml file to include the translate_errors setting.
Added the KHOROS_TRANSLATE_ERRORS environment variable to the
examples/custom_env_variables.yml and examples/custom_env_variables.json files.
Release Date: 2020-06-25
Additions to the documentation.
Added the LGTM Grade to the README.md file.
examples/example_output/ directory.v2_message_attachment_create_payload.json
v2_message_attachment_create_success.json
Changes to the documentation.
Added the Khoros Core Object page amd moved the documentation for the khoros (__init__.py)
module and the khoros.core module to the new page from the Primary Modules page.
Added the new Khoros Core Object page to the Python SDK for Khoros Communities page.
Added navigational sentences at the bottom of the Primary Modules, Supporting Modules and Khoros Core Object pages.
Fixes in the primary modules.
Fixed the “Exception objects instantiated but not raised” issue reported in GitHub. (Issue #2)
Release Date: 2020-06-18
Added the v2_error_not_authorized.json file to the examples/example_output directory.
Changes to the primary modules.
Added the default_content_type argument to the khoros.api.define_headers() function.
Fixes to the primary modules.
Updated the khoros.api._normalize_headers() function to ensure that
authentication/authorization tokens would not be altered.
Release Date: 2020-06-18
Additions to the primary modules.
Added the khoros.api._normalize_headers() function to normalize the HTTP headers.
Additions to the supporting modules.
khoros.utils.tests.resources module with the following functions:Added the khoros.utils.tests.test_http_headers module for unit testing.
Additions to the documentation.
Added a section to the Primary Modules page for the khoros.objects.archives module.
Changes to the primary modules.
Included a function call for khoros.api._normalize_headers() in khoros.api.define_headers().
Changes to the supporting modules.
khoros.utils.tests.resources module:Release Date: 2020-06-17
Additions to the supporting modules.
Added the khoros.utils.tests.test_grouphub_creation module for unit testing with pytest.
Changes to the primary modules.
Added the debug_mode Boolean argument (False by default) to the __init__ method
for the khoros.core.Khoros class which populates within the _settings protected
dictionary.
Added dist.old/ to the .gitignore file in the root directory of the repository.
Fixes to the primary modules.
Fixed how the payload in khoros.structures.grouphubs.structure_payload() is initially
defined to avoid a TypeError exception from being raised during the
khoros.structures.grouphubs._structure_simple_string_fields() function call.
Release Date: 2020-06-17
Fixes to the primary modules.
Fixed some bad logic in the khoros.structures.grouphubs.structure_payload() that was raising
false positive exceptions.
Fixes to the documentation.
Changed the data type for membership_type from dict to str in the docstring for the
khoros.structures.grouphubs.create(), khoros.structures.grouphubs.structure_payload()
and khoros.structures.grouphubs._structure_membership_type() functions.
Release Date: 2020-06-17
Fixes to the primary modules.
Removed some print debugging found in the khoros.api.make_v1_request() function.
Fixed a syntax error with raising the khoros.errors.exceptions.CurrentlyUnsupportedError exception
class within the khoros.api.make_v1_request() function.
Added several API v1 output examples in the examples/example_output directory.
Release Date: 2020-06-12
Additions to the primary modules.
khoros.objects.archives module with the following functions:khoros.objects.archives._valid_entries_type()
khoros.objects.archives._convert_entries_to_dict()
khoros.objects.archives._format_single_archive_entry()
Added the khoros.structures.base.structure_exists() function.
Added the khoros.structures.boards.board_exists() function.
Added the khoros.structures.categories.category_exists() function.
Added the khoros.structures.grouphubs.grouphub_exists() function.
Added the khoros.structures.nodes.node_exists() function.
Changes to the primary modules.
Added the khoros.objects.archives module to the __all__ special variable in the
khoros.objects __init__ module and configured it to be imported by default.
Added several additional keys and values to the structure_types_to_tables dictionary in the
khoros.structures.base.Mapping class.
Release Date: 2020-05-31
Additions to the primary modules.
khoros.core.Khoros.GroupHub inner class with the following methods:Added the khoros.core.Khoros._import_grouphub_class() and its accompanying method call.
Added the khoros.structures.grouphubs module to the __all__ special variable in the
khoros.structures __init__ module and configured the module to import by default.
Added the khoros.structures.boards.get_board_id() function.
Added the khoros.core.Khoros.Board.structure_payload() and
khoros.core.Khoros.Board.get_board_id() methods.
Added the khoros.api.format_avatar_payload() function.
Added the khoros.api.combine_json_and_avatar_payload() function.
khoros.structures.grouphubs module with the following functions:khoros.structures.grouphubs._create_group_hub_with_avatar()
khoros.structures.grouphubs._create_group_hub_without_avatar()
khoros.structures.grouphubs._structure_simple_string_fields()
khoros.structures.grouphubs._structure_membership_type()
khoros.structures.grouphubs._structure_discussion_styles()
khoros.structures.grouphubs._structure_parent_category()
khoros.structures.grouphubs.refresh_enabled_discussion_styles()
khoros.structures.grouphubs._remove_disabled_discussion_styles()
khoros.structures.grouphubs._verify_group_hub_id()
Added the khoros.structures.categories.get_total_count() function to replace the deprecated
khoros.structures.categories.get_total_category_count() function.
Added the khoros.core.Khoros.Category.get_total_count() method to replace the deprecated
khoros.core.Khoros.Category.get_total_category_count() method.
Additions to the supporting modules.
khoros.utils.tests.test_board_creation unit test module with the following functions:khoros.utils.tests.test_board_creation.set_package_path()
khoros.utils.tests.test_board_creation.import_boards_module()
khoros.utils.tests.test_board_creation.import_exceptions_module()
khoros.utils.tests.test_board_creation.initialize_khoros_object()
khoros.utils.tests.test_board_creation.get_required_fields()
khoros.utils.tests.test_board_creation.get_dict_for_required_fields()
khoros.utils.tests.test_board_creation.test_required_fields()
khoros.utils.tests.test_board_creation.test_valid_board_types()
khoros.utils.tests.test_board_creation.test_invalid_board_type()
Added the khoros.errors.exceptions.InvalidPayloadValueError exception class.
Added the khoros.utils.helper._get_discussion_styles() function.
Additions to the documentation.
Added the khoros.structures.grouphubs module to the Primary Modules page.
Added the khoros.utils.tests.test_board_creation module to the
Supporting Modules page.
Added a docstring for khoros.utils.core_utils._is_zero_length().
Added the discussion_styles field to the example helper file on the Introduction page.
Added the helper.yml file in the examples/ directory of the repository using the syntax found on
the Introduction page of the documentation.
Added the discussion_styles list to the examples/helper.yml file.
Changes to the primary modules.
Renamed the khoros.structures.base._get_node_id() function to be
khoros.structures.base.get_structure_id() and converted it from a private to public function.
Added the gh-p and ct-p entries in the node_url_identifiers list within the
khoros.structures.base.Mapping class.
Refactored the khoros.structures.categories.get_category_id() function to leverage the
khoros.structures.base.get_structure_id() function.
Changes to the supporting modules.
Updated the khoros.utils.helper.get_helper_settings() function to capture the enabled discussion
styles via the khoros.utils.helper._get_discussion_styles() function.
Updated the khoros.core.Khoros class to define the enabled discussion styles even if a helper
configuration file is not supplied.
Changes to the documentation.
Added a caution message to the docstring for khoros.structures.boards.create().
Deprecated the khoros.structures.categories.get_total_category_count() function as it has been
replaced with the khoros.structures.categories.get_total_count() function.
Deprecated the khoros.core.Khoros.Category.get_total_category_count() method as it has been
replaced with the khoros.core.Khoros.Category.get_total_count() method.
Release Date: 2020-05-25
Additions to the primary modules.
Added the private function khoros.api._get_v2_return_values() to address possible
KeyError exceptions in the khoros.api.deliver_v2_results() function.
Additions to the documentation.
Added the Working with Boards document as a tutorial for managing boards.
Changes to the primary modules.
Removed the assert function call from the khoros.core.Khoros._populate_construct_settings() method.
Updated the khoros.api.parse_v2_response() function so that the http_code
value returns as an integer rather than a string.
Replaced the return_developer_message argument with return_error_messages in the
khoros.api.parse_v2_response(), khoros.api.deliver_v2_results(),
khoros.structures.boards.create() and khoros.core.Khoros.Board.create() functions.
Updated the khoros.api.parse_v2_response() function to merge the message and
developer_message response values into the error_msg field in the dictionary, and included
the split_errors argument which determines if they should be split within a tuple or consolidated
into a single string separated by a hyphen. (e.g. Invalid query syntax - An invalid value was passed...)
Included the split_errors argument in the khoros.api.deliver_v2_results(),
khoros.structures.boards.create() and khoros.core.Khoros.Board.create() functions.
Changes to the supporting modules.
Renamed the khoros.utils.core_utils.__is_zero_length() function to be
khoros.utils.core_utils._is_zero_length() instead.
Renamed the khoros.utils.core_utils.__structure_query_string() function to be
khoros.utils.core_utils._structure_query_string() instead.
Changes to the documentation.
Added the Working with Boards page to the Python SDK for Khoros Communities home page.
Release Date: 2020-05-20
Additions to the primary modules.
Added the khoros.studio module with the khoros.studio.base sub-module.
khoros.core.Khoros.Studio subclass with the following functions:Added the khoros.core.Khoros._import_studio_class() function and associated function call.
Additions to the supporting modules.
Added the khoros.utils.core_utils.run_cmd() function.
Added the khoros.utils.core_utils.decode_binary() function.
Additions to the documentation.
Added the khoros.core.Khoros.Board subclass to the primary modules page.
Added the khoros.studio module to the primary modules page.
Changes to the documentation.
Swapped the Objects Module (khoros.objects) section with the Structures Module (khoros.structures) section on the primary modules page.
Release Date: 2020-05-18
Additions to the primary modules.
khoros.api module:khoros.api._api_request_without_payload()
khoros.api._report_failed_attempt()
khoros.api._raise_exception_for_repeated_timeouts()
khoros.api._attempt_json_conversion()
khoros.objects.users module:khoros.structures.boards module with the following functions:khoros.structures.boards._structure_id_and_title()
khoros.structures.boards._structure_discussion_style()
khoros.structures.boards._structure_parent_category()
khoros.structures.boards._structure_simple_fields()
khoros.structures.boards._structure_label_settings()
khoros.structures.boards._structure_blog_settings()
khoros.structures.boards._structure_contest_settings()
khoros.structures.boards._warn_about_ignored_settings()
Added the khoros.structures.categories.create() function.
Added khoros.core.Khoros.Category.create() method.
Added the khoros.core.Khoros.User.get_ids_from_login_list() method.
Added the khoros.core.Khoros.Board class with the
khoros.core.Khoros.Board.create() method.
Added the khoros.core.Khoros._import_board_class() method and accompanying method call.
Additions to the supporting modules.
Added the khoros.utils.core_utils.convert_dict_id_values_to_strings() function.
Added the khoros.utils.core_utils.extract_key_values_from_dict_list() function.
Added the khoros.utils.core_utils.convert_list_values() function.
khoros.utils.tests.test_core_utils module with the following functions:khoros.utils.tests.test_core_utils.test_query_string_encoding()
khoros.utils.tests.test_core_utils._check_type_and_items()
Additions to the documentation.
Added the khoros.structures.boards module to the primary modules page.
Added the khoros.utils.tests.test_core_utils module to the
supporting modules page.
Added a docstring to the khoros.api._get_json_query_string() function.
Changes to the primary modules.
Updated the khoros.api.post_request_with_retries(), khoros.api.put_request_with_retries() and
khoros.api._api_request_with_payload() functions to perform the API requests even if no JSON payload is
provided, and to leverage the new khoros.api._report_failed_attempt() and
khoros.api._raise_exception_for_repeated_timeouts() functions.
Updated the khoros.api.get_request_with_retries() function to leverage the new
khoros.api._report_failed_attempt() and khoros.api._raise_exception_for_repeated_timeouts()
functions.
Updated the khoros.api.get_request_with_retries(), khoros.api.post_request_with_retries() and
khoros.api.put_request_with_retries() functions to utilize the
khoros.api._attempt_json_conversion() function.
Updated the khoros.objects.messages.create() to leverage the khoros.api.parse_v2_response()
function.
Added the khoros.structures.boards module to the __all__ special variable in the
khoros.structures (i.e. __init__.py) module and imported it by default.
Deprecations in the primary modules.
Deprecated the khoros.core.Khoros.Message.parse_v2_response() function as it was replaced with the
khoros.core.Khoros.parse_v2_response() function which is a bit more generalized.
Deprecated the khoros.objects.messages.parse_v2_response() function as it was replaced with the
khoros.api.parse_v2_response() function which is a bit more generalized.
Release Date: 2020-05-11
Additions to the primary modules.
khoros.objects.messages module:khoros.objects.messages._get_required_user_mention_data()
khoros.objects.roles module with the following functions:Added the khoros.objects.messages.MESSAGE_SEO_URLS dictionary constant.
khoros.core.Khoros class:Added the from . import roles statement to the khoros.objects module and added roles
to the __all__ special variable.
khoros.core.Khoros.Role inner class with the following methods:Added the method khoros.core.Khoros._import_role_class() to the core object and
added the method call in the initialization method.
Additions to the supporting modules.
Added the khoros.utils.tests.test_mentions unit test module.
Additions to the documentation.
Added khoros.utils.tests.test_mentions to the Support Modules page.
Added khoros.objects.roles to the primary modules page.
Added khoros.core.Khoros.Role to the primary modules page.
Added a code coverage badge to the README.md file.
Added a code coverage section to the pythonpackage.yml file.
Added the codecov.yml file for coverage reports.
Changed the PyPI Development Status in setup.py to be Development Status :: 4 - Beta.
Fixes to the primary modules.
Fixed how and when values are cast to integers in khoros.objects.users._get_user_identifier().
Added missing method calls for the khoros.core.Khoros._import_message_class() and
khoros.core.Khoros._import_album_class() methods in the initialization method for the
khoros.core.Khoros class.
Release Date: 2020-05-08
Additions to the primary modules.
Added the khoros.api.encode_multipart_data() function.
khoros.objects.messages module:khoros.objects.messages._verify_required_fields()
khoros.objects.messages._confirm_field_supplied()
khoros.objects.attachments module with the following functions:khoros.objects.attachments._format_single_file()
khoros.objects.attachments._format_multiple_files()
khoros.objects.albums module with the following functions:khoros.objects.albums._null_to_blank()
khoros.core.Khoros class:khoros.core.Khoros._import_album_class()
khoros.core.Khoros._import_message_class()
khoros.core.Khoros.Album inner class with the following methods:khoros.core.Khoros.Message inner class with the following methods:Added an import statement for khoros.objects.albums to the khoros.objects module.
Additions to the supporting modules.
Added the khoros.utils.core_utils.convert_single_value_to_tuple() function.
Added the khoros.utils.core_utils.convert_string_to_tuple() function.
Added the khoros.utils.core_utils.is_numeric() function.
Added the khoros.errors.exceptions.DataMismatchError exception class.
Additions to the documentation.
Added the Utilizing environment variables section to the Introduction page.
Updated the README.md file to match the Introduction page.
Added the khoros.objects.messages module to the primary modules page.
Added the khoros.objects.albums module to the primary modules page.
Added the khoros.objects.attachments module to the primary modules page.
Added the khoros.core.Khoros.Album class to the primary modules page.
Added the khoros.core.Khoros.Message class to the primary modules page.
Added the SECURITY.md and CODE_OF_CONDUCT.md files to the source repository.
Added requests-toolbelt==0.9.1 to the requirements.txt file.
Changes to the primary modules.
Updated the khoros.core.Khoros class so that environment variables are ignored if a Helper
configuration file is supplied when instantiating the core object.
multipart/form-data API calls in functions below.khoros.api._api_request_with_payload()
Added the associated exception type (e.g. ValueError) to the failure messages in
khoros.api.get_request_with_retries() and khoros.api._api_request_with_payload().
Updated the khoros.api.get_request_with_retries() to use the
khoros.errors.exceptions.APIConnectionError exception class rather than ConnectionError.
Updated the khoros.api.get_request_with_retries() and khoros.api._api_request_with_payload()
functions to only retry if relevant exception classes are raised in the try/except.
Added functionality to khoros.api.post_request_with_retries() and
khoros.api.put_request_with_retries() to display an error but still return the API response if unable
to convert the response to JSON format when requested.
Renamed the khoros.api.__api_request_with_payload() function to be
khoros.api._api_request_with_payload() instead.
Replaced print() statements in the khoros.api.get_request_with_retries() and
khoros.api._api_request_with_payload() functions with khoros.errors.handlers.eprint()
function calls.
Added the multipart Boolean argument to the khoros.api.define_headers() which will remove the
Content-Type header key and value if the API call is for a multipart/form-data query.
Added the allow_exceptions argument (True by default) to the khoros.liql.perform_query()
function to allow the khoros.errors.exceptions.GETRequestError exception to be disabled if an
error response is returned.
Updated the error/exception message in the khoros.liql.perform_query() to be more specific.
Changes to the documentation.
Added a full docstring to the khoros.api._api_request_with_payload() function.
Fixes to the primary modules.
Removed the Aurea reference from the failure message in khoros.api._api_request_with_payload.
Fixes to the supporting modules.
Changed “v1” to “v2” in the full error message string within the
khoros.errors.handlers._get_v2_error_from_json() function.
Release Date: 2020-04-26
Additions to the primary modules.
khoros.core.Khoros object.Added the khoros.core.Khoros._parse_env_settings() method to parse the environmental variables.
Added the khoros.core.Khoros._session_auth_credentials_defined() method to automatically set the
auth_type value in the _settings attribute to be session_auth if a session authentication username
and password have been defined.
Additions to the supporting modules.
khoros.utils.environment module with the following functions and constants:khoros.utils.environment._env_variable_exists()
khoros.utils.environment._get_env_variable_value()
khoros.utils.environment._update_env_list()
khoros.utils.environment._update_env_mapping()
khoros.utils.environment._import_custom_names_file()
khoros.utils.environment.ENV_VARIABLE_NAMES
Added the khoros.utils.core_utils.get_file_type() function.
Added the khoros.errors.exceptions.UnknownFileTypeError exception class.
Added the khoros.utils.tests.test_helper_file unit test module.
New additions to the example files for the library.
Added the custom_env_variables.json file.
Added the custom_env_variables.yml file.
Additions to the documentation.
Added the khoros.utils.environment module to the supporting modules page.
Added the khoros.utils.tests.test_helper_file module to the
supporting modules page.
Added the encrypted YAML Helper configuration file khoros_helper.yml.gpg in the
khoros/utils/tests/ directory for use with pytest.
Added the shell script decrypt_helper.sh in the .github/scripts/ directory per
GitHub guidelines.
Updated the pythonpackage.yml workflow for GitHub Actions to decrypt the helper configuration file (YAML)
and utilize environment variables.
Changes to the primary modules.
Made an adjustment to the khoros.core.Khoros object class so that any values explicitly passed via
the settings argument will overwrite any existing settings defined by default values and/or
environmental variables.
Added khoros.structures.base to the __all__ special variable in khoros.structures.
Added khoros.objects.messages to the __all__ special variable in khoros.objects and added
an import statement to import the module by default.
Removed khoros.objects.base from the __all__ special variable in khoros.objects and removed
the import statement to prevent the module from being imported by default.
Changes to the supporting modules.
Replaced the yaml.load() function call with yaml.safe_load() in
khoros.utils.helper.import_yaml_file() as it is a better security practice.
Introduced support for JSON formatted helper configuration files in khoros.utils.helper.
Removed the extra preceding underscore in private functions within khoros.utils.helper.
Changes to the documentation.
Added :special-members: __init__ to the khoros and khoros.core modules to display the
docstrings for the __init__ method in the khoros.core.Khoros object class.
Replaced NoneType with None in function and method docstrings to use proper syntax and to comply with
PEP 287.
Release Date: 2020-04-23
Additions to the primary modules.
Added the khoros.liql.get_total_count() function.
Added the khoros.core.Khoros.get_total_count() method within the core Khoros object.
Added the khoros.structures module.
khoros.structures.base module with the following functions and class:khoros.structures.base._check_url_for_identifier()
khoros.structures.categories module with the following functions:khoros.structures.communities module with the following functions:khoros.structures.communities._check_for_multiple_tenants()
khoros.structures.communities.get_permitted_attachment_types()
khoros.structures.communities.email_confirmation_required_to_post()
khoros.structures.communities.get_ooyala_player_branding_id()
khoros.structures.communities.top_level_categories_enabled()
khoros.structures.communities.show_community_node_in_breadcrumb()
khoros.structures.communities.show_breadcrumb_at_top_level()
khoros.structures.communities.top_level_categories_on_community_page()
khoros.structures.nodes module with the following functions and classes:khoros.structures.nodes._get_node_type_identifier()
khoros.core.Khoros.Category inner class with the following methods:khoros.core.Khoros.Community inner class with the following methods:khoros.core.Khoros.Community.get_permitted_attachment_types()
khoros.core.Khoros.Community.email_confirmation_required_to_post()
khoros.core.Khoros.Community.get_ooyala_player_branding_id()
khoros.core.Khoros.Community.show_community_node_in_breadcrumb()
khoros.core.Khoros.Community.top_level_categories_on_community_page()
khoros.core.Khoros.Node inner class:Added the khoros.core.Khoros._import_category_class() method and accompanying method call.
Added the khoros.core.Khoros._import_community_class() method and accompanying method call.
Added the khoros.liql.COLLECTIONS constant.
Additions to the supporting modules.
Added the khoros.utils.core_utils.display_warning() function.
Additions to the documentation.
Added the khoros.structures module and its submodules to the primary modules page.
Changes to the primary modules.
Updated the khoros.objects to import all submodules by default.
Moved the khoros.objects.base.get_node_id() function to the khoros.structures.nodes module
and added a DeprecationWarning.
Moved the khoros.objects.base.get_node_type_from_url() function to the khoros.structures.nodes
module and added a DeprecationWarning.
Moved the khoros.objects.base.__get_node_type_identifier() function to the khoros.structures.nodes
module and added a DeprecationWarning.
Moved the khoros.objects.base.Mapping class to the khoros.structures.nodes module and added
a DeprecationWarning.
Added the khoros.structures.nodes.Mapping.avatar_size_mapping dictionary.
Fixes to the primary modules.
Removed some print debugging that hadn’t been removed in the khoros.api.query_successful() function.
Fixes to the documentation.
Fixed the module name in the header docstring for the khoros.objects module.
Fixed a typo in the docstring for the khoros.objects.users.query_users_table_by_id() function.
Additions to the supporting modules.
Fixed the khoros.utils.tests.test_node_id_extract to use the new khoros.structures.nodes module.
Release Date: 2020-04-10
Additions to the primary modules.
Added the khoros.core.Khoros.perform_v1_search() method.
Added the khoros.core.Khoros._import_node_class() and khoros.core.Khoros._import_user_class()
methods within the core khoros.Khoros object class.
Added the khoros.core.Khoros.Node inner class within the core khoros.Khoros object class.
khoros.core.Khoros object class:Added the khoros.core.Khoros.User inner class within the core khoros.Khoros object class.
khoros.core.Khoros object class:Added the khoros.api.query_successful() function.
Added the khoros.api.get_results_count() function.
Added the khoros.api.get_items_list() function.
Added the khoros.api.perform_v1_search() function.
Added the khoros.api.delete() function.
Added the new khoros.objects module to contain sub-modules for the various API objects.
khoros.objects.base module with the following functions and classes:khoros.objects.base.__get_node_type_identifier()
khoros.objects.users module with the following functions:khoros.objects.users._get_where_clause_for_user_id()
khoros.objects.users._get_where_clause_for_username()
khoros.objects.users._get_where_clause_for_email()
khoros.objects.users._get_user_identifier()
khoros.objects.users._get_count()
khoros.objects.users._get_sum_weight()
Additions to the supporting modules.
Added the khoros.utils.core_utils.decode_html_entities() function.
khoros.errors.handlers module.khoros.errors.handlers._get_v1_error_from_json()
khoros.errors.handlers._get_v2_error_from_json()
khoros.errors.handlers._import_exception_classes()
khoros.errors.handlers._exceptions_module_imported()
khoros.errors.handlers._import_exceptions_module()
khoros.utils.tests.test_node_id_extract module with the following functions:Additions to the documentation.
Added the Core Object Subclasses to the primary modules page.
Added the khoros.objects module and the khoros.objects.base and khoros.objects.users
sub-modules to the primary modules page.
Added the khoros.utils.tests.test_node_id_extract module to the
supporting modules page.
Added PyCharm Python Security Scanner to the pythonpackage.yml file.
Changes to the primary modules.
Updated the khoros.liql.perform_query() function to allow a raw LiQL query to be passed rather than only
pre-formatted query URLs.
Updated the khoros.liql.perform_query() function to include an optional verify_success argument which
verifies that the API query was successful and raises the khoros.errors.exceptions.GETRequestError
exception if not.
Removed the unnecessary import requests line in the khoros.liql module.
Renamed the khoros.core.Khoros.__connect_with_session_key() method to be
khoros.core.Khoros._connect_with_session_key() (single underscore prefix) instead.
Renamed the khoros.core.Khoros.__define_url_settings() method to be
khoros.core.Khoros._define_url_settings() (single underscore prefix) instead.
Renamed the khoros.core.Khoros.__parse_helper_settings() method to be
khoros.core.Khoros._parse_helper_settings() (single underscore prefix) instead.
Renamed the khoros.core.Khoros.__populate_auth_settings() method to be
khoros.core.Khoros._populate_auth_settings() (single underscore prefix) instead.
Renamed the khoros.core.Khoros.__populate_construct_settings() method to be
khoros.core.Khoros._populate_construct_settings() (single underscore prefix) instead.
Renamed the khoros.core.Khoros.__populate_core_settings() method to be
khoros.core.Khoros._populate_core_settings() (single underscore prefix) instead.
Renamed the khoros.core.Khoros.__validate_base_url() method to be
khoros.core.Khoros._validate_base_url() (single underscore prefix) instead.
Changes to the supporting modules.
Updated the khoros.errors.exceptions.CurrentlyUnsupportedError exception class to allow the respective
feature to be passed as a string argument for it to be explicitly referenced in the exception message.
Updated the khoros.errors.handlers.get_error_from_html() function to have a second v1 argument, which
is False by default.
Changes to the documentation.
Updated the docstring in khoros.api.query_successful() indicating the API response should be in JSON format.
Changed the Development Status in setup.py to be 3 - Alpha.
Fixes in the primary modules.
Updated the khoros.liql.format_query() function to properly encode the double-quote (") character and
several other special characters.
Fixes in the documentation.
Fixed two bad hyperlinks in the README.md file.
Fixed the docstrings in the khoros.errors.exceptions.InvalidOperatorError exception class to be accurate.
Fixed the docstrings in the khoros.errors.exceptions.OperatorMismatchError exception class to be accurate.
Release Date: 2020-03-22
Additions to the primary modules.
Added the khoros.core.Khoros.signout() method.
Added the khoros.auth.get_oauth_authorization_url() function.
Added the khoros.auth.get_oauth_callback_url_from_user() function.
Added the khoros.auth.invalidate_session() function.
khoros.api module with the following functions:khoros.api.__api_request_with_payload()
Additions to the supporting modules.
Added the khoros.utils.core_utils.get_random_string() function.
Added the khoros.utils.core_utils.__structure_query_string() function.
Additions to the documentation.
Added the khoros.api module to the primary modules page.
Changes to the primary modules.
Updated the core khoros.core.Khoros class to include the active Boolean flag in self.auth.
Updated the khoros.liql.perform_query() function to utilize the
khoros.api.get_request_with_retries() function.
Made minor docstring adjustments to the khoros.liql.perform_query() function.
Changes to the supporting modules.
Added the no_encode argument and associated functionality to the
khoros.utils.core_utils.encode_query_string() function.
Release Date: 2020-03-17
Additions to the primary modules.
Added the khoros.utils.version.warn_when_not_latest() function call to the main khoros module.
Additions to the supporting modules.
Added the khoros.utils.version.get_latest_stable() function.
Added the khoros.utils.version.latest_version() function.
Added the khoros.utils.version.warn_when_not_latest() function.
Additions to the documentation.
Added the Changelog and Usage sections to the README.md file.
Created the Change Log page and populated it with the v1.1.0 changes.
Created the primary modules and supporting modules pages.