diff --git a/.changes/unreleased/optimization-20251217-135023.yaml b/.changes/unreleased/optimization-20251217-135023.yaml new file mode 100644 index 00000000..55e41375 --- /dev/null +++ b/.changes/unreleased/optimization-20251217-135023.yaml @@ -0,0 +1,6 @@ +kind: optimization +body: Add python 3.13 support +time: 2025-12-17T13:50:23.175816263Z +custom: + Author: ayeshurun + AuthorLink: https://github.com/ayeshurun diff --git a/.changes/unreleased/optimization-20260101-115402.yaml b/.changes/unreleased/optimization-20260101-115402.yaml index ab87d2ba..553cb7a6 100644 --- a/.changes/unreleased/optimization-20260101-115402.yaml +++ b/.changes/unreleased/optimization-20260101-115402.yaml @@ -1,3 +1,6 @@ kind: optimization -body: set command - refactor the update flow to construct PATCH request bodies by extracting only the updated properties from the GET payload. +body: optimize the update flow in `set` command to construct PATCH request bodies by extracting only the updated properties from the GET payload time: 2026-01-01T11:54:02.344718831Z +custom: + Author: may-hartov + AuthorLink: https://github.com/may-hartov diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index 94552ce0..27f685df 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -3,7 +3,7 @@ { "name": "Python 3", // Or use a Dockerfile or Docker Compose file. More info: https://containers.dev/guide/dockerfile - "image": "mcr.microsoft.com/devcontainers/python:1-3.10-bullseye", + "image": "mcr.microsoft.com/devcontainers/python:1-3.12-bullseye", "features": { "ghcr.io/devcontainers/features/azure-cli:1": {}, "ghcr.io/devcontainers/features/node:1": {} diff --git a/.github/copilot-instructions.md b/.github/copilot-instructions.md index adc080f2..8d370edd 100644 --- a/.github/copilot-instructions.md +++ b/.github/copilot-instructions.md @@ -15,7 +15,7 @@ This file gives AI coding assistants the **ground truth** for this repository: w ## High-level architecture & code layout -- **Language & framework:** Python 3.10-3.12 with `argparse` for command parsing. When adding commands, define prompts under the appropriate parser module and follow the parser conventions. +- **Language & framework:** Python 3.10-3.13 with `argparse` for command parsing. When adding commands, define prompts under the appropriate parser module and follow the parser conventions. - **Representative paths in the codebase:** - Commands: `src/fabric_cli/commands/...` - Core utils/UI: `src/fabric_cli/utils/...` @@ -147,7 +147,7 @@ fab get ws1.Workspace/.sparkpools/.SparkPool ## Limitations -- Python supported version are 3.10, 3.11 and 3.12 (>=3.13 not supported per releases). +- Python supported version are 3.10, 3.11, 3.12 and 3.13 (>3.13 not supported per releases). - Supported platforms are: Windows, Linux and MacOS. - Supported shells are: zsh, bash, PowerShell and cmd (command prompt in Windows). diff --git a/.github/workflows/fab-build.yml b/.github/workflows/fab-build.yml index e24452cd..9f2fbcbb 100644 --- a/.github/workflows/fab-build.yml +++ b/.github/workflows/fab-build.yml @@ -79,6 +79,8 @@ jobs: tox-env: "py311" - python-version: "3.12" tox-env: "py312" + - python-version: "3.13" + tox-env: "py313" steps: - uses: actions/checkout@v3 diff --git a/.gitignore b/.gitignore index 17d1911d..1fc5ba85 100644 --- a/.gitignore +++ b/.gitignore @@ -208,3 +208,5 @@ cython_debug/ marimo/_static/ marimo/_lsp/ __marimo__/ + +devcontainer.local.json diff --git a/README.md b/README.md index c56080a1..d40cf088 100644 --- a/README.md +++ b/README.md @@ -56,7 +56,7 @@ Navigate Microsoft Fabric like your local file system with intuitive commands: ## 📦 Installation ### Prerequisites -- **Python 3.10, 3.11, or 3.12** +- **Python 3.10, 3.11, 3.12, or 3.13** - A **Microsoft Fabric** account with access to your tenant/workspaces. ### Install via pip diff --git a/pyproject.toml b/pyproject.toml index a80defbf..1994d431 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -10,18 +10,20 @@ authors = [ version="1.3.1" description="Command-line tool for Microsoft Fabric" readme="README.md" -requires-python=">=3.10,<3.13" +requires-python=">=3.10,<3.14" license="MIT" classifiers = [ "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.10", "Programming Language :: Python :: 3.11", "Programming Language :: Python :: 3.12", + "Programming Language :: Python :: 3.13", "Operating System :: OS Independent", ] dependencies = [ - "msal[broker]>=1.29,<2", + "msal[broker]>=1.34,<2 ; platform_system != 'Linux'", + "msal>=1.34,<2", "msal_extensions", "questionary", "prompt_toolkit>=3.0.41", diff --git a/requirements.txt b/requirements.txt index dc0b5043..7ef5d5e4 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,13 +1,13 @@ setuptools>=65.5.1 pip>=9.0.1 tox>=4.20.0 -urllib3<2.3.0,>=2.0.0 build prompt_toolkit requests cryptography questionary -msal[broker]>=1.29,<2 +msal>=1.34,<2 +msal[broker]>=1.34,<2 ; platform_system != "Linux" msal_extensions PyYAML jmespath diff --git a/tests/test_commands/api_processors/capacities_api_processor.py b/tests/test_commands/api_processors/capacities_api_processor.py index f7502c2b..93809d84 100644 --- a/tests/test_commands/api_processors/capacities_api_processor.py +++ b/tests/test_commands/api_processors/capacities_api_processor.py @@ -4,8 +4,6 @@ import json import re -from urllib3 import request - from tests.test_commands.api_processors.base_api_processor import BaseAPIProcessor from tests.test_commands.api_processors.utils import ( load_request_json_body, diff --git a/tox.toml b/tox.toml index a02fd7e3..8475d8f4 100644 --- a/tox.toml +++ b/tox.toml @@ -1,5 +1,5 @@ requires = ["tox>=4"] -env_list = ["lint", "type", "py310", "py311", "py312"] +env_list = ["lint", "type", "py310", "py311", "py312", "py313"] # Base testing environment [env_run_base] @@ -8,8 +8,7 @@ deps = [ "pytest>=8", "pytest-sugar", "pytest-cov", - "vcrpy", - "urllib3<2.3.0,>=2.0.0", + "vcrpy" ] commands = [ [ @@ -68,5 +67,5 @@ commands = [ # Black Configuration [tool.black] line-length = 88 -target-version = ['py310', 'py311', 'py312'] +target-version = ['py310', 'py311', 'py312', 'py313'] exclude = '/(\.git|\.tox|\.venv|_build|dist)/'