# sharepointlib
- [Description](#package-description)
- [Usage](#usage)
- [Installation](#installation)
- [License](#license)
## Package Description
Microsoft SharePoint client Python package that uses the [requests](https://pypi.org/project/requests/) library.
> [!IMPORTANT]
> This packages uses pydantic~=1.0!
## Usage
- [sharepointlib](#sharepointlib)
from a script:
```python
import sharepointlib
import logging
import pandas as pd
logging.basicConfig(level=logging.INFO, format="%(asctime)s - %(name)s - %(levelname)s - %(message)s")
client_id = "123..."
tenant_id = "456..."
client_secret = "xxxx"
sp_domain = "companygroup.sharepoint.com"
sp_site_name = "My Site"
sp_site_id = "companygroup.sharepoint.com,1233124124"
sp_site_drive_id = "b!1234567890"
# Initialize SharePoint client
sharepoint = sharepointlib.SharePoint(client_id=client_id,
tenant_id=tenant_id,
client_secret=client_secret,
sp_domain=sp_domain)
```
```python
# Gets the site ID for a given site name
response = sharepoint.get_site_info(name=sp_site_name)
if response.status_code == 200:
print(response.content.id)
df = pd.DataFrame([response.content.dict()])
print(df)
```
```python
# Gets the hostname and site details for a specified site ID
response = sharepoint.get_hostname_info(site_id=sp_site_id)
if response.status_code == 200:
df = pd.DataFrame([response.content.dict()])
print(df)
```
Drives:
```python
# Gets a list of the Drive IDs for a given site ID
response = sharepoint.list_drives(site_id=sp_site_id)
if response.status_code == 200:
df = pd.DataFrame([item.dict() for item in response.content])
print(df)
```
```python
# Gets the folder ID for a specified folder within a drive ID
response = sharepoint.get_dir_info(drive_id=sp_site_drive_id,
path="Sellout/Support")
if response.status_code == 200:
df = pd.DataFrame([response.content.dict()])
print(df)
```
```python
# List content (files and folders) of a specific folder
response = sharepoint.list_dir(drive_id=sp_site_drive_id,
path="Sellout/Support")
if response.status_code == 200:
df = pd.DataFrame([item.dict() for item in response.content])
print(df)
```
```python
# Creates a new folder in a specified drive ID
response = sharepoint.create_dir(drive_id=sp_site_drive_id,
path="Sellout/Support",
name="Archive")
if response.status_code in (200, 201):
df = pd.DataFrame([response.content.dict()])
print(df)
response = sharepoint.create_dir(drive_id=sp_site_drive_id,
path="Sellout/Support",
name="Test")
if response.status_code in (200, 201):
df = pd.DataFrame([response.content.dict()])
print(df)
```
```python
# Deletes a folder from a specified drive ID
response = sharepoint.delete_dir(drive_id=sp_site_drive_id,
path="Sellout/Support/Test")
if response.status_code in (200, 204):
print("Folder deleted successfully")
```
```python
# Renames a folder in a specified drive ID
response = sharepoint.rename_folder(drive_id=sp_site_drive_id,
path="Sellout/Support",
new_name="Old")
if response.status_code == 200:
df = pd.DataFrame([response.content.dict()])
print(df)
```
```python
# Retrieves information about a specific file in a drive ID
response = sharepoint.get_file_info(drive_id=sp_site_drive_id,
filename="Sellout/Support/Sellout.xlsx")
if response.status_code in (200, 202):
print(response.content.id)
df = pd.DataFrame([response.content.dict()])
print(df)
```
```python
# Copy a file from one folder to another within the same drive ID
response = sharepoint.copy_file(drive_id=sp_site_drive_id,
filename="Sellout/Support/Sellout.xlsx",
target_path="Sellout/Support/Archive")
if response.status_code in (200, 202):
print("File copied successfully")
```
```python
# Moves a file from one folder to another within the same drive ID
response = sharepoint.move_file(drive_id=sp_site_drive_id,
filename="Sellout/Support/Archive/Sellout.xlsx",
target_path="Sellout")
if response.status_code == 200:
df = pd.DataFrame([response.content.dict()])
print(df)
```
```python
# Deletes a file from a specified drive ID
response = sharepoint.delete_file(drive_id=sp_site_drive_id,
filename="Sellout/Sellout.xlsx")
if response.status_code in (200, 204):
print("File deleted successfully")
```
```python
# Renames a file in a specified drive ID.
response = sharepoint.rename_file(drive_id=sp_site_drive_id,
filename="Sellout/Support/Archive/Sellout.xlsx",
new_name="Sellout_New_Name.xlsx")
if response.status_code == 200:
df = pd.DataFrame([response.content.dict()])
print(df)
```
```python
# Downloads a file from a specified remote path in a drive ID to a local path
# Examples for local_path (databricks):
# local_path=r"/Workspace/Users/admin@admin.com/Sellout.xlsm"
# local_path=r"/Volumes/lakehouse/sadp/Sellout.xlsm"
response = sharepoint.download_file(drive_id=sp_site_drive_id,
remote_path=r"Sellout/Support/Sellout.xlsx",
local_path=r"C:\Users\admin\Downloads\Sellout.xlsx")
if response.status_code == 200:
print("File downloaded successfully")
```
```python
# Downloads an Excel file from SharePoint directly into memory and loads it into a Pandas DataFrame
from io import BytesIO
response = sharepoint.download_file_to_memory(drive_id=sp_site_drive_id,
remote_path="Sellout/Support/Sellout.xlsx")
if response.status_code == 200 and response.content is not None:
excel_data = BytesIO(response.content)
df = pd.read_excel(excel_data)
print(df)
```
```python
# Uploads a file to a specified remote path in a SharePoint drive ID
response = sharepoint.upload_file(drive_id=sp_site_drive_id,
local_path=r"C:\Users\admin\Downloads\Sellout.xlsx",
remote_path=r"Sellout/Support/Archive/Sellout.xlsx")
if response.status_code in (200, 201):
print(response.content)
```
## Installation
- [sharepointlib](#sharepointlib)
Install python and pip if you have not already.
Then run:
```bash
pip install pip --upgrade
```
For production:
```bash
pip install sharepointlib
```
This will install the package and all of it's python dependencies.
If you want to install the project for development:
```bash
git clone https://github.com/aghuttun/sharepointlib.git
cd sharepointlib
pip install -e ".[dev]"
```
To test the development package: [Testing](#testing)
## License
- [sharepointlib](#sharepointlib)
BSD License (see license file)
Raw data
{
"_id": null,
"home_page": null,
"name": "sharepointlib",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.10",
"maintainer_email": "Paulo Portela <portela.paulo@gmail.com>",
"keywords": "Microsoft, SharePoint, Python, API, Office365, GraphAPI",
"author": null,
"author_email": "Paulo Portela <portela.paulo@gmail.com>",
"download_url": "https://files.pythonhosted.org/packages/cf/2a/12221cfc42ebffb82081396464f2f343e40c331279fe689e3cd8fc25ef03/sharepointlib-0.0.13.tar.gz",
"platform": null,
"description": "# sharepointlib\r\n\r\n- [Description](#package-description)\r\n- [Usage](#usage)\r\n- [Installation](#installation)\r\n- [License](#license)\r\n\r\n## Package Description\r\n\r\nMicrosoft SharePoint client Python package that uses the [requests](https://pypi.org/project/requests/) library.\r\n\r\n> [!IMPORTANT] \r\n> This packages uses pydantic~=1.0!\r\n\r\n## Usage\r\n\r\n- [sharepointlib](#sharepointlib)\r\n\r\nfrom a script:\r\n\r\n```python\r\nimport sharepointlib\r\nimport logging\r\nimport pandas as pd\r\n\r\nlogging.basicConfig(level=logging.INFO, format=\"%(asctime)s - %(name)s - %(levelname)s - %(message)s\")\r\n\r\nclient_id = \"123...\"\r\ntenant_id = \"456...\"\r\nclient_secret = \"xxxx\"\r\nsp_domain = \"companygroup.sharepoint.com\"\r\n\r\nsp_site_name = \"My Site\"\r\nsp_site_id = \"companygroup.sharepoint.com,1233124124\"\r\nsp_site_drive_id = \"b!1234567890\"\r\n\r\n# Initialize SharePoint client\r\nsharepoint = sharepointlib.SharePoint(client_id=client_id, \r\n tenant_id=tenant_id, \r\n client_secret=client_secret, \r\n sp_domain=sp_domain)\r\n```\r\n\r\n```python\r\n# Gets the site ID for a given site name\r\nresponse = sharepoint.get_site_info(name=sp_site_name)\r\nif response.status_code == 200:\r\n print(response.content.id)\r\n df = pd.DataFrame([response.content.dict()])\r\n print(df)\r\n```\r\n\r\n```python\r\n# Gets the hostname and site details for a specified site ID\r\nresponse = sharepoint.get_hostname_info(site_id=sp_site_id)\r\nif response.status_code == 200:\r\n df = pd.DataFrame([response.content.dict()])\r\n print(df)\r\n```\r\n\r\nDrives:\r\n\r\n```python\r\n# Gets a list of the Drive IDs for a given site ID\r\nresponse = sharepoint.list_drives(site_id=sp_site_id)\r\nif response.status_code == 200:\r\n df = pd.DataFrame([item.dict() for item in response.content])\r\n print(df)\r\n```\r\n\r\n```python\r\n# Gets the folder ID for a specified folder within a drive ID\r\nresponse = sharepoint.get_dir_info(drive_id=sp_site_drive_id,\r\n path=\"Sellout/Support\")\r\nif response.status_code == 200:\r\n df = pd.DataFrame([response.content.dict()])\r\n print(df)\r\n```\r\n\r\n```python\r\n# List content (files and folders) of a specific folder\r\nresponse = sharepoint.list_dir(drive_id=sp_site_drive_id, \r\n path=\"Sellout/Support\")\r\nif response.status_code == 200:\r\n df = pd.DataFrame([item.dict() for item in response.content])\r\n print(df)\r\n```\r\n\r\n```python\r\n# Creates a new folder in a specified drive ID\r\nresponse = sharepoint.create_dir(drive_id=sp_site_drive_id, \r\n path=\"Sellout/Support\",\r\n name=\"Archive\")\r\nif response.status_code in (200, 201):\r\n df = pd.DataFrame([response.content.dict()])\r\n print(df)\r\n\r\nresponse = sharepoint.create_dir(drive_id=sp_site_drive_id, \r\n path=\"Sellout/Support\",\r\n name=\"Test\")\r\nif response.status_code in (200, 201):\r\n df = pd.DataFrame([response.content.dict()])\r\n print(df)\r\n```\r\n\r\n```python\r\n# Deletes a folder from a specified drive ID\r\nresponse = sharepoint.delete_dir(drive_id=sp_site_drive_id, \r\n path=\"Sellout/Support/Test\")\r\nif response.status_code in (200, 204):\r\n print(\"Folder deleted successfully\")\r\n```\r\n\r\n```python\r\n# Renames a folder in a specified drive ID\r\nresponse = sharepoint.rename_folder(drive_id=sp_site_drive_id, \r\n path=\"Sellout/Support\",\r\n new_name=\"Old\")\r\nif response.status_code == 200:\r\n df = pd.DataFrame([response.content.dict()])\r\n print(df)\r\n```\r\n\r\n```python\r\n# Retrieves information about a specific file in a drive ID\r\nresponse = sharepoint.get_file_info(drive_id=sp_site_drive_id, \r\n filename=\"Sellout/Support/Sellout.xlsx\")\r\nif response.status_code in (200, 202):\r\n print(response.content.id)\r\n df = pd.DataFrame([response.content.dict()])\r\n print(df)\r\n```\r\n\r\n```python\r\n# Copy a file from one folder to another within the same drive ID\r\nresponse = sharepoint.copy_file(drive_id=sp_site_drive_id, \r\n filename=\"Sellout/Support/Sellout.xlsx\",\r\n target_path=\"Sellout/Support/Archive\")\r\nif response.status_code in (200, 202):\r\n print(\"File copied successfully\")\r\n```\r\n\r\n```python\r\n# Moves a file from one folder to another within the same drive ID\r\nresponse = sharepoint.move_file(drive_id=sp_site_drive_id, \r\n filename=\"Sellout/Support/Archive/Sellout.xlsx\", \r\n target_path=\"Sellout\")\r\nif response.status_code == 200:\r\n df = pd.DataFrame([response.content.dict()])\r\n print(df)\r\n```\r\n\r\n```python\r\n# Deletes a file from a specified drive ID\r\nresponse = sharepoint.delete_file(drive_id=sp_site_drive_id, \r\n filename=\"Sellout/Sellout.xlsx\")\r\nif response.status_code in (200, 204):\r\n print(\"File deleted successfully\")\r\n```\r\n\r\n```python\r\n# Renames a file in a specified drive ID.\r\nresponse = sharepoint.rename_file(drive_id=sp_site_drive_id, \r\n filename=\"Sellout/Support/Archive/Sellout.xlsx\", \r\n new_name=\"Sellout_New_Name.xlsx\")\r\nif response.status_code == 200:\r\n df = pd.DataFrame([response.content.dict()])\r\n print(df)\r\n```\r\n\r\n```python\r\n# Downloads a file from a specified remote path in a drive ID to a local path\r\n# Examples for local_path (databricks):\r\n# local_path=r\"/Workspace/Users/admin@admin.com/Sellout.xlsm\"\r\n# local_path=r\"/Volumes/lakehouse/sadp/Sellout.xlsm\"\r\nresponse = sharepoint.download_file(drive_id=sp_site_drive_id, \r\n remote_path=r\"Sellout/Support/Sellout.xlsx\",\r\n local_path=r\"C:\\Users\\admin\\Downloads\\Sellout.xlsx\")\r\nif response.status_code == 200:\r\n print(\"File downloaded successfully\")\r\n```\r\n\r\n```python\r\n# Downloads an Excel file from SharePoint directly into memory and loads it into a Pandas DataFrame\r\nfrom io import BytesIO\r\n\r\nresponse = sharepoint.download_file_to_memory(drive_id=sp_site_drive_id,\r\n remote_path=\"Sellout/Support/Sellout.xlsx\")\r\n\r\nif response.status_code == 200 and response.content is not None:\r\n excel_data = BytesIO(response.content)\r\n df = pd.read_excel(excel_data)\r\n print(df)\r\n```\r\n\r\n```python\r\n# Uploads a file to a specified remote path in a SharePoint drive ID\r\nresponse = sharepoint.upload_file(drive_id=sp_site_drive_id, \r\n local_path=r\"C:\\Users\\admin\\Downloads\\Sellout.xlsx\",\r\n remote_path=r\"Sellout/Support/Archive/Sellout.xlsx\")\r\nif response.status_code in (200, 201):\r\n print(response.content)\r\n```\r\n\r\n## Installation\r\n\r\n- [sharepointlib](#sharepointlib)\r\n\r\nInstall python and pip if you have not already.\r\n\r\nThen run:\r\n\r\n```bash\r\npip install pip --upgrade\r\n```\r\n\r\nFor production:\r\n\r\n```bash\r\npip install sharepointlib\r\n```\r\n\r\nThis will install the package and all of it's python dependencies.\r\n\r\nIf you want to install the project for development:\r\n\r\n```bash\r\ngit clone https://github.com/aghuttun/sharepointlib.git\r\ncd sharepointlib\r\npip install -e \".[dev]\"\r\n```\r\n\r\nTo test the development package: [Testing](#testing)\r\n\r\n## License\r\n\r\n- [sharepointlib](#sharepointlib)\r\n\r\nBSD License (see license file)\r\n",
"bugtrack_url": null,
"license": null,
"summary": "Microsoft SharePoint client Python package that uses the requests library",
"version": "0.0.13",
"project_urls": {
"Documentation": "https://github.com/aghuttun/sharepointlib/blob/main/README.md",
"Homepage": "https://github.com/aghuttun/sharepointlib"
},
"split_keywords": [
"microsoft",
" sharepoint",
" python",
" api",
" office365",
" graphapi"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "ace6840b3da173c0c1c9762d953850b347210825e013b3113a9c6d651bf41690",
"md5": "8e0010e0606346511d1553c503173ce8",
"sha256": "78306d70fb3a5ddbbf8d53a4be271f2103d25a1d587bb900bb982503a0908c94"
},
"downloads": -1,
"filename": "sharepointlib-0.0.13-py3-none-any.whl",
"has_sig": false,
"md5_digest": "8e0010e0606346511d1553c503173ce8",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.10",
"size": 12003,
"upload_time": "2025-07-17T16:48:23",
"upload_time_iso_8601": "2025-07-17T16:48:23.698373Z",
"url": "https://files.pythonhosted.org/packages/ac/e6/840b3da173c0c1c9762d953850b347210825e013b3113a9c6d651bf41690/sharepointlib-0.0.13-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "cf2a12221cfc42ebffb82081396464f2f343e40c331279fe689e3cd8fc25ef03",
"md5": "31b52743b042cb3c849e2059a5ace4ed",
"sha256": "44f64c58fbcf2516168f95395d1a37f4489fa253bfa1ab40d3bf4394cf1f48f0"
},
"downloads": -1,
"filename": "sharepointlib-0.0.13.tar.gz",
"has_sig": false,
"md5_digest": "31b52743b042cb3c849e2059a5ace4ed",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.10",
"size": 13345,
"upload_time": "2025-07-17T16:48:25",
"upload_time_iso_8601": "2025-07-17T16:48:25.169994Z",
"url": "https://files.pythonhosted.org/packages/cf/2a/12221cfc42ebffb82081396464f2f343e40c331279fe689e3cd8fc25ef03/sharepointlib-0.0.13.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-07-17 16:48:25",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "aghuttun",
"github_project": "sharepointlib",
"travis_ci": false,
"coveralls": false,
"github_actions": false,
"lcname": "sharepointlib"
}