You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
The reason will be displayed to describe this comment to others. Learn more.
SonarQube Report
SonarQube report for Airbyte Connectors Source Facebook Marketing(#11446)
Measures
Name
Value
Name
Value
Name
Value
Duplicated Blocks
0
Coverage
90.6
Lines to Cover
840
Code Smells
94
Lines of Code
1183
Reliability Rating
A
Security Rating
A
Quality Gate Status
OK
Bugs
0
Vulnerabilities
0
Duplicated Lines (%)
0.0
Blocker Issues
0
Critical Issues
0
Major Issues
1
Minor Issues
93
Detected Issues
Rule
File
Description
Message
python:mypy_attr_defined (MINOR)
source_facebook_marketing/source.py:83
Check that attribute exists
"Mapping[str, Any]" has no attribute "custom_insights" . Code line: ... return self._update_insights_streams(insights=config.custom_insight...
python:mypy_arg_type (MINOR)
source_facebook_marketing/source.py:117
Check argument types in calls
Argument 1 to "set" has incompatible type "Optional[List[ValidFields]]"; expected "Iterable[ValidFields]" . Code line: fields=list(set(insight.fields)),
python:mypy_arg_type (MINOR)
source_facebook_marketing/source.py:117
Check argument types in calls
Argument 1 to "set" has incompatible type "Optional[List[ValidFields]]"; expected "Iterable[Any]" . Code line: fields=list(set(insight.fields)),
python:mypy_arg_type (MINOR)
source_facebook_marketing/source.py:118
Check argument types in calls
Argument 1 to "set" has incompatible type "Optional[List[ValidBreakdowns]]"; expected "Iterable[ValidBreakdowns]" . Code line: breakdowns=list(set(insight.breakdowns)),
python:mypy_arg_type (MINOR)
source_facebook_marketing/source.py:118
Check argument types in calls
Argument 1 to "set" has incompatible type "Optional[List[ValidBreakdowns]]"; expected "Iterable[Any]" . Code line: breakdowns=list(set(insight.breakdowns)),
python:mypy_arg_type (MINOR)
source_facebook_marketing/source.py:119
Check argument types in calls
Argument 1 to "set" has incompatible type "Optional[List[ValidActionBreakdowns]]"; expected "Iterable[ValidActionBreakdowns]" . Code line: action_breakdowns=list(set(insight.action_breakdowns))...
python:mypy_arg_type (MINOR)
source_facebook_marketing/source.py:119
Check argument types in calls
Argument 1 to "set" has incompatible type "Optional[List[ValidActionBreakdowns]]"; expected "Iterable[Any]" . Code line: action_breakdowns=list(set(insight.action_breakdowns))...
python:mypy_attr_defined (MINOR)
streams/base_streams.py:246
Check that attribute exists
Module has no attribute "parse" . Code line: record_cursor_value = pendulum.parse(record[self.cursor_fi...
python:mypy_attr_defined (MINOR)
source_facebook_marketing/source.py:80
Check that attribute exists
"Mapping[str, Any]" has no attribute "start_date" . Code line: Activities(api=api, start_date=config.start_date, end_date...
python:mypy_attr_defined (MINOR)
source_facebook_marketing/source.py:80
Check that attribute exists
"Mapping[str, Any]" has no attribute "end_date" . Code line: ...(api=api, start_date=config.start_date, end_date=config.end_date, incl...
python:mypy_attr_defined (MINOR)
source_facebook_marketing/source.py:80
Check that attribute exists
"Mapping[str, Any]" has no attribute "include_deleted" . Code line: ..._date, end_date=config.end_date, include_deleted=config.include_delete...
python:mypy_assignment (MINOR)
streams/streams.py:101
Check that assigned value is compatible with target
Incompatible types in assignment (expression has type "str", base class "FBMarketingStream" defined the type as "None") . Code line: entity_prefix = "activity"
python:mypy_assignment (MINOR)
streams/streams.py:103
Check that assigned value is compatible with target
Incompatible types in assignment (expression has type "None", base class "FBMarketingStream" defined the type as "str") . Code line: primary_key = None
python:mypy_override (MINOR)
streams/streams.py:105
Check that method override is compatible with base class
Signature of "list_objects" incompatible with supertype "FBMarketingStream" . Code line: def list_objects(self, fields: List[str], params: Mapping[str, Any...
python:mypy_no_any_return (MINOR)
streams/streams.py:106
Reject returning value with "Any" type if return type is not "Any"
Returning Any from function declared to return "Iterable[Any]" . Code line: return self._api.account.get_activities(fields=fields, params=...
python:mypy_arg_type (MINOR)
streams/streams.py:116
Check argument types in calls
Argument "stream_state" to "request_params" of "FBMarketingIncrementalStream" has incompatible type "Optional[Mapping[str, Any]]"; expected "Mapping[str, Any]" . Code line: ...ds=self.fields, params=self.request_params(stream_state=stream_state))
python:mypy_attr_defined (MINOR)
streams/streams.py:127
Check that attribute exists
Module has no attribute "parse" . Code line: ...since = self.start_date if not state_value else pendulum.parse(state...
python:mypy_no_redef (MINOR)
streams/base_streams.py:76
Check that each name is defined once
Name "api_batch" already defined on line 69 . Code line: api_batch: FacebookAdsApiBatch = self._api.api.new_bat...
python:mypy_attr_defined (MINOR)
source_facebook_marketing/source.py:44
Check that attribute exists
"Mapping[str, Any]" has no attribute "end_date" . Code line: if pendulum.instance(config.end_date) < pendulum.instance(conf...
python:mypy_attr_defined (MINOR)
source_facebook_marketing/source.py:44
Check that attribute exists
"Mapping[str, Any]" has no attribute "start_date" . Code line: ...ulum.instance(config.end_date) < pendulum.instance(config.start_date):
python:mypy_no_redef (MINOR)
source_facebook_marketing/source.py:57
Check that each name is defined once
Name "config" already defined on line 51 . Code line: config: ConnectorConfig = ConnectorConfig.parse_obj(config)
python:mypy_attr_defined (MINOR)
source_facebook_marketing/source.py:77
Check that attribute exists
"Mapping[str, Any]" has no attribute "start_date" . Code line: Campaigns(api=api, start_date=config.start_date, end_date=...
python:mypy_attr_defined (MINOR)
source_facebook_marketing/source.py:77
Check that attribute exists
"Mapping[str, Any]" has no attribute "end_date" . Code line: ...(api=api, start_date=config.start_date, end_date=config.end_date, incl...
python:mypy_attr_defined (MINOR)
source_facebook_marketing/source.py:77
Check that attribute exists
"Mapping[str, Any]" has no attribute "include_deleted" . Code line: ..._date, end_date=config.end_date, include_deleted=config.include_delete...
python:mypy_attr_defined (MINOR)
source_facebook_marketing/source.py:79
Check that attribute exists
"Mapping[str, Any]" has no attribute "start_date" . Code line: Videos(api=api, start_date=config.start_date, end_date=con...
python:mypy_attr_defined (MINOR)
source_facebook_marketing/source.py:79
Check that attribute exists
"Mapping[str, Any]" has no attribute "end_date" . Code line: ...(api=api, start_date=config.start_date, end_date=config.end_date, incl...
python:mypy_attr_defined (MINOR)
source_facebook_marketing/source.py:79
Check that attribute exists
"Mapping[str, Any]" has no attribute "include_deleted" . Code line: ..._date, end_date=config.end_date, include_deleted=config.include_delete...
python:mypy_misc (MINOR)
source_facebook_marketing/spec.py:18
Miscellaneous other checks
Enum() expects a string, tuple, list or dict literal as the second argument . Code line: ValidFields = Enum("ValidEnums", AdsInsights.Field.dict)
python:mypy_misc (MINOR)
source_facebook_marketing/spec.py:19
Miscellaneous other checks
Enum() expects a string, tuple, list or dict literal as the second argument . Code line: ValidBreakdowns = Enum("ValidBreakdowns", AdsInsights.Breakdowns.__dic...
python:mypy_name_defined (MINOR)
source_facebook_marketing/spec.py:20
Check that name is defined
Enum() expects a string, tuple, list or dict literal as the second argument [misc] ValidActionBreakdowns = Enum("ValidActionBreakdowns", AdsInsights.Acti...
python:mypy_attr_defined (MINOR)
streams/init.py:5
Check that attribute exists
Module "source_facebook_marketing.streams.streams" does not explicitly export attribute "AdsInsights"; implicit reexport disabled . Code line: from .streams import (
python:mypy_arg_type (MINOR)
streams/async_job.py:149
Check argument types in calls
Argument "jobs" to "update_in_batch" has incompatible type "List[InsightAsyncJob]"; expected "List[AsyncJob]" . Code line: update_in_batch(api=self._api, jobs=self._jobs)
python:mypy_return_value (MINOR)
streams/async_job.py:236
Check that return value is compatible with signature
Incompatible return value type (got "List[InsightAsyncJob]", expected "List[AsyncJob]") . Code line: return jobs
python:mypy_unreachable (MINOR)
streams/async_job.py:266
Warn about unreachable statements or expressions
Statement is unreachable . Code line: end_time = self._finish_time or pendulum.now()
python:mypy_index (MINOR)
streams/async_job.py:315
Check indexing operations
Value of type "Optional[Any]" is not indexable . Code line: job_status = self._job["async_status"]
python:mypy_index (MINOR)
streams/async_job.py:316
Check indexing operations
Value of type "Optional[Any]" is not indexable . Code line: percent = self._job["async_percent_completion"]
python:mypy_operator (MINOR)
streams/async_job.py:319
Check that operator is valid for operands
Unsupported operand types for < ("Duration" and "None") . Code line: if self.elapsed_time > self.job_timeout:
python:mypy_assignment (MINOR)
streams/async_job.py:321
Check that assigned value is compatible with target
Incompatible types in assignment (expression has type "DateTime", variable has type "None") . Code line: self._finish_time = pendulum.now()
python:mypy_assignment (MINOR)
streams/async_job.py:325
Check that assigned value is compatible with target
Incompatible types in assignment (expression has type "DateTime", variable has type "None") . Code line: self._finish_time = pendulum.now() # TODO: is not actual ...
python:mypy_assignment (MINOR)
streams/async_job.py:328
Check that assigned value is compatible with target
Incompatible types in assignment (expression has type "DateTime", variable has type "None") . Code line: self._finish_time = pendulum.now()
python:mypy_attr_defined (MINOR)
streams/async_job.py:330
Check that attribute exists
"None" has no attribute "in_seconds" . Code line: ...er.info(f"{self}: has status {job_status} after {self.elapsed_time.in_...
python:mypy_var_annotated (MINOR)
streams/async_job_manager.py:43
Require variable annotation if type can't be inferred
Need type annotation for "_running_jobs" (hint: "_running_jobs: List[] = ...") . Code line: self._running_jobs = []
python:mypy_no_any_return (MINOR)
streams/async_job_manager.py:136
Reject returning value with "Any" type if return type is not "Any"
Returning Any from function declared to return "float" . Code line: return min(throttle.per_account, throttle.per_application)
python:mypy_name_defined (MINOR)
streams/base_insight_streams.py:58
Check that name is defined
Need type annotation for "breakdowns" (hint: "breakdowns: List[] = ...") [var-annotated] breakdowns = []
python:mypy_var_annotated (MINOR)
streams/base_insight_streams.py:81
Require variable annotation if type can't be inferred
Need type annotation for "_completed_slices" (hint: "_completed_slices: Set[] = ...") . Code line: self._completed_slices = set()
python:mypy_no_any_return (MINOR)
streams/base_insight_streams.py:87
Reject returning value with "Any" type if return type is not "Any"
Returning Any from function declared to return "str" . Code line: return casing.camel_to_snake(name)
python:mypy_override (MINOR)
streams/base_insight_streams.py:90
Check that method override is compatible with base class
Signature of "primary_key" incompatible with supertype "FBMarketingStream" . Code line: def primary_key(self) -> Optional[Union[str, List[str], List[List[...
python:mypy_index (MINOR)
streams/base_insight_streams.py:105
Check indexing operations
Value of type "Optional[Mapping[str, Any]]" is not indexable . Code line: job = stream_slice["insight_job"]
python:mypy_attr_defined (MINOR)
streams/base_insight_streams.py:141
Check that attribute exists
Module has no attribute "parse" . Code line: self._cursor_value = pendulum.parse(value[self.cursor_field])....
python:mypy_attr_defined (MINOR)
streams/base_insight_streams.py:142
Check that attribute exists
Module has no attribute "parse" . Code line: self._completed_slices = set(pendulum.parse(v).date() for v in...
python:mypy_attr_defined (MINOR)
streams/base_insight_streams.py:180
Check that attribute exists
Module has no attribute "Period"; maybe "period"? . Code line: interval = pendulum.Period(ts_start, ts_end)
python:mypy_name_defined (MINOR)
streams/base_insight_streams.py:200
Check that name is defined
Incompatible types in assignment (expression has type "Mapping[str, Any]", variable has type "MutableMapping[str, Any]") [assignment] self.state = stream_state
python:mypy_override (MINOR)
streams/base_insight_streams.py:240
Check that method override is compatible with base class
Signature of "request_params" incompatible with supertype "FBMarketingIncrementalStream" . Code line: def request_params(self, **kwargs) -> MutableMapping[str, Any]:
python:mypy_no_any_return (MINOR)
streams/base_insight_streams.py:265
Reject returning value with "Any" type if return type is not "Any"
Returning Any from function declared to return "Mapping[str, Any]" . Code line: return schema
python:mypy_assignment (MINOR)
streams/base_streams.py:92
Check that assigned value is compatible with target
Incompatible types in assignment (expression has type "Iterable[MutableMapping[str, Any]]", variable has type "Generator[Any, None, None]") . Code line: loaded_records_iter = self.execute_in_batch(loaded_records...
python:mypy_attr_defined (MINOR)
streams/base_streams.py:161
Check that attribute exists
Module has no attribute "parse" . Code line: max_cursor = max(pendulum.parse(state_value), pendulum.parse(r...
python:mypy_override (MINOR)
streams/base_streams.py:170
Check that method override is compatible with base class
Signature of "request_params" incompatible with supertype "FBMarketingStream" . Code line: def request_params(self, stream_state: Mapping[str, Any], **kwargs...
python:mypy_attr_defined (MINOR)
streams/base_streams.py:179
Check that attribute exists
Module has no attribute "parse" . Code line: ...value = self.start_date if not state_value else pendulum.parse(state...
python:mypy_attr_defined (MINOR)
streams/base_streams.py:225
Check that attribute exists
Module has no attribute "parse" . Code line: self._cursor_value = pendulum.parse(value[self.cursor_field])
python:mypy_arg_type (MINOR)
streams/base_streams.py:244
Check argument types in calls
Argument "stream_state" to "request_params" of "FBMarketingIncrementalStream" has incompatible type "Optional[Mapping[str, Any]]"; expected "Mapping[str, Any]" . Code line: ...lf.list_objects(params=self.request_params(stream_state=stream_state))
python:mypy_import (MINOR)
streams/streams.py:10
Require that imported module can be found or has stubs
Library stubs not installed for "requests" (or incompatible with Python 3.7) . Code line: import requests
python:mypy_assignment (MINOR)
streams/streams.py:42
Check that assigned value is compatible with target
Incompatible types in assignment (expression has type "str", base class "FBMarketingStream" defined the type as "None") . Code line: entity_prefix = "adcreative"
Argument 1 to "fetch_thumbnail_data_url" has incompatible type "Optional[Any]"; expected "str" . Code line: ..."thumbnail_data_url"] = fetch_thumbnail_data_url(record.get("thumbnail...
python:mypy_no_any_return (MINOR)
streams/streams.py:68
Reject returning value with "Any" type if return type is not "Any"
Returning Any from function declared to return "Iterable[Any]" . Code line: return self._api.account.get_ad_creatives(params=params)
python:mypy_assignment (MINOR)
streams/streams.py:74
Check that assigned value is compatible with target
Incompatible types in assignment (expression has type "str", base class "FBMarketingStream" defined the type as "None") . Code line: entity_prefix = "ad"
python:mypy_no_any_return (MINOR)
streams/streams.py:77
Reject returning value with "Any" type if return type is not "Any"
Returning Any from function declared to return "Iterable[Any]" . Code line: return self._api.account.get_ads(params=params)
python:mypy_assignment (MINOR)
streams/streams.py:83
Check that assigned value is compatible with target
Incompatible types in assignment (expression has type "str", base class "FBMarketingStream" defined the type as "None") . Code line: entity_prefix = "adset"
python:mypy_no_any_return (MINOR)
streams/streams.py:86
Reject returning value with "Any" type if return type is not "Any"
Returning Any from function declared to return "Iterable[Any]" . Code line: return self._api.account.get_ad_sets(params=params)
python:mypy_assignment (MINOR)
streams/streams.py:92
Check that assigned value is compatible with target
Incompatible types in assignment (expression has type "str", base class "FBMarketingStream" defined the type as "None") . Code line: entity_prefix = "campaign"
python:mypy_no_any_return (MINOR)
streams/streams.py:95
Reject returning value with "Any" type if return type is not "Any"
Returning Any from function declared to return "Iterable[Any]" . Code line: return self._api.account.get_campaigns(params=params)
python:mypy_assignment (MINOR)
streams/streams.py:140
Check that assigned value is compatible with target
Incompatible types in assignment (expression has type "str", base class "FBMarketingStream" defined the type as "None") . Code line: entity_prefix = "video"
python:mypy_no_any_return (MINOR)
streams/streams.py:143
Reject returning value with "Any" type if return type is not "Any"
Returning Any from function declared to return "Iterable[Any]" . Code line: return self._api.account.get_ad_videos(params=params)
python:mypy_no_any_return (MINOR)
streams/streams.py:161
Reject returning value with "Any" type if return type is not "Any"
Returning Any from function declared to return "Iterable[Any]" . Code line: return self._api.account.get_ad_images(params=params, fields=s...
python:mypy_var_annotated (MINOR)
streams/streams.py:188
Require variable annotation if type can't be inferred
Need type annotation for "breakdowns" (hint: "breakdowns: List[] = ...") . Code line: breakdowns = []
python:mypy_attr_defined (MINOR)
source_facebook_marketing/source.py:78
Check that attribute exists
"Mapping[str, Any]" has no attribute "start_date" . Code line: Images(api=api, start_date=config.start_date, end_date=con...
python:mypy_attr_defined (MINOR)
source_facebook_marketing/source.py:78
Check that attribute exists
"Mapping[str, Any]" has no attribute "end_date" . Code line: ...(api=api, start_date=config.start_date, end_date=config.end_date, incl...
python:mypy_attr_defined (MINOR)
source_facebook_marketing/source.py:78
Check that attribute exists
"Mapping[str, Any]" has no attribute "include_deleted" . Code line: ..._date, end_date=config.end_date, include_deleted=config.include_delete...
python:mypy_attr_defined (MINOR)
source_facebook_marketing/source.py:69
Check that attribute exists
"Mapping[str, Any]" has no attribute "fetch_thumbnail_images" . Code line: ... AdCreatives(api=api, fetch_thumbnail_images=config.fetch_thumbnai...
python:mypy_no_any_return (MINOR)
source_facebook_marketing/source.py:109
Reject returning value with "Any" type if return type is not "Any"
Returning Any from function declared to return "List[Type[Any]]" . Code line: return streams
python:mypy_no_any_return (MINOR)
source_facebook_marketing/source.py:127
Reject returning value with "Any" type if return type is not "Any"
Returning Any from function declared to return "List[Type[Any]]" . Code line: return streams + insights_custom_streams
python:mypy_attr_defined (MINOR)
source_facebook_marketing/source.py:63
Check that attribute exists
"Mapping[str, Any]" has no attribute "end_date" . Code line: end_date=config.end_date,
python:mypy_attr_defined (MINOR)
source_facebook_marketing/source.py:67
Check that attribute exists
"Mapping[str, Any]" has no attribute "start_date" . Code line: AdSets(api=api, start_date=config.start_date, end_date=con...
python:mypy_attr_defined (MINOR)
source_facebook_marketing/source.py:67
Check that attribute exists
"Mapping[str, Any]" has no attribute "end_date" . Code line: ...(api=api, start_date=config.start_date, end_date=config.end_date, incl...
python:mypy_attr_defined (MINOR)
source_facebook_marketing/source.py:67
Check that attribute exists
"Mapping[str, Any]" has no attribute "include_deleted" . Code line: ..._date, end_date=config.end_date, include_deleted=config.include_delete...
python:mypy_attr_defined (MINOR)
source_facebook_marketing/source.py:68
Check that attribute exists
"Mapping[str, Any]" has no attribute "end_date" . Code line: ...(api=api, start_date=config.start_date, end_date=config.end_date, incl...
python:mypy_attr_defined (MINOR)
source_facebook_marketing/source.py:68
Check that attribute exists
"Mapping[str, Any]" has no attribute "start_date" . Code line: Ads(api=api, start_date=config.start_date, end_date=config...
python:mypy_attr_defined (MINOR)
source_facebook_marketing/source.py:68
Check that attribute exists
"Mapping[str, Any]" has no attribute "include_deleted" . Code line: ..._date, end_date=config.end_date, include_deleted=config.include_delete...
c369ff9
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
SonarQube Report
SonarQube report for Airbyte Connectors Source Facebook Marketing(#11446)
Measures
Detected Issues
Coverage (90.6%)