def compile_srv(): base = base_dir() iconf = os.path.join(base, 'imgsrc', 'srv', 'generate.py') g = {'__file__': iconf} exec_path(iconf, g) icons = g['merge']().encode('utf-8') with lopen(os.path.join(base, 'resources', 'content-server', 'reset.css'), 'rb') as f: reset = f.read() rapydscript_dir = os.path.join(base, 'src', 'pyj') rb = os.path.join(base, 'src', 'calibre', 'srv', 'render_book.py') with lopen(rb, 'rb') as f: rv = str(int(re.search(br'^RENDER_VERSION\s+=\s+(\d+)', f.read(), re.M).group(1))) mathjax_version = json.loads(P('mathjax/manifest.json', data=True, allow_user_override=False))['etag'] base = os.path.join(base, 'resources', 'content-server') fname = os.path.join(rapydscript_dir, 'srv.pyj') with lopen(fname, 'rb') as f: js = compile_fast(f.read(), fname).replace( '__RENDER_VERSION__', rv, 1).replace( '__MATHJAX_VERSION__', mathjax_version, 1).replace( '__CALIBRE_VERSION__', __version__, 1).encode('utf-8') with lopen(os.path.join(base, 'index.html'), 'rb') as f: html = f.read().replace(b'RESET_STYLES', reset, 1).replace(b'ICONS', icons, 1).replace(b'MAIN_JS', js, 1) manifest = create_manifest(html) def atomic_write(name, content): name = os.path.join(base, name) tname = name + '.tmp' with lopen(tname, 'wb') as f: f.write(content) atomic_rename(tname, name) atomic_write('index-generated.html', html) atomic_write('calibre.appcache', manifest)
def compile_srv(): base = base_dir() iconf = os.path.join(base, 'imgsrc', 'srv', 'generate.py') g = {'__file__': iconf} exec_path(iconf, g) icons = g['merge']().encode('utf-8') with lopen(os.path.join(base, 'resources', 'content-server', 'reset.css'), 'rb') as f: reset = f.read() rapydscript_dir = os.path.join(base, 'src', 'pyj') rb = os.path.join(base, 'src', 'calibre', 'srv', 'render_book.py') with lopen(rb, 'rb') as f: rv = unicode_type(int(re.search(br'^RENDER_VERSION\s+=\s+(\d+)', f.read(), re.M).group(1))) mathjax_version = json.loads(P('mathjax/manifest.json', data=True, allow_user_override=False))['etag'] base = os.path.join(base, 'resources', 'content-server') fname = os.path.join(rapydscript_dir, 'srv.pyj') with lopen(fname, 'rb') as f: js = compile_fast(f.read(), fname).replace( '__RENDER_VERSION__', rv, 1).replace( '__MATHJAX_VERSION__', mathjax_version, 1).replace( '__CALIBRE_VERSION__', __version__, 1).encode('utf-8') with lopen(os.path.join(base, 'index.html'), 'rb') as f: html = f.read().replace(b'RESET_STYLES', reset, 1).replace(b'ICONS', icons, 1).replace(b'MAIN_JS', js, 1) manifest = create_manifest(html) def atomic_write(name, content): name = os.path.join(base, name) tname = name + '.tmp' with lopen(tname, 'wb') as f: f.write(content) atomic_rename(tname, name) atomic_write('index-generated.html', html) atomic_write('calibre.appcache', manifest)
def run_script(path, args): load_user_plugins() sys.argv = [path] + args ef = os.path.abspath(path) if '/src/calibre/' not in ef.replace(os.pathsep, '/'): base = os.path.dirname(ef) sys.path.insert(0, base) g = globals() g['__name__'] = '__main__' g['__file__'] = ef exec_path(ef, g)
def ipython(user_ns=None): os.environ['IPYTHONDIR'] = ipydir have_ipython = True try: from IPython.terminal.embed import InteractiveShellEmbed from traitlets.config.loader import Config from IPython.terminal.prompts import Prompts, Token except ImportError: have_ipython = False if not have_ipython: return simple_repl(user_ns=user_ns) class CustomPrompt(Prompts): def in_prompt_tokens(self, cli=None): return [ (Token.Prompt, 'calibre['), (Token.PromptNum, get_version()), (Token.Prompt, ']> '), ] def out_prompt_tokens(self): return [] defns = {'os':os, 're':re, 'sys':sys} defns.update(user_ns or {}) c = Config() user_conf = os.path.expanduser('~/.ipython/profile_default/ipython_config.py') if os.path.exists(user_conf): exec_path(user_conf, {'get_config': lambda: c}) c.TerminalInteractiveShell.prompts_class = CustomPrompt c.InteractiveShellApp.exec_lines = [ 'from __future__ import division, absolute_import, unicode_literals, print_function', ] c.TerminalInteractiveShell.confirm_exit = False c.TerminalInteractiveShell.banner1 = BANNER c.BaseIPythonApplication.ipython_dir = ipydir c.InteractiveShell.separate_in = '' c.InteractiveShell.separate_out = '' c.InteractiveShell.separate_out2 = '' ipshell = InteractiveShellEmbed.instance(config=c, user_ns=user_ns) ipshell()
def compile_viewer(): base = base_dir() iconf = os.path.join(base, 'imgsrc', 'srv', 'generate.py') g = {'__file__': iconf} exec_path(iconf, g) icons = g['merge']() with lopen(os.path.join(base, 'resources', 'content-server', 'reset.css'), 'rb') as f: reset = f.read().decode('utf-8') html = '<!DOCTYPE html>\n<html><head><style>{reset}</style></head><body>{icons}</body></html>'.format( icons=icons, reset=reset) rapydscript_dir = os.path.join(base, 'src', 'pyj') fname = os.path.join(rapydscript_dir, 'viewer-main.pyj') with lopen(fname, 'rb') as f: js = set_data(compile_fast(f.read(), fname)) base = os.path.join(base, 'resources') atomic_write(base, 'viewer.js', js) atomic_write(base, 'viewer.html', html)
def ipython(user_ns=None): os.environ['IPYTHONDIR'] = ipydir try: from IPython.terminal.embed import InteractiveShellEmbed from traitlets.config.loader import Config from IPython.terminal.prompts import Prompts, Token except ImportError: return simple_repl(user_ns=user_ns) class CustomPrompt(Prompts): def in_prompt_tokens(self, cli=None): return [ (Token.Prompt, 'calibre['), (Token.PromptNum, get_version()), (Token.Prompt, ']> '), ] def out_prompt_tokens(self): return [] defns = {'os':os, 're':re, 'sys':sys} defns.update(user_ns or {}) c = Config() user_conf = os.path.expanduser('~/.ipython/profile_default/ipython_config.py') if os.path.exists(user_conf): exec_path(user_conf, {'get_config': lambda: c}) c.TerminalInteractiveShell.prompts_class = CustomPrompt c.InteractiveShellApp.exec_lines = [ 'from __future__ import division, absolute_import, unicode_literals, print_function', ] c.TerminalInteractiveShell.confirm_exit = False c.TerminalInteractiveShell.banner1 = BANNER c.BaseIPythonApplication.ipython_dir = ipydir c.InteractiveShell.separate_in = '' c.InteractiveShell.separate_out = '' c.InteractiveShell.separate_out2 = '' ipshell = InteractiveShellEmbed.instance(config=c, user_ns=user_ns) ipshell()
def compile_viewer(): base = base_dir() iconf = os.path.join(base, 'imgsrc', 'srv', 'generate.py') g = {'__file__': iconf} exec_path(iconf, g) icons = g['merge']() with lopen(os.path.join(base, 'resources', 'content-server', 'reset.css'), 'rb') as f: reset = f.read().decode('utf-8') html = '<!DOCTYPE html>\n<html><head><style>{reset}</style></head><body>{icons}</body></html>'.format( icons=icons, reset=reset) rapydscript_dir = os.path.join(base, 'src', 'pyj') fname = os.path.join(rapydscript_dir, 'viewer-main.pyj') with lopen(fname, 'rb') as f: js = compile_fast(f.read(), fname).replace( '__SPECIAL_TITLE__', special_title, 1).replace( '__FAKE_PROTOCOL__', FAKE_PROTOCOL, 1).replace( '__FAKE_HOST__', FAKE_HOST, 1).replace( '__DARK_LINK_COLOR__', dark_link_color, 1) base = os.path.join(base, 'resources') atomic_write(base, 'viewer.js', js) atomic_write(base, 'viewer.html', html)