SYMBOL INDEX (302 symbols across 38 files) FILE: contrib/generating_adblocker_filters.py function filter_domains (line 25) | def filter_domains(domains): function generate_adb_filters (line 35) | def generate_adb_filters(domains): function generate_hostname_filters (line 41) | def generate_hostname_filters(domains): FILE: deploy_to_s3.py function iterate_bucket (line 28) | def iterate_bucket(s3_client, bucket_name, bucket_prefix): function get_max_age (line 38) | def get_max_age(path, filename): function get_cache_control (line 57) | def get_cache_control(path, filename, production=False): function get_content_type (line 64) | def get_content_type(local_path): function upload_file_to_s3 (line 126) | def upload_file_to_s3(path, filename): FILE: static/js/bootstrap.js function transitionEnd (line 34) | function transitionEnd() { function removeElement (line 126) | function removeElement() { function Plugin (line 142) | function Plugin(option) { function Plugin (line 251) | function Plugin(option) { function Plugin (line 475) | function Plugin(option) { function getTargetFromTrigger (line 695) | function getTargetFromTrigger($trigger) { function Plugin (line 707) | function Plugin(option) { function getParent (line 774) | function getParent($this) { function clearMenus (line 787) | function clearMenus(e) { function Plugin (line 880) | function Plugin(option) { function Plugin (line 1208) | function Plugin(option, _relatedTarget) { function complete (line 1574) | function complete() { function Plugin (line 1750) | function Plugin(option) { function Plugin (line 1859) | function Plugin(option) { function ScrollSpy (line 1902) | function ScrollSpy(element, options) { function Plugin (line 2022) | function Plugin(option) { function next (line 2131) | function next() { function Plugin (line 2177) | function Plugin(option) { function Plugin (line 2334) | function Plugin(option) { FILE: static/js/d3.layout.cloud.js function s (line 1) | function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&re... function step (line 57) | function step() { function getContext (line 89) | function getContext(canvas) { function place (line 102) | function place(board, tag, bounds) { function cloudText (line 208) | function cloudText(d) { function cloudFont (line 212) | function cloudFont() { function cloudFontNormal (line 216) | function cloudFontNormal() { function cloudFontSize (line 220) | function cloudFontSize(d) { function cloudRotate (line 224) | function cloudRotate() { function cloudPadding (line 228) | function cloudPadding() { function cloudSprite (line 234) | function cloudSprite(contextAndRatio, d, data, di) { function cloudCollide (line 322) | function cloudCollide(tag, board, sw) { function cloudBounds (line 343) | function cloudBounds(bounds, d) { function collideRects (line 352) | function collideRects(a, b) { function archimedeanSpiral (line 356) | function archimedeanSpiral(size) { function rectangularSpiral (line 363) | function rectangularSpiral(size) { function zeroArray (line 382) | function zeroArray(n) { function cloudCanvas (line 389) | function cloudCanvas() { function functor (line 393) | function functor(d) { function dispatch (line 412) | function dispatch() { function Dispatch (line 420) | function Dispatch(_) { function parseTypenames (line 424) | function parseTypenames(typenames, types) { function get (line 474) | function get(type, name) { function set (line 482) | function set(type, name, callback) { FILE: static/js/explorer.js class ByteView (line 1) | class ByteView { method constructor (line 2) | constructor(buffer) { method getFloat32 (line 8) | getFloat32() { method getFloat64 (line 14) | getFloat64() { method getBytes (line 20) | getBytes(n) { method getByte (line 26) | getByte() { method getUint8 (line 30) | getUint8() { method getInt8 (line 36) | getInt8() { method getUint16 (line 42) | getUint16() { method getInt16 (line 48) | getInt16() { method getUint32 (line 54) | getUint32() { method getInt32 (line 60) | getInt32() { function nextPow2 (line 68) | function nextPow2(_v) { constant FORMAT_CHARS (line 80) | const FORMAT_CHARS = { constant SEARCHABLE_FIELDS (line 99) | const SEARCHABLE_FIELDS = new Set([ function sizeOfFormat (line 109) | function sizeOfFormat(format) { class Table (line 123) | class Table { method constructor (line 124) | constructor(name) { method update (line 133) | update(headers, data) { class LazyCSVReader (line 184) | class LazyCSVReader { method constructor (line 185) | constructor(url) { method decodeMetadataSize (line 205) | decodeMetadataSize(view) { method decodeHeaders (line 214) | decodeHeaders(view) { method decodeFormatString (line 228) | decodeFormatString(view) { method decodeSymbols (line 241) | decodeSymbols(view) { method decodeNumberOfRows (line 263) | decodeNumberOfRows(view) { method decodeRows (line 269) | decodeRows(view) { method fetchNext (line 340) | async fetchNext() { FILE: static/js/highlight.pack.js function n (line 2) | function n(e){return e.replace(/&/g,"&").replace(/t;t++... function g (line 2) | function g(e,t){t=t||I.languages||x(y);var r={r:0,value:n(e)},a=r;return... function p (line 2) | function p(e){return I.tabReplace||I.useBR?e.replace(M,function(e,n){ret... function h (line 2) | function h(e,n,t){var r=n?L[n]:t,a=[e.trim()];return e.match(/\bhljs\b/)... function d (line 2) | function d(e){var n,t,r,o,l,s=i(e);a(s)||(I.useBR?(n=document.createElem... function b (line 2) | function b(e){I=o(I,e)} function v (line 2) | function v(){if(!v.called){v.called=!0;var e=document.querySelectorAll("... function m (line 2) | function m(){addEventListener("DOMContentLoaded",v,!1),addEventListener(... function N (line 2) | function N(n,t){var r=y[n]=t(e);r.aliases&&r.aliases.forEach(function(e)... function R (line 2) | function R(){return x(y)} function w (line 2) | function w(e){return e=(e||"").toLowerCase(),y[e]||y[L[e]]} FILE: static/js/search.js function compare (line 21) | function compare(a, b) { function editDistance (line 27) | function editDistance(s1, s2) { function search (line 55) | function search(query, idx) { function inArray (line 86) | function inArray(obj, arr){ function createList (line 101) | function createList(parent, arr, name) { function autocomplete (line 126) | function autocomplete(inp) { FILE: tests/test_data_integrity.py class TestDataIntegrity (line 7) | class TestDataIntegrity(unittest.TestCase): method setUp (line 9) | def setUp(self): method test_all_trackers_have_db_entry (line 13) | def test_all_trackers_have_db_entry(self): method test_all_companies_have_db_entry (line 25) | def test_all_companies_have_db_entry(self): FILE: tests/test_db_integrity.py class TestDbIntegrity (line 6) | class TestDbIntegrity(unittest.TestCase): method setUp (line 8) | def setUp(self): method test_all_trackers_have_domains (line 11) | def test_all_trackers_have_domains(self): FILE: tests/test_db_validity.py class ValidateTrackerDatabase (line 7) | class ValidateTrackerDatabase(unittest.TestCase): method setUpClass (line 12) | def setUpClass(cls): method test_db_has_trackers (line 15) | def test_db_has_trackers(self): method test_db_has_companies (line 21) | def test_db_has_companies(self): method test_db_has_tracker_domains (line 27) | def test_db_has_tracker_domains(self): method test_no_trackers_without_domain (line 33) | def test_no_trackers_without_domain(self): method test_tracker_ids_ascii (line 44) | def test_tracker_ids_ascii(self): method test_company_ids_ascii (line 54) | def test_company_ids_ascii(self): method test_domains_ascii (line 64) | def test_domains_ascii(self): FILE: tests/test_site_categories.py function iterate_site_categories (line 18) | def iterate_site_categories(): class TestSitesData (line 27) | class TestSitesData(unittest.TestCase): method test_all_categories_are_valid (line 29) | def test_all_categories_are_valid(self): method test_no_repeated_sites (line 36) | def test_no_repeated_sites(self): FILE: tests/test_sites_data.py class TestSitesData (line 5) | class TestSitesData(unittest.TestCase): method test_all_sites_have_category (line 7) | def test_all_sites_have_category(self): FILE: update_trackers_preview.py function download_privacy_score (line 26) | def download_privacy_score(bucket_name, bucket_prefix): function list_known_categories (line 49) | def list_known_categories(privacy_score): function generate_trackers_preview (line 55) | def generate_trackers_preview(privacy_score): function write_json (line 106) | def write_json(data, path): FILE: whotracksme/data/assets/trackerdb.sql type categories (line 4) | CREATE TABLE categories( type companies (line 19) | CREATE TABLE companies ( type tracker_domains (line 2597) | CREATE TABLE tracker_domains ( type trackers (line 7634) | CREATE TABLE trackers ( type tracker_domain_pair (line 11139) | CREATE UNIQUE INDEX tracker_domain_pair ON tracker_domains (tracker, dom... FILE: whotracksme/data/db.py function asset_string (line 10) | def asset_string(name): function load_tracker_db (line 21) | def load_tracker_db(loc=':memory:'): function import_trackers (line 27) | def import_trackers(connection): function create_tracker_map (line 31) | def create_tracker_map(db, with_iab_vendors=False): function get_iab_vendorlist (line 111) | def get_iab_vendorlist(): function get_column_type (line 118) | def get_column_type(col): class WhoTracksMeDB (line 173) | class WhoTracksMeDB: method __init__ (line 227) | def __init__(self): method _get_existing_tables (line 256) | def _get_existing_tables(self): method get_file_checksum (line 259) | def get_file_checksum(self, filename): method update_file_checksum (line 267) | def update_file_checksum(self, filename, checksum): method load_data (line 271) | def load_data(self, name, region, month): FILE: whotracksme/data/loader.py function asset_exists (line 9) | def asset_exists(name): function asset_stream (line 19) | def asset_stream(name): function list_available_months (line 32) | def list_available_months(region="global"): class DataSource (line 42) | class DataSource: method __init__ (line 43) | def __init__(self, region="global", populate=True): method __enter__ (line 76) | def __enter__(self): method __exit__ (line 79) | def __exit__(self, *args): method normalize_url (line 83) | def normalize_url(url_substring): method url_for (line 86) | def url_for(self, entity, id, path_to_root='.'): method get_company_name (line 96) | def get_company_name(self, id): function parse_date (line 102) | def parse_date(date_string): function is_valid_date (line 105) | def is_valid_date(date_string): class SQLDataLoader (line 116) | class SQLDataLoader: method __init__ (line 118) | def __init__(self, data_months, name, db, region='global', id_column=N... method get_data_query (line 131) | def get_data_query(self): method sort_by (line 142) | def sort_by(self, metric="reach", descending=True): method get_snapshot (line 151) | def get_snapshot(self, month=None): method iter (line 158) | def iter(self): method get_datapoint (line 162) | def get_datapoint(self, id, month=None): method dump (line 171) | def dump(self): class Trackers (line 178) | class Trackers(SQLDataLoader): method __init__ (line 180) | def __init__(self, data_months, db, region='global', populate=True): method summary_stats (line 203) | def summary_stats(self): method get_tracker (line 230) | def get_tracker(self, id): method get_name (line 283) | def get_name(self, id): method get_rank (line 286) | def get_rank(self, id): method get_rank_label (line 289) | def get_rank_label(self, id): method get_tracking_methods (line 309) | def get_tracking_methods(self, id): method get_reach (line 328) | def get_reach(self, id): method get_presence_by_site_category (line 350) | def get_presence_by_site_category(self, id): method similar_trackers (line 369) | def similar_trackers(self, id, n=4): method get_domains (line 401) | def get_domains(self, id): method iter_sites (line 410) | def iter_sites(self, id): class Sites (line 417) | class Sites(SQLDataLoader): method __init__ (line 418) | def __init__(self, data_months, db, region='global', populate=True): method summary_stats (line 430) | def summary_stats(self): method get_name (line 458) | def get_name(self, id): method get_tracker_list (line 462) | def get_tracker_list(self, site, month=None): method trackers_on_site (line 482) | def trackers_on_site(self, site, month=None): method mean_trackers_timeseries (line 504) | def mean_trackers_timeseries(self, id): method get_site_tracker_categories (line 514) | def get_site_tracker_categories(self, site, month=None): class SitesTrackers (line 530) | class SitesTrackers(SQLDataLoader): method __init__ (line 532) | def __init__(self, data_months, db, region='global', populate=True): class Companies (line 537) | class Companies(SQLDataLoader): method __init__ (line 539) | def __init__(self, data_months, db, region='global', populate=True): FILE: whotracksme/data/pack.py function get_minimal_int_type (line 32) | def get_minimal_int_type(value): function get_minimal_float_type (line 52) | def get_minimal_float_type(value): function guess_type (line 56) | def guess_type(value): class ByteView (line 82) | class ByteView: method __init__ (line 83) | def __init__(self, buffer=b""): method get_string (line 87) | def get_string(self, length): method get (line 90) | def get(self, f): method set_string (line 96) | def set_string(self, string): method set (line 101) | def set(self, f, *values): function unpack_rows (line 106) | def unpack_rows(buffer): function pack_rows (line 144) | def pack_rows(rows, fields): FILE: whotracksme/main.py class objectview (line 32) | class objectview: method __init__ (line 42) | def __init__(self, d): function website (line 46) | def website(args): function main (line 54) | def main(): FILE: whotracksme/qa/todo.py function create_task_files (line 5) | def create_task_files(needqa_folder, **kwargs): function upgrade_to_https (line 20) | def upgrade_to_https(tracker_db): FILE: whotracksme/qa/utils.py function fetch (line 7) | async def fetch(session, url): function fetch_all (line 24) | async def fetch_all(session, urls, loop): function retrieve_status (line 31) | def retrieve_status(urls): function write_to_file (line 46) | def write_to_file(filepath, json_output): FILE: whotracksme/website/api/meta.py function get_trackerdb_version (line 6) | def get_trackerdb_version(): function get_api_meta_data (line 19) | def get_api_meta_data(trackerdb_version, function update_api_meta_data (line 35) | def update_api_meta_data(): FILE: whotracksme/website/build/blog.py function parse_blogpost (line 23) | def parse_blogpost(filepath): function load_blog_posts (line 67) | def load_blog_posts(): function build_blogpost_list (line 77) | def build_blogpost_list(data, blog_posts): function build_blogpost_pages (line 88) | def build_blogpost_pages(blog_posts): function get_human_date (line 107) | def get_human_date(date): function build_rss_feeds (line 118) | def build_rss_feeds(blog_posts): FILE: whotracksme/website/build/companies.py function get_company (line 15) | def get_company(companies, company_id): function company_data (line 19) | def company_data(companies, company_id): function get_company_name (line 27) | def get_company_name(company_dict): function website_doughnout (line 34) | def website_doughnout(site, data): function tracker_map_data (line 42) | def tracker_map_data(site_id, data): function company_reach (line 88) | def company_reach(companies, n=10): function company_page (line 93) | def company_page(template, company_data, data): function build_company_pages (line 111) | def build_company_pages(data): function build_company_reach_chart_page (line 120) | def build_company_reach_chart_page(data): FILE: whotracksme/website/build/data.py function build_tracker_db (line 7) | def build_tracker_db(): function build_tracker_json (line 14) | def build_tracker_json(tracker_id, data): function build_api (line 36) | def build_api(data): function build_tracker_api_batch (line 49) | def build_tracker_api_batch(batch): function build_website_api_batch (line 57) | def build_website_api_batch(batch): FILE: whotracksme/website/build/explorer.py function build_packed_data (line 69) | def build_packed_data(data): function table_to_csv (line 88) | def table_to_csv(table, file): function build_explorer (line 97) | def build_explorer(): FILE: whotracksme/website/build/home.py function build_home (line 9) | def build_home(data): function build_privacy_policy (line 49) | def build_privacy_policy(data): function build_imprint (line 58) | def build_imprint(data): FILE: whotracksme/website/build/trackers.py function recent_tracker_reach (line 14) | def recent_tracker_reach(reach): function tag_cloud_data (line 29) | def tag_cloud_data(tracker_id, data): function build_trackers_list (line 75) | def build_trackers_list(data): function tracker_page_data (line 97) | def tracker_page_data(tracker_id, tracker, data): function tracker_page (line 121) | def tracker_page(template, data): function build_tracker_pages (line 139) | def build_tracker_pages(data): function build_tracker_page_batch (line 147) | def build_tracker_page_batch(batch): FILE: whotracksme/website/build/websites.py function build_website_list (line 21) | def build_website_list(data): function website_page (line 53) | def website_page(template, site, rank, data): function build_website_pages (line 111) | def build_website_pages(data): function build_website_pages_batch (line 120) | def build_website_pages_batch(batch): FILE: whotracksme/website/builder.py class BlockingSingleThreadExecutor (line 62) | class BlockingSingleThreadExecutor(concurrent.futures._base.Executor): method submit (line 70) | def submit(self, fn, *args, **kwargs): method shutdown (line 75) | def shutdown(self, wait=True, *, cancel_futures=False): class Builder (line 79) | class Builder: method __init__ (line 80) | def __init__(self): method build (line 84) | def build(self): method on_explorer_folder_change (line 87) | def on_explorer_folder_change(self): method on_data_folder_change (line 90) | def on_data_folder_change(self): method on_templates_folder_change (line 93) | def on_templates_folder_change(self): method on_static_folder_change (line 96) | def on_static_folder_change(self): method on_blog_folder_change (line 99) | def on_blog_folder_change(self): method _create_executor (line 102) | def _create_executor(self): method feed_event (line 109) | def feed_event(self, event): FILE: whotracksme/website/plotting/colors.py function palette (line 66) | def palette(color1, color2, number_of_shades): function random_color (line 72) | def random_color(): FILE: whotracksme/website/plotting/companies.py function overview_bars (line 9) | def overview_bars(companies, highlight=2, height=None): function overview_reach (line 45) | def overview_reach(companies): FILE: whotracksme/website/plotting/plots.py function profile_doughnut (line 15) | def profile_doughnut(values, labels, name, color_palette=False): function doughnut_chart (line 58) | def doughnut_chart(values, labels, name, color_palette=False): function hbar (line 115) | def hbar(label, color=wtm_colors["blue"], **kwargs): function scatter (line 136) | def scatter(x, y, name, color, fill=True, line_style="solid"): function line (line 155) | def line(x, y, color, line_style="solid", mode='lines'): function treemap (line 175) | def treemap(): FILE: whotracksme/website/plotting/sankey.py function sankey_plot (line 4) | def sankey_plot(sndata): FILE: whotracksme/website/plotting/trackers.py function tracker_cfh (line 10) | def tracker_cfh(https, fingerprinting, cookies): function tracker_reach_ts (line 57) | def tracker_reach_ts(ts1, ts2, t): function ts_trend (line 95) | def ts_trend(ts, t, percent=True): function site_tree_map (line 159) | def site_tree_map(sites): function tracker_map (line 174) | def tracker_map(app, site_values, rectangles): FILE: whotracksme/website/plotting/utils.py function set_category_colors (line 17) | def set_category_colors(tracker_labels): function set_margins (line 21) | def set_margins(l=60, r=60, b=40, t=0, pad=5): function set_line_style (line 31) | def set_line_style(color, width=3, line_style="solid"): function annotation (line 52) | def annotation(text, x, y, background_color, shift_x=-1, text_size=12, c... function overview_label (line 78) | def overview_label(text, x, y, text_size=12, shift_x=-1, color=wtm_color... function div_output (line 103) | def div_output(fig, display_mode_bar=False, height="100%"): FILE: whotracksme/website/serve.py function watch (line 14) | def watch(builder): function serve_site (line 60) | def serve_site(port): function serve (line 71) | def serve(builder): FILE: whotracksme/website/templates.py function site_to_json (line 21) | def site_to_json(data_source, blog_posts): function copy_custom_error_pages (line 106) | def copy_custom_error_pages(data): function generate_sitemap (line 118) | def generate_sitemap(blog_posts): function get_template (line 131) | def get_template(data_source, name, render_markdown=False, path_to_root=... function render_template (line 166) | def render_template(template, path_to_root='.', **context): function create_site_structure (line 187) | def create_site_structure(static_path): FILE: whotracksme/website/utils.py function write_json (line 7) | def write_json(path, **data): function without_keys (line 18) | def without_keys(d, keys): function print_progress (line 22) | def print_progress(text, default_space=40):