salespyforce 1.4.0.dev0__py3-none-any.whl → 1.4.0.dev2__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- salespyforce/api.py +44 -1
- salespyforce/core.py +94 -13
- salespyforce/knowledge.py +21 -5
- salespyforce/utils/core_utils.py +44 -2
- salespyforce/utils/log_utils.py +17 -16
- salespyforce/utils/tests/conftest.py +202 -0
- salespyforce/utils/tests/test_core_utils.py +234 -0
- salespyforce/utils/tests/test_instantiate_object.py +31 -18
- salespyforce/utils/tests/test_log_utils.py +79 -0
- salespyforce/utils/tests/test_sobjects.py +22 -15
- salespyforce/utils/tests/test_soql.py +8 -8
- salespyforce/utils/tests/test_sosl.py +9 -9
- salespyforce/utils/tests/test_version_utils.py +70 -0
- {salespyforce-1.4.0.dev0.dist-info → salespyforce-1.4.0.dev2.dist-info}/METADATA +6 -10
- salespyforce-1.4.0.dev2.dist-info/RECORD +27 -0
- salespyforce-1.4.0.dev0.dist-info/RECORD +0 -23
- {salespyforce-1.4.0.dev0.dist-info → salespyforce-1.4.0.dev2.dist-info}/LICENSE +0 -0
- {salespyforce-1.4.0.dev0.dist-info → salespyforce-1.4.0.dev2.dist-info}/WHEEL +0 -0
|
@@ -1,23 +1,23 @@
|
|
|
1
1
|
# -*- coding: utf-8 -*-
|
|
2
|
+
# bandit: skip=B101
|
|
2
3
|
"""
|
|
3
|
-
:Module: salespyforce.utils.tests.
|
|
4
|
+
:Module: salespyforce.utils.tests.test_soql
|
|
4
5
|
:Synopsis: This module is used by pytest to test performing SOQL queries
|
|
5
6
|
:Created By: Jeff Shurtliff
|
|
6
7
|
:Last Modified: Jeff Shurtliff
|
|
7
|
-
:Modified Date:
|
|
8
|
+
:Modified Date: 20 Dec 2025
|
|
8
9
|
"""
|
|
9
10
|
|
|
10
|
-
from . import resources
|
|
11
11
|
|
|
12
|
-
|
|
13
|
-
def test_soql_query():
|
|
12
|
+
def test_soql_query(salesforce_unit):
|
|
14
13
|
"""This function tests the ability to perform a SOQL query.
|
|
15
14
|
|
|
16
15
|
.. versionadded:: 1.1.0
|
|
16
|
+
|
|
17
|
+
.. version-changed:: 1.4.0
|
|
18
|
+
The function now utilizes the ``salesforce_unit`` fixture.
|
|
17
19
|
"""
|
|
18
|
-
sfdc_object = resources.get_core_object()
|
|
19
20
|
soql_statement = 'SELECT Id FROM Account LIMIT 1'
|
|
20
|
-
soql_response =
|
|
21
|
+
soql_response = salesforce_unit.soql_query(soql_statement)
|
|
21
22
|
assert 'done' in soql_response and soql_response.get('done') is True
|
|
22
23
|
assert 'totalSize' in soql_response and 'records' in soql_response
|
|
23
|
-
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
# -*- coding: utf-8 -*-
|
|
2
|
+
# bandit: skip=B101
|
|
2
3
|
"""
|
|
3
|
-
:Module: salespyforce.utils.tests.
|
|
4
|
-
:Synopsis: This module is used by pytest to test performing
|
|
4
|
+
:Module: salespyforce.utils.tests.test_sosl
|
|
5
|
+
:Synopsis: This module is used by pytest to test performing SOSL queries
|
|
5
6
|
:Created By: Jeff Shurtliff
|
|
6
7
|
:Last Modified: Jeff Shurtliff
|
|
7
|
-
:Modified Date:
|
|
8
|
+
:Modified Date: 20 Dec 2025
|
|
8
9
|
"""
|
|
9
10
|
|
|
10
11
|
import requests
|
|
@@ -12,18 +13,17 @@ import requests
|
|
|
12
13
|
from . import resources
|
|
13
14
|
|
|
14
15
|
|
|
15
|
-
def test_search_string(monkeypatch):
|
|
16
|
+
def test_search_string(monkeypatch, salesforce_unit):
|
|
16
17
|
"""This function tests the ability to search for a string using an SOSL query.
|
|
17
18
|
|
|
18
19
|
.. versionadded:: 1.1.0
|
|
19
|
-
"""
|
|
20
|
-
# Instantiate the core object
|
|
21
|
-
sfdc_object = resources.get_core_object()
|
|
22
20
|
|
|
21
|
+
.. version-changed:: 1.4.0
|
|
22
|
+
The function now utilizes the ``salesforce_unit`` fixture.
|
|
23
|
+
"""
|
|
23
24
|
# Overwrite the requests.post functionality with the mock_success_post() function
|
|
24
25
|
monkeypatch.setattr(requests, 'get', resources.mock_sosl_get)
|
|
25
26
|
|
|
26
27
|
# Perform the mock API call
|
|
27
|
-
result =
|
|
28
|
+
result = salesforce_unit.search_string('Account')
|
|
28
29
|
assert 'searchRecords' in result
|
|
29
|
-
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*-
|
|
2
|
+
# bandit: skip=B101
|
|
3
|
+
"""
|
|
4
|
+
:Module: salespyforce.utils.tests.test_version_utils
|
|
5
|
+
:Synopsis: Pytest suite for salespyforce.utils.version helpers
|
|
6
|
+
:Created By: Jeff Shurtliff
|
|
7
|
+
:Last Modified: Jeff Shurtliff
|
|
8
|
+
:Modified Date: 20 Dec 2025
|
|
9
|
+
"""
|
|
10
|
+
|
|
11
|
+
import importlib
|
|
12
|
+
import importlib.metadata as importlib_metadata
|
|
13
|
+
|
|
14
|
+
from salespyforce.utils import version as version_utils
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
def test_get_full_version_returns_metadata(monkeypatch):
|
|
18
|
+
"""This function tests get_full_version returns the package metadata."""
|
|
19
|
+
expected_version = "1.2.3"
|
|
20
|
+
monkeypatch.setattr(
|
|
21
|
+
version_utils, "version", lambda package: expected_version
|
|
22
|
+
)
|
|
23
|
+
|
|
24
|
+
assert version_utils.get_full_version() == expected_version
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
def test_get_full_version_handles_missing_package(monkeypatch, caplog):
|
|
28
|
+
"""This function tests get_full_version fallback when package is missing."""
|
|
29
|
+
def raise_not_found(_package):
|
|
30
|
+
raise version_utils.PackageNotFoundError("salespyforce")
|
|
31
|
+
|
|
32
|
+
monkeypatch.setattr(version_utils, "version", raise_not_found)
|
|
33
|
+
|
|
34
|
+
with caplog.at_level("WARNING"):
|
|
35
|
+
version_string = version_utils.get_full_version()
|
|
36
|
+
|
|
37
|
+
assert version_string == "0.0.0"
|
|
38
|
+
assert any("falling back to '0.0.0'" in message for message in caplog.messages)
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
def test_get_major_minor_version_returns_two_components(monkeypatch):
|
|
42
|
+
"""This function tests extracting the major.minor version components."""
|
|
43
|
+
monkeypatch.setattr(
|
|
44
|
+
version_utils, "get_full_version", lambda: "2.3.4"
|
|
45
|
+
)
|
|
46
|
+
|
|
47
|
+
assert version_utils.get_major_minor_version() == "2.3"
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
def test_get_major_minor_version_returns_full_when_missing_minor(monkeypatch):
|
|
51
|
+
"""This function tests get_major_minor_version with a single-part version."""
|
|
52
|
+
monkeypatch.setattr(version_utils, "get_full_version", lambda: "7")
|
|
53
|
+
|
|
54
|
+
assert version_utils.get_major_minor_version() == "7"
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
def test_dunder_version_matches_full_version(monkeypatch):
|
|
58
|
+
"""This function tests __version__ initialization uses get_full_version."""
|
|
59
|
+
real_version_function = importlib_metadata.version
|
|
60
|
+
expected_version = "9.8.7"
|
|
61
|
+
monkeypatch.setattr(
|
|
62
|
+
importlib_metadata, "version", lambda package: expected_version
|
|
63
|
+
)
|
|
64
|
+
|
|
65
|
+
reloaded_module = importlib.reload(version_utils)
|
|
66
|
+
assert reloaded_module.__version__ == expected_version
|
|
67
|
+
assert reloaded_module.get_full_version() == expected_version
|
|
68
|
+
|
|
69
|
+
importlib_metadata.version = real_version_function
|
|
70
|
+
importlib.reload(version_utils)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.3
|
|
2
2
|
Name: salespyforce
|
|
3
|
-
Version: 1.4.0.
|
|
3
|
+
Version: 1.4.0.dev2
|
|
4
4
|
Summary: A Python toolset for performing Salesforce API calls
|
|
5
5
|
License: MIT License
|
|
6
6
|
|
|
@@ -63,7 +63,7 @@ A Python toolset for performing Salesforce API calls
|
|
|
63
63
|
<td>Latest Beta/RC Release</td>
|
|
64
64
|
<td>
|
|
65
65
|
<a href='https://pypi.org/project/salespyforce/#history'>
|
|
66
|
-
<img alt="PyPI" src="https://img.shields.io/badge/pypi-1.
|
|
66
|
+
<img alt="PyPI" src="https://img.shields.io/badge/pypi-1.4.0.dev1-blue">
|
|
67
67
|
</a>
|
|
68
68
|
</td>
|
|
69
69
|
</tr>
|
|
@@ -140,6 +140,10 @@ A Python toolset for performing Salesforce API calls
|
|
|
140
140
|
</tr>
|
|
141
141
|
</table>
|
|
142
142
|
|
|
143
|
+
## Overview
|
|
144
|
+
salespyforce is a Python toolkit focused on interacting with Salesforce APIs, with a primary `Salesforce` class
|
|
145
|
+
that centralizes authentication, version selection, and access to helper feature sets (Chatter, Knowledge).
|
|
146
|
+
|
|
143
147
|
## Installation
|
|
144
148
|
The package can be installed via pip using the syntax below.
|
|
145
149
|
|
|
@@ -147,14 +151,6 @@ The package can be installed via pip using the syntax below.
|
|
|
147
151
|
pip install salespyforce --upgrade
|
|
148
152
|
```
|
|
149
153
|
|
|
150
|
-
You may also clone the repository and install from source using below.
|
|
151
|
-
|
|
152
|
-
```sh
|
|
153
|
-
git clone git://github.com/jeffshurtliff/salespyforce.git
|
|
154
|
-
cd salespyforce/
|
|
155
|
-
python setup.py install
|
|
156
|
-
```
|
|
157
|
-
|
|
158
154
|
## Change Log
|
|
159
155
|
The change log can be found in the [documentation](https://salespyforce.readthedocs.io/en/latest/changelog.html).
|
|
160
156
|
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
salespyforce/__init__.py,sha256=W2RY2_kojLcXtTHJrto5FtU6q1umVPaU1RZe_QkFgNY,2031
|
|
2
|
+
salespyforce/api.py,sha256=fSMZYH1bpdZGS2sq924f1we0Bkubx8rrTx810Xyl3Ug,7732
|
|
3
|
+
salespyforce/chatter.py,sha256=GI9iXmq2mrbrH7daW8Kc3gt2O04dRthSVocJq4BVwCU,7494
|
|
4
|
+
salespyforce/core.py,sha256=x-D8HsjsRSS7ti1XnwSxKFfqysntI8TttgKBqjsKwh4,52661
|
|
5
|
+
salespyforce/errors/__init__.py,sha256=Tnl4lB2ycpK2UmwmoBoSYuWDtovDNA4CxC5Cku2hDYs,320
|
|
6
|
+
salespyforce/errors/exceptions.py,sha256=6ATDNCPNXnjOzXcaaLZVUy39lsFt2Se5cCvqkd_8faM,17057
|
|
7
|
+
salespyforce/errors/handlers.py,sha256=8Hp-WrpYooMlC7cuuowTkOFyBH8OQFfHKmB8XxDPlyk,479
|
|
8
|
+
salespyforce/knowledge.py,sha256=5a1kllrggh83vOmFrR-NLaz2YDpoKQweQ1B4e2AwghA,25407
|
|
9
|
+
salespyforce/utils/__init__.py,sha256=ATE6BsWd2qDxsy1fQpvaoSJimZgfCmNPYpcFEucES6Q,292
|
|
10
|
+
salespyforce/utils/core_utils.py,sha256=_uVVxHcVwCb-h6m-B7IKY77ItaSsHtGwydZN923yIic,7038
|
|
11
|
+
salespyforce/utils/helper.py,sha256=zwbysqwddWwhp3mfzKJf0aeTTkVqoR35L9dLu6ZVJtU,5661
|
|
12
|
+
salespyforce/utils/log_utils.py,sha256=-7qgSNCUQRstRgz2wXBX6LRWO-GMjIXS5WjxkHGvBHk,11936
|
|
13
|
+
salespyforce/utils/tests/__init__.py,sha256=Iv7M9gPyKv5f5tR-pxc089cd2nrWn5M0ZZpWqiB2htc,242
|
|
14
|
+
salespyforce/utils/tests/conftest.py,sha256=zYB5pYNtRHc6cIxY_cBMQHNM52Is6NjLfcCywCD3-Bw,6661
|
|
15
|
+
salespyforce/utils/tests/resources.py,sha256=-PEqzLMsEQSVj3dz_8VTHXINbSeMvmjX3gZRMTJgoac,4774
|
|
16
|
+
salespyforce/utils/tests/test_core_utils.py,sha256=8b3qjzr028wVeQAxBvIeajcqnWCsqUhNgqcquznGQKg,7272
|
|
17
|
+
salespyforce/utils/tests/test_instantiate_object.py,sha256=O_DTljj_QCBZlDiA1KBUmSL2CZfsVU_7K2h6ypEN0D8,2002
|
|
18
|
+
salespyforce/utils/tests/test_log_utils.py,sha256=FxPC21vXRQbFvqmTi_FL1DsGwuH8JHPkl9XytVoe7uY,2328
|
|
19
|
+
salespyforce/utils/tests/test_sobjects.py,sha256=AeKli_LjSkeaspGxHZoZsM1IafKS2HkJ1wzajSXt6Dc,2120
|
|
20
|
+
salespyforce/utils/tests/test_soql.py,sha256=SSOAN-4QZNpwUON-cLndb5W6AAs28Ja1u-Zt1WBx0VA,776
|
|
21
|
+
salespyforce/utils/tests/test_sosl.py,sha256=3Ny1uF0onjcvI_InfMYRdh31rR5MJADTB3DWSm--EjE,868
|
|
22
|
+
salespyforce/utils/tests/test_version_utils.py,sha256=njRKMiwtCCyUHEAFvfxvavuh03fJ_EupM1TUYmdsZAo,2465
|
|
23
|
+
salespyforce/utils/version.py,sha256=uEWnq3DHmN9wZVohiRCRE1KzNF1XVhP4oVY4vBBgoVU,1781
|
|
24
|
+
salespyforce-1.4.0.dev2.dist-info/LICENSE,sha256=b_Ch0pvcZN6Mr4dQ9Bo3It-J3MihQYcj_-EIdaZHuWw,1071
|
|
25
|
+
salespyforce-1.4.0.dev2.dist-info/METADATA,sha256=7Loir-UVgxd2NpPpLKFQo-0nnt540mMC2ZSh-0uIyxA,10400
|
|
26
|
+
salespyforce-1.4.0.dev2.dist-info/WHEEL,sha256=b4K_helf-jlQoXBBETfwnf4B04YC67LOev0jo4fX5m8,88
|
|
27
|
+
salespyforce-1.4.0.dev2.dist-info/RECORD,,
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
salespyforce/__init__.py,sha256=W2RY2_kojLcXtTHJrto5FtU6q1umVPaU1RZe_QkFgNY,2031
|
|
2
|
-
salespyforce/api.py,sha256=JoqYyOo7Psx-l-bEC7iFdFfQVziIkqINcOKOnlpa_jM,5763
|
|
3
|
-
salespyforce/chatter.py,sha256=GI9iXmq2mrbrH7daW8Kc3gt2O04dRthSVocJq4BVwCU,7494
|
|
4
|
-
salespyforce/core.py,sha256=OPn5TsY9oCjg_jtEFWCq3yQz4-B7pTeYKsSGOtfo8yI,49148
|
|
5
|
-
salespyforce/errors/__init__.py,sha256=Tnl4lB2ycpK2UmwmoBoSYuWDtovDNA4CxC5Cku2hDYs,320
|
|
6
|
-
salespyforce/errors/exceptions.py,sha256=6ATDNCPNXnjOzXcaaLZVUy39lsFt2Se5cCvqkd_8faM,17057
|
|
7
|
-
salespyforce/errors/handlers.py,sha256=8Hp-WrpYooMlC7cuuowTkOFyBH8OQFfHKmB8XxDPlyk,479
|
|
8
|
-
salespyforce/knowledge.py,sha256=YCUbVDr8n23mdUzeuqlNToHIaaD9mzcSZ5Rvr_J8kAw,24770
|
|
9
|
-
salespyforce/utils/__init__.py,sha256=ATE6BsWd2qDxsy1fQpvaoSJimZgfCmNPYpcFEucES6Q,292
|
|
10
|
-
salespyforce/utils/core_utils.py,sha256=ESuQVb8L00KoP56_nAKTj3i09u_6BqK0MxJtYV5QbwI,5674
|
|
11
|
-
salespyforce/utils/helper.py,sha256=zwbysqwddWwhp3mfzKJf0aeTTkVqoR35L9dLu6ZVJtU,5661
|
|
12
|
-
salespyforce/utils/log_utils.py,sha256=085OBfJNxwJSjE3lQzmixjsK1s9akGvYG_kJpUPvDJ4,11799
|
|
13
|
-
salespyforce/utils/tests/__init__.py,sha256=Iv7M9gPyKv5f5tR-pxc089cd2nrWn5M0ZZpWqiB2htc,242
|
|
14
|
-
salespyforce/utils/tests/resources.py,sha256=-PEqzLMsEQSVj3dz_8VTHXINbSeMvmjX3gZRMTJgoac,4774
|
|
15
|
-
salespyforce/utils/tests/test_instantiate_object.py,sha256=vxeXuzJ3OJrGlNFM4gOUfsifefRkr4tDUoElC90a0uo,1422
|
|
16
|
-
salespyforce/utils/tests/test_sobjects.py,sha256=H_drUPsopu6y0nAxHZkZD1PAP5pd5jE15hqwC0qdDso,1846
|
|
17
|
-
salespyforce/utils/tests/test_soql.py,sha256=xSVNuJo7U4vNqWXGbw2ue66p7-RQ-PuBlql1vkddl3M,715
|
|
18
|
-
salespyforce/utils/tests/test_sosl.py,sha256=tKKirOtDFmROMGvMsPuG1cM603zQIeXXJHVgWYXOqYw,815
|
|
19
|
-
salespyforce/utils/version.py,sha256=uEWnq3DHmN9wZVohiRCRE1KzNF1XVhP4oVY4vBBgoVU,1781
|
|
20
|
-
salespyforce-1.4.0.dev0.dist-info/LICENSE,sha256=b_Ch0pvcZN6Mr4dQ9Bo3It-J3MihQYcj_-EIdaZHuWw,1071
|
|
21
|
-
salespyforce-1.4.0.dev0.dist-info/METADATA,sha256=H5ENENMftGOHZAvC2BQUEJ02SEqTwU1WgErPbSdKvGg,10346
|
|
22
|
-
salespyforce-1.4.0.dev0.dist-info/WHEEL,sha256=b4K_helf-jlQoXBBETfwnf4B04YC67LOev0jo4fX5m8,88
|
|
23
|
-
salespyforce-1.4.0.dev0.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|