Skip to content

Commit 8cd389c

Browse files
authored
Merge pull request #50 from brightdata/fix/ruff-import-sort
chore: fix ruff import-sort lint drift on main
2 parents b9331b7 + fe37a91 commit 8cd389c

104 files changed

Lines changed: 493 additions & 474 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

‎CHANGELOG.md‎

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,9 @@
11
# Bright Data Python SDK Changelog
22

3+
## Version 2.5.1 - Lint cleanup
4+
5+
- **Chore**: pinned an explicit `ruff` lint rule scope (`select`) and sorted imports repo-wide. No behavior changes.
6+
37
## Version 2.5.0 - CLI-credentials auth + scraper-core dedup
48

59
- **CLI-credentials auth fallback**: one `brightdata login` now authenticates the SDK too. With no token given, `BrightDataClient()` / `SyncBrightDataClient()` fall back to the token already saved by the Bright Data CLI. Resolution order: `token=` parameter → `BRIGHTDATA_API_TOKEN` / `BRIGHTDATA_API_KEY` env vars → CLI login → actionable error mentioning `brightdata login`.

‎pyproject.toml‎

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ where = ["src"]
77

88
[project]
99
name = "brightdata-sdk"
10-
version = "2.5.0"
10+
version = "2.5.1"
1111
description = "Modern async-first Python SDK for Bright Data APIs"
1212
authors = [{name = "Bright Data", email = "support@brightdata.com"}]
1313
license = {text = "MIT"}
@@ -60,6 +60,12 @@ exclude = [
6060
]
6161

6262
[tool.ruff.lint]
63+
# Pyflakes + pycodestyle errors + isort (import sorting). Explicit, so newer
64+
# ruff releases that broaden the "no select" default (e.g. datetimez, simplify,
65+
# pyupgrade, bugbear) don't silently start failing CI with unrelated findings,
66+
# and don't get auto-"fixed" into rewrites (e.g. Optional[X] -> X | None) that
67+
# were never asked for.
68+
select = ["E4", "E7", "E9", "F", "I"]
6369
ignore = [
6470
"E402", # Module level import not at top of file (common in notebooks/scripts)
6571
"F841", # Local variable assigned but never used (common in tests)

‎src/brightdata/__init__.py‎

Lines changed: 43 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
"""Bright Data Python SDK - Modern async-first SDK for Bright Data APIs."""
22

3-
from importlib.metadata import version, PackageNotFoundError
3+
from importlib.metadata import PackageNotFoundError, version
44

55
try:
66
__version__ = version("brightdata-sdk")
@@ -9,79 +9,79 @@
99
__version__ = "0.0.0.dev"
1010

1111
# Export main client (async)
12+
from .browser.service import BrowserService
1213
from .client import BrightDataClient
14+
from .core.zone_manager import ZoneManager
1315

14-
# Export sync client adapter
15-
from .sync_client import SyncBrightDataClient
16+
# Export Discover API models
17+
from .discover.models import DiscoverJob, DiscoverResult, DiscoverSnapshot
18+
19+
# Export exceptions
20+
from .exceptions import (
21+
APIError,
22+
AuthenticationError,
23+
BrightDataError,
24+
NetworkError,
25+
SSLError,
26+
ValidationError,
27+
ZoneError,
28+
)
1629

1730
# Export result models
1831
from .models import (
1932
BaseResult,
20-
ScrapeResult,
21-
SearchResult,
2233
CrawlResult,
2334
Result,
35+
ScrapeResult,
36+
SearchResult,
2437
)
2538

26-
# Export job model for manual trigger/poll/fetch
27-
from .scrapers.job import ScrapeJob
28-
29-
# Export Discover API models
30-
from .discover.models import DiscoverResult, DiscoverJob, DiscoverSnapshot
31-
3239
# Export payload models (dataclasses)
3340
from .payloads import (
34-
# Base
35-
BasePayload,
36-
URLPayload,
3741
# Amazon
3842
AmazonProductPayload,
3943
AmazonReviewPayload,
4044
AmazonSellerPayload,
41-
# LinkedIn
42-
LinkedInProfilePayload,
43-
LinkedInJobPayload,
44-
LinkedInCompanyPayload,
45-
LinkedInPostPayload,
46-
LinkedInProfileSearchPayload,
47-
LinkedInJobSearchPayload,
48-
LinkedInPostSearchPayload,
45+
# Base
46+
BasePayload,
4947
# ChatGPT
5048
ChatGPTPromptPayload,
49+
FacebookCommentsPayload,
50+
FacebookPostPayload,
51+
FacebookPostsGroupPayload,
5152
# Facebook
5253
FacebookPostsProfilePayload,
53-
FacebookPostsGroupPayload,
54-
FacebookPostPayload,
55-
FacebookCommentsPayload,
5654
FacebookReelsPayload,
55+
InstagramCommentPayload,
56+
InstagramPostPayload,
57+
InstagramPostsDiscoverPayload,
5758
# Instagram
5859
InstagramProfilePayload,
59-
InstagramPostPayload,
60-
InstagramCommentPayload,
6160
InstagramReelPayload,
62-
InstagramPostsDiscoverPayload,
6361
InstagramReelsDiscoverPayload,
64-
)
65-
66-
# Export exceptions
67-
from .exceptions import (
68-
BrightDataError,
69-
ValidationError,
70-
AuthenticationError,
71-
APIError,
72-
ZoneError,
73-
NetworkError,
74-
SSLError,
62+
LinkedInCompanyPayload,
63+
LinkedInJobPayload,
64+
LinkedInJobSearchPayload,
65+
LinkedInPostPayload,
66+
LinkedInPostSearchPayload,
67+
# LinkedIn
68+
LinkedInProfilePayload,
69+
LinkedInProfileSearchPayload,
70+
URLPayload,
7571
)
7672

7773
# Export Scraper Studio models
78-
from .scraper_studio.models import ScraperStudioJob, JobStatus
74+
from .scraper_studio.models import JobStatus, ScraperStudioJob
75+
from .scraper_studio.service import ScraperStudioService
76+
77+
# Export job model for manual trigger/poll/fetch
78+
from .scrapers.job import ScrapeJob
79+
80+
# Export sync client adapter
81+
from .sync_client import SyncBrightDataClient
7982

8083
# Export services for advanced usage
8184
from .web_unlocker.service import WebUnlockerService
82-
from .scraper_studio.service import ScraperStudioService
83-
from .browser.service import BrowserService
84-
from .core.zone_manager import ZoneManager
8585

8686
__all__ = [
8787
"__version__",

‎src/brightdata/client.py‎

Lines changed: 13 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,11 @@
88
- Follow principle of least surprise - common patterns from other SDKs
99
"""
1010

11-
import os
1211
import asyncio
12+
import os
1313
import warnings
14-
from typing import Optional, Dict, Any, Union, List
1514
from datetime import datetime, timezone
15+
from typing import Any, Dict, List, Optional, Union
1616

1717
try:
1818
from dotenv import load_dotenv
@@ -21,22 +21,23 @@
2121
except ImportError:
2222
pass
2323

24+
from http import HTTPStatus
25+
26+
from .browser.service import BrowserService
27+
from .cli_credentials import read_cli_credentials
2428
from .core.engine import AsyncEngine
2529
from .core.zone_manager import ZoneManager
26-
from .web_unlocker.service import WebUnlockerService
27-
from .scrapers.service import ScrapeService
28-
from .serp.service import SearchService
2930
from .crawler.service import CrawlerService
30-
from .scraper_studio.service import ScraperStudioService
31-
from .browser.service import BrowserService
32-
from .discover.service import DiscoverService
33-
from .discover.models import DiscoverResult, DiscoverJob
3431
from .datasets import DatasetsClient
32+
from .discover.models import DiscoverJob, DiscoverResult
33+
from .discover.service import DiscoverService
34+
from .exceptions import APIError, AuthenticationError, ValidationError
3535
from .models import ScrapeResult
36+
from .scraper_studio.service import ScraperStudioService
37+
from .scrapers.service import ScrapeService
38+
from .serp.service import SearchService
3639
from .types import AccountInfo
37-
from .cli_credentials import read_cli_credentials
38-
from http import HTTPStatus
39-
from .exceptions import ValidationError, AuthenticationError, APIError
40+
from .web_unlocker.service import WebUnlockerService
4041

4142

4243
class BrightDataClient:

‎src/brightdata/core/engine.py‎

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,16 @@
11
"""Async HTTP engine for Bright Data API operations."""
22

33
import asyncio
4-
import aiohttp
54
import ssl
65
import warnings
7-
from typing import Optional, Dict, Any
6+
from http import HTTPStatus
7+
from typing import Any, Dict, Optional
8+
9+
import aiohttp
10+
811
from .. import __version__
912
from ..exceptions import AuthenticationError, NetworkError, SSLError
10-
from http import HTTPStatus
11-
from ..utils.ssl_helpers import is_ssl_certificate_error, get_ssl_error_message
13+
from ..utils.ssl_helpers import get_ssl_error_message, is_ssl_certificate_error
1214

1315
# Rate limiting support
1416
try:

‎src/brightdata/core/zone_manager.py‎

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,12 @@
55

66
import asyncio
77
import logging
8-
import aiohttp
9-
from typing import List, Dict, Any, Optional, Tuple
108
from http import HTTPStatus
11-
from ..exceptions.errors import ZoneError, APIError, AuthenticationError
9+
from typing import Any, Dict, List, Optional, Tuple
10+
11+
import aiohttp
12+
13+
from ..exceptions.errors import APIError, AuthenticationError, ZoneError
1214

1315
logger = logging.getLogger(__name__)
1416

‎src/brightdata/crawler/service.py‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,12 +19,12 @@
1919
import json
2020
from datetime import datetime, timezone
2121
from http import HTTPStatus
22-
from typing import Any, Dict, List, Optional, TYPE_CHECKING, Union
22+
from typing import TYPE_CHECKING, Any, Dict, List, Optional, Union
2323

24-
from .models import CrawlJob, CrawlResult
2524
from ..exceptions import APIError, ValidationError
2625
from ..utils.function_detection import get_caller_function_name
2726
from ..utils.validation import validate_url, validate_url_list
27+
from .models import CrawlJob, CrawlResult
2828

2929
if TYPE_CHECKING:
3030
from ..client import BrightDataClient

0 commit comments

Comments
 (0)