AI Slop Code RIsk Monitor

ranaroussi/yfinance

Download market data from Yahoo! Finance's API

37.4 High pattern signal View on GitHub

Maintenance and Governance Review

This report summarizes scanner evidence for ranaroussi/yfinance, a Python project with 25,485 GitHub stars. SynthScan examined 19,807 lines of code across 91 source files, recording 433 pattern matches distributed across 14 syntactic categories. The legacy adjusted pattern signal is 37.4 (High pattern signal); it is not an authorship estimate.

Use the findings to ask whether maintainers can explain intent, verify dependencies, simplify unnecessary scaffolding, and focus review effort. Risk Payload v1 adds ownership, supply-chain, over-engineering, and review-effort vectors when available. These are prompts for human verification, not probabilities, security findings, or measured maintenance costs.

37.4
Adjusted Signal
37.4
Raw Pattern Score
100%
Time Factor
2026-10-05
Last Push
25.5K
Stars
Python
Language
19.8K
Lines of Code
91
Files
433
Pattern Hits
2026-10-12
Scan Date
0.64
HC Hit Rate

Risk Review · v3

Use each vector to guide manual verification of the underlying findings.

Cognitive Ownership Risk 47.9/100 · MEDIUM

Can maintainers explain intent, assumptions, and trade-offs? 254 finding(s).

Hallucinated Dependency & Supply Chain Risk 52.4/100 · HIGH

Are imports declared and package/API names verified? 85 finding(s).

Agent Over-Engineering Ratio 60.9/100 · HIGH

Are wrappers, guards, and repeated structures necessary? 276 finding(s).

PR Review Velocity Impact 86.1/100 · CRITICAL

Which changes need focused human review? 433 finding(s).

What These Metrics Mean

Adjusted Signal
Legacy pattern score normalized per 1,000 scanned lines and multiplied by the repository-level time factor. It is not an estimate of AI authorship.
Raw Pattern Score
Sum of severity- and context-weighted pattern findings before applying the time factor.
Time Factor
A coarse multiplier based on repository last-push metadata. It does not identify when individual code was written.
Pattern Hits
Count of configured pattern findings. Review each location and surrounding code before acting.
HC Hit Rate
High- and critical-severity findings per scanned file. Severity is a configured detector weight, not proof of a vulnerability or authorship.
Lines / Files
Scan coverage denominators used by the legacy normalized score.

Pattern-Signal History

This chart tracks the legacy adjusted pattern score across scan runs. Changes can reflect source changes, scan coverage, or detector/scoring versions; they do not measure AI adoption or prove that a team refactored code. Compare runs only when their scoring versions are compatible. The dashed line tracks the raw pattern-hit count.

Severity Breakdown

Groups findings by configured severity weight. Severity is not a confidence estimate, security rating, or proof that a package is missing. Verify imports against the project's manifests and inspect each finding in its local design context.

CRITICAL 0HIGH 58MEDIUM 29LOW 346

Directory Score Breakdown

This horizontal bar chart shows where configured pattern scores accumulate across directories. Treat the bars as locations to inspect, not as evidence of authorship or code quality. Use the file-level findings to decide whether a directory needs a focused ownership, dependency, complexity, or review check.

Pattern Findings

The scanner identified 433 distinct pattern matches across 14 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a detector match to inspect in context. Expand any category row to inspect the individual file paths, line numbers, code snippets, and the lexical context (CODE, COMMENT, or STRING) in which each match was detected.

Reading the findings table: The Severity column indicates the configured finding weight (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — legacy comment-context matches receive a ×1.5 score weight. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier under the legacy scoring model.

Cross-Language Confusion49 hits · 259 pts
SeverityFileLineSnippetContext
HIGHtests/test_prices.py191 self.assertTrue(df_daily_divs.index.equals(df_intraday_divs.index))CODE
HIGHtests/test_prices.py218 self.assertTrue(df_daily_divs.index.equals(df_intraday_divs.index))CODE
HIGHtests/test_prices.py260 self.assertTrue(df1.index.equals(df2.index))CODE
HIGHtests/test_prices.py275 self.assertTrue(df1.index.equals(df2.index))CODE
HIGHtests/test_prices.py303 self.assertTrue(df1.index.equals(df2.index))CODE
HIGHtests/test_prices.py318 self.assertTrue(df1.index.equals(df2.index))CODE
HIGHtests/test_prices.py336 self.assertTrue(df1.index.equals(df2.index))CODE
HIGHtests/test_prices.py351 self.assertTrue(df1.index.equals(df2.index))CODE
HIGHtests/test_prices.py480 # Regression for #2670: when Yahoo returns {"chart": null},COMMENT
HIGH⚡tests/test_ticker.py951 self.assertTrue(i1.equals(i2))CODE
HIGH⚡tests/test_ticker.py953 self.assertTrue(i1.equals(i3))CODE
HIGH⚡tests/test_ticker.py957 self.assertTrue(i1.equals(i2))CODE
HIGH⚡tests/test_ticker.py959 self.assertTrue(i1.equals(i3))CODE
HIGH⚡tests/test_ticker.py963 self.assertTrue(i1.equals(i2))CODE
HIGH⚡tests/test_ticker.py965 self.assertTrue(i1.equals(i3))CODE
HIGH⚡tests/test_ticker.py969 self.assertTrue(i1.equals(i2))CODE
HIGH⚡tests/test_ticker.py971 self.assertTrue(i1.equals(i3))CODE
HIGH⚡tests/test_ticker.py975 self.assertTrue(i1.equals(i2))CODE
HIGH⚡tests/test_ticker.py977 self.assertTrue(i1.equals(i3))CODE
HIGH⚡tests/test_ticker.py981 self.assertTrue(i1.equals(i2))CODE
HIGH⚡tests/test_ticker.py983 self.assertTrue(i1.equals(i3))CODE
HIGH⚡tests/test_ticker.py988 self.assertTrue(i1.equals(i2))CODE
HIGH⚡tests/test_ticker.py992 self.assertTrue(i1.equals(i2))CODE
HIGH⚡tests/test_ticker.py996 self.assertTrue(i1.equals(i2))CODE
HIGH⚡tests/test_ticker.py1000 self.assertTrue(i1.equals(i2))CODE
HIGH⚡tests/test_ticker.py1005 self.assertTrue(i1.equals(i2))CODE
HIGH⚡tests/test_ticker.py1009 self.assertTrue(i1.equals(i2))CODE
HIGH⚡tests/test_ticker.py1013 self.assertTrue(i1.equals(i2))CODE
HIGH⚡tests/test_ticker.py1017 self.assertTrue(i1.equals(i2))CODE
HIGH⚡tests/test_ticker.py1021 self.assertTrue(i1.equals(i2))CODE
HIGH⚡tests/test_ticker.py1025 self.assertTrue(i1.equals(i2))CODE
HIGH⚡tests/test_ticker.py1239 '{"timeseries": {"error": null, "result": [{"trailingPegRatio": []}]}}',CODE
HIGH⚡tests/test_ticker.py1241 '{"timeseries": {"error": null, "result": [{"trailingPegRatio": [{}]}]}}',CODE
HIGH⚡tests/test_ticker.py1243 '{"timeseries": {"error": null, "result": [{"trailingPegRatio": [{"reportedValue": {}}]}]}}',CODE
HIGH⚡tests/test_ticker.py1245 '{"timeseries": {"error": null, "result": [{}]}}',CODE
HIGH⚡tests/test_ticker.py1279 '{"timeseries": {"error": null, "result": []}}',CODE
HIGH⚡tests/test_ticker.py1281 '{"timeseries": {"error": null}}',CODE
HIGH⚡tests/test_ticker.py1283 '{"timeseries": {"error": null, "result": null}}',CODE
HIGHtests/test_ticker.py610 self.assertTrue(data.equals(data2), "property not defaulting to 'pretty=True'")CODE
HIGHtests/test_ticker.py639 self.assertTrue(data.equals(data2), "property not defaulting to 'pretty=True'")CODE
HIGHtests/test_ticker.py667 self.assertTrue(data.equals(data2), "property not defaulting to 'pretty=True'")CODE
HIGHtests/test_ticker.py819 self.assertTrue(data.equals(data2), "property not defaulting to 'pretty=True'")CODE
HIGHtests/test_ticker.py848 self.assertTrue(data.equals(data2), "property not defaulting to 'pretty=True'")CODE
HIGHtests/test_ticker.py877 self.assertTrue(data.equals(data2), "property not defaulting to 'pretty=True'")CODE
HIGHtests/test_ticker.py906 self.assertTrue(data.equals(data2), "property not defaulting to 'pretty=True'")CODE
HIGHtests/test_ticker.py934 self.assertTrue(data.equals(data2), "property not defaulting to 'pretty=True'")CODE
HIGHtests/test_ticker.py1086 self.assertTrue(data.equals(data_summary))CODE
HIGHtests/test_ticker.py1258 payload = '{"timeseries": {"error": null, "result": [{"trailingPegRatio": [{"reportedValue": {"raw": 1.23}}]}]}}CODE
HIGHtests/test_ticker.py1298 payload = '{"timeseries": {"error": null, "result": [{"trailingPegRatio": [{"reportedValue": {"raw": 1.23}}]}]}}CODE
Hyper-Verbose Identifiers167 hits · 169 pts
SeverityFileLineSnippetContext
LOWyfinance/_http.py83def _supported_session_classes() -> tuple:CODE
LOW⚡yfinance/utils.py326def retrieve_financial_details(data):CODE
LOWyfinance/utils.py356def format_annual_financial_statement(level_detail, annual_dicts, annual_order, ttm_dicts=None, ttm_order=None):CODE
LOWyfinance/utils.py386def format_quarterly_financial_statement(_statement, level_detail, order):CODE
LOWyfinance/utils.py1047def _generate_table_configurations(title = None) -> str:CODE
LOWyfinance/utils.py1097def generate_list_table_from_dict_universal(data: dict, bullets: bool=True, title: str=None, concat_keys=[]) -> str:CODE
LOWyfinance/utils.py1062def generate_list_table_from_dict(data: dict, bullets: bool=True, title: str=None) -> str:STRING
LOWyfinance/utils.py1080# def generate_list_table_from_dict_of_dict(data: dict, bullets: bool=True, title: str=None) -> str:STRING
LOWyfinance/base.py220 def get_recommendations_summary(self, as_dict=False):CODE
LOWyfinance/base.py246 def get_institutional_holders(self, as_dict=False):CODE
LOWyfinance/base.py274 def get_insider_roster_holders(self, as_dict=False):CODE
LOWyfinance/base.py317 def get_analyst_price_targets(self) -> dict:CODE
LOWyfinance/base.py645 def _get_earnings_dates_using_scrape(self, limit = 12, offset = 0) -> Optional[pd.DataFrame]:CODE
LOWyfinance/base.py740 def _get_earnings_dates_using_screener(self, limit=12) -> Optional[pd.DataFrame]:CODE
LOWyfinance/data.py286 def _get_cookie_and_crumb_basic(self, timeout):CODE
LOWyfinance/calendars.py295 def _get_most_active_operands(CODE
LOWyfinance/calendars.py334 def _get_startdatetime_operators(self, start=None, end=None) -> CalendarQuery:CODE
LOWyfinance/calendars.py472 def get_economic_events_calendar(CODE
LOWyfinance/scrapers/holders.py110 def _parse_institution_ownership(self, data):CODE
LOWyfinance/scrapers/holders.py134 def _parse_major_direct_holders(self, data):CODE
LOWyfinance/scrapers/holders.py146 def _parse_major_holders_breakdown(self, data):CODE
LOWyfinance/scrapers/holders.py155 def _parse_insider_transactions(self, data):CODE
LOWyfinance/scrapers/holders.py209 def _parse_net_share_purchase_activity(self, data):CODE
LOWyfinance/scrapers/fundamentals.py57 def get_balance_sheet_time_series(self, freq="yearly") -> pd.DataFrame:CODE
LOWyfinance/scrapers/fundamentals.py63 def get_cash_flow_time_series(self, freq="yearly") -> pd.DataFrame:CODE
LOWyfinance/scrapers/fundamentals.py116 def _get_financials_time_series(self, timescale, keys: list) -> pd.DataFrame:CODE
LOWyfinance/scrapers/fundamentals.py187 def _fetch_fundamentals_chunked(self, ts_url_base: str, timescale: str, keys: list, period_qs: str) -> list:CODE
LOWyfinance/scrapers/fundamentals.py195 def _fetch_fundamentals_payload(self, url: str) -> list:CODE
LOWyfinance/scrapers/quote.py308 def regular_market_previous_close(self):CODE
LOWyfinance/scrapers/quote.py432 def three_month_average_volume(self):CODE
LOWyfinance/scrapers/quote.py739 def _fetch_valuation_measures(self, freq="quarterly"):CODE
LOWyfinance/scrapers/history.py663 def _load_history_metadata_trading_periods(self):CODE
LOWyfinance/scrapers/history.py808 def _reconstruct_intervals_batch(self, df, interval, prepost, tag=-1):CODE
LOWyfinance/scrapers/history.py3014 def _fix_prices_sudden_change(self, df, interval, tz_exchange, change, unit_switch=False, correct_volume=False, corrCODE
LOWyfinance/scrapers/history.py3365 def _calc_volume_zscore_weighted(volume, dt, block):CODE
LOWyfinance/domain/industry.py88 def _parse_top_performing_companies(self, top_performing_companies: Dict) -> Optional[_pd.DataFrame]:CODE
LOWyfinance/domain/industry.py110 def _parse_top_growth_companies(self, top_growth_companies: Dict) -> Optional[_pd.DataFrame]:CODE
LOWtests/test_download_concurrency.py22 def test_concurrent_downloads_keep_results_separate(self):CODE
LOWtests/test_download_concurrency.py37 def test_concurrent_downloads_do_not_raise(self):CODE
LOWtests/test_download_concurrency.py43 def test_download_does_not_use_module_globals(self):CODE
LOWtests/test_ticker_locale.py16 def test_default_locale_is_en_us(self):CODE
LOWtests/test_ticker_locale.py20 def test_default_returns_english(self):CODE
LOWtests/test_ticker_locale.py45 def test_locale_us_listing_not_translated(self):CODE
LOWtests/test_utils.py32 def test_mixed_timezones_to_datetime_fails(self):CODE
LOWtests/test_utils.py38 def test_mixed_timezones_to_datetime(self):CODE
LOW⚡tests/test_utils.py52 def test_is_valid_period_format_valid(self):CODE
LOW⚡tests/test_utils.py58 def test_is_valid_period_format_invalid(self):CODE
LOW⚡tests/test_utils.py65 def test_is_valid_period_format_edge_cases(self):CODE
LOWtests/test_utils.py114 def test_same_month_different_year(self):CODE
LOWtests/test_utils.py138 def test_nonstandard_quarters(self):CODE
LOWtests/test_utils.py190 def test_no_generic_timedelta_deprecation_warning(self):CODE
LOWtests/test_utils.py203 def test_interval_to_timedelta_values(self):CODE
LOWtests/test_utils.py226 def test_multiday_interval_does_not_raise(self):CODE
LOWtests/test_utils.py235 def test_multiday_interval_does_not_warn(self):CODE
LOWtests/test_screener.py16 def test_set_large_size_in_body(self, mock_post):CODE
LOWtests/test_screener.py38 def test_no_screener_field_is_two_fields_concatenated(self):CODE
LOW⚡tests/test_sector_region.py7 def test_default_region_is_us(self):CODE
LOW⚡tests/test_sector_region.py11 def test_region_is_normalized(self):CODE
LOW⚡tests/test_sector_region.py16 def test_us_and_gb_top_companies_differ(self):CODE
LOW⚡tests/test_sector_region.py25 def test_industry_region_propagates(self):CODE
107 more matches not shown…
Excessive Try-Catch Wrapping64 hits · 76 pts
SeverityFileLineSnippetContext
LOWyfinance/multi.py217 except Exception:CODE
LOWyfinance/multi.py298 except Exception as e:CODE
LOWyfinance/cache.py67 except Exception:CODE
LOWyfinance/cache.py262 except Exception:CODE
LOWyfinance/cache.py472 except Exception:CODE
MEDIUMyfinance/utils.py352 print(f"An error occurred while processing the key: {e}")CODE
LOWyfinance/live.py30 except Exception as e:CODE
LOWyfinance/live.py66 except Exception as e:CODE
LOWyfinance/live.py86 except Exception as e:CODE
MEDIUMyfinance/live.py91 print(f"Error in heartbeat subscription: {e}")CODE
LOWyfinance/live.py171 except Exception as handler_exception:CODE
MEDIUMyfinance/live.py176 print("Error in message handler:", handler_exception)CODE
LOWyfinance/live.py187 except Exception as e:CODE
MEDIUMyfinance/live.py192 print("Error while listening to messages: %s", e)CODE
LOWyfinance/live.py242 except Exception as e:CODE
LOW⚡yfinance/live.py314 except Exception as handler_exception:CODE
MEDIUM⚡yfinance/live.py319 print("Error in message handler:", handler_exception)CODE
LOW⚡yfinance/live.py329 except Exception as e:CODE
MEDIUM⚡yfinance/live.py334 print("Error while listening to messages: %s", e)CODE
MEDIUMyfinance/live.py59def _connect(self):CODE
MEDIUMyfinance/live.py235def _connect(self):CODE
LOWyfinance/base.py187 except Exception as e:CODE
LOWyfinance/base.py200 except Exception as err:CODE
LOWyfinance/base.py545 except Exception as e:CODE
LOWyfinance/data.py174 except Exception:CODE
LOWyfinance/data.py246 except Exception as e:CODE
LOWyfinance/data.py448 except Exception as e:CODE
LOWyfinance/data.py477 except Exception as e:CODE
LOWyfinance/data.py493 except Exception as e:CODE
LOWyfinance/data.py536 except Exception:CODE
LOWyfinance/data.py676 except Exception as e:CODE
LOWyfinance/scrapers/fundamentals.py106 except Exception:CODE
LOW⚡yfinance/scrapers/fundamentals.py138 except Exception as e:CODE
LOW⚡yfinance/scrapers/fundamentals.py146 except Exception:CODE
LOWyfinance/scrapers/quote.py157 except Exception:CODE
LOWyfinance/scrapers/quote.py486 except Exception as e:CODE
LOWyfinance/scrapers/quote.py766 except Exception as e:CODE
LOWyfinance/scrapers/quote.py825 except Exception as e:CODE
LOWyfinance/scrapers/funds.py196 except Exception as e:CODE
LOWyfinance/scrapers/history.py299 except Exception:CODE
LOWyfinance/scrapers/history.py312 except Exception:CODE
LOWyfinance/scrapers/history.py599 except Exception as e:CODE
LOWyfinance/scrapers/history.py681 except Exception:CODE
LOWyfinance/scrapers/history.py707 except Exception:CODE
LOWyfinance/scrapers/history.py1226 except Exception:CODE
LOWyfinance/domain/market.py91 except Exception as e:CODE
LOWyfinance/domain/market.py112 except Exception as e:CODE
LOWyfinance/domain/market.py125 except Exception as e:CODE
MEDIUMyfinance/domain/market.py29def __init__(self, market, session=None, timeout=30):CODE
LOWyfinance/domain/industry.py148 except Exception as e:CODE
LOWyfinance/domain/sector.py147 except Exception as e:CODE
LOWtests/test_ticker.py1175 except Exception as e:CODE
LOWtests/test_ticker.py1323 except Exception:CODE
LOWtests/test_ticker.py1454 except Exception as e:CODE
LOWtests/test_price_repair.py299 except Exception:CODE
LOWtests/test_price_repair.py344 except Exception:CODE
LOWtests/test_price_repair.py375 except Exception:CODE
LOWtests/test_price_repair.py410 except Exception:CODE
LOWtests/test_price_repair.py480 except Exception:CODE
LOWtests/test_price_repair.py668 except Exception:CODE
4 more matches not shown…
Decorative Section Separators18 hits · 66 pts
SeverityFileLineSnippetContext
MEDIUMyfinance/cache.py15# --------------COMMENT
MEDIUMyfinance/cache.py17# --------------COMMENT
MEDIUMyfinance/cache.py210# --------------COMMENT
MEDIUMyfinance/cache.py212# --------------COMMENT
MEDIUMyfinance/cache.py420# --------------COMMENT
MEDIUMyfinance/cache.py422# --------------COMMENT
MEDIUMyfinance/cache.py621# --------------COMMENT
MEDIUMyfinance/cache.py623# --------------COMMENT
MEDIUMyfinance/ticker.py107 # ------------------------COMMENT
MEDIUMyfinance/base.py131 # ------------------------COMMENT
MEDIUM⚡doc/source/reference/examples/live_async.py9 # =======================COMMENT
MEDIUM⚡doc/source/reference/examples/live_async.py11 # =======================COMMENT
MEDIUM⚡doc/source/reference/examples/live_async.py16 # =======================COMMENT
MEDIUM⚡doc/source/reference/examples/live_async.py18 # =======================COMMENT
MEDIUM⚡doc/source/reference/examples/live_sync.py7# =======================COMMENT
MEDIUM⚡doc/source/reference/examples/live_sync.py9# =======================COMMENT
MEDIUM⚡doc/source/reference/examples/live_sync.py14# =======================COMMENT
MEDIUM⚡doc/source/reference/examples/live_sync.py16# =======================COMMENT
Empty Error Handlers9 hits · 42 pts
SeverityFileLineSnippetContext
HIGHyfinance/_http.py88except ImportError:CODE
HIGHyfinance/_http.py93except ImportError:CODE
HIGHyfinance/cache.py67except Exception:CODE
HIGHyfinance/cache.py262except Exception:CODE
HIGHyfinance/cache.py472except Exception:CODE
HIGHyfinance/scrapers/history.py707except Exception:CODE
HIGHtests/test_auth.py151except ConnectionError:CODE
HIGHtests/test_cookie_crumb_degradation.py89except YFRateLimitError:CODE
HIGHtests/test_ticker.py1323except Exception:CODE
Unused Imports36 hits · 35 pts
SeverityFileLineSnippetContext
LOWyfinance/tickers.py22CODE
LOWyfinance/multi.py22CODE
LOWyfinance/__init__.py23CODE
LOWyfinance/__init__.py24CODE
LOWyfinance/__init__.py25CODE
LOWyfinance/__init__.py26CODE
LOWyfinance/__init__.py27CODE
LOWyfinance/__init__.py28CODE
LOWyfinance/__init__.py29CODE
LOWyfinance/__init__.py29CODE
LOWyfinance/__init__.py30CODE
LOWyfinance/__init__.py31CODE
LOWyfinance/__init__.py32CODE
LOWyfinance/__init__.py33CODE
LOWyfinance/__init__.py34CODE
LOWyfinance/__init__.py34CODE
LOWyfinance/__init__.py36CODE
LOWyfinance/__init__.py38CODE
LOWyfinance/__init__.py38CODE
LOWyfinance/__init__.py38CODE
LOWyfinance/__init__.py39CODE
LOWyfinance/__init__.py39CODE
LOWyfinance/utils.py22CODE
LOWyfinance/utils.py50CODE
LOWyfinance/ticker.py22CODE
LOWyfinance/base.py22CODE
LOWyfinance/calendars.py1CODE
LOWyfinance/screener/__init__.py1CODE
LOWyfinance/screener/__init__.py1CODE
LOWyfinance/screener/__init__.py1CODE
LOWyfinance/screener/__init__.py2CODE
LOWyfinance/screener/__init__.py2CODE
LOWyfinance/domain/__init__.py2CODE
LOWyfinance/domain/__init__.py3CODE
LOWyfinance/domain/industry.py1CODE
LOWyfinance/domain/sector.py1CODE
Deep Nesting38 hits · 34 pts
SeverityFileLineSnippetContext
LOWyfinance/multi.py125CODE
LOWyfinance/multi.py231CODE
LOWyfinance/utils.py326CODE
LOWyfinance/utils.py474CODE
LOWyfinance/utils.py659CODE
LOWyfinance/utils.py687CODE
LOWyfinance/utils.py775CODE
LOWyfinance/utils.py923CODE
LOWyfinance/utils.py1097CODE
LOWyfinance/live.py75CODE
LOWyfinance/live.py140CODE
LOWyfinance/live.py291CODE
LOWyfinance/base.py138CODE
LOWyfinance/base.py172CODE
LOWyfinance/const.py383CODE
LOWyfinance/screener/query.py16CODE
LOWyfinance/screener/screener.py64CODE
LOWyfinance/scrapers/analysis.py141CODE
LOWyfinance/scrapers/quote.py532CODE
LOWyfinance/scrapers/quote.py548CODE
LOWyfinance/scrapers/quote.py564CODE
LOWyfinance/scrapers/quote.py679CODE
LOWyfinance/scrapers/quote.py739CODE
LOWyfinance/scrapers/quote.py724CODE
LOWyfinance/scrapers/history.py105CODE
LOWyfinance/scrapers/history.py752CODE
LOWyfinance/scrapers/history.py808CODE
LOWyfinance/scrapers/history.py1255CODE
LOWyfinance/scrapers/history.py1303CODE
LOWyfinance/scrapers/history.py1458CODE
LOWyfinance/scrapers/history.py1754CODE
LOWyfinance/scrapers/history.py3014CODE
LOWtests/test_ticker.py153CODE
LOWtests/test_ticker.py311CODE
LOWtests/test_price_repair.py25CODE
LOWtests/test_price_repair.py263CODE
LOWtests/test_price_repair.py384CODE
LOWtests/test_price_repair.py457CODE
Over-Commented Block21 hits · 18 pts
SeverityFileLineSnippetContext
LOWyfinance/tickers.py1#!/usr/bin/env pythonCOMMENT
LOWyfinance/multi.py1#!/usr/bin/env pythonCOMMENT
LOWyfinance/lookup.py1#!/usr/bin/env pythonCOMMENT
LOWyfinance/__init__.py1#!/usr/bin/env pythonCOMMENT
LOWyfinance/shared.py1#!/usr/bin/env pythonCOMMENT
LOWyfinance/utils.py1#!/usr/bin/env pythonCOMMENT
LOWyfinance/utils.py1081# """COMMENT
LOWyfinance/search.py1#!/usr/bin/env pythonCOMMENT
LOWyfinance/ticker.py1#!/usr/bin/env pythonCOMMENT
LOWyfinance/base.py1#!/usr/bin/env pythonCOMMENT
LOWyfinance/scrapers/quote.py841 keys = {"trailingPegRatio"}COMMENT
LOWyfinance/scrapers/quote.py921 return NoneCOMMENT
LOWyfinance/scrapers/quote.py941 # if c.startswith('EX-'):COMMENT
LOWtests/test_ticker.py201 f"End date {df.index[-1]} out of range for period={period}")COMMENT
LOWtests/test_ticker.py461COMMENT
LOWtests/test_ticker.py1041 # dividend date is not available for tested ticker GOOGLCOMMENT
LOWtests/test_ticker.py1341 # key_rename_map["quote_type"] = "quoteType"COMMENT
LOWtests/test_ticker.py1361 # key_rename_map["market_cap"] = "marketCap"COMMENT
LOWtests/test_ticker.py1381 # custom_tolerances["two_hundred_day_average"] = 1e-2COMMENT
LOWtests/test_ticker.py1401 # if k in bad_keys:COMMENT
LOW.github/FUNDING.yml1# # These are supported funding model platformsCOMMENT
AI Structural Patterns15 hits · 15 pts
SeverityFileLineSnippetContext
LOWyfinance/tickers.py50CODE
LOWyfinance/tickers.py63CODE
LOWyfinance/multi.py55CODE
LOWyfinance/multi.py125CODE
LOWyfinance/multi.py260CODE
LOWyfinance/multi.py272CODE
LOWyfinance/search.py32CODE
LOWyfinance/base.py283CODE
LOWyfinance/base.py322CODE
LOWyfinance/data.py599CODE
LOWyfinance/screener/screener.py64CODE
LOWyfinance/scrapers/holders.py69CODE
LOWyfinance/scrapers/funds.py176CODE
LOWyfinance/scrapers/history.py105CODE
LOWyfinance/domain/domain.py127CODE
Redundant / Tautological Comments10 hits · 15 pts
SeverityFileLineSnippetContext
LOW⚡yfinance/utils.py316 if 'children' in node: # Check if the node has childrenCODE
LOW⚡yfinance/utils.py320 for key in data['template']: # Loop through the dataCODE
LOWyfinance/utils.py660 # Check if second date dt2 in interval starting at dt1COMMENT
LOWyfinance/scrapers/history.py1889 # Check if dividend is 100x market movement.COMMENT
LOWyfinance/scrapers/history.py2076 # Check if the present div-adjustment is too big/small, or missingCOMMENT
LOWyfinance/scrapers/history.py2094 # Check if adjustment too smallCOMMENT
LOWyfinance/scrapers/history.py2266 # Check if the present div-adjustment contradicts price actionCOMMENT
LOWyfinance/scrapers/history.py2529 # Check if div_too_big AND adj-too-small-for-pricesCOMMENT
LOWyfinance/scrapers/history.py3233 # Set threshold to halfway between split ratio and largest expected normal price changeCOMMENT
LOWtests/test_search.py25 # Check if the fuzzy search retrieves relevant results despite the typoCOMMENT
Modern Structural Boilerplate3 hits · 3 pts
SeverityFileLineSnippetContext
LOWyfinance/__init__.py47__all__ = ['download', 'Market', 'MarketRegion', 'Search', 'Lookup', 'Ticker', 'Tickers', 'enable_debug_mode', 'set_tz_cCODE
LOWyfinance/screener/__init__.py4__all__ = ['EquityQuery', 'FundQuery', 'ETFQuery', 'screen', 'PREDEFINED_SCREENER_QUERIES']CODE
LOWyfinance/domain/__init__.py5__all__ = ['Sector', 'Industry']CODE
Self-Referential Comments1 hit · 3 pts
SeverityFileLineSnippetContext
MEDIUMyfinance/base.py685 # Define the URLCOMMENT
Verbosity Indicators1 hit · 2 pts
SeverityFileLineSnippetContext
LOW⚡yfinance/scrapers/fundamentals.py154 # Step 1: get columns and index:COMMENT
Structural Annotation Overuse1 hit · 2 pts
SeverityFileLineSnippetContext
LOW⚡yfinance/scrapers/fundamentals.py154 # Step 1: get columns and index:COMMENT