From f27e2bb85ea8dc7568857e21a3516e8842e783dd Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Sun, 13 Mar 2016 22:13:07 +0530 Subject: [PATCH] Replace == with and != with not is in all RS code --- src/pyj/ajax.pyj | 8 +++--- src/pyj/book_list/book_details.pyj | 44 +++++++++++++++--------------- src/pyj/book_list/boss.pyj | 16 +++++------ src/pyj/book_list/item_list.pyj | 2 +- src/pyj/book_list/prefs.pyj | 4 +-- src/pyj/book_list/search.pyj | 30 ++++++++++---------- src/pyj/book_list/top_bar.pyj | 6 ++-- src/pyj/book_list/ui.pyj | 14 +++++----- src/pyj/book_list/views.pyj | 30 ++++++++++---------- src/pyj/date.pyj | 38 +++++++++++++------------- src/pyj/modals.pyj | 8 +++--- src/pyj/session.pyj | 4 +-- src/pyj/srv.pyj | 6 ++-- src/pyj/utils.pyj | 10 +++---- 14 files changed, 110 insertions(+), 110 deletions(-) diff --git a/src/pyj/ajax.pyj b/src/pyj/ajax.pyj index a76c036ba9..b58ce7ff5d 100644 --- a/src/pyj/ajax.pyj +++ b/src/pyj/ajax.pyj @@ -39,9 +39,9 @@ def ajax(path, on_complete, on_progress=None, bypass_cache=True, method='GET', q xhr.error_html = '' def set_error(event): - if event == 'timeout': + if event is 'timeout': xhr.error_html = str.format(_('Failed to communicate with "{}", timed out after: {} seconds'), xhr.request_path, timeout/1000) - elif event == 'abort': + elif event is 'abort': xhr.error_html = str.format(_('Failed to communicate with "{}", aborted'), xhr.request_path) else: rtext = xhr.responseText or '' @@ -60,9 +60,9 @@ def ajax(path, on_complete, on_progress=None, bypass_cache=True, method='GET', q on_progress(ev.loaded, ul, xhr) def complete_callback(end_type, ev): - if xhr.status != ok_code and end_type == 'load': + if xhr.status is not ok_code and end_type is 'load': end_type = 'error' - if end_type != 'load': + if end_type is not 'load': set_error(end_type) on_complete(end_type, xhr, ev) diff --git a/src/pyj/book_list/book_details.pyj b/src/pyj/book_list/book_details.pyj index 736ec89230..77081a90e0 100644 --- a/src/pyj/book_list/book_details.pyj +++ b/src/pyj/book_list/book_details.pyj @@ -28,8 +28,8 @@ def sort_formats_key(fmt): def get_preferred_format(metadata, output_format, input_formats): formats = (metadata and metadata.formats) or v'[]' formats = [f.toUpperCase() for f in formats] - fmt = 'EPUB' if output_format == 'PDF' else output_format - if formats.length and formats.indexOf(fmt) == -1: + fmt = 'EPUB' if output_format is 'PDF' else output_format + if formats.length and formats.indexOf(fmt) is -1: for q in sorted(formats, key=sort_formats_key): if input_formats[q]: fmt = q @@ -64,7 +64,7 @@ def render_metadata(mi, interface_data, table, field_list=None): def allowed_fields(field): if str.endswith(field, '_index'): fm = interface_data.field_metadata[field[:-len('_index')]] - if fm and fm.datatype == 'series': + if fm and fm.datatype is 'series': return False if str.startswith(field, '#'): return True @@ -155,7 +155,7 @@ def render_metadata(mi, interface_data, table, field_list=None): for k in keys: idval = val[k] x = url_map[k] - if isinstance(x, list) and x.length == 2: + if isinstance(x, list) and x.length is 2: td.appendChild(E.a(title=str.format('{}:{}', k, idval), target='_new', href=x[1], x[0])) else: td.appendChild(E.span(k, ':', idval)) @@ -197,37 +197,37 @@ def render_metadata(mi, interface_data, table, field_list=None): name = fm.name or field datatype = fm.datatype val = mi[field] - if field == 'comments' or datatype == 'comments': + if field is 'comments' or datatype is 'comments': comments[field] = val return func = None - if datatype == 'composite': + if datatype is 'composite': func = process_composite - elif field == 'formats': + elif field is 'formats': func = process_formats - elif datatype == 'rating': + elif datatype is 'rating': func = process_rating - elif field == 'identifiers': + elif field is 'identifiers': func = process_identifiers - elif field == 'authors': + elif field is 'authors': func = process_authors - elif field == 'publisher': + elif field is 'publisher': func = process_publisher - elif field == 'languages': + elif field is 'languages': func = process_languages - elif datatype == 'datetime': + elif datatype is 'datetime': func = process_datetime - elif datatype == 'series': + elif datatype is 'series': func = process_series if func: func(field, fm, name, val) else: - if datatype == 'text' or datatype == 'enumeration': + if datatype is 'text' or datatype is 'enumeration': join = fm.is_multiple.list_to_ui if fm.is_multiple else None add_row(name, val, join=join, is_searchable=field) - elif datatype == 'bool': + elif datatype is 'bool': add_row(name, _('Yes') if val else _('No')) - elif datatype == 'int' or datatype == 'float': + elif datatype is 'int' or datatype is 'float': fmt = (fm.display or {}).number_format if fmt: val = str.format(fmt, val) @@ -251,7 +251,7 @@ def render_metadata(mi, interface_data, table, field_list=None): div = E.div() div.innerHTML = comment table.parentNode.appendChild(div) - if i == 0: + if i is 0: div.style.marginTop = '2ex' @@ -280,7 +280,7 @@ class BookDetailsPanel: @property def is_visible(self): - self.container.parentNode.style.display == 'block' + self.container.parentNode.style.display is 'block' @is_visible.setter def is_visible(self, val): @@ -297,7 +297,7 @@ class BookDetailsPanel: self.render_book(book_id) else: self.fetch_metadata(book_id) - get_boss().ui.set_button_visibility('random', not book_id or book_id == '0') + get_boss().ui.set_button_visibility('random', not book_id or book_id is '0') def show_random(self): self.fetch_metadata('0') @@ -324,7 +324,7 @@ class BookDetailsPanel: return # Fetching was aborted self.is_fetching = None c = self.container - if end_type == 'load': + if end_type is 'load': try: data = JSON.parse(xhr.responseText) except Exception as err: @@ -334,7 +334,7 @@ class BookDetailsPanel: book_id = data['id'] self.interface_data.metadata[book_id] = data self.render_book(book_id) - elif end_type != 'abort': + elif end_type is not 'abort': clear(c) c.appendChild(E.div( style='margin: 1ex 1em', diff --git a/src/pyj/book_list/boss.pyj b/src/pyj/book_list/boss.pyj index 7ebdc7acf3..d0a7b7fd13 100644 --- a/src/pyj/book_list/boss.pyj +++ b/src/pyj/book_list/boss.pyj @@ -33,8 +33,8 @@ class Boss: data = parse_url_params() set_current_query(data) self.ui.apply_state() # Render the book list - if not data.mode or data.mode == 'book_list': - if data.panel != self.ui.current_panel: + if not data.mode or data.mode is 'book_list': + if data.panel is not self.ui.current_panel: self.ui.show_panel(data.panel, push_state=False) setTimeout(def(): window.onpopstate = self.onpopstate.bind(self) @@ -64,11 +64,11 @@ class Boss: set_current_query(data) mode = data.mode or 'book_list' self.history_count -= 1 - if mode == 'book_list': + if mode is 'book_list': search = data.search or '' - if data.panel != self.ui.current_panel: + if data.panel is not self.ui.current_panel: self.ui.show_panel(data.panel, push_state=False) - if search != self.ui.books_view.interface_data.search_result.query: + if search is not self.ui.books_view.interface_data.search_result.query: self.ui.books_view.change_search(search, push_state=False, panel_to_show=data.panel) def change_books(self, data): @@ -87,13 +87,13 @@ class Boss: if extra_query_data: for k in extra_query_data: query[k] = extra_query_data[k] - if self.current_mode == 'book_list': - if self.ui.current_panel != self.ui.ROOT_PANEL: + if self.current_mode is 'book_list': + if self.ui.current_panel is not self.ui.ROOT_PANEL: query.panel = self.ui.current_panel else: query.current_mode = self.current_mode idata = self.interface_data - if idata.library_id != idata.default_library: + if idata.library_id is not idata.default_library: query.library_id = idata.library_id sq = idata.search_result.query if sq: diff --git a/src/pyj/book_list/item_list.pyj b/src/pyj/book_list/item_list.pyj index 7ef64eb6f9..0771477ee8 100644 --- a/src/pyj/book_list/item_list.pyj +++ b/src/pyj/book_list/item_list.pyj @@ -34,7 +34,7 @@ class ItemsView: @property def is_visible(self): - self.container.style.display == 'block' + self.container.style.display is 'block' @is_visible.setter def is_visible(self, val): diff --git a/src/pyj/book_list/prefs.pyj b/src/pyj/book_list/prefs.pyj index 9188ae0ee3..c0ae45186d 100644 --- a/src/pyj/book_list/prefs.pyj +++ b/src/pyj/book_list/prefs.pyj @@ -188,7 +188,7 @@ class PrefsPanel: @property def is_visible(self): - self.container.style.display == 'block' + self.container.style.display is 'block' @is_visible.setter def is_visible(self, val): @@ -224,7 +224,7 @@ class PrefsPanel: cls = Choices elif val is True or val is False: cls = CheckBox - elif type(val) == 'number': + elif type(val) is 'number': cls = SpinBox else: cls = LineEdit diff --git a/src/pyj/book_list/search.pyj b/src/pyj/book_list/search.pyj index d55d344303..43219891cb 100644 --- a/src/pyj/book_list/search.pyj +++ b/src/pyj/book_list/search.pyj @@ -56,7 +56,7 @@ class SearchPanel: search_button )) search_container.firstChild.firstChild.addEventListener('keypress', def(event): - if event.keyCode == 13: # Enter + if event.keyCode is 13: # Enter search_button.focus() self.execute_search() event.preventDefault(), event.stopPropagation() @@ -104,11 +104,11 @@ class SearchPanel: def on_data_fetched(self, end_type, xhr, ev): self.currently_loading = None - if end_type == 'abort': + if end_type is 'abort': return parent = self.container.lastChild - if parent.lastChild.style.display == 'none': + if parent.lastChild.style.display is 'none': parent.firstChild.style.display = 'none' parent.lastChild.style.display = 'block' container = self.tb_container @@ -126,7 +126,7 @@ class SearchPanel: child.parent = node process_node(child) - if end_type == 'load': + if end_type is 'load': try: tag_browser_data = JSON.parse(xhr.responseText) except Exception as err: @@ -220,7 +220,7 @@ class SearchPanel: def search_expression_for_item(self, node, state): item = node.data - if item.is_searchable is False or not state or state == 'clear': + if item.is_searchable is False or not state or state is 'clear': return '' search_state = {'plus':'true', 'plusplus':'.true', 'minus':'false', 'minusminus':'.false'}[state] @@ -236,16 +236,16 @@ class SearchPanel: letters_seen = Object.keys(letters_seen) if letters_seen.length: charclass = letters_seen.join('') - if category == 'authors': + if category is 'authors': expr = str.format(r'author_sort:"~(^[{0}])|(&\s*[{0}])"', charclass) - elif category == 'series': + elif category is 'series': expr = str.format(r'series_sort:"~^[{0}]"', charclass) else: expr = str.format(r'{0}:"~^[{1}]"', category, charclass) else: expr = str.format('{}:false', category) - elif category == 'news': + elif category is 'news': expr = str.format('tags:"={}"', item.name) else: @@ -255,8 +255,8 @@ class SearchPanel: expr = '(not ' + expr + ')' return expr - category = 'tags' if item.category == 'news' else item.category - if item.name and item.name[0] == '★': + category = 'tags' if item.category is 'news' else item.category + if item.name and item.name[0] is '★': # Assume ratings expr = str.format('{}:{}', category, item.name.length) else: @@ -266,9 +266,9 @@ class SearchPanel: if not name: return '' name = str.replace(name, '"', r'\"') - if name[0] == '.': + if name[0] is '.': name = '.' + name - if search_state == 'plusplus' or search_state == 'minusminus': + if search_state is 'plusplus' or search_state is 'minusminus': name = '.' + name expr = str.format('{}:"={}{}"', category, name, suffix) @@ -324,7 +324,7 @@ class SearchPanel: (_('Books matching this category'), 'plus'), (_('Books that do not match this category'), 'minus'), ] - if node.data.is_hierarchical == 5: + if node.data.is_hierarchical is 5: items.extend([ (_('Books that match this category and all sub-categories'), 'plusplus'), (_('Books that do not match this category or any of its sub-categories'), 'minusminus'), @@ -428,7 +428,7 @@ class SearchPanel: { 'name': 'hide_empty_categories', 'text': _('Hide empty categories (columns)'), - 'from_storage': def(x): return x.toLowerCase() == 'yes';, + 'from_storage': def(x): return x.toLowerCase() is 'yes';, 'to_storage': def(x): return 'yes' if x else 'no';, 'tooltip':_('When checked, calibre will automatically hide any category' ' (a column, custom or standard) that has no items to show. For example, some' @@ -469,7 +469,7 @@ class SearchPanel: @property def is_visible(self): - self.container.style.display == 'block' + self.container.style.display is 'block' @is_visible.setter def is_visible(self, val): diff --git a/src/pyj/book_list/top_bar.pyj b/src/pyj/book_list/top_bar.pyj index 4f2bbda715..51e4ba3cd0 100644 --- a/src/pyj/book_list/top_bar.pyj +++ b/src/pyj/book_list/top_bar.pyj @@ -37,7 +37,7 @@ class TopBar: E.div(style="white-space:nowrap; overflow:hidden; text-overflow: ellipsis; padding-left: 0.5em;"), E.div(style="white-space:nowrap; text-align:right; padding-right: 0.5em;") ) - if bid == self.bar_id: + if bid is self.bar_id: set_css(bar, position='fixed', left='0', top='0', z_index='1') bar.appendChild(E.style(style, type='text/css')) set_css(bar, @@ -57,7 +57,7 @@ class TopBar: def set_left(self, title='calibre', icon_name='heart', action=None, tooltip='', run_animation=False): self.current_left_data = {'title':title, 'icon_name':icon_name, 'action':action, 'tooltip':tooltip} - if icon_name == 'heart': + if icon_name is 'heart': if not tooltip: tooltip = _('Donate to support calibre development') @@ -75,7 +75,7 @@ class TopBar: 'margin-left: {0}; font-weight: bold; padding-top: {1}; padding-bottom: {1}; vertical-align: middle', self.SPACING, self.VSPACING))) if bar is self.bar: a = left.firstChild - if icon_name == 'heart': + if icon_name is 'heart': set_css(a, animation_name=self.throbber_name, animation_duration='1s', animation_timing_function='ease-in-out', animation_iteration_count='5', animation_play_state='running' if run_animation else 'paused' diff --git a/src/pyj/book_list/ui.pyj b/src/pyj/book_list/ui.pyj index ec586f5e53..223f5feea1 100644 --- a/src/pyj/book_list/ui.pyj +++ b/src/pyj/book_list/ui.pyj @@ -77,7 +77,7 @@ def change_library_actions(): ans = [] ans.subtitle = _('Currently showing the library: ') + interface_data.library_map[interface_data.library_id] for lid in sorted(interface_data.library_map): - if lid != interface_data.library_id: + if lid is not interface_data.library_id: library_name = interface_data.library_map[lid] ans.append({'title':library_name, 'action':boss.ui.change_library.bind(boss.ui, lid)}) return ans @@ -153,7 +153,7 @@ class UI: if callable(main_panel.init): panel_data = state.panel_data() if callable(state.panel_data) else state.panel_data main_panel.init(panel_data) - if self.current_panel == self.ROOT_PANEL: + if self.current_panel is self.ROOT_PANEL: # only run the beating heart animation once window.setTimeout(def(): state.top_bar_state.left_state.run_animation = False;, 10) @@ -164,7 +164,7 @@ class UI: self.show_panel(self.ROOT_PANEL) def replace_panel(self, panel_name, force=False, extra_query_data=None): - action_needed = force or panel_name != self.current_panel + action_needed = force or panel_name is not self.current_panel if action_needed: self.current_panel = panel_name or self.ROOT_PANEL get_boss().push_state(replace=True, extra_query_data=extra_query_data) @@ -172,7 +172,7 @@ class UI: self.apply_state() def show_panel(self, panel_name, push_state=True, force=False, extra_query_data=None): - action_needed = force or panel_name != self.current_panel + action_needed = force or panel_name is not self.current_panel if action_needed: self.current_panel = panel_name or self.ROOT_PANEL if push_state: @@ -182,7 +182,7 @@ class UI: def refresh_books_view(self): self.books_view.refresh() - if self.current_panel == self.ROOT_PANEL: + if self.current_panel is self.ROOT_PANEL: self.top_bar.refresh_left() def change_library(self, library_id): @@ -191,7 +191,7 @@ class UI: 'Fetching data from server, please wait') + '…', query=data, extra_data_for_callback={'library_id':library_id}) def library_changed(self, end_type, xhr, ev): - if end_type == 'load': + if end_type is 'load': boss = get_boss() boss.interface_data.library_id = xhr.extra_data_for_callback.library_id try: @@ -201,7 +201,7 @@ class UI: return error_dialog(_('Could not change library'), err + '', details=err.stack) self.show_panel(self.ROOT_PANEL) window.scrollTo(0, 0) - elif end_type != 'abort': + elif end_type is not 'abort': msg = xhr.error_html error_dialog(_('Could not change library'), msg) diff --git a/src/pyj/book_list/views.pyj b/src/pyj/book_list/views.pyj index d6c39ccade..f6ed818238 100644 --- a/src/pyj/book_list/views.pyj +++ b/src/pyj/book_list/views.pyj @@ -54,12 +54,12 @@ class BooksView: self.update_fetching_status() def set_view_mode(self, mode='cover_grid'): - if self.mode == mode: + if self.mode is mode: return if mode not in v"['cover_grid']": mode = 'cover_grid' self.mode = mode - if mode == 'cover_grid': + if mode is 'cover_grid': self.render_book = self.cover_grid_item.bind(self) self.init_grid = self.init_cover_grid.bind(self) self.clear() @@ -75,7 +75,7 @@ class BooksView: @property def is_visible(self): - self.container.style.display == 'block' + self.container.style.display is 'block' @is_visible.setter def is_visible(self, val): @@ -136,7 +136,7 @@ class BooksView: return # Fetching was aborted self.is_fetching = None self.update_fetching_status() - if end_type == 'load': + if end_type is 'load': try: data = JSON.parse(xhr.responseText) for key in data.metadata: @@ -147,7 +147,7 @@ class BooksView: self.interface_data.search_result = data.search_result except Exception as err: error_dialog(_('Could not get more books'), _('Server returned an invalid response'), err.stack or err.toString()) - elif end_type != 'abort': + elif end_type is not 'abort': error_dialog(_('Could not get more books'), xhr.error_html) # Cover grid {{{ @@ -194,16 +194,16 @@ class BooksView: def sort_panel_data(self, create_item): current_sorted_field = str.partition(self.interface_data.search_result.sort, ',')[0] current_sorted_field_order = str.partition(self.interface_data.search_result.sort_order, ',')[0] - new_sort_order = 'desc' if current_sorted_field_order == 'asc' else 'asc' - if current_sorted_field == 'date': + new_sort_order = 'desc' if current_sorted_field_order is 'asc' else 'asc' + if current_sorted_field is 'date': current_sorted_field = 'timestamp' ans = [] ans.subtitle = _('Change how the list of books is sorted') for field, name in self.interface_data.sortable_fields: subtitle = icon_name = None - if field == current_sorted_field: + if field is current_sorted_field: subtitle = _('Reverse current sort order') - icon_name = 'sort-amount-asc' if current_sorted_field_order == 'asc' else 'sort-amount-desc' + icon_name = 'sort-amount-asc' if current_sorted_field_order is 'asc' else 'sort-amount-desc' action = self.change_sort.bind(self, field, new_sort_order) else: action = self.change_sort.bind(self, field, None) @@ -215,7 +215,7 @@ class BooksView: key = 'sort-order-for-' + field sd = get_session_data() order = order or sd.get(key, 'asc') - order = 'asc' if order == 'asc' else 'desc' + order = 'asc' if order is 'asc' else 'desc' sd.set(key, order) sr = self.interface_data.search_result sort = field + '.' + order + ',' + sr.sort + '.' + sr.order @@ -224,7 +224,7 @@ class BooksView: 'Fetching data from server, please wait') + '…', query=data) def sort_change_completed(self, end_type, xhr, ev): - if end_type == 'load': + if end_type is 'load': boss = get_boss() try: data = JSON.parse(xhr.responseText) @@ -233,7 +233,7 @@ class BooksView: return error_dialog(_('Could not change sort order'), err + '', details=err.stack) boss.ui.show_panel(boss.ui.ROOT_PANEL) window.scrollTo(0, 0) - elif end_type != 'abort': + elif end_type is not 'abort': error_dialog(_('Could not change sort order'), xhr.error_html) def change_search(self, query, push_state=True, panel_to_show=None): @@ -245,7 +245,7 @@ class BooksView: 'Fetching data from server, please wait') + '…', query=data, extra_data_for_callback={'push_state':push_state, 'panel_to_show': panel_to_show}) def search_change_completed(self, end_type, xhr, ev): - if end_type == 'load': + if end_type is 'load': boss = get_boss() try: data = JSON.parse(xhr.responseText) @@ -256,9 +256,9 @@ class BooksView: ed = xhr.extra_data_for_callback boss.ui.show_panel(ed.panel_to_show or boss.ui.ROOT_PANEL, push_state=ed.push_state) window.scrollTo(0, 0) - elif end_type != 'abort': + elif end_type is not 'abort': msg = xhr.error_html - if xhr.status == 400 and str.startswith(xhr.responseText, 'Invalid search expression:'): + if xhr.status is 400 and str.startswith(xhr.responseText, 'Invalid search expression:'): msg = _('The search expression could not be parsed: ') + xhr.responseText error_dialog(_('Could not change search query'), msg) diff --git a/src/pyj/date.pyj b/src/pyj/date.pyj index cba481de79..c99ed1739e 100644 --- a/src/pyj/date.pyj +++ b/src/pyj/date.pyj @@ -6,9 +6,9 @@ UNDEFINED_DATE = Date('0101-01-01T00:00:00+00:00') def is_date_undefined(date): dy, uy = date.getUTCFullYear(), UNDEFINED_DATE.getUTCFullYear() return dy < uy or ( - dy == uy and - date.getUTCMonth() == UNDEFINED_DATE.getUTCMonth() and - date.getUTCDate() == UNDEFINED_DATE.getUTCDate()) + dy is uy and + date.getUTCMonth() is UNDEFINED_DATE.getUTCMonth() and + date.getUTCDate() is UNDEFINED_DATE.getUTCDate()) # format_date() {{{ @@ -38,51 +38,51 @@ def fd_format_hour(dt, ampm, hr, as_utc): h = dt.getUTCHours() if as_utc else dt.getHours() if ampm: h = h % 12 - return h.toString() if hr.length == 1 else str.format('{:02d}', h) + return h.toString() if hr.length is 1 else str.format('{:02d}', h) def fd_format_minute(dt, ampm, min, as_utc): m = dt.getUTCMinutes() if as_utc else dt.getMinutes() - return m.toString() if min.length == 1 else str.format('{:02d}', m) + return m.toString() if min.length is 1 else str.format('{:02d}', m) def fd_format_second(dt, ampm, min, as_utc): s = dt.getUTCSeconds() if as_utc else dt.getSeconds() - return s.toString() if min.length == 1 else str.format('{:02d}', s) + return s.toString() if min.length is 1 else str.format('{:02d}', s) def fd_format_ampm(dt, ampm, ap, as_utc): h = dt.getUTCHours() if as_utc else dt.getHours() ans = 'am' if h < 12 else 'pm' - return ans if ap == 'ap' else ans.toUpperCase() + return ans if ap is 'ap' else ans.toUpperCase() def fd_format_day(dt, ampm, dy, as_utc): d = dt.getUTCDate() if as_utc else dt.getDate() - if dy.length == 1: + if dy.length is 1: return d.toString() - if dy.length == 2: + if dy.length is 2: return str.format('{:02d}', d) if supports_locales: - options = {'weekday': ('short' if dy.length == 3 else 'long')} + options = {'weekday': ('short' if dy.length is 3 else 'long')} if as_utc: options['timeZone'] = 'UTC' return dt.toLocaleString(undefined, options) w = dt.getUTCDay() if as_utc else dt.getDay() - return lcdata['abday' if dy.length == 3 else 'day'][(w + 1) % 7] + return lcdata['abday' if dy.length is 3 else 'day'][(w + 1) % 7] def fd_format_month(dt, ampm, mo, as_utc): m = dt.getUTCMonth() if as_utc else dt.getMonth() - if mo.length == 1: + if mo.length is 1: return (m + 1).toString() - if mo.length == 2: + if mo.length is 2: return str.format('{:02d}', m + 1) if supports_locales: options = {'month': {1:'numeric', 2:'2-digit', 3:'short', 4:'long'}[mo.length] or 'long'} if as_utc: options['timeZone'] = 'UTC' return dt.toLocaleString(undefined, options) - return lcdata['abmon' if mo.length == 3 else 'mon'][m] + return lcdata['abmon' if mo.length is 3 else 'mon'][m] def fd_format_year(dt, ampm, yr, as_utc): y = dt.getUTCFullYear() if as_utc else dt.getFullYear() - if yr.length == 2: + if yr.length is 2: return str.format('{:02d}', y % 100) return str.format('{:04d}', y) @@ -99,13 +99,13 @@ fd_function_index = { def test_fd(date, fmt, ans): q = format_date(date, fmt, as_utc=True) - if q != ans: - raise Exception(str.format('Failed to format {} with {}: {} != {}', date, fmt, q, ans)) + if q is not ans: + raise Exception(str.format('Failed to format {} with {}: {} is not {}', date, fmt, q, ans)) def format_date(date=None, fmt='dd MMM yyyy', as_utc=False): fmt = fmt or 'dd MMM yyyy' ampm = 'ap' in fmt.toLowerCase() - if type(date) == 'string': + if type(date) is 'string': date = Date(date) date = date or Date() if is_date_undefined(date): @@ -121,7 +121,7 @@ def format_date(date=None, fmt='dd MMM yyyy', as_utc=False): ) # }}} -if __name__ == '__main__': +if __name__ is '__main__': test_fd('1101-01-01T09:00:00+00:00', 'hh h', '09 9') test_fd('1101-01-01T09:05:01+00:00', 'hh h mm m ss s ap AP yy yyyy', '09 9 05 5 01 1 am AM 01 1101') test_fd('2001-01-02T09:00:00+00:00', 'M MM MMM MMMM', '1 01 Jan January') diff --git a/src/pyj/modals.pyj b/src/pyj/modals.pyj index b23eaa8da1..52096a9d81 100644 --- a/src/pyj/modals.pyj +++ b/src/pyj/modals.pyj @@ -82,12 +82,12 @@ class ModalContainer: return modal_id def hide_modal(self, modal_id): - if self.current_modal is not None and self.current_modal.id == modal_id: + if self.current_modal is not None and self.current_modal.id is modal_id: self.clear_current_modal() else: doomed_modal = None for i, modal in enumerate(self.modals): - if modal.id == modal_id: + if modal.id is modal_id: doomed_modal = i break if doomed_modal is not None: @@ -102,7 +102,7 @@ class ModalContainer: except: self.current_modal = None raise - if c.style.display == 'none': + if c.style.display is 'none': set_css(c, display='block') c.firstChild.lastChild.style.visibility = 'visible' if self.current_modal.show_close else 'hidden' @@ -110,7 +110,7 @@ class ModalContainer: self.current_modal = None c = self.modal_container clear(c.firstChild.firstChild) - if self.modals.length == 0: + if self.modals.length is 0: set_css(c, display='none') else: self.update() diff --git a/src/pyj/session.pyj b/src/pyj/session.pyj index 5bb280baeb..8ebd65fb31 100644 --- a/src/pyj/session.pyj +++ b/src/pyj/session.pyj @@ -39,7 +39,7 @@ class FakeStorage: return self.data[key] def setItem(self, key, value): - if type(value) != 'string': + if type(value) is not 'string': value = JSON.stringify(value) self.data[key] = value @@ -153,7 +153,7 @@ class UserSessionData(SessionData): def push_to_server(self): if self.has_changes: ajax_send('interface-data/set-session-data', self.changes, def(end_type, xhr, ev): - if end_type != 'load': + if end_type is not 'load': console.error('Failed to send session data to server: ' + xhr.error_html) ) self.changes = {} diff --git a/src/pyj/srv.pyj b/src/pyj/srv.pyj index f54a9658d3..49c410e3d5 100644 --- a/src/pyj/srv.pyj +++ b/src/pyj/srv.pyj @@ -13,7 +13,7 @@ from book_list.globals import set_session_data def on_library_loaded(end_type, xhr, ev): p = document.getElementById('page_load_progress') p.parentNode.removeChild(p) - if end_type == 'load': + if end_type is 'load': interface_data = JSON.parse(xhr.responseText) if interface_data.translations: install(interface_data.translations) @@ -22,7 +22,7 @@ def on_library_loaded(end_type, xhr, ev): Boss(interface_data) else: p = E.p(style='color:red; font-weight: bold; font-size:1.5em') - if xhr.status == 401: + if xhr.status is 401: p.innerHTML = _('You are not authorized to view this site') else: p.innerHTML = xhr.error_html @@ -50,7 +50,7 @@ def load_book_list(): def on_load(): ep = window.calibre_entry_point v'delete window.calibre_entry_point' - if ep == 'book list': + if ep is 'book list': print('calibre loaded at:', Date().toString()) load_book_list() diff --git a/src/pyj/utils.pyj b/src/pyj/utils.pyj index 7501ee994a..3b7ed51e50 100644 --- a/src/pyj/utils.pyj +++ b/src/pyj/utils.pyj @@ -22,7 +22,7 @@ def debounce(func, wait, immediate=False): func.apply(context, args) def to_utf8(string): - if type(TextEncoder) == 'function': + if type(TextEncoder) is 'function': return TextEncoder('utf-8').encode(string) escstr = encodeURIComponent(string) binstr = escstr.replace(/%([0-9A-F]{2})/g, def(match, p1): @@ -61,7 +61,7 @@ _roman = list(zip( )) def roman(num): - if num <= 0 or num >= 4000 or int(num) != num: + if num <= 0 or num >= 4000 or int(num) is not num: return num + '' result = [] for d, r in _roman: @@ -71,13 +71,13 @@ def roman(num): return result.join('') def fmt_sidx(val, fmt='{:.2f}', use_roman=True): - if val is undefined or val is None or val == '': + if val is undefined or val is None or val is '': return '1' - if int(val) == float(val): + if int(val) is float(val): if use_roman: return roman(val) return int(val) + '' return str.format(fmt, float(val)) -if __name__ == '__main__': +if __name__ is '__main__': print(fmt_sidx(10), fmt_sidx(1.2))