diff --git a/docs/.DS_Store b/docs/.DS_Store new file mode 100644 index 0000000..5117ba3 Binary files /dev/null and b/docs/.DS_Store differ diff --git a/docs/jsdoc/conf.json b/docs/jsdoc/conf.json new file mode 100644 index 0000000..c60dbe8 --- /dev/null +++ b/docs/jsdoc/conf.json @@ -0,0 +1,9 @@ +{ + "templates": { + "cleverLinks": false, + "monospaceLinks": false, + "default": { + "outputSourceFiles": false + } + } +} diff --git a/docs/jsdoc/templates/template/README.md b/docs/jsdoc/templates/template/README.md new file mode 100644 index 0000000..e7a1bc5 --- /dev/null +++ b/docs/jsdoc/templates/template/README.md @@ -0,0 +1,27 @@ +The default template for JSDoc 3 uses: [the Taffy Database library](http://taffydb.com/) and the [Underscore Template library](http://underscorejs.org/). + + +## Generating Typeface Fonts + +The default template uses the [OpenSans](https://www.google.com/fonts/specimen/Open+Sans) typeface. The font files can be regenerated as follows: + +1. Open the [OpenSans page at Font Squirrel](). +2. Click on the 'Webfont Kit' tab. +3. Either leave the subset drop-down as 'Western Latin (Default)', or, if we decide we need more glyphs, than change it to 'No Subsetting'. +4. Click the 'DOWNLOAD @FONT-FACE KIT' button. +5. For each typeface variant we plan to use, copy the 'eot', 'svg' and 'woff' files into the 'templates/default/static/fonts' directory. + +## Changelog compared to default template + +``` +publish.js: +// changed from default template by MH on 1/7/2019, see "MH" below +``` + +``` +folder tmpl: see tmpl/README.md +``` + +``` +folder static: see static/README.md +``` diff --git a/docs/jsdoc/templates/template/publish.d.ts b/docs/jsdoc/templates/template/publish.d.ts new file mode 100644 index 0000000..70107fd --- /dev/null +++ b/docs/jsdoc/templates/template/publish.d.ts @@ -0,0 +1 @@ +export function publish(taffyData: TAFFY, opts: object, tutorials: Tutorial): void; diff --git a/docs/jsdoc/templates/template/publish.js b/docs/jsdoc/templates/template/publish.js new file mode 100644 index 0000000..0c42760 --- /dev/null +++ b/docs/jsdoc/templates/template/publish.js @@ -0,0 +1,722 @@ +// changed from default template by MH on 1/7/2019, see "MH" below +// changed from previous template by JC on 29/3/2020, see "JC" below + +const doop = require('jsdoc/util/doop'); +const env = require('jsdoc/env'); +const fs = require('jsdoc/fs'); +const helper = require('jsdoc/util/templateHelper'); +const logger = require('jsdoc/util/logger'); +const path = require('jsdoc/path'); +const taffy = require('taffydb').taffy; +const template = require('jsdoc/template'); +const util = require('util'); + +const htmlsafe = helper.htmlsafe; +const linkto = helper.linkto; +const resolveAuthorLinks = helper.resolveAuthorLinks; +const hasOwnProp = Object.prototype.hasOwnProperty; + +let data; +let view; + +let outdir = path.normalize(env.opts.destination); + +function find(spec) { + return helper.find(data, spec); +} + +function tutoriallink(tutorial) { + return helper.toTutorial(tutorial, null, { + tag: 'em', + classname: 'disabled', + prefix: 'Tutorial: ' + }); +} + +function getAncestorLinks(doclet) { + return helper.getAncestorLinks(data, doclet); +} + +function hashToLink(doclet, hash) { + let url; + + if ( !/^(#.+)/.test(hash) ) { + return hash; + } + + url = helper.createLink(doclet); + url = url.replace(/(#.+|$)/, hash); + + return `${hash}`; +} + +function needsSignature({kind, type, meta}) { + let needsSig = false; + + // function and class definitions always get a signature + if (kind === 'function' || kind === 'class') { + needsSig = true; + } + // typedefs that contain functions get a signature, too + else if (kind === 'typedef' && type && type.names && + type.names.length) { + for (let i = 0, l = type.names.length; i < l; i++) { + if (type.names[i].toLowerCase() === 'function') { + needsSig = true; + break; + } + } + } + // and namespaces that are functions get a signature (but finding them is a + // bit messy) + else if (kind === 'namespace' && meta && meta.code && + meta.code.type && meta.code.type.match(/[Ff]unction/)) { + needsSig = true; + } + + return needsSig; +} + +function getSignatureAttributes({optional, nullable}) { + const attributes = []; + + if (optional) { + attributes.push('opt'); + } + + if (nullable === true) { + attributes.push('nullable'); + } + else if (nullable === false) { + attributes.push('non-null'); + } + + return attributes; +} + +function updateItemName(item) { + const attributes = getSignatureAttributes(item); + let itemName = item.name || ''; + + if (item.variable) { + itemName = `…${itemName}`; + } + + if (attributes && attributes.length) { + itemName = util.format( '%s%s', itemName, + attributes.join(', ') ); + } + + return itemName; +} + +function addParamAttributes(params) { + return params.filter(({name}) => name && !name.includes('.')).map(updateItemName); +} + +function buildItemTypeStrings(item) { + const types = []; + + if (item && item.type && item.type.names) { + item.type.names.forEach(name => { + types.push( linkto(name, htmlsafe(name)) ); + }); + } + + return types; +} + +function buildAttribsString(attribs) { + let attribsString = ''; + + if (attribs && attribs.length) { + attribsString = htmlsafe( util.format('(%s) ', attribs.join(', ')) ); + } + + return attribsString; +} + +function addNonParamAttributes(items) { + let types = []; + + items.forEach(item => { + types = types.concat( buildItemTypeStrings(item) ); + }); + + return types; +} + +function addSignatureParams(f) { + const params = f.params ? addParamAttributes(f.params) : []; + + f.signature = util.format( '%s(%s)', (f.signature || ''), params.join(', ') ); +} + +function addSignatureReturns(f) { + const attribs = []; + let attribsString = ''; + let returnTypes = []; + let returnTypesString = ''; + const source = f.yields || f.returns; + + // jam all the return-type attributes into an array. this could create odd results (for example, + // if there are both nullable and non-nullable return types), but let's assume that most people + // who use multiple @return tags aren't using Closure Compiler type annotations, and vice-versa. + if (source) { + source.forEach(item => { + helper.getAttribs(item).forEach(attrib => { + if (!attribs.includes(attrib)) { + attribs.push(attrib); + } + }); + }); + + attribsString = buildAttribsString(attribs); + } + + if (source) { + returnTypes = addNonParamAttributes(source); + } + if (returnTypes.length) { + returnTypesString = util.format( ' → %s{%s}', attribsString, returnTypes.join('|') ); + } + + f.signature = `${f.signature || ''}${returnTypesString}`; +} + +function addSignatureTypes(f) { + const types = f.type ? buildItemTypeStrings(f) : []; + + f.signature = `${f.signature || ''}${types.length ? ` :${types.join('|')}` : ''}`; +} + +function addAttribs(f) { + const attribs = helper.getAttribs(f); + const attribsString = buildAttribsString(attribs); + + f.attribs = util.format('%s', attribsString); +} + +function shortenPaths(files, commonPrefix) { + Object.keys(files).forEach(file => { + files[file].shortened = files[file].resolved.replace(commonPrefix, '') + // always use forward slashes + .replace(/\\/g, '/'); + }); + + return files; +} + +function getPathFromDoclet({meta}) { + if (!meta) { + return null; + } + + return meta.path && meta.path !== 'null' ? + path.join(meta.path, meta.filename) : + meta.filename; +} + +function generate(title, docs, filename, resolveLinks) { + let docData; + let html; + let outpath; + + resolveLinks = resolveLinks !== false; + + docData = { + env: env, + title: title, + // remove tags from header, also see layout.tmpl + header: title.replace(/]*>/,"").replace(/<\/a>/,""), + docs: docs + }; + + outpath = path.join(outdir, filename); + html = view.render('container.tmpl', docData); + + if (resolveLinks) { + html = helper.resolveLinks(html); // turn {@link foo} into foo + } + + fs.writeFileSync(outpath, html, 'utf8'); +} + +function generateSourceFiles(sourceFiles, encoding = 'utf8') { + Object.keys(sourceFiles).forEach(file => { + let source; + // links are keyed to the shortened path in each doclet's `meta.shortpath` property + const sourceOutfile = helper.getUniqueFilename(sourceFiles[file].shortened); + + helper.registerLink(sourceFiles[file].shortened, sourceOutfile); + + try { + source = { + kind: 'source', + code: helper.htmlsafe( fs.readFileSync(sourceFiles[file].resolved, encoding) ) + }; + } + catch (e) { + logger.error('Error while generating source file %s: %s', file, e.message); + } + + generate(`Source: ${sourceFiles[file].shortened}`, [source], sourceOutfile, + false); + }); +} + +/** + * Look for classes or functions with the same name as modules (which indicates that the module + * exports only that class or function), then attach the classes or functions to the `module` + * property of the appropriate module doclets. The name of each class or function is also updated + * for display purposes. This function mutates the original arrays. + * + * @private + * @param {Array.} doclets - The array of classes and functions to + * check. + * @param {Array.} modules - The array of module doclets to search. + */ +function attachModuleSymbols(doclets, modules) { + const symbols = {}; + + // build a lookup table + doclets.forEach(symbol => { + symbols[symbol.longname] = symbols[symbol.longname] || []; + symbols[symbol.longname].push(symbol); + }); + + modules.forEach(module => { + if (symbols[module.longname]) { + module.modules = symbols[module.longname] + // Only show symbols that have a description. Make an exception for classes, because + // we want to show the constructor-signature heading no matter what. + .filter(({description, kind}) => description || kind === 'class') + .map(symbol => { + symbol = doop(symbol); + + if (symbol.kind === 'class' || symbol.kind === 'function') { + symbol.name = `${symbol.name.replace('module:', '(require("')}"))`; + } + + return symbol; + }); + } + }); +} + +function buildMemberNav(items, itemHeading, itemsSeen, linktoFn) { + let nav = ''; + + if (items.length) { + let itemsNav = ''; + + items.forEach(item => { + let displayName; + + if ( !hasOwnProp.call(item, 'longname') ) { + itemsNav += `
  • ${linktoFn('', item.name)}
  • `; + } + else if ( !hasOwnProp.call(itemsSeen, item.longname) ) { + if (env.conf.templates.default.useLongnameInNav) { + displayName = item.longname; + } else { + displayName = item.name; + } + itemsNav += `
  • ${linktoFn(item.longname, displayName.replace(/\b(module|event):/g, ''))}
  • `; + + itemsSeen[item.longname] = true; + } + }); + + if (itemsNav !== '') { + nav += `

    ${itemHeading}

      ${itemsNav}
    `; + } + } + + return nav; +} + +function linktoTutorial(longName, name) { + return tutoriallink(name); +} + +function linktoExternal(longName, name) { + return linkto(longName, name.replace(/(^"|"$)/g, '')); +} + +/** + * Create the navigation sidebar. + * @param {object} members The members that will be used to create the sidebar. + * @param {array} members.classes + * @param {array} members.externals + * @param {array} members.globals + * @param {array} members.mixins + * @param {array} members.modules + * @param {array} members.namespaces + * @param {array} members.tutorials + * @param {array} members.events + * @param {array} members.interfaces + * @return {string} The HTML for the navigation sidebar. + */ +function buildNav(members) { + let globalNav; + let nav = ''; // '

    Home

    '; + const seen = {}; + const seenTutorials = {}; + + nav += buildMemberNav(members.modules, 'Modules', {}, linkto); + nav += buildMemberNav(members.externals, 'Externals', seen, linktoExternal); + nav += buildMemberNav(members.namespaces, 'Namespaces', seen, linkto); +// nav += buildMemberNav(members.classes, 'Classes', seen, linkto); + nav += buildMemberNav(members.interfaces, 'Interfaces', seen, linkto); + nav += buildMemberNav(members.events, 'Events', seen, linkto); + nav += buildMemberNav(members.mixins, 'Mixins', seen, linkto); + nav += buildMemberNav(members.tutorials, 'Tutorials', seenTutorials, linktoTutorial); + + if (members.globals.length) { + globalNav = ''; + + members.globals.forEach(({kind, longname, name}) => { + if ( kind !== 'typedef' && !hasOwnProp.call(seen, longname) ) { + globalNav += `
  • ${linkto(longname, name)}
  • `; + } + seen[longname] = true; + }); + + if (!globalNav) { + // turn the heading into a link so you can actually get to the global page + // MH: 9/7/19: use the basename of the folder as heading + // MH: 13/7/19: we turn "_" into " §", in order to have nice headings + // JC: 29/3/20: restrict above transformation to first "_" + const symbolReplacedName = path.basename(outdir).replace(/_/, " §"); + // JC: 29/3/20: change all remaining "_" to " " + const displayName = symbolReplacedName.replace(/_/g, " "); + const link = `${displayName}`; + nav += `

    ${linkto('global', 'Predeclared in '+ link)}

    `; + } + else { + nav += `

    Predeclared names

      ${globalNav}
    `; + } + } + + return nav; +} + +/** + @param {TAFFY} taffyData See . + @param {object} opts + @param {Tutorial} tutorials + */ +exports.publish = (taffyData, opts, tutorials) => { + let classes; + let conf; + let externals; + let files; + let fromDir; + let globalUrl; + let indexUrl; + let interfaces; + let members; + let mixins; + let modules; + let namespaces; + let outputSourceFiles; + let packageInfo; + let packages; + const sourceFilePaths = []; + let sourceFiles = {}; + let staticFileFilter; + let staticFilePaths; + let staticFiles; + let staticFileScanner; + let templatePath; + + data = taffyData; + + conf = env.conf.templates || {}; + conf.default = conf.default || {}; + + templatePath = path.normalize(opts.template); + view = new template.Template( path.join(templatePath, 'tmpl') ); + + // claim some special filenames in advance, so the All-Powerful Overseer of Filename Uniqueness + // doesn't try to hand them out later + indexUrl = helper.getUniqueFilename('index'); + // don't call registerLink() on this one! 'index' is also a valid longname + + globalUrl = helper.getUniqueFilename('global'); + helper.registerLink('global', globalUrl); + + // set up templating + view.layout = conf.default.layoutFile ? + path.getResourcePath(path.dirname(conf.default.layoutFile), + path.basename(conf.default.layoutFile) ) : + 'layout.tmpl'; + + // set up tutorials for helper + helper.setTutorials(tutorials); + + data = helper.prune(data); + data.sort('longname, version, since'); + helper.addEventListeners(data); + + data().each(doclet => { + let sourcePath; + + doclet.attribs = ''; + + if (doclet.examples) { + doclet.examples = doclet.examples.map(example => { + let caption; + let code; + + if (example.match(/^\s*([\s\S]+?)<\/caption>(\s*[\n\r])([\s\S]+)$/i)) { + caption = RegExp.$1; + code = RegExp.$3; + } + + return { + caption: caption || '', + code: code || example + }; + }); + } + if (doclet.see) { + doclet.see.forEach((seeItem, i) => { + doclet.see[i] = hashToLink(doclet, seeItem); + }); + } + + // build a list of source files + if (doclet.meta) { + sourcePath = getPathFromDoclet(doclet); + sourceFiles[sourcePath] = { + resolved: sourcePath, + shortened: null + }; + if (!sourceFilePaths.includes(sourcePath)) { + sourceFilePaths.push(sourcePath); + } + } + }); + + // update outdir if necessary, then create outdir + packageInfo = ( find({kind: 'package'}) || [] )[0]; + if (packageInfo && packageInfo.name) { + outdir = path.join( outdir, packageInfo.name, (packageInfo.version || '') ); + } + fs.mkPath(outdir); + + // copy the template's static files to outdir + fromDir = path.join(templatePath, 'static'); + staticFiles = fs.ls(fromDir, 3); + + staticFiles.forEach(fileName => { + const toDir = fs.toDir( fileName.replace(fromDir, outdir) ); + + fs.mkPath(toDir); + fs.copyFileSync(fileName, toDir); + }); + + // copy user-specified static files to outdir + if (conf.default.staticFiles) { + // The canonical property name is `include`. We accept `paths` for backwards compatibility + // with a bug in JSDoc 3.2.x. + staticFilePaths = conf.default.staticFiles.include || + conf.default.staticFiles.paths || + []; + staticFileFilter = new (require('jsdoc/src/filter').Filter)(conf.default.staticFiles); + staticFileScanner = new (require('jsdoc/src/scanner').Scanner)(); + + staticFilePaths.forEach(filePath => { + let extraStaticFiles; + + filePath = path.resolve(env.pwd, filePath); + extraStaticFiles = staticFileScanner.scan([filePath], 10, staticFileFilter); + + extraStaticFiles.forEach(fileName => { + const sourcePath = fs.toDir(filePath); + const toDir = fs.toDir( fileName.replace(sourcePath, outdir) ); + + fs.mkPath(toDir); + fs.copyFileSync(fileName, toDir); + }); + }); + } + + if (sourceFilePaths.length) { + sourceFiles = shortenPaths( sourceFiles, path.commonPrefix(sourceFilePaths) ); + } + data().each(doclet => { + let docletPath; + const url = helper.createLink(doclet); + + helper.registerLink(doclet.longname, url); + + // add a shortened version of the full path + if (doclet.meta) { + docletPath = getPathFromDoclet(doclet); + docletPath = sourceFiles[docletPath].shortened; + if (docletPath) { + doclet.meta.shortpath = docletPath; + } + } + }); + + data().each(doclet => { + const url = helper.longnameToUrl[doclet.longname]; + + if (url.includes('#')) { + doclet.id = helper.longnameToUrl[doclet.longname].split(/#/).pop(); + } + else { + doclet.id = doclet.name; + } + + if ( needsSignature(doclet) ) { + addSignatureParams(doclet); + addSignatureReturns(doclet); + addAttribs(doclet); + } + }); + + // do this after the urls have all been generated + data().each(doclet => { + doclet.ancestors = getAncestorLinks(doclet); + + if (doclet.kind === 'member') { + addSignatureTypes(doclet); + addAttribs(doclet); + } + + if (doclet.kind === 'constant') { + addSignatureTypes(doclet); + addAttribs(doclet); + doclet.kind = 'member'; + } + }); + + members = helper.getMembers(data); + members.tutorials = tutorials.children; + + // output pretty-printed source files by default + outputSourceFiles = conf.default && conf.default.outputSourceFiles !== false; + + // add template helpers + view.find = find; + view.linkto = linkto; + view.resolveAuthorLinks = resolveAuthorLinks; + view.tutoriallink = tutoriallink; + view.htmlsafe = htmlsafe; + view.outputSourceFiles = outputSourceFiles; + + // once for all + view.nav = buildNav(members); + attachModuleSymbols( find({ longname: {left: 'module:'} }), members.modules ); + + // generate the pretty-printed source files first so other pages can link to them + if (outputSourceFiles) { + generateSourceFiles(sourceFiles, opts.encoding); + } + + // MH: 9/7/19: use the basename of the folder as heading + let baseName = path.basename(outdir); + // MH: 13/7/19: turn "_" into " §", in order to have nice headings + // JC: 29/3/20: restrict above transformation to first "_" + const symbolReplacedName = baseName.replace(/_/, " §"); + // JC: 29/3/20: change all remaining "_" to " ", then capitalize each word + const spacedName = symbolReplacedName.replace(/_/g, " "); + // Arsalan: 21/4/20: capitalize the first letter of each word, including those separated by a hyphen + const displayName = spacedName.replace(/(^|[\s-])\S/g, firstLetter => firstLetter.toUpperCase()); + + const link = `${displayName}`; + + // MH: 23/4/2020: added else to conditional to allow for empty libs + if (members.globals.length) { + generate('Predeclared in '+ link, [{kind: 'globalobj'}], globalUrl); + } else { + generate('No names predeclared in ' + link, [{kind: 'globalobj'}], globalUrl); + } + + // index page displays information from package.json and lists files + files = find({kind: 'file'}); + packages = find({kind: 'package'}); + + generate(displayName, // MH: 1/7/2019: This was: + // generate('Home', + packages.concat( + [{ + kind: 'mainpage', + readme: opts.readme, + longname: (opts.mainpagetitle) ? opts.mainpagetitle : 'Main Page' + }] + ).concat(files), indexUrl); + + // set up the lists that we'll use to generate pages + classes = taffy(members.classes); + modules = taffy(members.modules); + namespaces = taffy(members.namespaces); + mixins = taffy(members.mixins); + externals = taffy(members.externals); + interfaces = taffy(members.interfaces); + + Object.keys(helper.longnameToUrl).forEach(longname => { + const myClasses = helper.find(classes, {longname: longname}); + const myExternals = helper.find(externals, {longname: longname}); + const myInterfaces = helper.find(interfaces, {longname: longname}); + const myMixins = helper.find(mixins, {longname: longname}); + const myModules = helper.find(modules, {longname: longname}); + const myNamespaces = helper.find(namespaces, {longname: longname}); + + if (myModules.length) { + generate(`Module: ${myModules[0].name}`, myModules, helper.longnameToUrl[longname]); + } + + if (myClasses.length) { + generate(`Class: ${myClasses[0].name}`, myClasses, helper.longnameToUrl[longname]); + } + + if (myNamespaces.length) { + generate(`Namespace: ${myNamespaces[0].name}`, myNamespaces, helper.longnameToUrl[longname]); + } + + if (myMixins.length) { + generate(`Mixin: ${myMixins[0].name}`, myMixins, helper.longnameToUrl[longname]); + } + + if (myExternals.length) { + generate(`External: ${myExternals[0].name}`, myExternals, helper.longnameToUrl[longname]); + } + + if (myInterfaces.length) { + generate(`Interface: ${myInterfaces[0].name}`, myInterfaces, helper.longnameToUrl[longname]); + } + }); + + // TODO: move the tutorial functions to templateHelper.js + function generateTutorial(title, tutorial, filename) { + const tutorialData = { + title: title, + header: tutorial.title, + content: tutorial.parse(), + children: tutorial.children + }; + const tutorialPath = path.join(outdir, filename); + let html = view.render('tutorial.tmpl', tutorialData); + + // yes, you can use {@link} in tutorials too! + html = helper.resolveLinks(html); // turn {@link foo} into foo + + fs.writeFileSync(tutorialPath, html, 'utf8'); + } + + // tutorials can have only one parent so there is no risk for loops + function saveChildren({children}) { + children.forEach(child => { + generateTutorial(`Tutorial: ${child.title}`, child, helper.tutorialToUrl(child.name)); + saveChildren(child); + }); + } + + saveChildren(tutorials); +}; diff --git a/docs/jsdoc/templates/template/static/README.md b/docs/jsdoc/templates/template/static/README.md new file mode 100644 index 0000000..c55ab7f --- /dev/null +++ b/docs/jsdoc/templates/template/static/README.md @@ -0,0 +1,3 @@ +Changelog: + +styles changed by MH on 1/7/2019, see styles/README.md diff --git a/docs/jsdoc/templates/template/static/fonts/OpenSans-Bold-webfont.eot b/docs/jsdoc/templates/template/static/fonts/OpenSans-Bold-webfont.eot new file mode 100644 index 0000000..5d20d91 Binary files /dev/null and b/docs/jsdoc/templates/template/static/fonts/OpenSans-Bold-webfont.eot differ diff --git a/docs/jsdoc/templates/template/static/fonts/OpenSans-Bold-webfont.svg b/docs/jsdoc/templates/template/static/fonts/OpenSans-Bold-webfont.svg new file mode 100644 index 0000000..3ed7be4 --- /dev/null +++ b/docs/jsdoc/templates/template/static/fonts/OpenSans-Bold-webfont.svg @@ -0,0 +1,1830 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/jsdoc/templates/template/static/fonts/OpenSans-Bold-webfont.woff b/docs/jsdoc/templates/template/static/fonts/OpenSans-Bold-webfont.woff new file mode 100644 index 0000000..1205787 Binary files /dev/null and b/docs/jsdoc/templates/template/static/fonts/OpenSans-Bold-webfont.woff differ diff --git a/docs/jsdoc/templates/template/static/fonts/OpenSans-BoldItalic-webfont.eot b/docs/jsdoc/templates/template/static/fonts/OpenSans-BoldItalic-webfont.eot new file mode 100644 index 0000000..1f639a1 Binary files /dev/null and b/docs/jsdoc/templates/template/static/fonts/OpenSans-BoldItalic-webfont.eot differ diff --git a/docs/jsdoc/templates/template/static/fonts/OpenSans-BoldItalic-webfont.svg b/docs/jsdoc/templates/template/static/fonts/OpenSans-BoldItalic-webfont.svg new file mode 100644 index 0000000..6a2607b --- /dev/null +++ b/docs/jsdoc/templates/template/static/fonts/OpenSans-BoldItalic-webfont.svg @@ -0,0 +1,1830 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/jsdoc/templates/template/static/fonts/OpenSans-BoldItalic-webfont.woff b/docs/jsdoc/templates/template/static/fonts/OpenSans-BoldItalic-webfont.woff new file mode 100644 index 0000000..ed760c0 Binary files /dev/null and b/docs/jsdoc/templates/template/static/fonts/OpenSans-BoldItalic-webfont.woff differ diff --git a/docs/jsdoc/templates/template/static/fonts/OpenSans-Italic-webfont.eot b/docs/jsdoc/templates/template/static/fonts/OpenSans-Italic-webfont.eot new file mode 100644 index 0000000..0c8a0ae Binary files /dev/null and b/docs/jsdoc/templates/template/static/fonts/OpenSans-Italic-webfont.eot differ diff --git a/docs/jsdoc/templates/template/static/fonts/OpenSans-Italic-webfont.svg b/docs/jsdoc/templates/template/static/fonts/OpenSans-Italic-webfont.svg new file mode 100644 index 0000000..e1075dc --- /dev/null +++ b/docs/jsdoc/templates/template/static/fonts/OpenSans-Italic-webfont.svg @@ -0,0 +1,1830 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/jsdoc/templates/template/static/fonts/OpenSans-Italic-webfont.woff b/docs/jsdoc/templates/template/static/fonts/OpenSans-Italic-webfont.woff new file mode 100644 index 0000000..ff652e6 Binary files /dev/null and b/docs/jsdoc/templates/template/static/fonts/OpenSans-Italic-webfont.woff differ diff --git a/docs/jsdoc/templates/template/static/fonts/OpenSans-Light-webfont.eot b/docs/jsdoc/templates/template/static/fonts/OpenSans-Light-webfont.eot new file mode 100644 index 0000000..1486840 Binary files /dev/null and b/docs/jsdoc/templates/template/static/fonts/OpenSans-Light-webfont.eot differ diff --git a/docs/jsdoc/templates/template/static/fonts/OpenSans-Light-webfont.svg b/docs/jsdoc/templates/template/static/fonts/OpenSans-Light-webfont.svg new file mode 100644 index 0000000..11a472c --- /dev/null +++ b/docs/jsdoc/templates/template/static/fonts/OpenSans-Light-webfont.svg @@ -0,0 +1,1831 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/jsdoc/templates/template/static/fonts/OpenSans-Light-webfont.woff b/docs/jsdoc/templates/template/static/fonts/OpenSans-Light-webfont.woff new file mode 100644 index 0000000..e786074 Binary files /dev/null and b/docs/jsdoc/templates/template/static/fonts/OpenSans-Light-webfont.woff differ diff --git a/docs/jsdoc/templates/template/static/fonts/OpenSans-LightItalic-webfont.eot b/docs/jsdoc/templates/template/static/fonts/OpenSans-LightItalic-webfont.eot new file mode 100644 index 0000000..8f44592 Binary files /dev/null and b/docs/jsdoc/templates/template/static/fonts/OpenSans-LightItalic-webfont.eot differ diff --git a/docs/jsdoc/templates/template/static/fonts/OpenSans-LightItalic-webfont.svg b/docs/jsdoc/templates/template/static/fonts/OpenSans-LightItalic-webfont.svg new file mode 100644 index 0000000..431d7e3 --- /dev/null +++ b/docs/jsdoc/templates/template/static/fonts/OpenSans-LightItalic-webfont.svg @@ -0,0 +1,1835 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/jsdoc/templates/template/static/fonts/OpenSans-LightItalic-webfont.woff b/docs/jsdoc/templates/template/static/fonts/OpenSans-LightItalic-webfont.woff new file mode 100644 index 0000000..43e8b9e Binary files /dev/null and b/docs/jsdoc/templates/template/static/fonts/OpenSans-LightItalic-webfont.woff differ diff --git a/docs/jsdoc/templates/template/static/fonts/OpenSans-Regular-webfont.eot b/docs/jsdoc/templates/template/static/fonts/OpenSans-Regular-webfont.eot new file mode 100644 index 0000000..6bbc3cf Binary files /dev/null and b/docs/jsdoc/templates/template/static/fonts/OpenSans-Regular-webfont.eot differ diff --git a/docs/jsdoc/templates/template/static/fonts/OpenSans-Regular-webfont.svg b/docs/jsdoc/templates/template/static/fonts/OpenSans-Regular-webfont.svg new file mode 100644 index 0000000..25a3952 --- /dev/null +++ b/docs/jsdoc/templates/template/static/fonts/OpenSans-Regular-webfont.svg @@ -0,0 +1,1831 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/jsdoc/templates/template/static/fonts/OpenSans-Regular-webfont.woff b/docs/jsdoc/templates/template/static/fonts/OpenSans-Regular-webfont.woff new file mode 100644 index 0000000..e231183 Binary files /dev/null and b/docs/jsdoc/templates/template/static/fonts/OpenSans-Regular-webfont.woff differ diff --git a/docs/jsdoc/templates/template/static/scripts/prettify/Apache-License-2.0.txt b/docs/jsdoc/templates/template/static/scripts/prettify/Apache-License-2.0.txt new file mode 100644 index 0000000..d645695 --- /dev/null +++ b/docs/jsdoc/templates/template/static/scripts/prettify/Apache-License-2.0.txt @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/docs/jsdoc/templates/template/static/styles/README.md b/docs/jsdoc/templates/template/static/styles/README.md new file mode 100644 index 0000000..6e6e82d --- /dev/null +++ b/docs/jsdoc/templates/template/static/styles/README.md @@ -0,0 +1,3 @@ +Changelog: + +// jsdoc-default.css modified by MH: 1/7/2019, see MH below \ No newline at end of file diff --git a/docs/jsdoc/templates/template/static/styles/jsdoc-default.css b/docs/jsdoc/templates/template/static/styles/jsdoc-default.css new file mode 100644 index 0000000..a2802ea --- /dev/null +++ b/docs/jsdoc/templates/template/static/styles/jsdoc-default.css @@ -0,0 +1,367 @@ +/* modified by MH: 1/7/2019, see MH below */ + +@font-face { + font-family: 'Open Sans'; + font-weight: normal; + font-style: normal; + src: url('../fonts/OpenSans-Regular-webfont.eot'); + src: + local('Open Sans'), + local('OpenSans'), + url('../fonts/OpenSans-Regular-webfont.eot?#iefix') format('embedded-opentype'), + url('../fonts/OpenSans-Regular-webfont.woff') format('woff'), + url('../fonts/OpenSans-Regular-webfont.svg#open_sansregular') format('svg'); +} + +@font-face { + font-family: 'Open Sans Light'; + font-weight: normal; + font-style: normal; + src: url('../fonts/OpenSans-Light-webfont.eot'); + src: + local('Open Sans Light'), + local('OpenSans Light'), + url('../fonts/OpenSans-Light-webfont.eot?#iefix') format('embedded-opentype'), + url('../fonts/OpenSans-Light-webfont.woff') format('woff'), + url('../fonts/OpenSans-Light-webfont.svg#open_sanslight') format('svg'); +} + +html +{ + overflow: auto; + background-color: #fff; + font-size: 14px; +} + +body +{ + font-family: 'Open Sans', sans-serif; + line-height: 1.5; + color: #4d4e53; + background-color: white; +} + +a, a:visited, a:active { + color: #0095dd; + text-decoration: none; +} + +a:hover { + text-decoration: underline; +} + +header +{ + display: block; + padding: 0px 4px; +} + +tt, code, kbd, samp { + font-family: Consolas, Monaco, 'Andale Mono', monospace; +} + +.class-description { + font-size: 130%; + line-height: 140%; + margin-bottom: 1em; + margin-top: 1em; +} + +.class-description:empty { + margin: 0; +} + +#main { + float: left; + width: 70%; +} + +article dl { + margin-bottom: 40px; +} + +article img { + max-width: 100%; +} + +section +{ + display: block; + background-color: #fff; + padding: 12px 24px; + border-bottom: 1px solid #ccc; + margin-right: 30px; +} + +.variation { + display: none; +} + +.signature-attributes { + font-size: 60%; + color: #aaa; + font-style: italic; + font-weight: lighter; +} + +nav +{ + display: block; + float: right; + margin-top: 28px; + width: 30%; + box-sizing: border-box; + border-left: 1px solid #ccc; + padding-left: 16px; +} + +nav ul { + font-family: 'Lucida Grande', 'Lucida Sans Unicode', arial, sans-serif; + font-size: 100%; + line-height: 17px; + padding: 0; + margin: 0; + list-style-type: none; +} + +nav ul a, nav ul a:visited, nav ul a:active { + font-family: Consolas, Monaco, 'Andale Mono', monospace; + line-height: 18px; + color: #4D4E53; +} + +nav h3 { + margin-top: 12px; +} + +nav li { + margin-top: 6px; +} + +footer { + display: block; + padding: 6px; + margin-top: 12px; + font-style: italic; + font-size: 90%; +} + +h1, h2, h3, h4 { + font-weight: 200; + margin: 0; +} + +h1 +{ + font-family: 'Open Sans Light', sans-serif; + font-size: 48px; + letter-spacing: -2px; + margin: 12px 24px 20px; +} + +/* added by MH: 1/7/2019 + support for overall library index, + using library-page class */ +h2.libraries-page { + margin: 16px 28px 24px; +} + +h2, h3.subsection-title +{ + font-size: 30px; + font-weight: 700; + letter-spacing: -1px; + margin-bottom: 12px; +} + +h3 +{ + font-size: 24px; + letter-spacing: -0.5px; + margin-bottom: 12px; +} + +h4 +{ + font-size: 18px; + letter-spacing: -0.33px; + margin-bottom: 12px; + color: #4d4e53; +} + +h5, .container-overview .subsection-title +{ + font-size: 120%; + font-weight: bold; + letter-spacing: -0.01em; + margin: 8px 0 3px 0; +} + +h6 +{ + font-size: 100%; + letter-spacing: -0.01em; + margin: 6px 0 3px 0; + font-style: italic; +} + +table +{ + border-spacing: 0; + border: 0; + border-collapse: collapse; +} + +td, th +{ + border: 1px solid #ddd; + margin: 0px; + text-align: left; + vertical-align: top; + padding: 4px 6px; + display: table-cell; +} + +thead tr +{ + background-color: #ddd; + font-weight: bold; +} + +th { border-right: 1px solid #aaa; } +tr > th:last-child { border-right: 1px solid #ddd; } + +.ancestors, .attribs { color: #999; } +.ancestors a, .attribs a +{ + color: #999 !important; + text-decoration: none; +} + +.clear +{ + clear: both; +} + +.important +{ + font-weight: bold; + color: #950B02; +} + +.yes-def { + text-indent: -1000px; +} + +.type-signature { + color: #aaa; +} + +.name, .signature { + font-family: Consolas, Monaco, 'Andale Mono', monospace; +} + +.details { margin-top: 14px; border-left: 2px solid #DDD; } +.details dt { width: 120px; float: left; padding-left: 10px; padding-top: 6px; } +.details dd { margin-left: 70px; } +.details ul { margin: 0; } +.details ul { list-style-type: none; } +.details li { margin-left: 30px; padding-top: 6px; } +.details pre.prettyprint { margin: 0 } +.details .object-value { padding-top: 0; } + +.description { + margin-bottom: 1em; + margin-top: 1em; +} + +.code-caption +{ + font-style: italic; + font-size: 107%; + margin: 0; +} + +.source +{ + border: 1px solid #ddd; + width: 80%; + overflow: auto; +} + +.prettyprint.source { + width: inherit; +} + +.source code +{ + font-size: 100%; + line-height: 18px; + display: block; + padding: 4px 12px; + margin: 0; + background-color: #fff; + color: #4D4E53; +} + +.prettyprint code span.line +{ + display: inline-block; +} + +.prettyprint.linenums +{ + padding-left: 70px; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +.prettyprint.linenums ol +{ + padding-left: 0; +} + +.prettyprint.linenums li +{ + border-left: 3px #ddd solid; +} + +.prettyprint.linenums li.selected, +.prettyprint.linenums li.selected * +{ + background-color: lightyellow; +} + +.prettyprint.linenums li * +{ + -webkit-user-select: text; + -moz-user-select: text; + -ms-user-select: text; + user-select: text; +} + +.params .name, .props .name, .name code { + color: #4D4E53; + font-family: Consolas, Monaco, 'Andale Mono', monospace; + font-size: 100%; +} + +.params td.description > p:first-child, +.props td.description > p:first-child +{ + margin-top: 0; + padding-top: 0; +} + +.params td.description > p:last-child, +.props td.description > p:last-child +{ + margin-bottom: 0; + padding-bottom: 0; +} + +.disabled { + color: #454545; +} diff --git a/docs/jsdoc/templates/template/static/styles/prettify-jsdoc.css b/docs/jsdoc/templates/template/static/styles/prettify-jsdoc.css new file mode 100644 index 0000000..5a2526e --- /dev/null +++ b/docs/jsdoc/templates/template/static/styles/prettify-jsdoc.css @@ -0,0 +1,111 @@ +/* JSDoc prettify.js theme */ + +/* plain text */ +.pln { + color: #000000; + font-weight: normal; + font-style: normal; +} + +/* string content */ +.str { + color: #006400; + font-weight: normal; + font-style: normal; +} + +/* a keyword */ +.kwd { + color: #000000; + font-weight: bold; + font-style: normal; +} + +/* a comment */ +.com { + font-weight: normal; + font-style: italic; +} + +/* a type name */ +.typ { + color: #000000; + font-weight: normal; + font-style: normal; +} + +/* a literal value */ +.lit { + color: #006400; + font-weight: normal; + font-style: normal; +} + +/* punctuation */ +.pun { + color: #000000; + font-weight: bold; + font-style: normal; +} + +/* lisp open bracket */ +.opn { + color: #000000; + font-weight: bold; + font-style: normal; +} + +/* lisp close bracket */ +.clo { + color: #000000; + font-weight: bold; + font-style: normal; +} + +/* a markup tag name */ +.tag { + color: #006400; + font-weight: normal; + font-style: normal; +} + +/* a markup attribute name */ +.atn { + color: #006400; + font-weight: normal; + font-style: normal; +} + +/* a markup attribute value */ +.atv { + color: #006400; + font-weight: normal; + font-style: normal; +} + +/* a declaration */ +.dec { + color: #000000; + font-weight: bold; + font-style: normal; +} + +/* a variable name */ +.var { + color: #000000; + font-weight: normal; + font-style: normal; +} + +/* a function name */ +.fun { + color: #000000; + font-weight: bold; + font-style: normal; +} + +/* Specify class=linenums on a pre to get line numbering */ +ol.linenums { + margin-top: 0; + margin-bottom: 0; +} diff --git a/docs/jsdoc/templates/template/static/styles/prettify-tomorrow.css b/docs/jsdoc/templates/template/static/styles/prettify-tomorrow.css new file mode 100644 index 0000000..b6f92a7 --- /dev/null +++ b/docs/jsdoc/templates/template/static/styles/prettify-tomorrow.css @@ -0,0 +1,132 @@ +/* Tomorrow Theme */ +/* Original theme - https://github.com/chriskempson/tomorrow-theme */ +/* Pretty printing styles. Used with prettify.js. */ +/* SPAN elements with the classes below are added by prettyprint. */ +/* plain text */ +.pln { + color: #4d4d4c; } + +@media screen { + /* string content */ + .str { + color: #718c00; } + + /* a keyword */ + .kwd { + color: #8959a8; } + + /* a comment */ + .com { + color: #8e908c; } + + /* a type name */ + .typ { + color: #4271ae; } + + /* a literal value */ + .lit { + color: #f5871f; } + + /* punctuation */ + .pun { + color: #4d4d4c; } + + /* lisp open bracket */ + .opn { + color: #4d4d4c; } + + /* lisp close bracket */ + .clo { + color: #4d4d4c; } + + /* a markup tag name */ + .tag { + color: #c82829; } + + /* a markup attribute name */ + .atn { + color: #f5871f; } + + /* a markup attribute value */ + .atv { + color: #3e999f; } + + /* a declaration */ + .dec { + color: #f5871f; } + + /* a variable name */ + .var { + color: #c82829; } + + /* a function name */ + .fun { + color: #4271ae; } } +/* Use higher contrast and text-weight for printable form. */ +@media print, projection { + .str { + color: #060; } + + .kwd { + color: #006; + font-weight: bold; } + + .com { + color: #600; + font-style: italic; } + + .typ { + color: #404; + font-weight: bold; } + + .lit { + color: #044; } + + .pun, .opn, .clo { + color: #440; } + + .tag { + color: #006; + font-weight: bold; } + + .atn { + color: #404; } + + .atv { + color: #060; } } +/* Style */ +/* +pre.prettyprint { + background: white; + font-family: Consolas, Monaco, 'Andale Mono', monospace; + font-size: 12px; + line-height: 1.5; + border: 1px solid #ccc; + padding: 10px; } +*/ + +/* Specify class=linenums on a pre to get line numbering */ +ol.linenums { + margin-top: 0; + margin-bottom: 0; } + +/* IE indents via margin-left */ +li.L0, +li.L1, +li.L2, +li.L3, +li.L4, +li.L5, +li.L6, +li.L7, +li.L8, +li.L9 { + /* */ } + +/* Alternate shading for lines */ +li.L1, +li.L3, +li.L5, +li.L7, +li.L9 { + /* */ } diff --git a/docs/jsdoc/templates/template/tmpl/README.md b/docs/jsdoc/templates/template/tmpl/README.md new file mode 100644 index 0000000..8b5d6e1 --- /dev/null +++ b/docs/jsdoc/templates/template/tmpl/README.md @@ -0,0 +1,4 @@ +Changelog, compared to default template + +container.tmpl: + \ No newline at end of file diff --git a/docs/jsdoc/templates/template/tmpl/augments.tmpl b/docs/jsdoc/templates/template/tmpl/augments.tmpl new file mode 100644 index 0000000..446d28a --- /dev/null +++ b/docs/jsdoc/templates/template/tmpl/augments.tmpl @@ -0,0 +1,10 @@ + + + +
      +
    • +
    + diff --git a/docs/jsdoc/templates/template/tmpl/container.tmpl b/docs/jsdoc/templates/template/tmpl/container.tmpl new file mode 100644 index 0000000..0912be5 --- /dev/null +++ b/docs/jsdoc/templates/template/tmpl/container.tmpl @@ -0,0 +1,235 @@ + + + + + + + + + + +
    +
    +

    + Below you find all constants and functions used in the textbook + Structure and Interpretation + of Computer Programs, JavaScript Adaptation (SICP JS). + These constants and functions are predeclared in the language + Source §4, a JavaScript sublanguage implemented in the + Source Academy. +

    +

    Can I use these constants and functions without the Source Academy ?

    +

    + Yes, these constants and functions are provided by the + NPM package sicp. You can + use this package to run the JavaScript programs of SICP JS in any JavaScript + system that is based on Node.js. Follow the + link for installation instructions. +

    +
    +
    + + + + + + + + + + +
    + +
    + +

    + +

    + +
    + + + + +
    + + + +
    + +
    +
    + + +
    + + + + + + + + + +
    + + + + + +

    Example 1? 's':'' ?>

    + + + +
    + + +

    Extends

    + + + + + +

    Requires

    + +
      +
    • +
    + + + +

    Classes

    + +
    +
    +
    +
    + + + +

    Interfaces

    + +
    +
    +
    +
    + + + +

    Mixins

    + +
    +
    +
    +
    + + + +

    Namespaces

    + +
    +
    +
    +
    + + + +

    Constants

    + + +
    + +
    + + + + +

    Functions

    + + +
    + +
    + + + + +

    Type Definitions

    + + + + + + + + + +

    Events

    + + + + + +
    + +
    + + + diff --git a/docs/jsdoc/templates/template/tmpl/details.tmpl b/docs/jsdoc/templates/template/tmpl/details.tmpl new file mode 100644 index 0000000..d8a7c6e --- /dev/null +++ b/docs/jsdoc/templates/template/tmpl/details.tmpl @@ -0,0 +1,144 @@ +" + data.defaultvalue + ""; + defaultObjectClass = ' class="object-value"'; +} +?> + + +
    Properties:
    + + + + + +
    + + +
    Version:
    +
    + + + +
    Since:
    +
    + + + +
    Inherited From:
    +
    • + +
    + + + +
    Overrides:
    +
    • + +
    + + + +
    Implementations:
    +
      + +
    • + +
    + + + +
    Implements:
    +
      + +
    • + +
    + + + +
    Mixes In:
    + +
      + +
    • + +
    + + + +
    Deprecated:
    • Yes
    + + + +
    Author:
    +
    +
      +
    • +
    +
    + + + + + + + + +
    License:
    +
    + + + +
    Default Value:
    +
      + > +
    + + + + +
    Source:
    +
    • + , +
    + + + +
    Tutorials:
    +
    +
      +
    • +
    +
    + + + +
    See:
    +
    +
      +
    • +
    +
    + + + +
    To Do:
    +
    +
      +
    • +
    +
    + +
    diff --git a/docs/jsdoc/templates/template/tmpl/example.tmpl b/docs/jsdoc/templates/template/tmpl/example.tmpl new file mode 100644 index 0000000..e87caa5 --- /dev/null +++ b/docs/jsdoc/templates/template/tmpl/example.tmpl @@ -0,0 +1,2 @@ + +
    diff --git a/docs/jsdoc/templates/template/tmpl/examples.tmpl b/docs/jsdoc/templates/template/tmpl/examples.tmpl new file mode 100644 index 0000000..04d975e --- /dev/null +++ b/docs/jsdoc/templates/template/tmpl/examples.tmpl @@ -0,0 +1,13 @@ + +

    + +
    + \ No newline at end of file diff --git a/docs/jsdoc/templates/template/tmpl/exceptions.tmpl b/docs/jsdoc/templates/template/tmpl/exceptions.tmpl new file mode 100644 index 0000000..9cef6c7 --- /dev/null +++ b/docs/jsdoc/templates/template/tmpl/exceptions.tmpl @@ -0,0 +1,32 @@ + + +
    +
    +
    + +
    +
    +
    +
    +
    +
    + Type +
    +
    + +
    +
    +
    +
    +
    + +
    + + + + + +
    + diff --git a/docs/jsdoc/templates/template/tmpl/layout.tmpl b/docs/jsdoc/templates/template/tmpl/layout.tmpl new file mode 100644 index 0000000..52ca053 --- /dev/null +++ b/docs/jsdoc/templates/template/tmpl/layout.tmpl @@ -0,0 +1,42 @@ + + + + + <?js= header ?> + + + + + + + + + + +
    + +

    + + +
    + + + +
    + + + + + + + diff --git a/docs/jsdoc/templates/template/tmpl/mainpage.tmpl b/docs/jsdoc/templates/template/tmpl/mainpage.tmpl new file mode 100644 index 0000000..64e9e59 --- /dev/null +++ b/docs/jsdoc/templates/template/tmpl/mainpage.tmpl @@ -0,0 +1,14 @@ + + + +

    + + + +
    +
    +
    + diff --git a/docs/jsdoc/templates/template/tmpl/members.tmpl b/docs/jsdoc/templates/template/tmpl/members.tmpl new file mode 100644 index 0000000..154c17b --- /dev/null +++ b/docs/jsdoc/templates/template/tmpl/members.tmpl @@ -0,0 +1,38 @@ + +

    + + +

    + + + +
    + +
    + + + +
    Type:
    +
      +
    • + +
    • +
    + + + + + +
    Fires:
    +
      +
    • +
    + + + +
    Example 1? 's':'' ?>
    + + diff --git a/docs/jsdoc/templates/template/tmpl/method.tmpl b/docs/jsdoc/templates/template/tmpl/method.tmpl new file mode 100644 index 0000000..0125fe2 --- /dev/null +++ b/docs/jsdoc/templates/template/tmpl/method.tmpl @@ -0,0 +1,131 @@ + + + +

    Constructor

    + + + +

    + + + +

    + + + + +
    + +
    + + + +
    Extends:
    + + + + +
    Type:
    +
      +
    • + +
    • +
    + + + +
    This:
    +
    + + + +
    Parameters:
    + + + + + + +
    Requires:
    +
      +
    • +
    + + + +
    Fires:
    +
      +
    • +
    + + + +
    Listens to Events:
    +
      +
    • +
    + + + +
    Listeners of This Event:
    +
      +
    • +
    + + + +
    Modifies:
    + 1) { ?>
      +
    • +
    + + + + +
    Throws:
    + 1) { ?>
      +
    • +
    + + + + +
    Returns:
    + 1) { ?>
      +
    • +
    + + + + +
    Yields:
    + 1) { ?>
      +
    • +
    + + + + +
    Example 1? 's':'' ?>
    + + diff --git a/docs/jsdoc/templates/template/tmpl/modifies.tmpl b/docs/jsdoc/templates/template/tmpl/modifies.tmpl new file mode 100644 index 0000000..16ccbf8 --- /dev/null +++ b/docs/jsdoc/templates/template/tmpl/modifies.tmpl @@ -0,0 +1,14 @@ + + + +
    +
    + Type +
    +
    + +
    +
    + diff --git a/docs/jsdoc/templates/template/tmpl/params.tmpl b/docs/jsdoc/templates/template/tmpl/params.tmpl new file mode 100644 index 0000000..1fb4049 --- /dev/null +++ b/docs/jsdoc/templates/template/tmpl/params.tmpl @@ -0,0 +1,131 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeAttributesDefaultDescription
    + + + + + + <optional>
    + + + + <nullable>
    + + + + <repeatable>
    + +
    + + + + +
    Properties
    + +
    diff --git a/docs/jsdoc/templates/template/tmpl/properties.tmpl b/docs/jsdoc/templates/template/tmpl/properties.tmpl new file mode 100644 index 0000000..40e0909 --- /dev/null +++ b/docs/jsdoc/templates/template/tmpl/properties.tmpl @@ -0,0 +1,108 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeAttributesDefaultDescription
    + + + + + + <optional>
    + + + + <nullable>
    + +
    + + + + +
    Properties
    +
    diff --git a/docs/jsdoc/templates/template/tmpl/returns.tmpl b/docs/jsdoc/templates/template/tmpl/returns.tmpl new file mode 100644 index 0000000..d070459 --- /dev/null +++ b/docs/jsdoc/templates/template/tmpl/returns.tmpl @@ -0,0 +1,19 @@ + +
    + +
    + + + +
    +
    + Type +
    +
    + +
    +
    + \ No newline at end of file diff --git a/docs/jsdoc/templates/template/tmpl/source.tmpl b/docs/jsdoc/templates/template/tmpl/source.tmpl new file mode 100644 index 0000000..e559b5d --- /dev/null +++ b/docs/jsdoc/templates/template/tmpl/source.tmpl @@ -0,0 +1,8 @@ + +
    +
    +
    +
    +
    \ No newline at end of file diff --git a/docs/jsdoc/templates/template/tmpl/tutorial.tmpl b/docs/jsdoc/templates/template/tmpl/tutorial.tmpl new file mode 100644 index 0000000..88a0ad5 --- /dev/null +++ b/docs/jsdoc/templates/template/tmpl/tutorial.tmpl @@ -0,0 +1,19 @@ +
    + +
    + 0) { ?> +
      +
    • +
    + + +

    +
    + +
    + +
    + +
    diff --git a/docs/jsdoc/templates/template/tmpl/type.tmpl b/docs/jsdoc/templates/template/tmpl/type.tmpl new file mode 100644 index 0000000..ec2c6c0 --- /dev/null +++ b/docs/jsdoc/templates/template/tmpl/type.tmpl @@ -0,0 +1,7 @@ + + +| + \ No newline at end of file diff --git a/docs/lib/math.d.ts b/docs/lib/math.d.ts new file mode 100644 index 0000000..5be3c1b --- /dev/null +++ b/docs/lib/math.d.ts @@ -0,0 +1,530 @@ +/** + * + * Return the absolute value of a number as a float. + * Unlike the built-in abs(), math_fabs() always returns a float, + * even when the input is an integer. + * It only accepts int or float types (complex numbers are not supported). + * + * @param {int | float} x - The number whose absolute value is computed. + * @returns {float} absolute value of x +*/ +declare function math_fabs(x: any): float; +/** + * Return the number of ways to choose k items from n items + * without repetition and without order. + * Returns zero when k > n. + * + * @param {int} n - Total number of items (must be a non-negative integer). + * @param {int} k - Number of items to choose (must be a non-negative integer). + * @returns {int} the binomial coefficient of n and k + */ +declare function math_comb(n: any, k: any): int; +/** + * Return n factorial as an integer. + * + * @param {int} n - A non-negative integer whose factorial is to be computed. + * @returns {int} the factorial of n + */ +declare function math_factorial(n: any): int; +/** + * Return the greatest common divisor of the specified *integers arguments. + * If any of the arguments is nonzero, then the returned value is the largest positive + * integer that is a divisor of all arguments. + * If all arguments are 0, then the returned value is 0. + * gcd() without arguments returns 0. + * If any of the provided integers is negative, the function treats it as its + * absolute value when computing the GCD. + * + * @param {int} *integers - A variable number of integer arguments for + * which to compute the greatest common divisor. + * @returns {int} the greatest common divisor of the given integers as a positive + * integer + */ +declare function math_gcd(...integers: any[]): int; +/** + * Return the integer square root of the non-negative n. + * + * @param {int} n - A non-negative integer for which to compute the + * integer square root. + * @returns {int} the integer square root of n + */ +declare function math_isqrt(n: any): int; +/** + * Return the least common multiple of the specified integer arguments. + * If all arguments are nonzero, then the returned value is the smallest positive + * integer that is a multiple of all arguments. + * If any of the arguments is 0, then the returned value is 0. + * lcm() without arguments returns 1. + * If any of the input integers is negative, math_lcm() treats it + * as its absolute value when computing the LCM, so the result is always + * non-negative. + * + * @param {int} *integers - A variable number of integer arguments for + * which the least common multiple is computed. + * @returns {int} the least common multiple of the given integers as a positive + * integer + */ +declare function math_lcm(...integers: any[]): int; +/** + * Return the number of ways to choose k items from n items without + * repetition and with order. + * Returns zero when k > n. + * + * @param {int} n - Total number of items (must be a non-negative integer). + * @param {int} k - Number of items to choose (must be a non-negative integer). + * @returns {int} the permutations of n and k + */ +declare function math_perm(n: any, k: any): int; +/** + * Return the ceiling of x, the smallest integer greater than or equal to + * x. + * + * @param {int | float} x - The numeric value for which to compute the ceiling. + * @returns {int} the ceiling of x + */ +declare function math_ceil(x: any): int; +/** + * Return the floor of x, the largest integer less than or equal to + * x. + * + * @param {int | float} x - The numeric value for which to compute the flooring. + * @returns {int} the flooring of x + */ +declare function math_floor(x: any): int; +/** + * Fused multiply–add operation. Return (x * y) + z, computed as though with infinite + * precision and range followed by a single round to the float format. + * This operation often provides better accuracy than the direct expression + * (x * y) + z. + * This function follows the specification of the + * (fusedMultiplyAdd) operation described in the IEEE 754 standard. + * The standard leaves one case implementation-defined, namely the result of + * fma(0, inf, nan) and fma(inf, 0, nan). + * In these cases, math.fma returns a math.nan, and does not raise any exception. + * + * @param {int | float} x - The first multiplicand. It is multiplied by y. + * @param {int | float} y - The second multiplicand. It is multiplied by x. + * @param {int | float} z - The addend. The product of x and y + * is added to z using a fused multiply–add operation. + * @returns {float} the float value of (x * y) + z + */ +declare function math_fma(x: any, y: any, z: any): float; +/** + * Return the floating-point remainder of x / y, as defined by the + * platform C library function fmod(x, y). The sign of the result is the same as the + * sign of x. + * + * @param {int | float} x - The dividend. It will be converted to a float + * if necessary. + * @param {int | float} y - The divisor. It will be converted to a float + * if necessary. + * @returns {float} the platform C library function fmod(x, y) style remainder of + * x divided by y + */ +declare function math_fmod(x: any, y: any): float; +/** + * Return the IEEE 754-style remainder of x with respect to y. For finite + * x and finite nonzero y, this is the difference x - n*y, where + * n is the closest integer to the exact value of the quotient x / y. + * If x / y is exactly halfway between two consecutive integers, the nearest + * even integer is used for n. The remainder r = remainder(x, y) + * thus always satisfies abs(r) <= 0.5 * abs(y). + * + * @param {int | float} x - The dividend. It will be converted to a float + * if necessary. + * @param {int | float} y - The divisor. It will be converted to a float + * if necessary. + * @returns {float} the IEEE 754-style remainder of x divided by y + */ +declare function math_remainder(x: any, y: any): float; +/** + * Return x with the fractional part removed, leaving the integer part. + * trunc() is equivalent to floor() for positive x, and equivalent + * to ceil() for negative x. + * + * @param {int | float} x - The numeric value from which the fractional part is removed, + * returning the integral part (i.e. x rounded toward 0). + * @returns {int} the integer part of x + */ +declare function math_trunc(x: any): int; +/** + * Return a float with the magnitude (absolute value) of x + * but the sign of y. + * + * @param {int | float} x - The value whose magnitude (absolute value) will be used. + * @param {int | float} y - The value whose sign will be applied to x's magnitude. + * @returns {float} a float with the absolute value of x but with the sign of + * y + */ +declare function math_copysign(x: any, y: any): float; +/** + * Return True if x is neither an infinity nor a nan, + * and False otherwise. + * + * @param {int | float} x - A numeric value. It is converted to float if necessary. + * @returns {bool} the True if x is finite; otherwise, False + */ +declare function math_isfinite(x: any): bool; +/** + * Return True if x is a positive or negative infinity, + * and False otherwise. + * + * @param {int | float} x - A numeric value. It is converted to float if necessary. + * @returns {bool} the True if x is an infinity (positive or negative); + * otherwise, False + */ +declare function math_isinf(x: any): bool; +/** + * Return True if x is a nan (not a number), + * and False otherwise. + * + * @param {int | float} x - A numeric value. It is converted to float if necessary. + * @returns {bool} the True if x is nan; otherwise, False + */ +declare function math_isnan(x: any): bool; +/** + * Return x * (2**i). This is essentially the inverse of function + * frexp(). + * + * @param {int | float} x - A numeric value (the significand). It is converted to + * float if necessary. + * @param {int} i - An integer exponent. + * @returns {float} the result of x multiplied by 2 raised to the power + * i + */ +declare function math_ldexp(x: any, i: any): float; +/** + * Return the floating-point value steps steps after x towards + * y. If x is equal to y, return y, unless + * steps is 0. + * + * @param {int | float} x - The starting floating-point number from which the stepping begins. + * @param {int | float} y - The target value that determines the direction. The function will + * return a value toward y from x. + * @param {int} steps - The number of representable floating-point values to step from + * x toward y (default is 1). + * @returns {float} the floating-point number that is exactly steps representable numbers + * away from x in the direction of y + */ +declare function math_nextafter(x: any, y: any, steps?: number): float; +/** + * Return the value of the least significant bit of the float x. + * If x is a NaN (not a number), return x. + * If x is negative, return ulp(-x). + * If x is a positive infinity, return x. + * If x is equal to 0, return the smallest positive denormalized + * representable float (smaller than the minimum positive normalized float, + * sys.float_info.min, approximately 1.7976931348623157e+308). + * If x is equal to the largest positive representable float, return the value + * of the least significant bit of x, such that the first float smaller than + * x is x - ulp(x). + * Otherwise (when x is a positive finite number), return the value of the least significant + * bit of x, such that the first float bigger than x is + * x + ulp(x). + * + * @param {int | float} x - The numeric value (typically a float) for which to compute + * the ULP (Unit in the Last Place). The function returns the value of the least significant + * bit of x, handling special cases (NaN, infinities, 0, etc.) + * as specified by IEEE 754. + * @returns {float} the spacing between x and the next representable float in the + * direction defined by x's sign + */ +declare function math_ulp(x: any): float; +/** + * Return the cube root of x. + * + * @param {int | float} x - The numeric value for which to compute the cube root. + * @returns {float} the cube root of x + */ +declare function math_cbrt(x: any): float; +/** + * Return e raised to the power x, where e = 2.718281… + * is the base of natural logarithms. + * + * @param {int | float} x - The exponent for which to compute e^x. + * @returns {float} the value of e raised to the power x with high accuracy + */ +declare function math_exp(x: any): float; +/** + * Return 2 raised to the power x. + * + * @param {int | float} x - The exponent for which to compute 2^x. + * @returns {float} the value of 2 raised to the power x with high accuracy + */ +declare function math_exp2(x: any): float; +/** + * Return e raised to the power x, minus 1. Here e is + * the base of natural logarithms. For small x, the subtraction in + * exp(x) - 1 can result in a significant loss of precision; the expm1() function + * provides a way to compute this quantity to full precision. + * + * @param {int | float} x - The exponent for which to compute e^x. + * @returns {float} the value of e raised to the power x minus 1 with high accuracy + */ +declare function math_expm1(x: any): float; +/** + * With one argument, return the natural logarithm of x (to base e). + * With two arguments, return the logarithm of x to the given base, + * calculated as log(x)/log(base). + * + * @param {int | float} x - The numeric value for which to compute the logarithm. + * @param {int | float} base(optional) - The base of the logarithm. If provided, the result is computed as + * log(x)/log(base). If omitted, the natural logarithm (base e) is returned. + * @returns {float} a float representing the logarithm of x (either natural logarithm when + * base is not provided, or logarithm with the given base otherwise) + */ +declare function math_log(x: any, base: any): float; +/** + * Return the natural logarithm of 1+x (base e). The result is calculated in a way + * which is accurate for x near 0. + * + * @param {int | float} x - The number to be added to 1. The function returns the natural + * logarithm of (1+x), computed in a way that is accurate for values of x near 0. + * @returns {float} the natural logarithm of 1+x (base e) + */ +declare function math_log1p(x: any): float; +/** + * Return the base-2 logarithm of x. This is usually more accurate than + * log(x, 2). + * + * @param {int | float} x - A positive number. The function returns the logarithm of + * x to base 2. + * @returns {float} the base-2 logarithm of x + */ +declare function math_log2(x: any): float; +/** + * Return the base-10 logarithm of x. This is usually more accurate than + * log(x, 10). + * + * @param {int | float} x - A positive number. The function returns the logarithm of + * x to base 10. + * @returns {float} the base-10 logarithm of x + */ +declare function math_log10(x: any): float; +/** + * Return x raised to the power y. Unlike the built-in + * ** operator, math_pow() converts both its arguments to type float. + * + * @param {int | float} x - The base value. Both x and y are converted + * to float before the operation. + * @param {int | float} y - The exponent value. The function computes x raised to the power + * y, following IEEE 754 rules for special cases. + * @returns {float} the value of x raised to the power y + */ +declare function math_pow(x: any, y: any): float; +/** + * Return the square root of x. + * + * @param {int | float} x - A non-negative number. x is converted to a float + * if necessary. + * @returns {float} the square root of x + */ +declare function math_sqrt(x: any): float; +/** + * Convert angle x from radians to degrees. + * + * @param {int | float} x - The angle in radians to be converted to degrees. + * @returns {float} the angle, in degrees, corresponding to the given radians + */ +declare function math_degrees(x: any): float; +/** + * Convert angle x from degrees to radians. + * + * @param {int | float} x - The angle in degrees to be converted to radians. + * @returns {float} the angle, in radians, corresponding to the given degrees + */ +declare function math_radians(x: any): float; +/** + * Return the arc cosine of x, in radians. The result is between 0 and pi. + * + * @param {int | float} x - The value whose arc cosine is to be computed. Must be in the interval + * [-1, 1]. + * @returns {float} the arc cosine of x in radians + */ +declare function math_acos(x: any): float; +/** + * Return the arc sine of x, in radians. The result is between -pi/2 and pi/2. + * + * @param {int | float} x - The value whose arc sine is to be computed. Must be in the interval + * [-1, 1]. + * @returns {float} the arc sine of x in radians + */ +declare function math_asin(x: any): float; +/** + * Return the arc tangent of x, in radians. The result is between -pi/2 and pi/2. + * + * @param {int | float} x - The value whose arc tangent is to be computed. + * @returns {float} the arc tangent of x in radians + */ +declare function math_atan(x: any): float; +/** + * Return atan(y / x), in radians. + * + * @param {int | float} y - The y-coordinate of the point. + * @param {int | float} x - The x-coordinate of the point. + * @returns {float} the arc tangent of y/x in radians + */ +declare function math_atan2(y: any, x: any): float; +/** + * Return the cosine of x radians. + * + * @param {int | float} x - The angle in radians for which the cosine is computed. + * @returns {float} the cosine of x + */ +declare function math_cos(x: any): float; +/** + * Return the sine of x radians. + * + * @param {int | float} x - The angle in radians for which the sine is computed. + * @returns {float} the sine of x + */ +declare function math_sin(x: any): float; +/** + * Return the tangent of x radians. + * + * @param {int | float} x - The angle in radians for which the tangent is computed. + * @returns {float} the tangent of x + */ +declare function math_tan(x: any): float; +/** + * Return the inverse hyperbolic cosine of x. + * + * @param {int | float} x - The number for which to compute the inverse hyperbolic cosine. + * (Typically, x must be ≥ 1.) + * @returns {float} the inverse hyperbolic cosine of x + */ +declare function math_acosh(x: any): float; +/** + * Return the inverse hyperbolic sine of x. + * + * @param {int | float} x - The number for which to compute the inverse hyperbolic sine. + * @returns {float} the inverse hyperbolic sine of x + */ +declare function math_asinh(x: any): float; +/** + * Return the inverse hyperbolic tangent of x. + * + * @param {int | float} x - The number for which to compute the inverse hyperbolic tangent. + * (Must be in the interval (-1, 1).) + * @returns {float} the inverse hyperbolic tangent of x + */ +declare function math_atanh(x: any): float; +/** + * Return the hyperbolic cosine of x. + * + * @param {int | float} x - The angle in radians for which to compute cosh(x). + * @returns {float} the hyperbolic cosine of x + */ +declare function math_cosh(x: any): float; +/** + * Return the hyperbolic sine of x. + * + * @param {int | float} x - The angle in radians for which to compute sinh(x). + * @returns {float} the hyperbolic sine of x + */ +declare function math_sinh(x: any): float; +/** + * Return the hyperbolic tangent of x. + * + * @param {int | float} x - The angle in radians for which to compute tanh(x). + * @returns {float} the hyperbolic tangent of x + */ +declare function math_tanh(x: any): float; +/** + * Return the error function at x. + * + * @param {int | float} x - The value at which to evaluate the error function. + * @returns {float} the error function value at x + */ +declare function math_erf(x: any): float; +/** + * Return the complementary error function at x. The complementary error function is + * defined as 1.0 - erf(x). It is used for large values of x where a subtraction + * from one would cause a loss of significance. + * + * @param {int | float} x - The value at which to evaluate the complementary error function. + * @returns {float} the complementary error function at x + */ +declare function math_erfc(x: any): float; +/** + * Return the Gamma function at x. + * + * @param {int | float} x - The input value at which the Gamma function is computed. + * @returns {float} the Gamma function at x + */ +declare function math_gamma(x: any): float; +/** + * Return the natural logarithm of the absolute value of the Gamma function at x. + * + * @param {int | float} x - The input value for which to compute the natural logarithm of the + * absolute Gamma function. + * @returns {float} the natural logarithm of the absolute value of the Gamma function at x + */ +declare function math_lgamma(x: any): float; +/** + * + * The Number value for e, Euler's number, + * which is approximately 2.718281828459045. + * @const {float} + * + */ +declare const math_e: 2.718281828459045; +/** + * + * The name inf refers to float value positive infinity. + * (For negative infinity, use -math.inf.) Equivalent to + * the output of float('inf'). + * See also Python 3.13 Documentation. + * @const {float} + * + */ +declare const math_inf: number; +/** + * + * A floating-point “not a number” (nan) value. + * Equivalent to the output of float('nan'). + * See also Python 3.13 Documentation. + * @const {float} + * + */ +declare const math_nan: number; +/** + * + * The float value of π, + * the ratio of the circumference of a circle to its diameter, + * which is approximately 3.1415926535897932. + * @const {float} + * + */ +declare const math_pi: undefined; +/** + * + * Tau is a circle constant equals to , + * the ratio of a circle’s circumference to its radius, + * which is approximately 6.283185307179586. + * @const {float} + * + */ +declare const math_tau: undefined; +/** + * + * An object frequently used to represent the absence of a value. + * See also Python 3.13 Documentation. + * @const {NoneType} + * + */ +declare const None: undefined; +/** + * + * The true value of the bool type. + * @const {bool} + * + */ +declare const True: true; +/** + * + * The false value of the bool type. + * @const {bool} + * + */ +declare const False: false; diff --git a/docs/lib/math.js b/docs/lib/math.js new file mode 100644 index 0000000..26d56d2 --- /dev/null +++ b/docs/lib/math.js @@ -0,0 +1,586 @@ +/** + * + * The Number value for e, Euler's number, + * which is approximately 2.718281828459045. + * @const {float} + * + */ +const math_e = 2.718281828459045; + +/** + * + * The name inf refers to float value positive infinity. + * (For negative infinity, use -math.inf.) Equivalent to + * the output of float('inf'). + * See also Python 3.13 Documentation. + * @const {float} + * + */ +const math_inf = 1 / 0; + +/** + * + * A floating-point “not a number” (nan) value. + * Equivalent to the output of float('nan'). + * See also Python 3.13 Documentation. + * @const {float} + * + */ +const math_nan = NaN; + +/** + * + * The float value of π, + * the ratio of the circumference of a circle to its diameter, + * which is approximately 3.1415926535897932. + * @const {float} + * + */ +const math_pi = undefined; + +/** + * + * Tau is a circle constant equals to , + * the ratio of a circle’s circumference to its radius, + * which is approximately 6.283185307179586. + * @const {float} + * + */ +const math_tau = undefined; + +/** + * + * An object frequently used to represent the absence of a value. + * See also Python 3.13 Documentation. + * @const {NoneType} + * + */ +const None = undefined; + +/** + * + * The true value of the bool type. + * @const {bool} + * + */ +const True = true; + +/** + * + * The false value of the bool type. + * @const {bool} + * + */ +const False = false; + +/** + * + * Return the absolute value of a number as a float. + * Unlike the built-in abs(), math_fabs() always returns a float, + * even when the input is an integer. + * It only accepts int or float types (complex numbers are not supported). + * + * @param {int | float} x - The number whose absolute value is computed. + * @returns {float} absolute value of x +*/ +function math_fabs( x ) {} + +/** + * Return the number of ways to choose k items from n items + * without repetition and without order. + * Returns zero when k > n. + * + * @param {int} n - Total number of items (must be a non-negative integer). + * @param {int} k - Number of items to choose (must be a non-negative integer). + * @returns {int} the binomial coefficient of n and k + */ +function math_comb( n, k ) {} + +/** + * Return n factorial as an integer. + * + * @param {int} n - A non-negative integer whose factorial is to be computed. + * @returns {int} the factorial of n + */ +function math_factorial(n) {} + +/** + * Return the greatest common divisor of the specified *integers arguments. + * If any of the arguments is nonzero, then the returned value is the largest positive + * integer that is a divisor of all arguments. + * If all arguments are 0, then the returned value is 0. + * gcd() without arguments returns 0. + * If any of the provided integers is negative, the function treats it as its + * absolute value when computing the GCD. + * + * @param {int} *integers - A variable number of integer arguments for + * which to compute the greatest common divisor. + * @returns {int} the greatest common divisor of the given integers as a positive + * integer + */ +function math_gcd(...integers) {} + +/** + * Return the integer square root of the non-negative n. + * + * @param {int} n - A non-negative integer for which to compute the + * integer square root. + * @returns {int} the integer square root of n + */ +function math_isqrt(n) {} + +/** + * Return the least common multiple of the specified integer arguments. + * If all arguments are nonzero, then the returned value is the smallest positive + * integer that is a multiple of all arguments. + * If any of the arguments is 0, then the returned value is 0. + * lcm() without arguments returns 1. + * If any of the input integers is negative, math_lcm() treats it + * as its absolute value when computing the LCM, so the result is always + * non-negative. + * + * @param {int} *integers - A variable number of integer arguments for + * which the least common multiple is computed. + * @returns {int} the least common multiple of the given integers as a positive + * integer + */ +function math_lcm(...integers) {} + +/** + * Return the number of ways to choose k items from n items without + * repetition and with order. + * Returns zero when k > n. + * + * @param {int} n - Total number of items (must be a non-negative integer). + * @param {int} k - Number of items to choose (must be a non-negative integer). + * @returns {int} the permutations of n and k + */ +function math_perm(n, k) {} + +/** + * Return the ceiling of x, the smallest integer greater than or equal to + * x. + * + * @param {int | float} x - The numeric value for which to compute the ceiling. + * @returns {int} the ceiling of x + */ +function math_ceil(x) {} + +/** + * Return the floor of x, the largest integer less than or equal to + * x. + * + * @param {int | float} x - The numeric value for which to compute the flooring. + * @returns {int} the flooring of x + */ +function math_floor(x) {} + +/** + * Fused multiply–add operation. Return (x * y) + z, computed as though with infinite + * precision and range followed by a single round to the float format. + * This operation often provides better accuracy than the direct expression + * (x * y) + z. + * This function follows the specification of the + * (fusedMultiplyAdd) operation described in the IEEE 754 standard. + * The standard leaves one case implementation-defined, namely the result of + * fma(0, inf, nan) and fma(inf, 0, nan). + * In these cases, math.fma returns a math.nan, and does not raise any exception. + * + * @param {int | float} x - The first multiplicand. It is multiplied by y. + * @param {int | float} y - The second multiplicand. It is multiplied by x. + * @param {int | float} z - The addend. The product of x and y + * is added to z using a fused multiply–add operation. + * @returns {float} the float value of (x * y) + z + */ +function math_fma(x, y, z) {} + +/** + * Return the floating-point remainder of x / y, as defined by the + * platform C library function fmod(x, y). The sign of the result is the same as the + * sign of x. + * + * @param {int | float} x - The dividend. It will be converted to a float + * if necessary. + * @param {int | float} y - The divisor. It will be converted to a float + * if necessary. + * @returns {float} the platform C library function fmod(x, y) style remainder of + * x divided by y + */ +function math_fmod(x, y) {} + +/** + * Return the IEEE 754-style remainder of x with respect to y. For finite + * x and finite nonzero y, this is the difference x - n*y, where + * n is the closest integer to the exact value of the quotient x / y. + * If x / y is exactly halfway between two consecutive integers, the nearest + * even integer is used for n. The remainder r = remainder(x, y) + * thus always satisfies abs(r) <= 0.5 * abs(y). + * + * @param {int | float} x - The dividend. It will be converted to a float + * if necessary. + * @param {int | float} y - The divisor. It will be converted to a float + * if necessary. + * @returns {float} the IEEE 754-style remainder of x divided by y + */ +function math_remainder(x, y) {} + +/** + * Return x with the fractional part removed, leaving the integer part. + * trunc() is equivalent to floor() for positive x, and equivalent + * to ceil() for negative x. + * + * @param {int | float} x - The numeric value from which the fractional part is removed, + * returning the integral part (i.e. x rounded toward 0). + * @returns {int} the integer part of x + */ +function math_trunc(x) {} + +/** + * Return a float with the magnitude (absolute value) of x + * but the sign of y. + * + * @param {int | float} x - The value whose magnitude (absolute value) will be used. + * @param {int | float} y - The value whose sign will be applied to x's magnitude. + * @returns {float} a float with the absolute value of x but with the sign of + * y + */ +function math_copysign(x, y) {} + +/** + * Return True if x is neither an infinity nor a nan, + * and False otherwise. + * + * @param {int | float} x - A numeric value. It is converted to float if necessary. + * @returns {bool} the True if x is finite; otherwise, False + */ +function math_isfinite(x) {} + +/** + * Return True if x is a positive or negative infinity, + * and False otherwise. + * + * @param {int | float} x - A numeric value. It is converted to float if necessary. + * @returns {bool} the True if x is an infinity (positive or negative); + * otherwise, False + */ +function math_isinf(x) {} + +/** + * Return True if x is a nan (not a number), + * and False otherwise. + * + * @param {int | float} x - A numeric value. It is converted to float if necessary. + * @returns {bool} the True if x is nan; otherwise, False + */ +function math_isnan(x) {} + +/** + * Return x * (2**i). This is essentially the inverse of function + * frexp(). + * + * @param {int | float} x - A numeric value (the significand). It is converted to + * float if necessary. + * @param {int} i - An integer exponent. + * @returns {float} the result of x multiplied by 2 raised to the power + * i + */ +function math_ldexp(x, i) {} + +/** + * Return the floating-point value steps steps after x towards + * y. If x is equal to y, return y, unless + * steps is 0. + * + * @param {int | float} x - The starting floating-point number from which the stepping begins. + * @param {int | float} y - The target value that determines the direction. The function will + * return a value toward y from x. + * @param {int} steps - The number of representable floating-point values to step from + * x toward y (default is 1). + * @returns {float} the floating-point number that is exactly steps representable numbers + * away from x in the direction of y + */ +function math_nextafter(x, y, steps = 1) {} + +/** + * Return the value of the least significant bit of the float x. + * If x is a NaN (not a number), return x. + * If x is negative, return ulp(-x). + * If x is a positive infinity, return x. + * If x is equal to 0, return the smallest positive denormalized + * representable float (smaller than the minimum positive normalized float, + * sys.float_info.min, approximately 1.7976931348623157e+308). + * If x is equal to the largest positive representable float, return the value + * of the least significant bit of x, such that the first float smaller than + * x is x - ulp(x). + * Otherwise (when x is a positive finite number), return the value of the least significant + * bit of x, such that the first float bigger than x is + * x + ulp(x). + * + * @param {int | float} x - The numeric value (typically a float) for which to compute + * the ULP (Unit in the Last Place). The function returns the value of the least significant + * bit of x, handling special cases (NaN, infinities, 0, etc.) + * as specified by IEEE 754. + * @returns {float} the spacing between x and the next representable float in the + * direction defined by x's sign + */ +function math_ulp(x) {} + +/** + * Return the cube root of x. + * + * @param {int | float} x - The numeric value for which to compute the cube root. + * @returns {float} the cube root of x + */ +function math_cbrt(x) {} + +/** + * Return e raised to the power x, where e = 2.718281… + * is the base of natural logarithms. + * + * @param {int | float} x - The exponent for which to compute e^x. + * @returns {float} the value of e raised to the power x with high accuracy + */ +function math_exp(x) {} + +/** + * Return 2 raised to the power x. + * + * @param {int | float} x - The exponent for which to compute 2^x. + * @returns {float} the value of 2 raised to the power x with high accuracy + */ +function math_exp2(x) {} + +/** + * Return e raised to the power x, minus 1. Here e is + * the base of natural logarithms. For small x, the subtraction in + * exp(x) - 1 can result in a significant loss of precision; the expm1() function + * provides a way to compute this quantity to full precision. + * + * @param {int | float} x - The exponent for which to compute e^x. + * @returns {float} the value of e raised to the power x minus 1 with high accuracy + */ +function math_expm1(x) {} + +/** + * With one argument, return the natural logarithm of x (to base e). + * With two arguments, return the logarithm of x to the given base, + * calculated as log(x)/log(base). + * + * @param {int | float} x - The numeric value for which to compute the logarithm. + * @param {int | float} base(optional) - The base of the logarithm. If provided, the result is computed as + * log(x)/log(base). If omitted, the natural logarithm (base e) is returned. + * @returns {float} a float representing the logarithm of x (either natural logarithm when + * base is not provided, or logarithm with the given base otherwise) + */ +function math_log(x, base) {} + +/** + * Return the natural logarithm of 1+x (base e). The result is calculated in a way + * which is accurate for x near 0. + * + * @param {int | float} x - The number to be added to 1. The function returns the natural + * logarithm of (1+x), computed in a way that is accurate for values of x near 0. + * @returns {float} the natural logarithm of 1+x (base e) + */ +function math_log1p(x) {} + +/** + * Return the base-2 logarithm of x. This is usually more accurate than + * log(x, 2). + * + * @param {int | float} x - A positive number. The function returns the logarithm of + * x to base 2. + * @returns {float} the base-2 logarithm of x + */ +function math_log2(x) {} + +/** + * Return the base-10 logarithm of x. This is usually more accurate than + * log(x, 10). + * + * @param {int | float} x - A positive number. The function returns the logarithm of + * x to base 10. + * @returns {float} the base-10 logarithm of x + */ +function math_log10(x) {} + +/** + * Return x raised to the power y. Unlike the built-in + * ** operator, math_pow() converts both its arguments to type float. + * + * @param {int | float} x - The base value. Both x and y are converted + * to float before the operation. + * @param {int | float} y - The exponent value. The function computes x raised to the power + * y, following IEEE 754 rules for special cases. + * @returns {float} the value of x raised to the power y + */ +function math_pow(x, y) {} + +/** + * Return the square root of x. + * + * @param {int | float} x - A non-negative number. x is converted to a float + * if necessary. + * @returns {float} the square root of x + */ +function math_sqrt(x) {} + +/** + * Convert angle x from radians to degrees. + * + * @param {int | float} x - The angle in radians to be converted to degrees. + * @returns {float} the angle, in degrees, corresponding to the given radians + */ +function math_degrees(x) {} + +/** + * Convert angle x from degrees to radians. + * + * @param {int | float} x - The angle in degrees to be converted to radians. + * @returns {float} the angle, in radians, corresponding to the given degrees + */ +function math_radians(x) {} + +/** + * Return the arc cosine of x, in radians. The result is between 0 and pi. + * + * @param {int | float} x - The value whose arc cosine is to be computed. Must be in the interval + * [-1, 1]. + * @returns {float} the arc cosine of x in radians + */ +function math_acos(x) {} + +/** + * Return the arc sine of x, in radians. The result is between -pi/2 and pi/2. + * + * @param {int | float} x - The value whose arc sine is to be computed. Must be in the interval + * [-1, 1]. + * @returns {float} the arc sine of x in radians + */ +function math_asin(x) {} + +/** + * Return the arc tangent of x, in radians. The result is between -pi/2 and pi/2. + * + * @param {int | float} x - The value whose arc tangent is to be computed. + * @returns {float} the arc tangent of x in radians + */ +function math_atan(x) {} + +/** + * Return atan(y / x), in radians. + * + * @param {int | float} y - The y-coordinate of the point. + * @param {int | float} x - The x-coordinate of the point. + * @returns {float} the arc tangent of y/x in radians + */ +function math_atan2(y, x) {} + +/** + * Return the cosine of x radians. + * + * @param {int | float} x - The angle in radians for which the cosine is computed. + * @returns {float} the cosine of x + */ +function math_cos(x) {} + +/** + * Return the sine of x radians. + * + * @param {int | float} x - The angle in radians for which the sine is computed. + * @returns {float} the sine of x + */ +function math_sin(x) {} + +/** + * Return the tangent of x radians. + * + * @param {int | float} x - The angle in radians for which the tangent is computed. + * @returns {float} the tangent of x + */ +function math_tan(x) {} + +/** + * Return the inverse hyperbolic cosine of x. + * + * @param {int | float} x - The number for which to compute the inverse hyperbolic cosine. + * (Typically, x must be ≥ 1.) + * @returns {float} the inverse hyperbolic cosine of x + */ +function math_acosh(x) {} + +/** + * Return the inverse hyperbolic sine of x. + * + * @param {int | float} x - The number for which to compute the inverse hyperbolic sine. + * @returns {float} the inverse hyperbolic sine of x + */ +function math_asinh(x) {} + +/** + * Return the inverse hyperbolic tangent of x. + * + * @param {int | float} x - The number for which to compute the inverse hyperbolic tangent. + * (Must be in the interval (-1, 1).) + * @returns {float} the inverse hyperbolic tangent of x + */ +function math_atanh(x) {} + +/** + * Return the hyperbolic cosine of x. + * + * @param {int | float} x - The angle in radians for which to compute cosh(x). + * @returns {float} the hyperbolic cosine of x + */ +function math_cosh(x) {} + +/** + * Return the hyperbolic sine of x. + * + * @param {int | float} x - The angle in radians for which to compute sinh(x). + * @returns {float} the hyperbolic sine of x + */ +function math_sinh(x) {} + +/** + * Return the hyperbolic tangent of x. + * + * @param {int | float} x - The angle in radians for which to compute tanh(x). + * @returns {float} the hyperbolic tangent of x + */ +function math_tanh(x) {} + +/** + * Return the error function at x. + * + * @param {int | float} x - The value at which to evaluate the error function. + * @returns {float} the error function value at x + */ +function math_erf(x) {} + +/** + * Return the complementary error function at x. The complementary error function is + * defined as 1.0 - erf(x). It is used for large values of x where a subtraction + * from one would cause a loss of significance. + * + * @param {int | float} x - The value at which to evaluate the complementary error function. + * @returns {float} the complementary error function at x + */ +function math_erfc(x) {} + +/** + * Return the Gamma function at x. + * + * @param {int | float} x - The input value at which the Gamma function is computed. + * @returns {float} the Gamma function at x + */ +function math_gamma(x) {} + +/** + * Return the natural logarithm of the absolute value of the Gamma function at x. + * + * @param {int | float} x - The input value for which to compute the natural logarithm of the + * absolute Gamma function. + * @returns {float} the natural logarithm of the absolute value of the Gamma function at x + */ +function math_lgamma(x) {} diff --git a/docs/lib/misc.d.ts b/docs/lib/misc.d.ts new file mode 100644 index 0000000..0554a48 --- /dev/null +++ b/docs/lib/misc.d.ts @@ -0,0 +1,141 @@ +/** + * Takes a string s as the first argument and a nonnegative + * integer i as the second argument. If i is less than + * the length of s, this function returns a one-character string that + * contains the character of s at position i, counting from 0. + * If i is larger than or equal to the length of s, this function returns + * None. + * + * @param {string} s - the given string + * @param {int} i - the index + * @returns {string} one-character string or None + */ +declare function char_at(s: any, i: any): string; +/** + * A simplified version of the Python built-in print function. + * This function takes any number of parameters *object, converts them to their + * string representations using str(), and writes them to the standard + * output (sys.stdout), followed by a newline character. See the official Python + * documentation for print. + * + * @param {any} *object - object(s) to be printed to the standard output + * @returns {NoneType} the None value + */ +declare function print(...object: any[]): NoneType; +/** + * Prints the provided *object arguments to the standard output (similar to a simplified + * print) and then raises an exception. This function accepts a variable number of arguments, + * converts them to their string representations using str(), outputs them (with a + * newline) just like what print does, and immediately halts execution by raising an exception. + * + * @param {any} *object - Objects to be printed to the standard output + * @returns {NoneType} the None value + */ +declare function error(...object: any[]): NoneType; +/** + * Return the number of milliseconds elapsed since January 1, 1970 00:00:00 UTC. + * + * @returns {float} current time in milliseconds + */ +declare function time_time(): float; +/** + * Return True if object is an instance of classinfo. + * classinfo can be None, int, float, string, + * bool, and complex. + * + * @param {any} object - The object to be checked, i.e. the one to determine whether it is an + * instance of the specified type. + * @param {string} classinfo - The name of a single class (type). The type information used to test + * the object's type. + * @returns {bool} indicating whether object is an instance of classinfo + */ +declare function isinstance(object: any, classinfo: any): bool; +/** + * Return the absolute value of x. + * For an int input, it returns the non-negative integer equivalent. + * For a float input, it returns the positive floating-point number representing its magnitude. + * For a complex input, it computes and returns the modulus (the square root of the sum of the + * squares of the real and imaginary parts) as a float. + * + * @param {int | float | complex} x - The number whose absolute value is computed. + * @returns {int | float | complex} the absolute value of x + */ +declare function abs(x: any): int | float | complex; +/** + * Returns the largest of the provided values. If multiple items are equal to the maximum, + * the first encountered is returned. All values should be mutually comparable. + * + * @param {int | float | string} arg1 - The first item to compare. + * @param {int | float | string} arg2 - The second item to compare. + * @param {int | float | string} *args - Additional items to compare. + * @returns {int | float | string} the largest of the provided values + */ +declare function max(arg1: any, arg2: any, ...args: any[]): int | float | string; +/** + * Returns the smallest of the provided values. If multiple items are equal to the minimum, + * the first encountered is returned. All values should be mutually comparable. + * + * @param {int | float | string} arg1 - The first item to compare. + * @param {int | float | string} arg2 - The second item to compare. + * @param {int | float | string} *args - Additional items to compare. + * @returns {int | float | string} the smallest of the provided values + */ +declare function min(arg1: any, arg2: any, ...args: any[]): int | float | string; +/** + * Return number rounded to ndigits precision after the decimal point. If + * ndigits is omitted or is None, it returns the nearest integer + * to its input. + * + * @param {int | float} number - The value to be rounded. + * @param {int} ndigits - The number of digits to round to after the decimal point. If omitted + * or None, the function rounds to the nearest integer. + * @returns {float} the number rounded to ndigits precision + */ +declare function round(number: any, ndigits: any): float; +/** + * Return the next random floating-point number in the range 0.0 ≤ X < 1.0. + * + * @returns {float} the next random floating-point number in the range 0.0 ≤ X < 1.0 + */ +declare function random_random(): float; +/** + * Return an integer object constructed from a number, or return 0 + * if no arguments are given. + * + * @param {int | float} number - The numeric value from which to construct the + * integer. If provided, it is converted to an integer by truncating toward 0. + * If omitted, it defaults to 0. + * @returns {int} an integer object constructed from the given number + */ +declare function _int(number?: number): int; +/** + * Return an integer object constructed from a string. If base is given, + * the string is parsed as an integer in radix base. The string + * may include optional whitespace, a leading sign (+ or -), and underscores between digits. + * + * @param {string} string - A string representing an integer in a given base. + * The string may include optional whitespace, a leading sign, and underscores between digits. + * @param {int} base - The base (radix) for conversion. It must be 0 + * or an integer in the range 236. The default is 10. + * @returns {int} an integer object parsed from the provided string using the specified base + */ +declare function _int_from_string(string: any, base?: number): int; +/** + * If the prompt argument is present, it is written to standard output without a trailing newline. + * The function then reads a line from input, converts it to a string (stripping a trailing newline), + * and returns that. + * + * @param {string} prompt - An optional string that is written to standard output + * (without a trailing newline) before input is read. + * @returns {string} the input read from the user as a string, with any trailing newline removed + */ +declare function input(prompt: any): string; +/** + * Return a string version of object. If object is not provided, returns + * the empty string. + * + * @param {any} object - The object to be converted to a string. + * If not provided, an empty string is returned. + * @returns {string} the informal string representation of object + */ +declare function str(object?: string): string; diff --git a/docs/lib/misc.js b/docs/lib/misc.js new file mode 100644 index 0000000..b55795a --- /dev/null +++ b/docs/lib/misc.js @@ -0,0 +1,154 @@ +/** + * Takes a string s as the first argument and a nonnegative + * integer i as the second argument. If i is less than + * the length of s, this function returns a one-character string that + * contains the character of s at position i, counting from 0. + * If i is larger than or equal to the length of s, this function returns + * None. + * + * @param {string} s - the given string + * @param {int} i - the index + * @returns {string} one-character string or None + */ +function char_at(s, i) {} + +/** + * A simplified version of the Python built-in print function. + * This function takes any number of parameters *object, converts them to their + * string representations using str(), and writes them to the standard + * output (sys.stdout), followed by a newline character. See the official Python + * documentation for print. + * + * @param {any} *object - object(s) to be printed to the standard output + * @returns {NoneType} the None value + */ +function print(...object) {} + +/** + * Prints the provided *object arguments to the standard output (similar to a simplified + * print) and then raises an exception. This function accepts a variable number of arguments, + * converts them to their string representations using str(), outputs them (with a + * newline) just like what print does, and immediately halts execution by raising an exception. + * + * @param {any} *object - Objects to be printed to the standard output + * @returns {NoneType} the None value + */ +function error(...object) {} + +/** + * Return the number of milliseconds elapsed since January 1, 1970 00:00:00 UTC. + * + * @returns {float} current time in milliseconds + */ +function time_time() {} + +/** + * Return True if object is an instance of classinfo. + * classinfo can be None, int, float, string, + * bool, and complex. + * + * @param {any} object - The object to be checked, i.e. the one to determine whether it is an + * instance of the specified type. + * @param {string} classinfo - The name of a single class (type). The type information used to test + * the object's type. + * @returns {bool} indicating whether object is an instance of classinfo + */ +function isinstance(object, classinfo) {} + +/** + * Return the absolute value of x. + * For an int input, it returns the non-negative integer equivalent. + * For a float input, it returns the positive floating-point number representing its magnitude. + * For a complex input, it computes and returns the modulus (the square root of the sum of the + * squares of the real and imaginary parts) as a float. + * + * @param {int | float | complex} x - The number whose absolute value is computed. + * @returns {int | float | complex} the absolute value of x + */ +function abs(x) {} + +/** + * Returns the largest of the provided values. If multiple items are equal to the maximum, + * the first encountered is returned. All values should be mutually comparable. + * + * @param {int | float | string} arg1 - The first item to compare. + * @param {int | float | string} arg2 - The second item to compare. + * @param {int | float | string} *args - Additional items to compare. + * @returns {int | float | string} the largest of the provided values + */ +function max(arg1, arg2, ...args) {} + +/** + * Returns the smallest of the provided values. If multiple items are equal to the minimum, + * the first encountered is returned. All values should be mutually comparable. + * + * @param {int | float | string} arg1 - The first item to compare. + * @param {int | float | string} arg2 - The second item to compare. + * @param {int | float | string} *args - Additional items to compare. + * @returns {int | float | string} the smallest of the provided values + */ +function min(arg1, arg2, ...args) {} + +/** + * Return number rounded to ndigits precision after the decimal point. If + * ndigits is omitted or is None, it returns the nearest integer + * to its input. + * + * @param {int | float} number - The value to be rounded. + * @param {int} ndigits - The number of digits to round to after the decimal point. If omitted + * or None, the function rounds to the nearest integer. + * @returns {float} the number rounded to ndigits precision + */ +function round(number, ndigits) {} + +/** + * Return the next random floating-point number in the range 0.0 ≤ X < 1.0. + * + * @returns {float} the next random floating-point number in the range 0.0 ≤ X < 1.0 + */ +function random_random() {} + +/** + * Return an integer object constructed from a number, or return 0 + * if no arguments are given. + * + * @param {int | float} number - The numeric value from which to construct the + * integer. If provided, it is converted to an integer by truncating toward 0. + * If omitted, it defaults to 0. + * @returns {int} an integer object constructed from the given number + */ +function _int(number = 0) {} + +/** + * Return an integer object constructed from a string. If base is given, + * the string is parsed as an integer in radix base. The string + * may include optional whitespace, a leading sign (+ or -), and underscores between digits. + * + * @param {string} string - A string representing an integer in a given base. + * The string may include optional whitespace, a leading sign, and underscores between digits. + * @param {int} base - The base (radix) for conversion. It must be 0 + * or an integer in the range 236. The default is 10. + * @returns {int} an integer object parsed from the provided string using the specified base + */ +function _int_from_string(string, base = 10) {} + +/** + * If the prompt argument is present, it is written to standard output without a trailing newline. + * The function then reads a line from input, converts it to a string (stripping a trailing newline), + * and returns that. + * + * @param {string} prompt - An optional string that is written to standard output + * (without a trailing newline) before input is read. + * @returns {string} the input read from the user as a string, with any trailing newline removed + */ +function input(prompt) {} + +/** + * Return a string version of object. If object is not provided, returns + * the empty string. + * + * @param {any} object - The object to be converted to a string. + * If not provided, an empty string is returned. + * @returns {string} the informal string representation of object + */ +function str(object = '') {} diff --git a/docs/python/.DS_Store b/docs/python/.DS_Store new file mode 100644 index 0000000..92344c0 Binary files /dev/null and b/docs/python/.DS_Store differ diff --git a/docs/python/python_1/README.md b/docs/python/python_1/README.md new file mode 100644 index 0000000..c55ab7f --- /dev/null +++ b/docs/python/python_1/README.md @@ -0,0 +1,3 @@ +Changelog: + +styles changed by MH on 1/7/2019, see styles/README.md diff --git a/docs/python/python_1/fonts/OpenSans-Bold-webfont.eot b/docs/python/python_1/fonts/OpenSans-Bold-webfont.eot new file mode 100644 index 0000000..5d20d91 Binary files /dev/null and b/docs/python/python_1/fonts/OpenSans-Bold-webfont.eot differ diff --git a/docs/python/python_1/fonts/OpenSans-Bold-webfont.svg b/docs/python/python_1/fonts/OpenSans-Bold-webfont.svg new file mode 100644 index 0000000..3ed7be4 --- /dev/null +++ b/docs/python/python_1/fonts/OpenSans-Bold-webfont.svg @@ -0,0 +1,1830 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/python/python_1/fonts/OpenSans-Bold-webfont.woff b/docs/python/python_1/fonts/OpenSans-Bold-webfont.woff new file mode 100644 index 0000000..1205787 Binary files /dev/null and b/docs/python/python_1/fonts/OpenSans-Bold-webfont.woff differ diff --git a/docs/python/python_1/fonts/OpenSans-BoldItalic-webfont.eot b/docs/python/python_1/fonts/OpenSans-BoldItalic-webfont.eot new file mode 100644 index 0000000..1f639a1 Binary files /dev/null and b/docs/python/python_1/fonts/OpenSans-BoldItalic-webfont.eot differ diff --git a/docs/python/python_1/fonts/OpenSans-BoldItalic-webfont.svg b/docs/python/python_1/fonts/OpenSans-BoldItalic-webfont.svg new file mode 100644 index 0000000..6a2607b --- /dev/null +++ b/docs/python/python_1/fonts/OpenSans-BoldItalic-webfont.svg @@ -0,0 +1,1830 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/python/python_1/fonts/OpenSans-BoldItalic-webfont.woff b/docs/python/python_1/fonts/OpenSans-BoldItalic-webfont.woff new file mode 100644 index 0000000..ed760c0 Binary files /dev/null and b/docs/python/python_1/fonts/OpenSans-BoldItalic-webfont.woff differ diff --git a/docs/python/python_1/fonts/OpenSans-Italic-webfont.eot b/docs/python/python_1/fonts/OpenSans-Italic-webfont.eot new file mode 100644 index 0000000..0c8a0ae Binary files /dev/null and b/docs/python/python_1/fonts/OpenSans-Italic-webfont.eot differ diff --git a/docs/python/python_1/fonts/OpenSans-Italic-webfont.svg b/docs/python/python_1/fonts/OpenSans-Italic-webfont.svg new file mode 100644 index 0000000..e1075dc --- /dev/null +++ b/docs/python/python_1/fonts/OpenSans-Italic-webfont.svg @@ -0,0 +1,1830 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/python/python_1/fonts/OpenSans-Italic-webfont.woff b/docs/python/python_1/fonts/OpenSans-Italic-webfont.woff new file mode 100644 index 0000000..ff652e6 Binary files /dev/null and b/docs/python/python_1/fonts/OpenSans-Italic-webfont.woff differ diff --git a/docs/python/python_1/fonts/OpenSans-Light-webfont.eot b/docs/python/python_1/fonts/OpenSans-Light-webfont.eot new file mode 100644 index 0000000..1486840 Binary files /dev/null and b/docs/python/python_1/fonts/OpenSans-Light-webfont.eot differ diff --git a/docs/python/python_1/fonts/OpenSans-Light-webfont.svg b/docs/python/python_1/fonts/OpenSans-Light-webfont.svg new file mode 100644 index 0000000..11a472c --- /dev/null +++ b/docs/python/python_1/fonts/OpenSans-Light-webfont.svg @@ -0,0 +1,1831 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/python/python_1/fonts/OpenSans-Light-webfont.woff b/docs/python/python_1/fonts/OpenSans-Light-webfont.woff new file mode 100644 index 0000000..e786074 Binary files /dev/null and b/docs/python/python_1/fonts/OpenSans-Light-webfont.woff differ diff --git a/docs/python/python_1/fonts/OpenSans-LightItalic-webfont.eot b/docs/python/python_1/fonts/OpenSans-LightItalic-webfont.eot new file mode 100644 index 0000000..8f44592 Binary files /dev/null and b/docs/python/python_1/fonts/OpenSans-LightItalic-webfont.eot differ diff --git a/docs/python/python_1/fonts/OpenSans-LightItalic-webfont.svg b/docs/python/python_1/fonts/OpenSans-LightItalic-webfont.svg new file mode 100644 index 0000000..431d7e3 --- /dev/null +++ b/docs/python/python_1/fonts/OpenSans-LightItalic-webfont.svg @@ -0,0 +1,1835 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/python/python_1/fonts/OpenSans-LightItalic-webfont.woff b/docs/python/python_1/fonts/OpenSans-LightItalic-webfont.woff new file mode 100644 index 0000000..43e8b9e Binary files /dev/null and b/docs/python/python_1/fonts/OpenSans-LightItalic-webfont.woff differ diff --git a/docs/python/python_1/fonts/OpenSans-Regular-webfont.eot b/docs/python/python_1/fonts/OpenSans-Regular-webfont.eot new file mode 100644 index 0000000..6bbc3cf Binary files /dev/null and b/docs/python/python_1/fonts/OpenSans-Regular-webfont.eot differ diff --git a/docs/python/python_1/fonts/OpenSans-Regular-webfont.svg b/docs/python/python_1/fonts/OpenSans-Regular-webfont.svg new file mode 100644 index 0000000..25a3952 --- /dev/null +++ b/docs/python/python_1/fonts/OpenSans-Regular-webfont.svg @@ -0,0 +1,1831 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/python/python_1/fonts/OpenSans-Regular-webfont.woff b/docs/python/python_1/fonts/OpenSans-Regular-webfont.woff new file mode 100644 index 0000000..e231183 Binary files /dev/null and b/docs/python/python_1/fonts/OpenSans-Regular-webfont.woff differ diff --git a/docs/python/python_1/global.html b/docs/python/python_1/global.html new file mode 100644 index 0000000..8eebdad --- /dev/null +++ b/docs/python/python_1/global.html @@ -0,0 +1,11358 @@ + + + + + Predeclared in Python §1 + + + + + + + + + + +
    + +

    Predeclared in Python §1

    + + + + + + + + + + + + + + +
    + +
    + +

    + + +
    + +
    +
    + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + +
    + + + + + + + + + + + + + + +

    Constants

    + + +
    + +

    (constant) False :bool

    + + + + +
    + The false value of the bool type. +
    + + + +
    Type:
    +
      +
    • + +bool + + +
    • +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + +
    + +
    + +

    (constant) None :NoneType

    + + + + +
    + An object frequently used to represent the absence of a value. +See also Python 3.13 Documentation. +
    + + + +
    Type:
    +
      +
    • + +NoneType + + +
    • +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + +
    + +
    + +

    (constant) True :bool

    + + + + +
    + The true value of the bool type. +
    + + + +
    Type:
    +
      +
    • + +bool + + +
    • +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + +
    + +
    + +

    (constant) math_e :float

    + + + + +
    + The Number value for e, Euler's number, +which is approximately 2.718281828459045. +
    + + + +
    Type:
    +
      +
    • + +float + + +
    • +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + +
    + +
    + +

    (constant) math_inf :float

    + + + + +
    + The name inf refers to float value positive infinity. +(For negative infinity, use -math.inf.) Equivalent to +the output of float('inf'). +See also Python 3.13 Documentation. +
    + + + +
    Type:
    +
      +
    • + +float + + +
    • +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + +
    + +
    + +

    (constant) math_nan :float

    + + + + +
    + A floating-point “not a number” (nan) value. +Equivalent to the output of float('nan'). +See also Python 3.13 Documentation. +
    + + + +
    Type:
    +
      +
    • + +float + + +
    • +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + +
    + +
    + +

    (constant) math_pi :float

    + + + + +
    + The float value of π, +the ratio of the circumference of a circle to its diameter, +which is approximately 3.1415926535897932. +
    + + + +
    Type:
    +
      +
    • + +float + + +
    • +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + +
    + +
    + +

    (constant) math_tau :float

    + + + + +
    + Tau is a circle constant equals to , +the ratio of a circle’s circumference to its radius, +which is approximately 6.283185307179586. +
    + + + +
    Type:
    +
      +
    • + +float + + +
    • +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + +
    + + + + +

    Functions

    + + +
    + + + + + +

    _int(number) → {int}

    + + + + + + +
    + Return an integer object constructed from a number, or return 0 +if no arguments are given. +
    + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    number + + +int +| + +float + + + + The numeric value from which to construct the +integer. If provided, it is converted to an integer by truncating toward 0. +If omitted, it defaults to 0.
    + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    + an integer object constructed from the given number +
    + + + +
    +
    + Type +
    +
    + +int + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    _int_from_string(string, base) → {int}

    + + + + + + +
    + Return an integer object constructed from a string. If base is given, +the string is parsed as an integer in radix base. The string +may include optional whitespace, a leading sign (+ or -), and underscores between digits. +
    + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    string + + +string + + + + A string representing an integer in a given base. +The string may include optional whitespace, a leading sign, and underscores between digits.
    base + + +int + + + + The base (radix) for conversion. It must be 0 +or an integer in the range 236. The default is 10.
    + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    + an integer object parsed from the provided string using the specified base +
    + + + +
    +
    + Type +
    +
    + +int + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    abs(x) → {int|float|complex}

    + + + + + + +
    + Return the absolute value of x. +For an int input, it returns the non-negative integer equivalent. +For a float input, it returns the positive floating-point number representing its magnitude. +For a complex input, it computes and returns the modulus (the square root of the sum of the +squares of the real and imaginary parts) as a float. +
    + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    x + + +int +| + +float +| + +complex + + + + The number whose absolute value is computed.
    + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    + the absolute value of x +
    + + + +
    +
    + Type +
    +
    + +int +| + +float +| + +complex + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    char_at(s, i) → {string}

    + + + + + + +
    + Takes a string s as the first argument and a nonnegative +integer i as the second argument. If i is less than +the length of s, this function returns a one-character string that +contains the character of s at position i, counting from 0. +If i is larger than or equal to the length of s, this function returns +None. +
    + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    s + + +string + + + + the given string
    i + + +int + + + + the index
    + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    + one-character string or None +
    + + + +
    +
    + Type +
    +
    + +string + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    error(*object) → {NoneType}

    + + + + + + +
    + Prints the provided *object arguments to the standard output (similar to a simplified +print) and then raises an exception. This function accepts a variable number of arguments, +converts them to their string representations using str(), outputs them (with a +newline) just like what print does, and immediately halts execution by raising an exception. +
    + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    *object + + +any + + + + Objects to be printed to the standard output
    + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    + the None value +
    + + + +
    +
    + Type +
    +
    + +NoneType + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    input(prompt) → {string}

    + + + + + + +
    + If the prompt argument is present, it is written to standard output without a trailing newline. +The function then reads a line from input, converts it to a string (stripping a trailing newline), +and returns that. +
    + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    prompt + + +string + + + + An optional string that is written to standard output +(without a trailing newline) before input is read.
    + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    + the input read from the user as a string, with any trailing newline removed +
    + + + +
    +
    + Type +
    +
    + +string + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    isinstance(object, classinfo) → {bool}

    + + + + + + +
    + Return True if object is an instance of classinfo. +classinfo can be None, int, float, string, +bool, and complex. +
    + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    object + + +any + + + + The object to be checked, i.e. the one to determine whether it is an +instance of the specified type.
    classinfo + + +string + + + + The name of a single class (type). The type information used to test +the object's type.
    + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    + indicating whether object is an instance of classinfo +
    + + + +
    +
    + Type +
    +
    + +bool + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    math_acos(x) → {float}

    + + + + + + +
    + Return the arc cosine of x, in radians. The result is between 0 and pi. +
    + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    x + + +int +| + +float + + + + The value whose arc cosine is to be computed. Must be in the interval +[-1, 1].
    + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    + the arc cosine of x in radians +
    + + + +
    +
    + Type +
    +
    + +float + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    math_acosh(x) → {float}

    + + + + + + +
    + Return the inverse hyperbolic cosine of x. +
    + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    x + + +int +| + +float + + + + The number for which to compute the inverse hyperbolic cosine. +(Typically, x must be ≥ 1.)
    + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    + the inverse hyperbolic cosine of x +
    + + + +
    +
    + Type +
    +
    + +float + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    math_asin(x) → {float}

    + + + + + + +
    + Return the arc sine of x, in radians. The result is between -pi/2 and pi/2. +
    + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    x + + +int +| + +float + + + + The value whose arc sine is to be computed. Must be in the interval +[-1, 1].
    + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    + the arc sine of x in radians +
    + + + +
    +
    + Type +
    +
    + +float + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    math_asinh(x) → {float}

    + + + + + + +
    + Return the inverse hyperbolic sine of x. +
    + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    x + + +int +| + +float + + + + The number for which to compute the inverse hyperbolic sine.
    + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    + the inverse hyperbolic sine of x +
    + + + +
    +
    + Type +
    +
    + +float + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    math_atan(x) → {float}

    + + + + + + +
    + Return the arc tangent of x, in radians. The result is between -pi/2 and pi/2. +
    + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    x + + +int +| + +float + + + + The value whose arc tangent is to be computed.
    + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    + the arc tangent of x in radians +
    + + + +
    +
    + Type +
    +
    + +float + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    math_atan2(y, x) → {float}

    + + + + + + +
    + Return atan(y / x), in radians. +
    + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    y + + +int +| + +float + + + + The y-coordinate of the point.
    x + + +int +| + +float + + + + The x-coordinate of the point.
    + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    + the arc tangent of y/x in radians +
    + + + +
    +
    + Type +
    +
    + +float + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    math_atanh(x) → {float}

    + + + + + + +
    + Return the inverse hyperbolic tangent of x. +
    + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    x + + +int +| + +float + + + + The number for which to compute the inverse hyperbolic tangent. +(Must be in the interval (-1, 1).)
    + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    + the inverse hyperbolic tangent of x +
    + + + +
    +
    + Type +
    +
    + +float + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    math_cbrt(x) → {float}

    + + + + + + +
    + Return the cube root of x. +
    + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    x + + +int +| + +float + + + + The numeric value for which to compute the cube root.
    + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    + the cube root of x +
    + + + +
    +
    + Type +
    +
    + +float + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    math_ceil(x) → {int}

    + + + + + + +
    + Return the ceiling of x, the smallest integer greater than or equal to +x. +
    + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    x + + +int +| + +float + + + + The numeric value for which to compute the ceiling.
    + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    + the ceiling of x +
    + + + +
    +
    + Type +
    +
    + +int + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    math_comb(n, k) → {int}

    + + + + + + +
    + Return the number of ways to choose k items from n items +without repetition and without order. +Returns zero when k > n. +
    + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    n + + +int + + + + Total number of items (must be a non-negative integer).
    k + + +int + + + + Number of items to choose (must be a non-negative integer).
    + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    + the binomial coefficient of n and k +
    + + + +
    +
    + Type +
    +
    + +int + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    math_copysign(x, y) → {float}

    + + + + + + +
    + Return a float with the magnitude (absolute value) of x +but the sign of y. +
    + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    x + + +int +| + +float + + + + The value whose magnitude (absolute value) will be used.
    y + + +int +| + +float + + + + The value whose sign will be applied to x's magnitude.
    + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    + a float with the absolute value of x but with the sign of +y +
    + + + +
    +
    + Type +
    +
    + +float + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    math_cos(x) → {float}

    + + + + + + +
    + Return the cosine of x radians. +
    + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    x + + +int +| + +float + + + + The angle in radians for which the cosine is computed.
    + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    + the cosine of x +
    + + + +
    +
    + Type +
    +
    + +float + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    math_cosh(x) → {float}

    + + + + + + +
    + Return the hyperbolic cosine of x. +
    + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    x + + +int +| + +float + + + + The angle in radians for which to compute cosh(x).
    + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    + the hyperbolic cosine of x +
    + + + +
    +
    + Type +
    +
    + +float + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    math_degrees(x) → {float}

    + + + + + + +
    + Convert angle x from radians to degrees. +
    + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    x + + +int +| + +float + + + + The angle in radians to be converted to degrees.
    + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    + the angle, in degrees, corresponding to the given radians +
    + + + +
    +
    + Type +
    +
    + +float + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    math_erf(x) → {float}

    + + + + + + +
    + Return the error function at x. +
    + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    x + + +int +| + +float + + + + The value at which to evaluate the error function.
    + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    + the error function value at x +
    + + + +
    +
    + Type +
    +
    + +float + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    math_erfc(x) → {float}

    + + + + + + +
    + Return the complementary error function at x. The complementary error function is +defined as 1.0 - erf(x). It is used for large values of x where a subtraction +from one would cause a loss of significance. +
    + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    x + + +int +| + +float + + + + The value at which to evaluate the complementary error function.
    + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    + the complementary error function at x +
    + + + +
    +
    + Type +
    +
    + +float + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    math_exp(x) → {float}

    + + + + + + +
    + Return e raised to the power x, where e = 2.718281… +is the base of natural logarithms. +
    + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    x + + +int +| + +float + + + + The exponent for which to compute e^x.
    + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    + the value of e raised to the power x with high accuracy +
    + + + +
    +
    + Type +
    +
    + +float + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    math_exp2(x) → {float}

    + + + + + + +
    + Return 2 raised to the power x. +
    + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    x + + +int +| + +float + + + + The exponent for which to compute 2^x.
    + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    + the value of 2 raised to the power x with high accuracy +
    + + + +
    +
    + Type +
    +
    + +float + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    math_expm1(x) → {float}

    + + + + + + +
    + Return e raised to the power x, minus 1. Here e is +the base of natural logarithms. For small x, the subtraction in +exp(x) - 1 can result in a significant loss of precision; the expm1() function +provides a way to compute this quantity to full precision. +
    + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    x + + +int +| + +float + + + + The exponent for which to compute e^x.
    + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    + the value of e raised to the power x minus 1 with high accuracy +
    + + + +
    +
    + Type +
    +
    + +float + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    math_fabs(x) → {float}

    + + + + + + +
    + Return the absolute value of a number as a float. +Unlike the built-in abs(), math_fabs() always returns a float, +even when the input is an integer. +It only accepts int or float types (complex numbers are not supported). +
    + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    x + + +int +| + +float + + + + The number whose absolute value is computed.
    + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    + absolute value of x +
    + + + +
    +
    + Type +
    +
    + +float + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    math_factorial(n) → {int}

    + + + + + + +
    + Return n factorial as an integer. +
    + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    n + + +int + + + + A non-negative integer whose factorial is to be computed.
    + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    + the factorial of n +
    + + + +
    +
    + Type +
    +
    + +int + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    math_floor(x) → {int}

    + + + + + + +
    + Return the floor of x, the largest integer less than or equal to +x. +
    + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    x + + +int +| + +float + + + + The numeric value for which to compute the flooring.
    + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    + the flooring of x +
    + + + +
    +
    + Type +
    +
    + +int + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    math_fma(x, y, z) → {float}

    + + + + + + +
    + Fused multiply–add operation. Return (x * y) + z, computed as though with infinite +precision and range followed by a single round to the float format. +This operation often provides better accuracy than the direct expression +(x * y) + z. +This function follows the specification of the +(fusedMultiplyAdd) operation described in the IEEE 754 standard. +The standard leaves one case implementation-defined, namely the result of +fma(0, inf, nan) and fma(inf, 0, nan). +In these cases, math.fma returns a math.nan, and does not raise any exception. +
    + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    x + + +int +| + +float + + + + The first multiplicand. It is multiplied by y.
    y + + +int +| + +float + + + + The second multiplicand. It is multiplied by x.
    z + + +int +| + +float + + + + The addend. The product of x and y +is added to z using a fused multiply–add operation.
    + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    + the float value of (x * y) + z +
    + + + +
    +
    + Type +
    +
    + +float + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    math_fmod(x, y) → {float}

    + + + + + + +
    + Return the floating-point remainder of x / y, as defined by the +platform C library function fmod(x, y). The sign of the result is the same as the +sign of x. +
    + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    x + + +int +| + +float + + + + The dividend. It will be converted to a float +if necessary.
    y + + +int +| + +float + + + + The divisor. It will be converted to a float +if necessary.
    + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    + the platform C library function fmod(x, y) style remainder of +x divided by y +
    + + + +
    +
    + Type +
    +
    + +float + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    math_gamma(x) → {float}

    + + + + + + +
    + Return the Gamma function at x. +
    + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    x + + +int +| + +float + + + + The input value at which the Gamma function is computed.
    + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    + the Gamma function at x +
    + + + +
    +
    + Type +
    +
    + +float + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    math_gcd(*integers) → {int}

    + + + + + + +
    + Return the greatest common divisor of the specified *integers arguments. +If any of the arguments is nonzero, then the returned value is the largest positive +integer that is a divisor of all arguments. +If all arguments are 0, then the returned value is 0. +gcd() without arguments returns 0. +If any of the provided integers is negative, the function treats it as its +absolute value when computing the GCD. +
    + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    *integers + + +int + + + + A variable number of integer arguments for +which to compute the greatest common divisor.
    + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    + the greatest common divisor of the given integers as a positive +integer +
    + + + +
    +
    + Type +
    +
    + +int + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    math_isfinite(x) → {bool}

    + + + + + + +
    + Return True if x is neither an infinity nor a nan, +and False otherwise. +
    + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    x + + +int +| + +float + + + + A numeric value. It is converted to float if necessary.
    + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    + the True if x is finite; otherwise, False +
    + + + +
    +
    + Type +
    +
    + +bool + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    math_isinf(x) → {bool}

    + + + + + + +
    + Return True if x is a positive or negative infinity, +and False otherwise. +
    + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    x + + +int +| + +float + + + + A numeric value. It is converted to float if necessary.
    + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    + the True if x is an infinity (positive or negative); +otherwise, False +
    + + + +
    +
    + Type +
    +
    + +bool + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    math_isnan(x) → {bool}

    + + + + + + +
    + Return True if x is a nan (not a number), +and False otherwise. +
    + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    x + + +int +| + +float + + + + A numeric value. It is converted to float if necessary.
    + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    + the True if x is nan; otherwise, False +
    + + + +
    +
    + Type +
    +
    + +bool + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    math_isqrt(n) → {int}

    + + + + + + +
    + Return the integer square root of the non-negative n. +
    + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    n + + +int + + + + A non-negative integer for which to compute the +integer square root.
    + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    + the integer square root of n +
    + + + +
    +
    + Type +
    +
    + +int + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    math_lcm(*integers) → {int}

    + + + + + + +
    + Return the least common multiple of the specified integer arguments. +If all arguments are nonzero, then the returned value is the smallest positive +integer that is a multiple of all arguments. +If any of the arguments is 0, then the returned value is 0. +lcm() without arguments returns 1. +If any of the input integers is negative, math_lcm() treats it +as its absolute value when computing the LCM, so the result is always +non-negative. +
    + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    *integers + + +int + + + + A variable number of integer arguments for +which the least common multiple is computed.
    + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    + the least common multiple of the given integers as a positive +integer +
    + + + +
    +
    + Type +
    +
    + +int + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    math_ldexp(x, i) → {float}

    + + + + + + +
    + Return x * (2**i). This is essentially the inverse of function +frexp(). +
    + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    x + + +int +| + +float + + + + A numeric value (the significand). It is converted to +float if necessary.
    i + + +int + + + + An integer exponent.
    + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    + the result of x multiplied by 2 raised to the power +i +
    + + + +
    +
    + Type +
    +
    + +float + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    math_lgamma(x) → {float}

    + + + + + + +
    + Return the natural logarithm of the absolute value of the Gamma function at x. +
    + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    x + + +int +| + +float + + + + The input value for which to compute the natural logarithm of the +absolute Gamma function.
    + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    + the natural logarithm of the absolute value of the Gamma function at x +
    + + + +
    +
    + Type +
    +
    + +float + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    math_log(x, base(optional)) → {float}

    + + + + + + +
    + With one argument, return the natural logarithm of x (to base e). +With two arguments, return the logarithm of x to the given base, +calculated as log(x)/log(base). +
    + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    x + + +int +| + +float + + + + The numeric value for which to compute the logarithm.
    base(optional) + + +int +| + +float + + + + The base of the logarithm. If provided, the result is computed as +log(x)/log(base). If omitted, the natural logarithm (base e) is returned.
    + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    + a float representing the logarithm of x (either natural logarithm when +base is not provided, or logarithm with the given base otherwise) +
    + + + +
    +
    + Type +
    +
    + +float + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    math_log10(x) → {float}

    + + + + + + +
    + Return the base-10 logarithm of x. This is usually more accurate than +log(x, 10). +
    + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    x + + +int +| + +float + + + + A positive number. The function returns the logarithm of +x to base 10.
    + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    + the base-10 logarithm of x +
    + + + +
    +
    + Type +
    +
    + +float + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    math_log1p(x) → {float}

    + + + + + + +
    + Return the natural logarithm of 1+x (base e). The result is calculated in a way +which is accurate for x near 0. +
    + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    x + + +int +| + +float + + + + The number to be added to 1. The function returns the natural +logarithm of (1+x), computed in a way that is accurate for values of x near 0.
    + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    + the natural logarithm of 1+x (base e) +
    + + + +
    +
    + Type +
    +
    + +float + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    math_log2(x) → {float}

    + + + + + + +
    + Return the base-2 logarithm of x. This is usually more accurate than +log(x, 2). +
    + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    x + + +int +| + +float + + + + A positive number. The function returns the logarithm of +x to base 2.
    + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    + the base-2 logarithm of x +
    + + + +
    +
    + Type +
    +
    + +float + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    math_nextafter(x, y, steps) → {float}

    + + + + + + +
    + Return the floating-point value steps steps after x towards +y. If x is equal to y, return y, unless +steps is 0. +
    + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    x + + +int +| + +float + + + + The starting floating-point number from which the stepping begins.
    y + + +int +| + +float + + + + The target value that determines the direction. The function will +return a value toward y from x.
    steps + + +int + + + + The number of representable floating-point values to step from +x toward y (default is 1).
    + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    + the floating-point number that is exactly steps representable numbers +away from x in the direction of y +
    + + + +
    +
    + Type +
    +
    + +float + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    math_perm(n, k) → {int}

    + + + + + + +
    + Return the number of ways to choose k items from n items without +repetition and with order. +Returns zero when k > n. +
    + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    n + + +int + + + + Total number of items (must be a non-negative integer).
    k + + +int + + + + Number of items to choose (must be a non-negative integer).
    + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    + the permutations of n and k +
    + + + +
    +
    + Type +
    +
    + +int + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    math_pow(x, y) → {float}

    + + + + + + +
    + Return x raised to the power y. Unlike the built-in +** operator, math_pow() converts both its arguments to type float. +
    + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    x + + +int +| + +float + + + + The base value. Both x and y are converted +to float before the operation.
    y + + +int +| + +float + + + + The exponent value. The function computes x raised to the power +y, following IEEE 754 rules for special cases.
    + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    + the value of x raised to the power y +
    + + + +
    +
    + Type +
    +
    + +float + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    math_radians(x) → {float}

    + + + + + + +
    + Convert angle x from degrees to radians. +
    + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    x + + +int +| + +float + + + + The angle in degrees to be converted to radians.
    + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    + the angle, in radians, corresponding to the given degrees +
    + + + +
    +
    + Type +
    +
    + +float + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    math_remainder(x, y) → {float}

    + + + + + + +
    + Return the IEEE 754-style remainder of x with respect to y. For finite +x and finite nonzero y, this is the difference x - n*y, where +n is the closest integer to the exact value of the quotient x / y. +If x / y is exactly halfway between two consecutive integers, the nearest +even integer is used for n. The remainder r = remainder(x, y) +thus always satisfies abs(r) <= 0.5 * abs(y). +
    + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    x + + +int +| + +float + + + + The dividend. It will be converted to a float +if necessary.
    y + + +int +| + +float + + + + The divisor. It will be converted to a float +if necessary.
    + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    + the IEEE 754-style remainder of x divided by y +
    + + + +
    +
    + Type +
    +
    + +float + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    math_sin(x) → {float}

    + + + + + + +
    + Return the sine of x radians. +
    + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    x + + +int +| + +float + + + + The angle in radians for which the sine is computed.
    + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    + the sine of x +
    + + + +
    +
    + Type +
    +
    + +float + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    math_sinh(x) → {float}

    + + + + + + +
    + Return the hyperbolic sine of x. +
    + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    x + + +int +| + +float + + + + The angle in radians for which to compute sinh(x).
    + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    + the hyperbolic sine of x +
    + + + +
    +
    + Type +
    +
    + +float + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    math_sqrt(x) → {float}

    + + + + + + +
    + Return the square root of x. +
    + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    x + + +int +| + +float + + + + A non-negative number. x is converted to a float +if necessary.
    + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    + the square root of x +
    + + + +
    +
    + Type +
    +
    + +float + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    math_tan(x) → {float}

    + + + + + + +
    + Return the tangent of x radians. +
    + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    x + + +int +| + +float + + + + The angle in radians for which the tangent is computed.
    + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    + the tangent of x +
    + + + +
    +
    + Type +
    +
    + +float + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    math_tanh(x) → {float}

    + + + + + + +
    + Return the hyperbolic tangent of x. +
    + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    x + + +int +| + +float + + + + The angle in radians for which to compute tanh(x).
    + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    + the hyperbolic tangent of x +
    + + + +
    +
    + Type +
    +
    + +float + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    math_trunc(x) → {int}

    + + + + + + +
    + Return x with the fractional part removed, leaving the integer part. +trunc() is equivalent to floor() for positive x, and equivalent +to ceil() for negative x. +
    + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    x + + +int +| + +float + + + + The numeric value from which the fractional part is removed, +returning the integral part (i.e. x rounded toward 0).
    + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    + the integer part of x +
    + + + +
    +
    + Type +
    +
    + +int + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    math_ulp(x) → {float}

    + + + + + + +
    + Return the value of the least significant bit of the float x. +If x is a NaN (not a number), return x. +If x is negative, return ulp(-x). +If x is a positive infinity, return x. +If x is equal to 0, return the smallest positive denormalized +representable float (smaller than the minimum positive normalized float, +sys.float_info.min, approximately 1.7976931348623157e+308). +If x is equal to the largest positive representable float, return the value +of the least significant bit of x, such that the first float smaller than +x is x - ulp(x). +Otherwise (when x is a positive finite number), return the value of the least significant +bit of x, such that the first float bigger than x is +x + ulp(x). +
    + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    x + + +int +| + +float + + + + The numeric value (typically a float) for which to compute +the ULP (Unit in the Last Place). The function returns the value of the least significant +bit of x, handling special cases (NaN, infinities, 0, etc.) +as specified by IEEE 754.
    + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    + the spacing between x and the next representable float in the +direction defined by x's sign +
    + + + +
    +
    + Type +
    +
    + +float + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    max(arg1, arg2, *args) → {int|float|string}

    + + + + + + +
    + Returns the largest of the provided values. If multiple items are equal to the maximum, +the first encountered is returned. All values should be mutually comparable. +
    + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    arg1 + + +int +| + +float +| + +string + + + + The first item to compare.
    arg2 + + +int +| + +float +| + +string + + + + The second item to compare.
    *args + + +int +| + +float +| + +string + + + + Additional items to compare.
    + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    + the largest of the provided values +
    + + + +
    +
    + Type +
    +
    + +int +| + +float +| + +string + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    min(arg1, arg2, *args) → {int|float|string}

    + + + + + + +
    + Returns the smallest of the provided values. If multiple items are equal to the minimum, +the first encountered is returned. All values should be mutually comparable. +
    + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    arg1 + + +int +| + +float +| + +string + + + + The first item to compare.
    arg2 + + +int +| + +float +| + +string + + + + The second item to compare.
    *args + + +int +| + +float +| + +string + + + + Additional items to compare.
    + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    + the smallest of the provided values +
    + + + +
    +
    + Type +
    +
    + +int +| + +float +| + +string + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    print(*object) → {NoneType}

    + + + + + + +
    + A simplified version of the Python built-in print function. +This function takes any number of parameters *object, converts them to their +string representations using str(), and writes them to the standard +output (sys.stdout), followed by a newline character. See the official Python +documentation for print. +
    + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    *object + + +any + + + + object(s) to be printed to the standard output
    + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    + the None value +
    + + + +
    +
    + Type +
    +
    + +NoneType + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    random_random() → {float}

    + + + + + + +
    + Return the next random floating-point number in the range 0.0 ≤ X < 1.0. +
    + + + + + + + + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    + the next random floating-point number in the range 0.0 ≤ X < 1.0 +
    + + + +
    +
    + Type +
    +
    + +float + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    round(number, ndigits) → {float}

    + + + + + + +
    + Return number rounded to ndigits precision after the decimal point. If +ndigits is omitted or is None, it returns the nearest integer +to its input. +
    + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    number + + +int +| + +float + + + + The value to be rounded.
    ndigits + + +int + + + + The number of digits to round to after the decimal point. If omitted +or None, the function rounds to the nearest integer.
    + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    + the number rounded to ndigits precision +
    + + + +
    +
    + Type +
    +
    + +float + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    str(object) → {string}

    + + + + + + +
    + Return a string version of object. If object is not provided, returns +the empty string. +
    + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    object + + +any + + + + The object to be converted to a string. +If not provided, an empty string is returned.
    + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    + the informal string representation of object +
    + + + +
    +
    + Type +
    +
    + +string + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    time_time() → {float}

    + + + + + + +
    + Return the number of milliseconds elapsed since January 1, 1970 00:00:00 UTC. +
    + + + + + + + + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    + current time in milliseconds +
    + + + +
    +
    + Type +
    +
    + +float + + +
    +
    + + + + + + + +
    + + + + + + +
    + +
    + + + + +
    + + + +
    + + + + + + + \ No newline at end of file diff --git a/docs/python/python_1/index.html b/docs/python/python_1/index.html new file mode 100644 index 0000000..a805b3b --- /dev/null +++ b/docs/python/python_1/index.html @@ -0,0 +1,207 @@ + + + + + Python §1 + + + + + + + + + + +
    + +

    Python §1

    + + + + + + + + + + + + + + + + +

    + + + + + + + + + + + + + + + + + + + + +
    +

    Source §1 is a small programming language, designed for the first chapter +of the textbook +Structure and Interpretation +of Computer Programs, JavaScript Adaptation (SICP JS).

    +

    What names are predeclared in Source §1?

    +

    On the right, you see all predeclared names of Source §1, in alphabetical +order. Click on a name to see how it is defined and used. +They come in these groups:

    +
      +
    • + MISC: Miscellaneous constants and functions +
    • +
    • + MATH: Mathematical constants and functions +
    • +
    +

    What can you do in Source §1?

    +

    You can use all features that are introduced in +chapter 1 of the +textbook. Below is the list of features, each with a link to the +textbook section that introduces it and a small example.

    +

    Literal values

    +

    Literal values are simple expressions that directly evaluate to values. These +include numbers in the usual decimal notation, the two boolean values +true and false, and the predeclared names +NaN, Infinity and undefined. +More on literal values in section +1.1 The Elements of Programming of the textbook.

    +

    Constant declarations

    +

    Constant declarations are done in Source with

    const my_name = x + 2;
    +Here the name my_name gets declared within the surrounding block, +and refers to the result of evaluating x + 2 in the rest of the block. +You can read more about the scope of names in +section 1.1.8 +Functions as Black-Box Abstractions.

    +

    Conditional statements and conditional expressions

    +

    Within expressions, you can let a predicate determine whether +a consequent expression +gets evaluated or an alternative expression. This is done by writing, +for example

    +
    return p(x) ? 7 : f(y);
    +

    Read more on conditional expressions in +section 1.1.6 +Conditional Expressions and Predicates. +Conditional evaluation is also possible within statements, for +example the body of a function declaration. For that, you can use conditional +statements, for example:

    if (p(x)) {
    +return 7;
    +} else {
    +return f(y);
    +}
    +Read about conditional statements in +section 1.3.2 +Function Definition Expressions.

    +

    Function declarations and function definitions

    +

    A function declaration is a statement that declares a name and binds it +to a function. For example

    +
    function square(x) {
    +    return x * x;
    +}
    +
    +

    declares the name square and binds it to a squaring function, so that it can be applied +as in square(5);. You can read about function declaration statements in textbook +section 1.1.4 Functions.

    +

    Sometimes, it's not necessary to give a name to a function: You may +want to create a function only to pass it to some other function as argument. +For that, Source +supports function definition expressions. For example

    +
    (x => x * x)(3); // returns 9
    +
    +

    creates a square function just like the function declaration above, +but does not give it a name. +Its only purpose it to be applied to the number 3. See also +textbook +section 1.3.2 Function Definition Expressions.

    +

    Blocks

    +

    Blocks make up the bodies of functions and the consequent and alternative statements of +conditional statements. You can use blocks also elsewhere in your program, if you +want to declare constants local to a specific scope. For example in this program

    +
    const a = 1;
    +{
    +   const a = 2;
    +   display(a);
    +}
    +display(a);
    +
    +

    the first application of display shows the value 2, because the +declaration const a = 2; re-declares the constant a. +However, the second application +of display shows the value 1, because +the declaration const a = 2; is limited in scope by its surrounding block. +You can read more about blocks in +section 1.1.8 +Functions as Black-Box Abstractions.

    +

    Boolean operators

    +

    Boolean operators in Source have a special meaning. Usually, an operator combination +evaluates all its arguments and then applies the operation to which the operator refers. +For example, (2 * 3) + (4 * 5) evaluates 2 * 3 and 4 * 5 first, before the addition +is carried out. However, the operator && works differently. An expression +e1 && e2 should be seen as an abbreviation for e1 ? e2 : false. The expression +e2 only gets evaluated if e1 evaluates to true. The behaviour of || is similar: +e1 || e2 should be seen as an abbreviation for e1 ? true : e2. More on these +two boolean operators in textbook +section 1.1.6 Conditional +Expressions and Predicates.

    +

    Sequences

    +

    A program or the body of a block does not need to consist of a single statement. +You can write multiple statements in a row. In the REPL ("Read-Eval-Print-Loop") +of a Source implementation, you can write

    +
    cube(7);
    +square(5);
    +

    The statements in such a sequence are evaluated in the given order. The +result of evaluating the sequence is the result of evaluating the last +statement in the sequence, in this case square(5);. +Read more about sequences in +section 1.1.2 +Naming and the Environment of the textbook.

    +

    You want the definitive specs?

    +

    For our development team, we are maintaining a definitive description +of the language, called the +Specification of Source §1. Feel free to +take a peek.

    +
    + + + + + + +
    + + + +
    + + + + + + + \ No newline at end of file diff --git a/docs/python/python_1/scripts/prettify/Apache-License-2.0.txt b/docs/python/python_1/scripts/prettify/Apache-License-2.0.txt new file mode 100644 index 0000000..d645695 --- /dev/null +++ b/docs/python/python_1/scripts/prettify/Apache-License-2.0.txt @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/docs/python/python_1/styles/README.md b/docs/python/python_1/styles/README.md new file mode 100644 index 0000000..6e6e82d --- /dev/null +++ b/docs/python/python_1/styles/README.md @@ -0,0 +1,3 @@ +Changelog: + +// jsdoc-default.css modified by MH: 1/7/2019, see MH below \ No newline at end of file diff --git a/docs/python/python_1/styles/jsdoc-default.css b/docs/python/python_1/styles/jsdoc-default.css new file mode 100644 index 0000000..a2802ea --- /dev/null +++ b/docs/python/python_1/styles/jsdoc-default.css @@ -0,0 +1,367 @@ +/* modified by MH: 1/7/2019, see MH below */ + +@font-face { + font-family: 'Open Sans'; + font-weight: normal; + font-style: normal; + src: url('../fonts/OpenSans-Regular-webfont.eot'); + src: + local('Open Sans'), + local('OpenSans'), + url('../fonts/OpenSans-Regular-webfont.eot?#iefix') format('embedded-opentype'), + url('../fonts/OpenSans-Regular-webfont.woff') format('woff'), + url('../fonts/OpenSans-Regular-webfont.svg#open_sansregular') format('svg'); +} + +@font-face { + font-family: 'Open Sans Light'; + font-weight: normal; + font-style: normal; + src: url('../fonts/OpenSans-Light-webfont.eot'); + src: + local('Open Sans Light'), + local('OpenSans Light'), + url('../fonts/OpenSans-Light-webfont.eot?#iefix') format('embedded-opentype'), + url('../fonts/OpenSans-Light-webfont.woff') format('woff'), + url('../fonts/OpenSans-Light-webfont.svg#open_sanslight') format('svg'); +} + +html +{ + overflow: auto; + background-color: #fff; + font-size: 14px; +} + +body +{ + font-family: 'Open Sans', sans-serif; + line-height: 1.5; + color: #4d4e53; + background-color: white; +} + +a, a:visited, a:active { + color: #0095dd; + text-decoration: none; +} + +a:hover { + text-decoration: underline; +} + +header +{ + display: block; + padding: 0px 4px; +} + +tt, code, kbd, samp { + font-family: Consolas, Monaco, 'Andale Mono', monospace; +} + +.class-description { + font-size: 130%; + line-height: 140%; + margin-bottom: 1em; + margin-top: 1em; +} + +.class-description:empty { + margin: 0; +} + +#main { + float: left; + width: 70%; +} + +article dl { + margin-bottom: 40px; +} + +article img { + max-width: 100%; +} + +section +{ + display: block; + background-color: #fff; + padding: 12px 24px; + border-bottom: 1px solid #ccc; + margin-right: 30px; +} + +.variation { + display: none; +} + +.signature-attributes { + font-size: 60%; + color: #aaa; + font-style: italic; + font-weight: lighter; +} + +nav +{ + display: block; + float: right; + margin-top: 28px; + width: 30%; + box-sizing: border-box; + border-left: 1px solid #ccc; + padding-left: 16px; +} + +nav ul { + font-family: 'Lucida Grande', 'Lucida Sans Unicode', arial, sans-serif; + font-size: 100%; + line-height: 17px; + padding: 0; + margin: 0; + list-style-type: none; +} + +nav ul a, nav ul a:visited, nav ul a:active { + font-family: Consolas, Monaco, 'Andale Mono', monospace; + line-height: 18px; + color: #4D4E53; +} + +nav h3 { + margin-top: 12px; +} + +nav li { + margin-top: 6px; +} + +footer { + display: block; + padding: 6px; + margin-top: 12px; + font-style: italic; + font-size: 90%; +} + +h1, h2, h3, h4 { + font-weight: 200; + margin: 0; +} + +h1 +{ + font-family: 'Open Sans Light', sans-serif; + font-size: 48px; + letter-spacing: -2px; + margin: 12px 24px 20px; +} + +/* added by MH: 1/7/2019 + support for overall library index, + using library-page class */ +h2.libraries-page { + margin: 16px 28px 24px; +} + +h2, h3.subsection-title +{ + font-size: 30px; + font-weight: 700; + letter-spacing: -1px; + margin-bottom: 12px; +} + +h3 +{ + font-size: 24px; + letter-spacing: -0.5px; + margin-bottom: 12px; +} + +h4 +{ + font-size: 18px; + letter-spacing: -0.33px; + margin-bottom: 12px; + color: #4d4e53; +} + +h5, .container-overview .subsection-title +{ + font-size: 120%; + font-weight: bold; + letter-spacing: -0.01em; + margin: 8px 0 3px 0; +} + +h6 +{ + font-size: 100%; + letter-spacing: -0.01em; + margin: 6px 0 3px 0; + font-style: italic; +} + +table +{ + border-spacing: 0; + border: 0; + border-collapse: collapse; +} + +td, th +{ + border: 1px solid #ddd; + margin: 0px; + text-align: left; + vertical-align: top; + padding: 4px 6px; + display: table-cell; +} + +thead tr +{ + background-color: #ddd; + font-weight: bold; +} + +th { border-right: 1px solid #aaa; } +tr > th:last-child { border-right: 1px solid #ddd; } + +.ancestors, .attribs { color: #999; } +.ancestors a, .attribs a +{ + color: #999 !important; + text-decoration: none; +} + +.clear +{ + clear: both; +} + +.important +{ + font-weight: bold; + color: #950B02; +} + +.yes-def { + text-indent: -1000px; +} + +.type-signature { + color: #aaa; +} + +.name, .signature { + font-family: Consolas, Monaco, 'Andale Mono', monospace; +} + +.details { margin-top: 14px; border-left: 2px solid #DDD; } +.details dt { width: 120px; float: left; padding-left: 10px; padding-top: 6px; } +.details dd { margin-left: 70px; } +.details ul { margin: 0; } +.details ul { list-style-type: none; } +.details li { margin-left: 30px; padding-top: 6px; } +.details pre.prettyprint { margin: 0 } +.details .object-value { padding-top: 0; } + +.description { + margin-bottom: 1em; + margin-top: 1em; +} + +.code-caption +{ + font-style: italic; + font-size: 107%; + margin: 0; +} + +.source +{ + border: 1px solid #ddd; + width: 80%; + overflow: auto; +} + +.prettyprint.source { + width: inherit; +} + +.source code +{ + font-size: 100%; + line-height: 18px; + display: block; + padding: 4px 12px; + margin: 0; + background-color: #fff; + color: #4D4E53; +} + +.prettyprint code span.line +{ + display: inline-block; +} + +.prettyprint.linenums +{ + padding-left: 70px; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +.prettyprint.linenums ol +{ + padding-left: 0; +} + +.prettyprint.linenums li +{ + border-left: 3px #ddd solid; +} + +.prettyprint.linenums li.selected, +.prettyprint.linenums li.selected * +{ + background-color: lightyellow; +} + +.prettyprint.linenums li * +{ + -webkit-user-select: text; + -moz-user-select: text; + -ms-user-select: text; + user-select: text; +} + +.params .name, .props .name, .name code { + color: #4D4E53; + font-family: Consolas, Monaco, 'Andale Mono', monospace; + font-size: 100%; +} + +.params td.description > p:first-child, +.props td.description > p:first-child +{ + margin-top: 0; + padding-top: 0; +} + +.params td.description > p:last-child, +.props td.description > p:last-child +{ + margin-bottom: 0; + padding-bottom: 0; +} + +.disabled { + color: #454545; +} diff --git a/docs/python/python_1/styles/prettify-jsdoc.css b/docs/python/python_1/styles/prettify-jsdoc.css new file mode 100644 index 0000000..5a2526e --- /dev/null +++ b/docs/python/python_1/styles/prettify-jsdoc.css @@ -0,0 +1,111 @@ +/* JSDoc prettify.js theme */ + +/* plain text */ +.pln { + color: #000000; + font-weight: normal; + font-style: normal; +} + +/* string content */ +.str { + color: #006400; + font-weight: normal; + font-style: normal; +} + +/* a keyword */ +.kwd { + color: #000000; + font-weight: bold; + font-style: normal; +} + +/* a comment */ +.com { + font-weight: normal; + font-style: italic; +} + +/* a type name */ +.typ { + color: #000000; + font-weight: normal; + font-style: normal; +} + +/* a literal value */ +.lit { + color: #006400; + font-weight: normal; + font-style: normal; +} + +/* punctuation */ +.pun { + color: #000000; + font-weight: bold; + font-style: normal; +} + +/* lisp open bracket */ +.opn { + color: #000000; + font-weight: bold; + font-style: normal; +} + +/* lisp close bracket */ +.clo { + color: #000000; + font-weight: bold; + font-style: normal; +} + +/* a markup tag name */ +.tag { + color: #006400; + font-weight: normal; + font-style: normal; +} + +/* a markup attribute name */ +.atn { + color: #006400; + font-weight: normal; + font-style: normal; +} + +/* a markup attribute value */ +.atv { + color: #006400; + font-weight: normal; + font-style: normal; +} + +/* a declaration */ +.dec { + color: #000000; + font-weight: bold; + font-style: normal; +} + +/* a variable name */ +.var { + color: #000000; + font-weight: normal; + font-style: normal; +} + +/* a function name */ +.fun { + color: #000000; + font-weight: bold; + font-style: normal; +} + +/* Specify class=linenums on a pre to get line numbering */ +ol.linenums { + margin-top: 0; + margin-bottom: 0; +} diff --git a/docs/python/python_1/styles/prettify-tomorrow.css b/docs/python/python_1/styles/prettify-tomorrow.css new file mode 100644 index 0000000..b6f92a7 --- /dev/null +++ b/docs/python/python_1/styles/prettify-tomorrow.css @@ -0,0 +1,132 @@ +/* Tomorrow Theme */ +/* Original theme - https://github.com/chriskempson/tomorrow-theme */ +/* Pretty printing styles. Used with prettify.js. */ +/* SPAN elements with the classes below are added by prettyprint. */ +/* plain text */ +.pln { + color: #4d4d4c; } + +@media screen { + /* string content */ + .str { + color: #718c00; } + + /* a keyword */ + .kwd { + color: #8959a8; } + + /* a comment */ + .com { + color: #8e908c; } + + /* a type name */ + .typ { + color: #4271ae; } + + /* a literal value */ + .lit { + color: #f5871f; } + + /* punctuation */ + .pun { + color: #4d4d4c; } + + /* lisp open bracket */ + .opn { + color: #4d4d4c; } + + /* lisp close bracket */ + .clo { + color: #4d4d4c; } + + /* a markup tag name */ + .tag { + color: #c82829; } + + /* a markup attribute name */ + .atn { + color: #f5871f; } + + /* a markup attribute value */ + .atv { + color: #3e999f; } + + /* a declaration */ + .dec { + color: #f5871f; } + + /* a variable name */ + .var { + color: #c82829; } + + /* a function name */ + .fun { + color: #4271ae; } } +/* Use higher contrast and text-weight for printable form. */ +@media print, projection { + .str { + color: #060; } + + .kwd { + color: #006; + font-weight: bold; } + + .com { + color: #600; + font-style: italic; } + + .typ { + color: #404; + font-weight: bold; } + + .lit { + color: #044; } + + .pun, .opn, .clo { + color: #440; } + + .tag { + color: #006; + font-weight: bold; } + + .atn { + color: #404; } + + .atv { + color: #060; } } +/* Style */ +/* +pre.prettyprint { + background: white; + font-family: Consolas, Monaco, 'Andale Mono', monospace; + font-size: 12px; + line-height: 1.5; + border: 1px solid #ccc; + padding: 10px; } +*/ + +/* Specify class=linenums on a pre to get line numbering */ +ol.linenums { + margin-top: 0; + margin-bottom: 0; } + +/* IE indents via margin-left */ +li.L0, +li.L1, +li.L2, +li.L3, +li.L4, +li.L5, +li.L6, +li.L7, +li.L8, +li.L9 { + /* */ } + +/* Alternate shading for lines */ +li.L1, +li.L3, +li.L5, +li.L7, +li.L9 { + /* */ } diff --git a/docs/python/specs/source_1.aux b/docs/python/specs/source_1.aux new file mode 100644 index 0000000..ab00cd4 --- /dev/null +++ b/docs/python/specs/source_1.aux @@ -0,0 +1,8 @@ +\relax +\providecommand\hyper@newdestlabel[2]{} +\providecommand\HyField@AuxAddToFields[1]{} +\providecommand\HyField@AuxAddToCoFields[2]{} +\@writefile{toc}{\contentsline {section}{\numberline {1}Syntax}{1}{section.1}\protected@file@percent } +\@writefile{toc}{\contentsline {section}{\numberline {2}Dynamic Type Checking}{6}{section.2}\protected@file@percent } +\@writefile{toc}{\contentsline {section}{\numberline {3}Standard Library}{7}{section.3}\protected@file@percent } +\gdef \@abspage@last{7} diff --git a/docs/python/specs/source_1.fdb_latexmk b/docs/python/specs/source_1.fdb_latexmk new file mode 100644 index 0000000..0a274d6 --- /dev/null +++ b/docs/python/specs/source_1.fdb_latexmk @@ -0,0 +1,169 @@ +# Fdb version 4 +["pdflatex"] 1748574141.71218 "source_1.tex" "source_1.pdf" "source_1" 1748574142.46629 0 + "/usr/local/texlive/2024/texmf-dist/fonts/enc/dvips/base/8r.enc" 1165713224 4850 80dc9bab7f31fb78a000ccfed0e27cab "" + "/usr/local/texlive/2024/texmf-dist/fonts/map/fontname/texfonts.map" 1577235249 3524 cb3e574dea2d1052e39280babc910dc8 "" + "/usr/local/texlive/2024/texmf-dist/fonts/tfm/adobe/bookman/pbkd8r.tfm" 1136768653 2652 fbb260af94169655e2163df863ca2995 "" + "/usr/local/texlive/2024/texmf-dist/fonts/tfm/adobe/bookman/pbkd8t.tfm" 1136768653 3556 261ac613091c62ddacfd00939d8dd353 "" + "/usr/local/texlive/2024/texmf-dist/fonts/tfm/adobe/bookman/pbkl7t.tfm" 1136768653 1800 f68747be4f89b17e96149118d1894979 "" + "/usr/local/texlive/2024/texmf-dist/fonts/tfm/adobe/bookman/pbkl8c.tfm" 1136768653 1364 ff23d074a5ae37cc24b918b3e8850fc0 "" + "/usr/local/texlive/2024/texmf-dist/fonts/tfm/adobe/bookman/pbkl8r.tfm" 1136768653 2608 d8b24d9becc080c35b069bf5c09816a3 "" + "/usr/local/texlive/2024/texmf-dist/fonts/tfm/adobe/bookman/pbkl8t.tfm" 1136768653 3488 d5b156792a73291a2f69626e6a3f8632 "" + "/usr/local/texlive/2024/texmf-dist/fonts/tfm/adobe/bookman/pbkli8r.tfm" 1136768653 2812 072107f186dcf718ca4dd92aa2ad5cdd "" + "/usr/local/texlive/2024/texmf-dist/fonts/tfm/adobe/bookman/pbkli8t.tfm" 1136768653 3644 a367c8016388e00e23add28a96a95e35 "" + "/usr/local/texlive/2024/texmf-dist/fonts/tfm/adobe/bookman/pbklo8r.tfm" 1136768653 2756 a1a6b86d07e2c434df00ec3df166fa99 "" + "/usr/local/texlive/2024/texmf-dist/fonts/tfm/adobe/bookman/pbklo8t.tfm" 1136768653 3620 0c547f3d07d80a465f8d79b7555c812e "" + "/usr/local/texlive/2024/texmf-dist/fonts/tfm/adobe/courier/pcrb8r.tfm" 1136768653 1292 3059476c50a24578715759f22652f3d0 "" + "/usr/local/texlive/2024/texmf-dist/fonts/tfm/adobe/courier/pcrb8t.tfm" 1136768653 1384 87406e4336af44af883a035f17f319d9 "" + "/usr/local/texlive/2024/texmf-dist/fonts/tfm/adobe/courier/pcrr8c.tfm" 1136768653 1268 8bd405dc5751cfed76cb6fb2db78cb50 "" + "/usr/local/texlive/2024/texmf-dist/fonts/tfm/adobe/courier/pcrr8r.tfm" 1136768653 1292 bd42be2f344128bff6d35d98474adfe3 "" + "/usr/local/texlive/2024/texmf-dist/fonts/tfm/adobe/courier/pcrr8t.tfm" 1136768653 1384 4632f5e54900a7dadbb83f555bc61e56 "" + "/usr/local/texlive/2024/texmf-dist/fonts/tfm/public/amsfonts/cmextra/cmex7.tfm" 1246382020 1004 54797486969f23fa377b128694d548df "" + "/usr/local/texlive/2024/texmf-dist/fonts/tfm/public/amsfonts/cmextra/cmex8.tfm" 1246382020 988 bdf658c3bfc2d96d3c8b02cfc1c94c20 "" + "/usr/local/texlive/2024/texmf-dist/fonts/tfm/public/amsfonts/symbols/msam10.tfm" 1246382020 916 f87d7c45f9c908e672703b83b72241a3 "" + "/usr/local/texlive/2024/texmf-dist/fonts/tfm/public/amsfonts/symbols/msam5.tfm" 1246382020 924 9904cf1d39e9767e7a3622f2a125a565 "" + "/usr/local/texlive/2024/texmf-dist/fonts/tfm/public/amsfonts/symbols/msam7.tfm" 1246382020 928 2dc8d444221b7a635bb58038579b861a "" + "/usr/local/texlive/2024/texmf-dist/fonts/tfm/public/amsfonts/symbols/msbm10.tfm" 1246382020 908 2921f8a10601f252058503cc6570e581 "" + "/usr/local/texlive/2024/texmf-dist/fonts/tfm/public/amsfonts/symbols/msbm5.tfm" 1246382020 940 75ac932a52f80982a9f8ea75d03a34cf "" + "/usr/local/texlive/2024/texmf-dist/fonts/tfm/public/amsfonts/symbols/msbm7.tfm" 1246382020 940 228d6584342e91276bf566bcf9716b83 "" + "/usr/local/texlive/2024/texmf-dist/fonts/tfm/public/cm/cmmi6.tfm" 1136768653 1512 f21f83efb36853c0b70002322c1ab3ad "" + "/usr/local/texlive/2024/texmf-dist/fonts/tfm/public/cm/cmmi8.tfm" 1136768653 1520 eccf95517727cb11801f4f1aee3a21b4 "" + "/usr/local/texlive/2024/texmf-dist/fonts/tfm/public/cm/cmr6.tfm" 1136768653 1300 b62933e007d01cfd073f79b963c01526 "" + "/usr/local/texlive/2024/texmf-dist/fonts/tfm/public/cm/cmr8.tfm" 1136768653 1292 21c1c5bfeaebccffdb478fd231a0997d "" + "/usr/local/texlive/2024/texmf-dist/fonts/tfm/public/cm/cmsy6.tfm" 1136768653 1116 933a60c408fc0a863a92debe84b2d294 "" + "/usr/local/texlive/2024/texmf-dist/fonts/tfm/public/cm/cmsy8.tfm" 1136768653 1120 8b7d695260f3cff42e636090a8002094 "" + "/usr/local/texlive/2024/texmf-dist/fonts/tfm/public/cm/cmtt10.tfm" 1136768653 768 1321e9409b4137d6fb428ac9dc956269 "" + "/usr/local/texlive/2024/texmf-dist/fonts/tfm/public/cm/cmtt8.tfm" 1136768653 768 d7b9a2629a0c353102ad947dc9221d49 "" + "/usr/local/texlive/2024/texmf-dist/fonts/tfm/public/latex-fonts/lasy10.tfm" 1136768653 520 82a3d37183f34b6eb363a161dfc002c2 "" + "/usr/local/texlive/2024/texmf-dist/fonts/tfm/public/latex-fonts/lasy5.tfm" 1136768653 520 d082ac03a1087bc1ec2a06e24a9f68c0 "" + "/usr/local/texlive/2024/texmf-dist/fonts/tfm/public/latex-fonts/lasy6.tfm" 1136768653 520 4889cce2180234b97cad636b6039c722 "" + "/usr/local/texlive/2024/texmf-dist/fonts/tfm/public/latex-fonts/lasy7.tfm" 1136768653 520 a74c6ed8cb48679fdc3ea874d9d34a7e "" + "/usr/local/texlive/2024/texmf-dist/fonts/tfm/public/latex-fonts/lasy8.tfm" 1136768653 520 7bb3abb160b19e0ed6ac404bb59052b7 "" + "/usr/local/texlive/2024/texmf-dist/fonts/type1/public/amsfonts/cm/cmmi10.pfb" 1248133631 36299 5f9df58c2139e7edcf37c8fca4bd384d "" + "/usr/local/texlive/2024/texmf-dist/fonts/type1/public/amsfonts/cm/cmmi7.pfb" 1248133631 36281 c355509802a035cadc5f15869451dcee "" + "/usr/local/texlive/2024/texmf-dist/fonts/type1/public/amsfonts/cm/cmmi8.pfb" 1248133631 35469 70d41d2b9ea31d5d813066df7c99281c "" + "/usr/local/texlive/2024/texmf-dist/fonts/type1/public/amsfonts/cm/cmr10.pfb" 1248133631 35752 024fb6c41858982481f6968b5fc26508 "" + "/usr/local/texlive/2024/texmf-dist/fonts/type1/public/amsfonts/cm/cmr8.pfb" 1248133631 32726 0a1aea6fcd6468ee2cf64d891f5c43c8 "" + "/usr/local/texlive/2024/texmf-dist/fonts/type1/public/amsfonts/cm/cmsy10.pfb" 1248133631 32569 5e5ddc8df908dea60932f3c484a54c0d "" + "/usr/local/texlive/2024/texmf-dist/fonts/type1/public/amsfonts/cm/cmsy8.pfb" 1248133631 32626 4f5c1b83753b1dd3a97d1b399a005b4b "" + "/usr/local/texlive/2024/texmf-dist/fonts/type1/urw/bookman/ubkd8a.pfb" 1136849748 44768 f7f73d132286e7860b4a7010de7f597c "" + "/usr/local/texlive/2024/texmf-dist/fonts/type1/urw/bookman/ubkl8a.pfb" 1136849748 44934 6b22cea7b9558c69bac00cbdc55a9953 "" + "/usr/local/texlive/2024/texmf-dist/fonts/type1/urw/bookman/ubkli8a.pfb" 1136849748 44162 e6f462fe4e2c0d41f03e92355604b703 "" + "/usr/local/texlive/2024/texmf-dist/fonts/type1/urw/courier/ucrb8a.pfb" 1136849748 50493 4ed1f7e9eba8f1f3e1ec25195460190d "" + "/usr/local/texlive/2024/texmf-dist/fonts/type1/urw/courier/ucrr8a.pfb" 1136849748 45758 19968a0990191524e34e1994d4a31cb6 "" + "/usr/local/texlive/2024/texmf-dist/fonts/vf/adobe/bookman/pbkd8t.vf" 1136768653 2352 d2be7cc526a6d08fef772daa8eebafce "" + "/usr/local/texlive/2024/texmf-dist/fonts/vf/adobe/bookman/pbkl8c.vf" 1136768653 3556 1d2c096c9bb83e765b39929a72752e94 "" + "/usr/local/texlive/2024/texmf-dist/fonts/vf/adobe/bookman/pbkl8t.vf" 1136768653 2356 7ea60a0e563963d05cf27387ad3d563a "" + "/usr/local/texlive/2024/texmf-dist/fonts/vf/adobe/bookman/pbkli8t.vf" 1136768653 2324 c701597cbd6efd5d5edf607c5a1308b2 "" + "/usr/local/texlive/2024/texmf-dist/fonts/vf/adobe/bookman/pbklo8t.vf" 1136768653 2356 99734ce2288d2f531f17825697cad06c "" + "/usr/local/texlive/2024/texmf-dist/fonts/vf/adobe/courier/pcrb8t.vf" 1136768653 2184 5d20c8b00cd914e50251116c274e2d0b "" + "/usr/local/texlive/2024/texmf-dist/fonts/vf/adobe/courier/pcrr8c.vf" 1136768653 3552 6a7911d0b338a7c32cbfc3a9e985ccca "" + "/usr/local/texlive/2024/texmf-dist/fonts/vf/adobe/courier/pcrr8t.vf" 1136768653 2184 8475af1b9cfa983db5f46f5ed4b8f9f7 "" + "/usr/local/texlive/2024/texmf-dist/tex/context/base/mkii/supp-pdf.mkii" 1461363279 71627 94eb9990bed73c364d7f53f960cc8c5b "" + "/usr/local/texlive/2024/texmf-dist/tex/generic/atbegshi/atbegshi.sty" 1575674566 24708 5584a51a7101caf7e6bbf1fc27d8f7b1 "" + "/usr/local/texlive/2024/texmf-dist/tex/generic/bigintcalc/bigintcalc.sty" 1576625341 40635 c40361e206be584d448876bba8a64a3b "" + "/usr/local/texlive/2024/texmf-dist/tex/generic/bitset/bitset.sty" 1576016050 33961 6b5c75130e435b2bfdb9f480a09a39f9 "" + "/usr/local/texlive/2024/texmf-dist/tex/generic/gettitlestring/gettitlestring.sty" 1576625223 8371 9d55b8bd010bc717624922fb3477d92e "" + "/usr/local/texlive/2024/texmf-dist/tex/generic/iftex/ifpdf.sty" 1572645307 480 5778104efadad304ced77548ca2184b1 "" + "/usr/local/texlive/2024/texmf-dist/tex/generic/iftex/iftex.sty" 1644112042 7237 bdd120a32c8fdb4b433cf9ca2e7cd98a "" + "/usr/local/texlive/2024/texmf-dist/tex/generic/infwarerr/infwarerr.sty" 1575499628 8356 7bbb2c2373aa810be568c29e333da8ed "" + "/usr/local/texlive/2024/texmf-dist/tex/generic/intcalc/intcalc.sty" 1576625065 31769 002a487f55041f8e805cfbf6385ffd97 "" + "/usr/local/texlive/2024/texmf-dist/tex/generic/kvdefinekeys/kvdefinekeys.sty" 1576878844 5412 d5a2436094cd7be85769db90f29250a6 "" + "/usr/local/texlive/2024/texmf-dist/tex/generic/ltxcmds/ltxcmds.sty" 1701727651 17865 1a9bd36b4f98178fa551aca822290953 "" + "/usr/local/texlive/2024/texmf-dist/tex/generic/pdfescape/pdfescape.sty" 1576015897 19007 15924f7228aca6c6d184b115f4baa231 "" + "/usr/local/texlive/2024/texmf-dist/tex/generic/pdftexcmds/pdftexcmds.sty" 1593379760 20089 80423eac55aa175305d35b49e04fe23b "" + "/usr/local/texlive/2024/texmf-dist/tex/generic/uniquecounter/uniquecounter.sty" 1576624663 7008 f92eaa0a3872ed622bbf538217cd2ab7 "" + "/usr/local/texlive/2024/texmf-dist/tex/latex/amsfonts/amsfonts.sty" 1359763108 5949 3f3fd50a8cc94c3d4cbf4fc66cd3df1c "" + "/usr/local/texlive/2024/texmf-dist/tex/latex/amsfonts/amssymb.sty" 1359763108 13829 94730e64147574077f8ecfea9bb69af4 "" + "/usr/local/texlive/2024/texmf-dist/tex/latex/amsfonts/umsa.fd" 1359763108 961 6518c6525a34feb5e8250ffa91731cff "" + "/usr/local/texlive/2024/texmf-dist/tex/latex/amsfonts/umsb.fd" 1359763108 961 d02606146ba5601b5645f987c92e6193 "" + "/usr/local/texlive/2024/texmf-dist/tex/latex/amsmath/amsbsy.sty" 1686341992 2222 499d61426192c39efd8f410ee1a52b9c "" + "/usr/local/texlive/2024/texmf-dist/tex/latex/amsmath/amsgen.sty" 1686341992 4173 82ac04dfb1256038fad068287fbb4fe6 "" + "/usr/local/texlive/2024/texmf-dist/tex/latex/amsmath/amsmath.sty" 1686341992 88371 d84032c0f422c3d1e282266c01bef237 "" + "/usr/local/texlive/2024/texmf-dist/tex/latex/amsmath/amsopn.sty" 1686341992 4474 b811654f4bf125f11506d13d13647efb "" + "/usr/local/texlive/2024/texmf-dist/tex/latex/amsmath/amstext.sty" 1686341992 2444 0d0c1ee65478277e8015d65b86983da2 "" + "/usr/local/texlive/2024/texmf-dist/tex/latex/atveryend/atveryend.sty" 1576191570 19336 ce7ae9438967282886b3b036cfad1e4d "" + "/usr/local/texlive/2024/texmf-dist/tex/latex/auxhook/auxhook.sty" 1576625391 3935 57aa3c3e203a5c2effb4d2bd2efbc323 "" + "/usr/local/texlive/2024/texmf-dist/tex/latex/base/article.cls" 1705352648 20144 147463a6a579f4597269ef9565205cfe "" + "/usr/local/texlive/2024/texmf-dist/tex/latex/base/atbegshi-ltx.sty" 1705352648 3045 273c666a54e60b9f730964f431a56c1b "" + "/usr/local/texlive/2024/texmf-dist/tex/latex/base/atveryend-ltx.sty" 1705352648 2462 6bc53756156dbd71c1ad550d30a3b93f "" + "/usr/local/texlive/2024/texmf-dist/tex/latex/base/fontenc.sty" 1705352648 5119 a04a8b68ab4f6ce800a41f7f8012a10e "" + "/usr/local/texlive/2024/texmf-dist/tex/latex/base/inputenc.sty" 1705352648 5048 425739d70251273bf93e3d51f3c40048 "" + "/usr/local/texlive/2024/texmf-dist/tex/latex/base/latexsym.sty" 1705352648 2853 22ef275b938b198870f6474b02bbd3b1 "" + "/usr/local/texlive/2024/texmf-dist/tex/latex/base/size10.clo" 1705352648 8448 dbc0dbf4156c0bb9ba01a1c685d3bad0 "" + "/usr/local/texlive/2024/texmf-dist/tex/latex/base/ulasy.fd" 1705352648 2233 223b021f06a068bcbf05919274832728 "" + "/usr/local/texlive/2024/texmf-dist/tex/latex/cjk/texinput/CJK.enc" 1634853225 29591 d67c9aa515f4260cdd60fa9f76d96368 "" + "/usr/local/texlive/2024/texmf-dist/tex/latex/cjk/texinput/CJK.sty" 1634853225 33241 3ee25f21824a4a347866900e5037d6f3 "" + "/usr/local/texlive/2024/texmf-dist/tex/latex/cjk/texinput/CJKutf8.sty" 1634853225 24621 e1c0abd54a87918dd1e31a35b20e99e4 "" + "/usr/local/texlive/2024/texmf-dist/tex/latex/cjk/texinput/mule/MULEenc.sty" 1634853225 12177 48c95ebf85a580326918e5eb490b477b "" + "/usr/local/texlive/2024/texmf-dist/tex/latex/colortbl/colortbl.sty" 1708463147 12355 ec728d2e4c37cf8919ee2eff9b75ad0c "" + "/usr/local/texlive/2024/texmf-dist/tex/latex/epstopdf-pkg/epstopdf-base.sty" 1579991033 13886 d1306dcf79a944f6988e688c1785f9ce "" + "/usr/local/texlive/2024/texmf-dist/tex/latex/etoolbox/etoolbox.sty" 1601931149 46845 3b58f70c6e861a13d927bff09d35ecbc "" + "/usr/local/texlive/2024/texmf-dist/tex/latex/graphics-cfg/color.cfg" 1459978653 1213 620bba36b25224fa9b7e1ccb4ecb76fd "" + "/usr/local/texlive/2024/texmf-dist/tex/latex/graphics-cfg/graphics.cfg" 1465944070 1224 978390e9c2234eab29404bc21b268d1e "" + "/usr/local/texlive/2024/texmf-dist/tex/latex/graphics-def/pdftex.def" 1663965824 19448 1e988b341dda20961a6b931bcde55519 "" + "/usr/local/texlive/2024/texmf-dist/tex/latex/graphics/color.sty" 1654720880 7233 e46ce9241d2b2ca2a78155475fdd557a "" + "/usr/local/texlive/2024/texmf-dist/tex/latex/graphics/dvipsnam.def" 1654720880 5009 d242512eef244b70f2fc3fde14419206 "" + "/usr/local/texlive/2024/texmf-dist/tex/latex/graphics/graphics.sty" 1654720880 18387 8f900a490197ebaf93c02ae9476d4b09 "" + "/usr/local/texlive/2024/texmf-dist/tex/latex/graphics/graphicx.sty" 1654720880 8010 a8d949cbdbc5c983593827c9eec252e1 "" + "/usr/local/texlive/2024/texmf-dist/tex/latex/graphics/keyval.sty" 1654720880 2671 7e67d78d9b88c845599a85b2d41f2e39 "" + "/usr/local/texlive/2024/texmf-dist/tex/latex/graphics/mathcolor.ltx" 1667332637 2885 9c645d672ae17285bba324998918efd8 "" + "/usr/local/texlive/2024/texmf-dist/tex/latex/graphics/trig.sty" 1654720880 4023 293ea1c16429fc0c4cf605f4da1791a9 "" + "/usr/local/texlive/2024/texmf-dist/tex/latex/hycolor/hycolor.sty" 1580250785 17914 4c28a13fc3d975e6e81c9bea1d697276 "" + "/usr/local/texlive/2024/texmf-dist/tex/latex/hyperref/hpdftex.def" 1705871765 48154 e46bf8adeb936500541441171d61726d "" + "/usr/local/texlive/2024/texmf-dist/tex/latex/hyperref/hyperref.sty" 1705871765 220920 fd3cbb5f1a2bc9b8f451b8b7d8171264 "" + "/usr/local/texlive/2024/texmf-dist/tex/latex/hyperref/nameref.sty" 1705871765 11026 182c63f139a71afd30a28e5f1ed2cd1c "" + "/usr/local/texlive/2024/texmf-dist/tex/latex/hyperref/pd1enc.def" 1705871765 14249 e67cb186717b7ab18d14a4875e7e98b5 "" + "/usr/local/texlive/2024/texmf-dist/tex/latex/hyperref/puenc.def" 1705871765 117112 05831178ece2cad4d9629dcf65099b11 "" + "/usr/local/texlive/2024/texmf-dist/tex/latex/koma-script/scrbase.sty" 1688762466 100856 24b70029ad44c2ee829db2529cf4ee23 "" + "/usr/local/texlive/2024/texmf-dist/tex/latex/koma-script/scrkbase.sty" 1688762466 21943 93cf6c456e50f74225092b8714462fa4 "" + "/usr/local/texlive/2024/texmf-dist/tex/latex/koma-script/scrlfile-hook.sty" 1688762466 11185 15c86b5a61db19da88ab941ca5b70a12 "" + "/usr/local/texlive/2024/texmf-dist/tex/latex/koma-script/scrlfile.sty" 1688762466 3328 3d5fc41a419bf18130ce17d90a23c295 "" + "/usr/local/texlive/2024/texmf-dist/tex/latex/koma-script/scrlogo.sty" 1688762466 2162 418e29bcf2b8059e8a9ee1ea4d0d0c87 "" + "/usr/local/texlive/2024/texmf-dist/tex/latex/koma-script/typearea.sty" 1688762466 58382 11e5cfa7a7ea68055da565b4657ea350 "" + "/usr/local/texlive/2024/texmf-dist/tex/latex/kvoptions/kvoptions.sty" 1655478651 22555 6d8e155cfef6d82c3d5c742fea7c992e "" + "/usr/local/texlive/2024/texmf-dist/tex/latex/kvsetkeys/kvsetkeys.sty" 1665067230 13815 760b0c02f691ea230f5359c4e1de23a7 "" + "/usr/local/texlive/2024/texmf-dist/tex/latex/l3backend/l3backend-pdftex.def" 1708463273 30006 3d512c0edd558928ddea1690180ef77e "" + "/usr/local/texlive/2024/texmf-dist/tex/latex/latexconfig/epstopdf-sys.cfg" 1279039959 678 4792914a8f45be57bb98413425e4c7af "" + "/usr/local/texlive/2024/texmf-dist/tex/latex/listings/listings.cfg" 1708549794 1830 20af84c556326f7c12b9202ebe363f56 "" + "/usr/local/texlive/2024/texmf-dist/tex/latex/listings/listings.sty" 1708549794 81322 d02238bdeb305f2c9f9d0229f99371d0 "" + "/usr/local/texlive/2024/texmf-dist/tex/latex/listings/lstmisc.sty" 1708549794 77022 5c8c440739265e7ba15b8379ece6ecd7 "" + "/usr/local/texlive/2024/texmf-dist/tex/latex/listings/lstpatch.sty" 1708549794 329 f19f5da7234b51d16764e23d20999c73 "" + "/usr/local/texlive/2024/texmf-dist/tex/latex/mathtools/mathtools.sty" 1710187076 62672 9ff036bc89365461cc2bd482cc1e4879 "" + "/usr/local/texlive/2024/texmf-dist/tex/latex/mathtools/mhsetup.sty" 1616101747 5582 a43dedf8e5ec418356f1e9dfe5d29fc3 "" + "/usr/local/texlive/2024/texmf-dist/tex/latex/psnfss/bookman.sty" 1586716065 866 5241a7e4e68212672a723eb098264f76 "" + "/usr/local/texlive/2024/texmf-dist/tex/latex/psnfss/ot1pbk.fd" 1137110629 1421 b89e9ec050a70360ae1c79e70871b9d3 "" + "/usr/local/texlive/2024/texmf-dist/tex/latex/psnfss/t1pbk.fd" 1137110629 1226 fd3e9c2f6a1a90301d595e18ba984a8b "" + "/usr/local/texlive/2024/texmf-dist/tex/latex/psnfss/t1pcr.fd" 1137110629 798 d5895e9edc628f2be019beb2c0ec66df "" + "/usr/local/texlive/2024/texmf-dist/tex/latex/psnfss/ts1pbk.fd" 1137110629 963 7e5b0bcf15b54d8f362c34df00ed1ce1 "" + "/usr/local/texlive/2024/texmf-dist/tex/latex/psnfss/ts1pcr.fd" 1137110629 643 92c451bb86386a4e36a174603ddb5a13 "" + "/usr/local/texlive/2024/texmf-dist/tex/latex/refcount/refcount.sty" 1576624809 9878 9e94e8fa600d95f9c7731bb21dfb67a4 "" + "/usr/local/texlive/2024/texmf-dist/tex/latex/rerunfilecheck/rerunfilecheck.sty" 1657483315 9714 ba3194bd52c8499b3f1e3eb91d409670 "" + "/usr/local/texlive/2024/texmf-dist/tex/latex/tools/array.sty" 1698869629 12667 e4b5eb11e4b7239e6c8a52bbe074a6c6 "" + "/usr/local/texlive/2024/texmf-dist/tex/latex/tools/calc.sty" 1698869629 10214 547fd4d29642cb7c80bf54b49d447f01 "" + "/usr/local/texlive/2024/texmf-dist/tex/latex/url/url.sty" 1388531844 12796 8edb7d69a20b857904dd0ea757c14ec9 "" + "/usr/local/texlive/2024/texmf-dist/tex/latex/xcolor/svgnam.def" 1700082560 4705 ec4d2f4b7125d5a5145cc9aabae1d54b "" + "/usr/local/texlive/2024/texmf-dist/tex/latex/xcolor/xcolor.sty" 1700082560 55487 80a65caedd3722f4c20a14a69e785d8f "" + "/usr/local/texlive/2024/texmf-dist/web2c/texmf.cnf" 1708706663 41649 5d6ae549fbbcb850a863f69aa41f3d10 "" + "/usr/local/texlive/2024/texmf-var/fonts/map/pdftex/updmap/pdftex.map" 1738291199.1036 5467645 128b85b7cde5f5edc5cb7f1dd7ff8736 "" + "/usr/local/texlive/2024/texmf-var/web2c/pdftex/pdflatex.fmt" 1738291196 8221423 551d4db5f903f8b0c96265fcbe7f49ca "" + "/usr/local/texlive/2024/texmf.cnf" 1710266656 577 e590dabc9e28c5b61546e15f63eebcdf "" + "source_1.aux" 1748574142.37384 496 695a4818ac35f0b14749fb8359dd34ff "pdflatex" + "source_1.out" 1748574142.37418 353 38c54b5c5a4039d80622fefb9c804a45 "pdflatex" + "source_1.tex" 1748574088.10739 556 21052786ffb3a490d0438f3204fe2e6b "" + "source_1_bnf.tex" 1748077452.77757 7555 ea11761a7acca3fb5dd255e7ca3864c5 "" + "source_header.tex" 1748574035.90119 3811 0cb091abda3c7a93166c3e0f7058162b "" + "source_indentation.tex" 1748077452.77957 944 8203d8d9c3c4430e900adcf09948784e "" + "source_intro.tex" 1748077452.78006 235 9368127c23dd31779aa1d837a7af79f3 "" + "source_names_lang.tex" 1748077452.78024 1969 d23ea6a0df31a923c17ae741feb97902 "" + "source_numbers.tex" 1748077452.78041 1527 a31f400b6f10920eeaee5ec742bc0c03 "" + "source_py_differences.tex" 1748077452.78114 1983 d5bd1b25820570834d273e5c5ab32570 "" + "source_return.tex" 1748077452.78139 3233 e4b4abc79229c9f53baa9ef584f8cb5a "" + "source_standard.tex" 1748077452.78164 1027 85ae262e410bed7db0a0e83040acba22 "" + "source_strings.tex" 1748077452.78194 2208 8d59e4e01c0019a6849a3b70f003adf6 "" + "source_typing.tex" 1748077452.78211 3369 ee3fb12537597c8b1c0dc074e2a8f788 "" + (generated) + "source_1.aux" + "source_1.log" + "source_1.out" + "source_1.pdf" + (rewritten before read) diff --git a/docs/python/specs/source_1.fls b/docs/python/specs/source_1.fls new file mode 100644 index 0000000..c11e7e1 --- /dev/null +++ b/docs/python/specs/source_1.fls @@ -0,0 +1,330 @@ +PWD /Users/wangdahai/Downloads/cse-machine-resolver/py-slang/docs/python/specs +INPUT /usr/local/texlive/2024/texmf.cnf +INPUT /usr/local/texlive/2024/texmf-dist/web2c/texmf.cnf +INPUT /usr/local/texlive/2024/texmf-var/web2c/pdftex/pdflatex.fmt +INPUT source_1.tex +OUTPUT source_1.log +INPUT source_header.tex +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/base/article.cls +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/base/article.cls +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/base/size10.clo +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/base/size10.clo +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/base/size10.clo +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/xcolor/xcolor.sty +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/xcolor/xcolor.sty +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/graphics-cfg/color.cfg +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/graphics-cfg/color.cfg +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/graphics-cfg/color.cfg +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/graphics-def/pdftex.def +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/graphics-def/pdftex.def +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/graphics-def/pdftex.def +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/graphics/mathcolor.ltx +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/graphics/mathcolor.ltx +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/graphics/mathcolor.ltx +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/graphics/dvipsnam.def +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/graphics/dvipsnam.def +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/graphics/dvipsnam.def +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/xcolor/svgnam.def +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/xcolor/svgnam.def +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/xcolor/svgnam.def +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/colortbl/colortbl.sty +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/colortbl/colortbl.sty +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/tools/array.sty +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/tools/array.sty +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/graphics/color.sty +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/graphics/graphicx.sty +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/graphics/graphicx.sty +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/graphics/keyval.sty +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/graphics/keyval.sty +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/graphics/graphics.sty +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/graphics/graphics.sty +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/graphics/trig.sty +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/graphics/trig.sty +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/graphics-cfg/graphics.cfg +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/graphics-cfg/graphics.cfg +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/graphics-cfg/graphics.cfg +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/psnfss/bookman.sty +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/psnfss/bookman.sty +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/cjk/texinput/CJKutf8.sty +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/cjk/texinput/CJKutf8.sty +INPUT /usr/local/texlive/2024/texmf-dist/tex/generic/iftex/ifpdf.sty +INPUT /usr/local/texlive/2024/texmf-dist/tex/generic/iftex/ifpdf.sty +INPUT /usr/local/texlive/2024/texmf-dist/tex/generic/iftex/iftex.sty +INPUT /usr/local/texlive/2024/texmf-dist/tex/generic/iftex/iftex.sty +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/base/inputenc.sty +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/base/inputenc.sty +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/cjk/texinput/CJK.sty +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/cjk/texinput/CJK.sty +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/cjk/texinput/mule/MULEenc.sty +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/cjk/texinput/mule/MULEenc.sty +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/cjk/texinput/CJK.enc +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/base/fontenc.sty +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/base/fontenc.sty +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/psnfss/ot1pbk.fd +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/psnfss/ot1pbk.fd +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/psnfss/ot1pbk.fd +INPUT /usr/local/texlive/2024/texmf-dist/fonts/map/fontname/texfonts.map +INPUT /usr/local/texlive/2024/texmf-dist/fonts/tfm/adobe/bookman/pbkl7t.tfm +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/base/latexsym.sty +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/base/latexsym.sty +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/mathtools/mathtools.sty +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/mathtools/mathtools.sty +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/tools/calc.sty +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/tools/calc.sty +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/mathtools/mhsetup.sty +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/mathtools/mhsetup.sty +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/amsmath/amsmath.sty +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/amsmath/amsmath.sty +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/amsmath/amsopn.sty +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/amsmath/amstext.sty +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/amsmath/amstext.sty +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/amsmath/amsgen.sty +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/amsmath/amsgen.sty +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/amsmath/amsbsy.sty +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/amsmath/amsbsy.sty +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/amsmath/amsopn.sty +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/amsfonts/amssymb.sty +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/amsfonts/amssymb.sty +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/amsfonts/amsfonts.sty +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/amsfonts/amsfonts.sty +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/base/fontenc.sty +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/psnfss/t1pbk.fd +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/psnfss/t1pbk.fd +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/psnfss/t1pbk.fd +INPUT /usr/local/texlive/2024/texmf-dist/fonts/tfm/adobe/bookman/pbkl8t.tfm +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/koma-script/typearea.sty +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/koma-script/typearea.sty +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/koma-script/scrkbase.sty +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/koma-script/scrkbase.sty +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/koma-script/scrbase.sty +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/koma-script/scrbase.sty +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/koma-script/scrlfile.sty +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/koma-script/scrlfile.sty +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/koma-script/scrlfile-hook.sty +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/koma-script/scrlfile-hook.sty +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/koma-script/scrlogo.sty +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/koma-script/scrlogo.sty +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/listings/listings.sty +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/listings/listings.sty +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/listings/lstpatch.sty +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/listings/lstpatch.sty +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/listings/lstpatch.sty +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/listings/lstmisc.sty +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/listings/lstmisc.sty +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/listings/lstmisc.sty +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/listings/listings.cfg +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/listings/listings.cfg +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/listings/listings.cfg +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/url/url.sty +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/url/url.sty +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/hyperref/hyperref.sty +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/hyperref/hyperref.sty +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/kvsetkeys/kvsetkeys.sty +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/kvsetkeys/kvsetkeys.sty +INPUT /usr/local/texlive/2024/texmf-dist/tex/generic/kvdefinekeys/kvdefinekeys.sty +INPUT /usr/local/texlive/2024/texmf-dist/tex/generic/kvdefinekeys/kvdefinekeys.sty +INPUT /usr/local/texlive/2024/texmf-dist/tex/generic/pdfescape/pdfescape.sty +INPUT /usr/local/texlive/2024/texmf-dist/tex/generic/pdfescape/pdfescape.sty +INPUT /usr/local/texlive/2024/texmf-dist/tex/generic/ltxcmds/ltxcmds.sty +INPUT /usr/local/texlive/2024/texmf-dist/tex/generic/ltxcmds/ltxcmds.sty +INPUT /usr/local/texlive/2024/texmf-dist/tex/generic/pdftexcmds/pdftexcmds.sty +INPUT /usr/local/texlive/2024/texmf-dist/tex/generic/pdftexcmds/pdftexcmds.sty +INPUT /usr/local/texlive/2024/texmf-dist/tex/generic/infwarerr/infwarerr.sty +INPUT /usr/local/texlive/2024/texmf-dist/tex/generic/infwarerr/infwarerr.sty +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/hycolor/hycolor.sty +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/hycolor/hycolor.sty +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/auxhook/auxhook.sty +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/auxhook/auxhook.sty +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/hyperref/nameref.sty +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/hyperref/nameref.sty +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/refcount/refcount.sty +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/refcount/refcount.sty +INPUT /usr/local/texlive/2024/texmf-dist/tex/generic/gettitlestring/gettitlestring.sty +INPUT /usr/local/texlive/2024/texmf-dist/tex/generic/gettitlestring/gettitlestring.sty +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/kvoptions/kvoptions.sty +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/kvoptions/kvoptions.sty +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/etoolbox/etoolbox.sty +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/etoolbox/etoolbox.sty +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/hyperref/pd1enc.def +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/hyperref/pd1enc.def +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/hyperref/pd1enc.def +INPUT /usr/local/texlive/2024/texmf-dist/tex/generic/intcalc/intcalc.sty +INPUT /usr/local/texlive/2024/texmf-dist/tex/generic/intcalc/intcalc.sty +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/hyperref/puenc.def +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/hyperref/puenc.def +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/hyperref/puenc.def +INPUT /usr/local/texlive/2024/texmf-dist/tex/generic/bitset/bitset.sty +INPUT /usr/local/texlive/2024/texmf-dist/tex/generic/bitset/bitset.sty +INPUT /usr/local/texlive/2024/texmf-dist/tex/generic/bigintcalc/bigintcalc.sty +INPUT /usr/local/texlive/2024/texmf-dist/tex/generic/bigintcalc/bigintcalc.sty +INPUT /usr/local/texlive/2024/texmf-dist/tex/generic/atbegshi/atbegshi.sty +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/base/atbegshi-ltx.sty +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/base/atbegshi-ltx.sty +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/hyperref/hpdftex.def +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/hyperref/hpdftex.def +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/hyperref/hpdftex.def +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/atveryend/atveryend.sty +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/base/atveryend-ltx.sty +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/base/atveryend-ltx.sty +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/rerunfilecheck/rerunfilecheck.sty +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/rerunfilecheck/rerunfilecheck.sty +INPUT /usr/local/texlive/2024/texmf-dist/tex/generic/uniquecounter/uniquecounter.sty +INPUT /usr/local/texlive/2024/texmf-dist/tex/generic/uniquecounter/uniquecounter.sty +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/l3backend/l3backend-pdftex.def +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/l3backend/l3backend-pdftex.def +INPUT ./source_1.aux +INPUT ./source_1.aux +INPUT source_1.aux +OUTPUT source_1.aux +INPUT /usr/local/texlive/2024/texmf-dist/tex/context/base/mkii/supp-pdf.mkii +INPUT /usr/local/texlive/2024/texmf-dist/tex/context/base/mkii/supp-pdf.mkii +INPUT /usr/local/texlive/2024/texmf-dist/tex/context/base/mkii/supp-pdf.mkii +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/epstopdf-pkg/epstopdf-base.sty +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/epstopdf-pkg/epstopdf-base.sty +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/latexconfig/epstopdf-sys.cfg +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/latexconfig/epstopdf-sys.cfg +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/latexconfig/epstopdf-sys.cfg +INPUT ./source_1.out +INPUT ./source_1.out +INPUT source_1.out +INPUT source_1.out +OUTPUT source_1.pdf +INPUT ./source_1.out +INPUT ./source_1.out +OUTPUT source_1.out +INPUT /usr/local/texlive/2024/texmf-dist/fonts/tfm/adobe/bookman/pbkl8t.tfm +INPUT /usr/local/texlive/2024/texmf-dist/fonts/tfm/adobe/bookman/pbkd8t.tfm +INPUT /usr/local/texlive/2024/texmf-dist/fonts/tfm/adobe/bookman/pbkl8t.tfm +INPUT source_intro.tex +INPUT /usr/local/texlive/2024/texmf-dist/fonts/tfm/public/amsfonts/cmextra/cmex7.tfm +INPUT /usr/local/texlive/2024/texmf-dist/fonts/tfm/public/amsfonts/cmextra/cmex7.tfm +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/base/ulasy.fd +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/base/ulasy.fd +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/base/ulasy.fd +INPUT /usr/local/texlive/2024/texmf-dist/fonts/tfm/public/latex-fonts/lasy10.tfm +INPUT /usr/local/texlive/2024/texmf-dist/fonts/tfm/public/latex-fonts/lasy7.tfm +INPUT /usr/local/texlive/2024/texmf-dist/fonts/tfm/public/latex-fonts/lasy5.tfm +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/amsfonts/umsa.fd +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/amsfonts/umsa.fd +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/amsfonts/umsa.fd +INPUT /usr/local/texlive/2024/texmf-dist/fonts/tfm/public/amsfonts/symbols/msam10.tfm +INPUT /usr/local/texlive/2024/texmf-dist/fonts/tfm/public/amsfonts/symbols/msam7.tfm +INPUT /usr/local/texlive/2024/texmf-dist/fonts/tfm/public/amsfonts/symbols/msam5.tfm +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/amsfonts/umsb.fd +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/amsfonts/umsb.fd +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/amsfonts/umsb.fd +INPUT /usr/local/texlive/2024/texmf-dist/fonts/tfm/public/amsfonts/symbols/msbm10.tfm +INPUT /usr/local/texlive/2024/texmf-dist/fonts/tfm/public/amsfonts/symbols/msbm7.tfm +INPUT /usr/local/texlive/2024/texmf-dist/fonts/tfm/public/amsfonts/symbols/msbm5.tfm +INPUT source_1_bnf.tex +INPUT /usr/local/texlive/2024/texmf-dist/fonts/tfm/adobe/bookman/pbkli8t.tfm +INPUT /usr/local/texlive/2024/texmf-dist/fonts/tfm/adobe/bookman/pbkl8t.tfm +INPUT /usr/local/texlive/2024/texmf-dist/fonts/tfm/adobe/bookman/pbkl8t.tfm +INPUT /usr/local/texlive/2024/texmf-dist/fonts/tfm/public/cm/cmr8.tfm +INPUT /usr/local/texlive/2024/texmf-dist/fonts/tfm/public/cm/cmr6.tfm +INPUT /usr/local/texlive/2024/texmf-dist/fonts/tfm/public/cm/cmmi8.tfm +INPUT /usr/local/texlive/2024/texmf-dist/fonts/tfm/public/cm/cmmi6.tfm +INPUT /usr/local/texlive/2024/texmf-dist/fonts/tfm/public/cm/cmsy8.tfm +INPUT /usr/local/texlive/2024/texmf-dist/fonts/tfm/public/cm/cmsy6.tfm +INPUT /usr/local/texlive/2024/texmf-dist/fonts/tfm/public/amsfonts/cmextra/cmex8.tfm +INPUT /usr/local/texlive/2024/texmf-dist/fonts/tfm/public/amsfonts/cmextra/cmex7.tfm +INPUT /usr/local/texlive/2024/texmf-dist/fonts/tfm/public/latex-fonts/lasy8.tfm +INPUT /usr/local/texlive/2024/texmf-dist/fonts/tfm/public/latex-fonts/lasy6.tfm +INPUT /usr/local/texlive/2024/texmf-dist/fonts/tfm/public/amsfonts/symbols/msam10.tfm +INPUT /usr/local/texlive/2024/texmf-dist/fonts/tfm/public/amsfonts/symbols/msam7.tfm +INPUT /usr/local/texlive/2024/texmf-dist/fonts/tfm/public/amsfonts/symbols/msbm10.tfm +INPUT /usr/local/texlive/2024/texmf-dist/fonts/tfm/public/amsfonts/symbols/msbm7.tfm +INPUT /usr/local/texlive/2024/texmf-dist/fonts/tfm/adobe/bookman/pbkl8t.tfm +INPUT /usr/local/texlive/2024/texmf-dist/fonts/tfm/adobe/bookman/pbkli8t.tfm +INPUT /usr/local/texlive/2024/texmf-dist/fonts/tfm/adobe/bookman/pbkd8t.tfm +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/psnfss/t1pcr.fd +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/psnfss/t1pcr.fd +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/psnfss/t1pcr.fd +INPUT /usr/local/texlive/2024/texmf-dist/fonts/tfm/adobe/courier/pcrb8t.tfm +INPUT /usr/local/texlive/2024/texmf-dist/fonts/tfm/adobe/bookman/pbkli8t.tfm +INPUT /usr/local/texlive/2024/texmf-dist/fonts/tfm/adobe/bookman/pbkl8t.tfm +INPUT /usr/local/texlive/2024/texmf-dist/fonts/tfm/adobe/bookman/pbkli8t.tfm +INPUT /usr/local/texlive/2024/texmf-dist/fonts/tfm/adobe/bookman/pbkd8t.tfm +INPUT /usr/local/texlive/2024/texmf-dist/fonts/tfm/adobe/courier/pcrb8t.tfm +INPUT /usr/local/texlive/2024/texmf-dist/fonts/tfm/adobe/bookman/pbkd8t.tfm +INPUT /usr/local/texlive/2024/texmf-dist/fonts/tfm/adobe/courier/pcrb8t.tfm +INPUT /usr/local/texlive/2024/texmf-dist/fonts/tfm/adobe/bookman/pbkd8t.tfm +INPUT /usr/local/texlive/2024/texmf-dist/fonts/tfm/adobe/courier/pcrb8t.tfm +INPUT /usr/local/texlive/2024/texmf-dist/fonts/tfm/adobe/courier/pcrr8t.tfm +INPUT /usr/local/texlive/2024/texmf-dist/fonts/tfm/adobe/courier/pcrr8t.tfm +INPUT /usr/local/texlive/2024/texmf-dist/fonts/tfm/adobe/courier/pcrr8t.tfm +INPUT /usr/local/texlive/2024/texmf-dist/fonts/vf/adobe/bookman/pbkd8t.vf +INPUT /usr/local/texlive/2024/texmf-dist/fonts/tfm/adobe/bookman/pbkd8r.tfm +INPUT /usr/local/texlive/2024/texmf-var/fonts/map/pdftex/updmap/pdftex.map +INPUT /usr/local/texlive/2024/texmf-dist/fonts/enc/dvips/base/8r.enc +INPUT /usr/local/texlive/2024/texmf-dist/fonts/vf/adobe/bookman/pbkl8t.vf +INPUT /usr/local/texlive/2024/texmf-dist/fonts/tfm/adobe/bookman/pbkl8r.tfm +INPUT /usr/local/texlive/2024/texmf-dist/fonts/vf/adobe/bookman/pbkl8t.vf +INPUT /usr/local/texlive/2024/texmf-dist/fonts/tfm/adobe/bookman/pbkl8r.tfm +INPUT /usr/local/texlive/2024/texmf-dist/fonts/vf/adobe/bookman/pbkl8t.vf +INPUT /usr/local/texlive/2024/texmf-dist/fonts/tfm/adobe/bookman/pbkl8r.tfm +INPUT /usr/local/texlive/2024/texmf-dist/fonts/vf/adobe/bookman/pbkli8t.vf +INPUT /usr/local/texlive/2024/texmf-dist/fonts/tfm/adobe/bookman/pbkli8r.tfm +INPUT /usr/local/texlive/2024/texmf-dist/fonts/vf/adobe/bookman/pbkl8t.vf +INPUT /usr/local/texlive/2024/texmf-dist/fonts/tfm/adobe/bookman/pbkl8r.tfm +INPUT /usr/local/texlive/2024/texmf-dist/fonts/vf/adobe/bookman/pbkl8t.vf +INPUT /usr/local/texlive/2024/texmf-dist/fonts/tfm/adobe/bookman/pbkl8r.tfm +INPUT /usr/local/texlive/2024/texmf-dist/fonts/vf/adobe/bookman/pbkl8t.vf +INPUT /usr/local/texlive/2024/texmf-dist/fonts/tfm/adobe/bookman/pbkl8r.tfm +INPUT /usr/local/texlive/2024/texmf-dist/fonts/vf/adobe/bookman/pbkli8t.vf +INPUT /usr/local/texlive/2024/texmf-dist/fonts/tfm/adobe/bookman/pbkli8r.tfm +INPUT /usr/local/texlive/2024/texmf-dist/fonts/vf/adobe/courier/pcrb8t.vf +INPUT /usr/local/texlive/2024/texmf-dist/fonts/tfm/adobe/courier/pcrb8r.tfm +INPUT /usr/local/texlive/2024/texmf-dist/fonts/tfm/adobe/bookman/pbklo8t.tfm +INPUT /usr/local/texlive/2024/texmf-dist/fonts/vf/adobe/bookman/pbklo8t.vf +INPUT /usr/local/texlive/2024/texmf-dist/fonts/tfm/adobe/bookman/pbklo8r.tfm +INPUT /usr/local/texlive/2024/texmf-dist/fonts/vf/adobe/courier/pcrb8t.vf +INPUT /usr/local/texlive/2024/texmf-dist/fonts/tfm/adobe/courier/pcrb8r.tfm +INPUT source_indentation.tex +INPUT /usr/local/texlive/2024/texmf-dist/fonts/tfm/adobe/bookman/pbkd8t.tfm +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/psnfss/ts1pbk.fd +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/psnfss/ts1pbk.fd +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/psnfss/ts1pbk.fd +INPUT /usr/local/texlive/2024/texmf-dist/fonts/tfm/adobe/bookman/pbkl8c.tfm +INPUT source_return.tex +INPUT source_names_lang.tex +INPUT /usr/local/texlive/2024/texmf-dist/fonts/tfm/adobe/bookman/pbkd8t.tfm +INPUT /usr/local/texlive/2024/texmf-dist/fonts/tfm/adobe/courier/pcrb8t.tfm +INPUT /usr/local/texlive/2024/texmf-dist/fonts/vf/adobe/bookman/pbkd8t.vf +INPUT /usr/local/texlive/2024/texmf-dist/fonts/tfm/adobe/bookman/pbkd8r.tfm +INPUT /usr/local/texlive/2024/texmf-dist/fonts/vf/adobe/courier/pcrr8t.vf +INPUT /usr/local/texlive/2024/texmf-dist/fonts/tfm/adobe/courier/pcrr8r.tfm +INPUT /usr/local/texlive/2024/texmf-dist/fonts/vf/adobe/bookman/pbkl8c.vf +INPUT /usr/local/texlive/2024/texmf-dist/fonts/vf/adobe/bookman/pbkd8t.vf +INPUT /usr/local/texlive/2024/texmf-dist/fonts/tfm/adobe/bookman/pbkd8r.tfm +INPUT /usr/local/texlive/2024/texmf-dist/fonts/tfm/public/cm/cmtt10.tfm +INPUT /usr/local/texlive/2024/texmf-dist/fonts/tfm/public/cm/cmtt8.tfm +INPUT /usr/local/texlive/2024/texmf-dist/fonts/tfm/public/cm/cmtt8.tfm +INPUT source_numbers.tex +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/psnfss/ts1pcr.fd +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/psnfss/ts1pcr.fd +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/psnfss/ts1pcr.fd +INPUT /usr/local/texlive/2024/texmf-dist/fonts/tfm/adobe/courier/pcrr8c.tfm +INPUT source_strings.tex +INPUT /usr/local/texlive/2024/texmf-dist/fonts/tfm/public/cm/cmtt8.tfm +INPUT /usr/local/texlive/2024/texmf-dist/fonts/tfm/public/cm/cmtt8.tfm +INPUT /usr/local/texlive/2024/texmf-dist/fonts/vf/adobe/courier/pcrr8c.vf +INPUT source_typing.tex +INPUT source_standard.tex +INPUT source_py_differences.tex +INPUT source_1.aux +INPUT ./source_1.out +INPUT ./source_1.out +INPUT /usr/local/texlive/2024/texmf-dist/fonts/type1/public/amsfonts/cm/cmmi10.pfb +INPUT /usr/local/texlive/2024/texmf-dist/fonts/type1/public/amsfonts/cm/cmmi7.pfb +INPUT /usr/local/texlive/2024/texmf-dist/fonts/type1/public/amsfonts/cm/cmmi8.pfb +INPUT /usr/local/texlive/2024/texmf-dist/fonts/type1/public/amsfonts/cm/cmr10.pfb +INPUT /usr/local/texlive/2024/texmf-dist/fonts/type1/public/amsfonts/cm/cmr8.pfb +INPUT /usr/local/texlive/2024/texmf-dist/fonts/type1/public/amsfonts/cm/cmsy10.pfb +INPUT /usr/local/texlive/2024/texmf-dist/fonts/type1/public/amsfonts/cm/cmsy8.pfb +INPUT /usr/local/texlive/2024/texmf-dist/fonts/type1/urw/bookman/ubkd8a.pfb +INPUT /usr/local/texlive/2024/texmf-dist/fonts/type1/urw/bookman/ubkl8a.pfb +INPUT /usr/local/texlive/2024/texmf-dist/fonts/type1/urw/bookman/ubkl8a.pfb +INPUT /usr/local/texlive/2024/texmf-dist/fonts/type1/urw/bookman/ubkli8a.pfb +INPUT /usr/local/texlive/2024/texmf-dist/fonts/type1/urw/courier/ucrb8a.pfb +INPUT /usr/local/texlive/2024/texmf-dist/fonts/type1/urw/courier/ucrr8a.pfb diff --git a/docs/python/specs/source_1.out b/docs/python/specs/source_1.out new file mode 100644 index 0000000..585e6aa --- /dev/null +++ b/docs/python/specs/source_1.out @@ -0,0 +1,3 @@ +\BOOKMARK [1][-]{section.1}{\376\377\000S\000y\000n\000t\000a\000x}{}% 1 +\BOOKMARK [1][-]{section.2}{\376\377\000D\000y\000n\000a\000m\000i\000c\000\040\000T\000y\000p\000e\000\040\000C\000h\000e\000c\000k\000i\000n\000g}{}% 2 +\BOOKMARK [1][-]{section.3}{\376\377\000S\000t\000a\000n\000d\000a\000r\000d\000\040\000L\000i\000b\000r\000a\000r\000y}{}% 3 diff --git a/docs/python/specs/source_1.pdf b/docs/python/specs/source_1.pdf new file mode 100644 index 0000000..afb6dc4 Binary files /dev/null and b/docs/python/specs/source_1.pdf differ diff --git a/docs/python/specs/source_1.tex b/docs/python/specs/source_1.tex new file mode 100644 index 0000000..3c99e98 --- /dev/null +++ b/docs/python/specs/source_1.tex @@ -0,0 +1,36 @@ +\input source_header.tex + +\begin{document} + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + \docheader{2025}{Python}{\S 1}{Martin Henz, Wang Yuyang} + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\input source_intro.tex + +\input source_1_bnf.tex + +\newpage + +\input source_indentation +\input source_return +% \input source_import + +% \newpage + +\input source_names_lang +\input source_numbers + +% \newpage + +\input source_strings + +\newpage + +\input source_typing.tex + +\newpage + +\input source_standard.tex +\input source_py_differences.tex + +\end{document} \ No newline at end of file diff --git a/docs/python/specs/source_1_bnf.tex b/docs/python/specs/source_1_bnf.tex new file mode 100644 index 0000000..770ef14 --- /dev/null +++ b/docs/python/specs/source_1_bnf.tex @@ -0,0 +1,86 @@ +\section{Syntax} + +A Python program is a \emph{program}, defined using Backus-Naur Form\footnote{ +We adopt Henry Ledgard's BNF variant that he described in +\emph{A human engineered variant of BNF}, ACM SIGPLAN Notices, Volume 15 Issue 10, +October 1980, Pages 57-62. In our grammars, we use \textbf{\texttt{bold}} font for keywords, +{\it italics} for syntactic variables, $\epsilon$ for nothing, +$x\ |\ y$ for $x$ or $y$, $[\ x\ ]$ for an optional $x$, +$ x ...$ for zero or more repetitions of $x$, and $(\ x\ )$ for clarifying the structure of BNF expressions.} +as follows: + +\begin{alignat*}{9} +&& \textit{program} &&\quad ::= &\quad && \textit{import-stmt} ... \ \textit{block} + && \textrm{program} \\[1mm] +% && \textit{import-stmt} &&\quad ::= &\quad && \textbf{\texttt{from}}\ \textit{dotted-name} \ \textbf{\texttt{import}}\ \textit{import-clause} \ \quad +% && \textrm{import statement} \\[1mm] +% && \textit{dotted-name} && ::= &\quad && \textit{name}\ (\textbf{\texttt{.}} \ \textit{name}\ )... \ && \textrm{dotted identifier chain} \\[1mm] +% && \textit{import-clause} && ::= &\quad && \textit{import-as-names} \\ +% && && | &\quad && \textbf{\texttt{(}} \ \textit{import-as-names} \ \textbf{\texttt{)}} \ && \textrm{wildcard or name list} \\[1mm] +% && \textit{import-as-names} && ::= &\quad && \textit{import-as-name}\ (\textit{\texttt{,}} \ \textit{import-as-name}\ ) ... +% && \textrm{clause name list} \\[1mm] +% && \textit{import-as-name} && ::= &\quad && \textit{name}\ [\ \textbf{\texttt{as}} \ \textit{name}\ ] && \textrm{clause name and alias}\\[1mm] +&& \textit{statement} &&\quad ::= &\quad && \textit{name} \ \textbf{\texttt{=}}\ \textit{expression} + && \textrm{variable declaration} \\ +&& && | &\quad && \textbf{\texttt{def}}\ \textit{name} \ + \textbf{\texttt{(}}\ \textit{names} \ \textbf{\texttt{)}}\ \textbf{\texttt{:}}\ \textit{block} \quad + && \textrm{function declaration}\\ +&& && | &\quad && \textbf{\texttt{return}}\ \textit{expression} + && \textrm{return statement}\\ +&& && | &\quad && \textit{if-statement} \quad + && \textrm{conditional statement}\\ +&& && | &\quad && \textit{expression} + && \textrm{expression statement} \\[1mm] +% && && | &\quad && \textbf{\texttt{debugger()}} +% && \textrm{breakpoint} \\[1mm] +&& \textit{names} && ::= &\quad && \epsilon\ | \ \textit{name} \ + (\ \textbf{\texttt{,}} \ \textit{name}\ ) ... + && \textrm{name list} \\[1mm] +&& \textit{if-statement} && ::= &\quad && \textbf{\texttt{if}} \ \textit{expression} \textbf{\texttt{:}} \ \textit{block} \\ +&& && & && (\ \textbf{\texttt{elif}} \ \textit{expression} \textbf{\texttt{:}} \ \textit{block}\ )... \\ +&& && & && \textbf{\texttt{else}}\ \textbf{\texttt{:}} \ \textit{block} + && \textrm{conditional statement} \\[1mm] +&& \textit{block} && ::= & && \textit{statement}... \quad + && \textrm{block statement}\\[1mm] +&& \textit{expression} && ::= &\quad && \textit{number} && \textrm{primitive number expression}\\ +&& && | &\quad && \textbf{\texttt{true}}\ |\ \textbf{\texttt{false}} + && \textrm{primitive boolean expression}\\ +&& && | &\quad && \textit{string} && \textrm{primitive string expression}\\ +&& && | &\quad && \textit{name} && \textrm{name expression}\\ +&& && | &\quad && \textit{expression} \ \textit{binary-operator} \ + \textit{expression} \qquad + && \textrm{binary operator combination}\\ +&& && | &\quad && \textit{unary-operator} \ + \textit{expression} + && \textrm{unary operator combination}\\ +&& && | &\quad && \textit{expression} \ \textit{binary-logical} \ + \textit{expression} \qquad + && \textrm{logical composition}\\ +&& && | &\quad && \textit{expression}\ \textbf{\texttt{(}}\ \textit{expressions}\ \textbf{\texttt{)}} + && \textrm{function application}\\ +&& && | &\quad && \textbf{\texttt{lambda}}\ ( \textit{name}\ | \ + \textbf{\texttt{(}}\ \textit{names}\ \textbf{\texttt{)}}\ + )\ + \texttt{\textbf{:}}\ \textit{expression} + && \textrm{lambda expression}\\ +&& && | &\quad && \textit{expression} \ \textbf{\texttt{if}}\ + \textit{expression} + \ \textbf{\texttt{else}}\ + \textit{expression}\ + && \textrm{conditional expression}\\ +&& && | &\quad && \textbf{\texttt{(}}\ \textit{expression} \ + \textbf{\texttt{)}} && \textrm{parenthesised expression}\\[1mm] +&& \textit{binary-operator} + && ::= &\quad && \textbf{\texttt{+}}\ |\ \textbf{\texttt{-}}\ |\ \textbf{\texttt{*}}\ |\ \textbf{\texttt{/}}\ |\ \textbf{\texttt{**}}\ |\ \textbf{\texttt{\%}}\ | \\ +&& && &\quad && \textbf{\texttt{==}}\ |\ \textbf{\texttt{!=}}\ |\ \texttt{\textbf{>}}\ |\ \texttt{\textbf{<}}\ |\ \texttt{\textbf{>=}}\ |\ \texttt{\textbf{<=}} && \textrm{binary operator}\\[1mm] +&& \textit{unary-operator} + && ::= &\quad && \textbf{\texttt{not}}\ |\ \textbf{\texttt{-}} + && \textrm{unary operator}\\[1mm] +&& \textit{binary-logical} && ::= &\quad && \textbf{\texttt{and}}\ |\ \texttt{\textbf{or}} + && \textrm{logical composition symbol}\\[1mm] +&& \textit{expressions} && ::= &\quad && \epsilon\ | \ \textit{expression}\ ( + \ \textbf{\texttt{,}} \ + \textit{expression} \ + ) ... + && \textrm{argument expressions} +\end{alignat*} diff --git a/docs/python/specs/source_header.aux b/docs/python/specs/source_header.aux new file mode 100644 index 0000000..b640121 --- /dev/null +++ b/docs/python/specs/source_header.aux @@ -0,0 +1,2 @@ +\relax +\gdef \@abspage@last{1} diff --git a/docs/python/specs/source_header.fdb_latexmk b/docs/python/specs/source_header.fdb_latexmk new file mode 100644 index 0000000..f633009 --- /dev/null +++ b/docs/python/specs/source_header.fdb_latexmk @@ -0,0 +1,91 @@ +# Fdb version 4 +["pdflatex"] 1748574112.39624 "/Users/wangdahai/Downloads/cse-machine-resolver/py-slang/docs/python/specs/source_header.tex" "source_header.pdf" "source_header" 1748574112.80947 2 + "/Users/wangdahai/Downloads/cse-machine-resolver/py-slang/docs/python/specs/source_header.tex" 1748574035.90119 3811 0cb091abda3c7a93166c3e0f7058162b "" + "/usr/local/texlive/2024/texmf-dist/fonts/map/fontname/texfonts.map" 1577235249 3524 cb3e574dea2d1052e39280babc910dc8 "" + "/usr/local/texlive/2024/texmf-dist/fonts/tfm/adobe/bookman/pbkl7t.tfm" 1136768653 1800 f68747be4f89b17e96149118d1894979 "" + "/usr/local/texlive/2024/texmf-dist/fonts/tfm/adobe/bookman/pbkl8t.tfm" 1136768653 3488 d5b156792a73291a2f69626e6a3f8632 "" + "/usr/local/texlive/2024/texmf-dist/tex/generic/atbegshi/atbegshi.sty" 1575674566 24708 5584a51a7101caf7e6bbf1fc27d8f7b1 "" + "/usr/local/texlive/2024/texmf-dist/tex/generic/bigintcalc/bigintcalc.sty" 1576625341 40635 c40361e206be584d448876bba8a64a3b "" + "/usr/local/texlive/2024/texmf-dist/tex/generic/bitset/bitset.sty" 1576016050 33961 6b5c75130e435b2bfdb9f480a09a39f9 "" + "/usr/local/texlive/2024/texmf-dist/tex/generic/gettitlestring/gettitlestring.sty" 1576625223 8371 9d55b8bd010bc717624922fb3477d92e "" + "/usr/local/texlive/2024/texmf-dist/tex/generic/iftex/ifpdf.sty" 1572645307 480 5778104efadad304ced77548ca2184b1 "" + "/usr/local/texlive/2024/texmf-dist/tex/generic/iftex/iftex.sty" 1644112042 7237 bdd120a32c8fdb4b433cf9ca2e7cd98a "" + "/usr/local/texlive/2024/texmf-dist/tex/generic/infwarerr/infwarerr.sty" 1575499628 8356 7bbb2c2373aa810be568c29e333da8ed "" + "/usr/local/texlive/2024/texmf-dist/tex/generic/intcalc/intcalc.sty" 1576625065 31769 002a487f55041f8e805cfbf6385ffd97 "" + "/usr/local/texlive/2024/texmf-dist/tex/generic/kvdefinekeys/kvdefinekeys.sty" 1576878844 5412 d5a2436094cd7be85769db90f29250a6 "" + "/usr/local/texlive/2024/texmf-dist/tex/generic/ltxcmds/ltxcmds.sty" 1701727651 17865 1a9bd36b4f98178fa551aca822290953 "" + "/usr/local/texlive/2024/texmf-dist/tex/generic/pdfescape/pdfescape.sty" 1576015897 19007 15924f7228aca6c6d184b115f4baa231 "" + "/usr/local/texlive/2024/texmf-dist/tex/generic/pdftexcmds/pdftexcmds.sty" 1593379760 20089 80423eac55aa175305d35b49e04fe23b "" + "/usr/local/texlive/2024/texmf-dist/tex/generic/uniquecounter/uniquecounter.sty" 1576624663 7008 f92eaa0a3872ed622bbf538217cd2ab7 "" + "/usr/local/texlive/2024/texmf-dist/tex/latex/amsfonts/amsfonts.sty" 1359763108 5949 3f3fd50a8cc94c3d4cbf4fc66cd3df1c "" + "/usr/local/texlive/2024/texmf-dist/tex/latex/amsfonts/amssymb.sty" 1359763108 13829 94730e64147574077f8ecfea9bb69af4 "" + "/usr/local/texlive/2024/texmf-dist/tex/latex/amsmath/amsbsy.sty" 1686341992 2222 499d61426192c39efd8f410ee1a52b9c "" + "/usr/local/texlive/2024/texmf-dist/tex/latex/amsmath/amsgen.sty" 1686341992 4173 82ac04dfb1256038fad068287fbb4fe6 "" + "/usr/local/texlive/2024/texmf-dist/tex/latex/amsmath/amsmath.sty" 1686341992 88371 d84032c0f422c3d1e282266c01bef237 "" + "/usr/local/texlive/2024/texmf-dist/tex/latex/amsmath/amsopn.sty" 1686341992 4474 b811654f4bf125f11506d13d13647efb "" + "/usr/local/texlive/2024/texmf-dist/tex/latex/amsmath/amstext.sty" 1686341992 2444 0d0c1ee65478277e8015d65b86983da2 "" + "/usr/local/texlive/2024/texmf-dist/tex/latex/atveryend/atveryend.sty" 1576191570 19336 ce7ae9438967282886b3b036cfad1e4d "" + "/usr/local/texlive/2024/texmf-dist/tex/latex/auxhook/auxhook.sty" 1576625391 3935 57aa3c3e203a5c2effb4d2bd2efbc323 "" + "/usr/local/texlive/2024/texmf-dist/tex/latex/base/article.cls" 1705352648 20144 147463a6a579f4597269ef9565205cfe "" + "/usr/local/texlive/2024/texmf-dist/tex/latex/base/atbegshi-ltx.sty" 1705352648 3045 273c666a54e60b9f730964f431a56c1b "" + "/usr/local/texlive/2024/texmf-dist/tex/latex/base/atveryend-ltx.sty" 1705352648 2462 6bc53756156dbd71c1ad550d30a3b93f "" + "/usr/local/texlive/2024/texmf-dist/tex/latex/base/fontenc.sty" 1705352648 5119 a04a8b68ab4f6ce800a41f7f8012a10e "" + "/usr/local/texlive/2024/texmf-dist/tex/latex/base/inputenc.sty" 1705352648 5048 425739d70251273bf93e3d51f3c40048 "" + "/usr/local/texlive/2024/texmf-dist/tex/latex/base/latexsym.sty" 1705352648 2853 22ef275b938b198870f6474b02bbd3b1 "" + "/usr/local/texlive/2024/texmf-dist/tex/latex/base/size10.clo" 1705352648 8448 dbc0dbf4156c0bb9ba01a1c685d3bad0 "" + "/usr/local/texlive/2024/texmf-dist/tex/latex/cjk/texinput/CJK.enc" 1634853225 29591 d67c9aa515f4260cdd60fa9f76d96368 "" + "/usr/local/texlive/2024/texmf-dist/tex/latex/cjk/texinput/CJK.sty" 1634853225 33241 3ee25f21824a4a347866900e5037d6f3 "" + "/usr/local/texlive/2024/texmf-dist/tex/latex/cjk/texinput/CJKutf8.sty" 1634853225 24621 e1c0abd54a87918dd1e31a35b20e99e4 "" + "/usr/local/texlive/2024/texmf-dist/tex/latex/cjk/texinput/mule/MULEenc.sty" 1634853225 12177 48c95ebf85a580326918e5eb490b477b "" + "/usr/local/texlive/2024/texmf-dist/tex/latex/colortbl/colortbl.sty" 1708463147 12355 ec728d2e4c37cf8919ee2eff9b75ad0c "" + "/usr/local/texlive/2024/texmf-dist/tex/latex/etoolbox/etoolbox.sty" 1601931149 46845 3b58f70c6e861a13d927bff09d35ecbc "" + "/usr/local/texlive/2024/texmf-dist/tex/latex/graphics-cfg/color.cfg" 1459978653 1213 620bba36b25224fa9b7e1ccb4ecb76fd "" + "/usr/local/texlive/2024/texmf-dist/tex/latex/graphics-cfg/graphics.cfg" 1465944070 1224 978390e9c2234eab29404bc21b268d1e "" + "/usr/local/texlive/2024/texmf-dist/tex/latex/graphics-def/pdftex.def" 1663965824 19448 1e988b341dda20961a6b931bcde55519 "" + "/usr/local/texlive/2024/texmf-dist/tex/latex/graphics/color.sty" 1654720880 7233 e46ce9241d2b2ca2a78155475fdd557a "" + "/usr/local/texlive/2024/texmf-dist/tex/latex/graphics/dvipsnam.def" 1654720880 5009 d242512eef244b70f2fc3fde14419206 "" + "/usr/local/texlive/2024/texmf-dist/tex/latex/graphics/graphics.sty" 1654720880 18387 8f900a490197ebaf93c02ae9476d4b09 "" + "/usr/local/texlive/2024/texmf-dist/tex/latex/graphics/graphicx.sty" 1654720880 8010 a8d949cbdbc5c983593827c9eec252e1 "" + "/usr/local/texlive/2024/texmf-dist/tex/latex/graphics/keyval.sty" 1654720880 2671 7e67d78d9b88c845599a85b2d41f2e39 "" + "/usr/local/texlive/2024/texmf-dist/tex/latex/graphics/mathcolor.ltx" 1667332637 2885 9c645d672ae17285bba324998918efd8 "" + "/usr/local/texlive/2024/texmf-dist/tex/latex/graphics/trig.sty" 1654720880 4023 293ea1c16429fc0c4cf605f4da1791a9 "" + "/usr/local/texlive/2024/texmf-dist/tex/latex/hycolor/hycolor.sty" 1580250785 17914 4c28a13fc3d975e6e81c9bea1d697276 "" + "/usr/local/texlive/2024/texmf-dist/tex/latex/hyperref/hpdftex.def" 1705871765 48154 e46bf8adeb936500541441171d61726d "" + "/usr/local/texlive/2024/texmf-dist/tex/latex/hyperref/hyperref.sty" 1705871765 220920 fd3cbb5f1a2bc9b8f451b8b7d8171264 "" + "/usr/local/texlive/2024/texmf-dist/tex/latex/hyperref/nameref.sty" 1705871765 11026 182c63f139a71afd30a28e5f1ed2cd1c "" + "/usr/local/texlive/2024/texmf-dist/tex/latex/hyperref/pd1enc.def" 1705871765 14249 e67cb186717b7ab18d14a4875e7e98b5 "" + "/usr/local/texlive/2024/texmf-dist/tex/latex/hyperref/puenc.def" 1705871765 117112 05831178ece2cad4d9629dcf65099b11 "" + "/usr/local/texlive/2024/texmf-dist/tex/latex/koma-script/scrbase.sty" 1688762466 100856 24b70029ad44c2ee829db2529cf4ee23 "" + "/usr/local/texlive/2024/texmf-dist/tex/latex/koma-script/scrkbase.sty" 1688762466 21943 93cf6c456e50f74225092b8714462fa4 "" + "/usr/local/texlive/2024/texmf-dist/tex/latex/koma-script/scrlfile-hook.sty" 1688762466 11185 15c86b5a61db19da88ab941ca5b70a12 "" + "/usr/local/texlive/2024/texmf-dist/tex/latex/koma-script/scrlfile.sty" 1688762466 3328 3d5fc41a419bf18130ce17d90a23c295 "" + "/usr/local/texlive/2024/texmf-dist/tex/latex/koma-script/scrlogo.sty" 1688762466 2162 418e29bcf2b8059e8a9ee1ea4d0d0c87 "" + "/usr/local/texlive/2024/texmf-dist/tex/latex/koma-script/typearea.sty" 1688762466 58382 11e5cfa7a7ea68055da565b4657ea350 "" + "/usr/local/texlive/2024/texmf-dist/tex/latex/kvoptions/kvoptions.sty" 1655478651 22555 6d8e155cfef6d82c3d5c742fea7c992e "" + "/usr/local/texlive/2024/texmf-dist/tex/latex/kvsetkeys/kvsetkeys.sty" 1665067230 13815 760b0c02f691ea230f5359c4e1de23a7 "" + "/usr/local/texlive/2024/texmf-dist/tex/latex/listings/listings.cfg" 1708549794 1830 20af84c556326f7c12b9202ebe363f56 "" + "/usr/local/texlive/2024/texmf-dist/tex/latex/listings/listings.sty" 1708549794 81322 d02238bdeb305f2c9f9d0229f99371d0 "" + "/usr/local/texlive/2024/texmf-dist/tex/latex/listings/lstmisc.sty" 1708549794 77022 5c8c440739265e7ba15b8379ece6ecd7 "" + "/usr/local/texlive/2024/texmf-dist/tex/latex/listings/lstpatch.sty" 1708549794 329 f19f5da7234b51d16764e23d20999c73 "" + "/usr/local/texlive/2024/texmf-dist/tex/latex/mathtools/mathtools.sty" 1710187076 62672 9ff036bc89365461cc2bd482cc1e4879 "" + "/usr/local/texlive/2024/texmf-dist/tex/latex/mathtools/mhsetup.sty" 1616101747 5582 a43dedf8e5ec418356f1e9dfe5d29fc3 "" + "/usr/local/texlive/2024/texmf-dist/tex/latex/psnfss/bookman.sty" 1586716065 866 5241a7e4e68212672a723eb098264f76 "" + "/usr/local/texlive/2024/texmf-dist/tex/latex/psnfss/ot1pbk.fd" 1137110629 1421 b89e9ec050a70360ae1c79e70871b9d3 "" + "/usr/local/texlive/2024/texmf-dist/tex/latex/psnfss/t1pbk.fd" 1137110629 1226 fd3e9c2f6a1a90301d595e18ba984a8b "" + "/usr/local/texlive/2024/texmf-dist/tex/latex/refcount/refcount.sty" 1576624809 9878 9e94e8fa600d95f9c7731bb21dfb67a4 "" + "/usr/local/texlive/2024/texmf-dist/tex/latex/rerunfilecheck/rerunfilecheck.sty" 1657483315 9714 ba3194bd52c8499b3f1e3eb91d409670 "" + "/usr/local/texlive/2024/texmf-dist/tex/latex/tools/array.sty" 1698869629 12667 e4b5eb11e4b7239e6c8a52bbe074a6c6 "" + "/usr/local/texlive/2024/texmf-dist/tex/latex/tools/calc.sty" 1698869629 10214 547fd4d29642cb7c80bf54b49d447f01 "" + "/usr/local/texlive/2024/texmf-dist/tex/latex/url/url.sty" 1388531844 12796 8edb7d69a20b857904dd0ea757c14ec9 "" + "/usr/local/texlive/2024/texmf-dist/tex/latex/xcolor/svgnam.def" 1700082560 4705 ec4d2f4b7125d5a5145cc9aabae1d54b "" + "/usr/local/texlive/2024/texmf-dist/tex/latex/xcolor/xcolor.sty" 1700082560 55487 80a65caedd3722f4c20a14a69e785d8f "" + "/usr/local/texlive/2024/texmf-dist/web2c/texmf.cnf" 1708706663 41649 5d6ae549fbbcb850a863f69aa41f3d10 "" + "/usr/local/texlive/2024/texmf-var/web2c/pdftex/pdflatex.fmt" 1738291196 8221423 551d4db5f903f8b0c96265fcbe7f49ca "" + "/usr/local/texlive/2024/texmf.cnf" 1710266656 577 e590dabc9e28c5b61546e15f63eebcdf "" + "source_header.aux" 1748574112.39532 32 3985256e7290058c681f74d7a3565a19 "pdflatex" + "source_header.tex" 1748574035.90119 3811 0cb091abda3c7a93166c3e0f7058162b "" + (generated) + "source_header.aux" + "source_header.log" + "source_header.pdf" + (rewritten before read) diff --git a/docs/python/specs/source_header.fls b/docs/python/specs/source_header.fls new file mode 100644 index 0000000..ffdb78b --- /dev/null +++ b/docs/python/specs/source_header.fls @@ -0,0 +1,171 @@ +PWD /Users/wangdahai/Downloads/cse-machine-resolver/py-slang/docs/python/specs +INPUT /usr/local/texlive/2024/texmf.cnf +INPUT /usr/local/texlive/2024/texmf-dist/web2c/texmf.cnf +INPUT /usr/local/texlive/2024/texmf-var/web2c/pdftex/pdflatex.fmt +INPUT /Users/wangdahai/Downloads/cse-machine-resolver/py-slang/docs/python/specs/source_header.tex +OUTPUT source_header.log +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/base/article.cls +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/base/article.cls +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/base/size10.clo +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/base/size10.clo +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/base/size10.clo +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/xcolor/xcolor.sty +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/xcolor/xcolor.sty +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/graphics-cfg/color.cfg +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/graphics-cfg/color.cfg +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/graphics-cfg/color.cfg +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/graphics-def/pdftex.def +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/graphics-def/pdftex.def +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/graphics-def/pdftex.def +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/graphics/mathcolor.ltx +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/graphics/mathcolor.ltx +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/graphics/mathcolor.ltx +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/graphics/dvipsnam.def +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/graphics/dvipsnam.def +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/graphics/dvipsnam.def +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/xcolor/svgnam.def +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/xcolor/svgnam.def +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/xcolor/svgnam.def +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/colortbl/colortbl.sty +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/colortbl/colortbl.sty +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/tools/array.sty +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/tools/array.sty +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/graphics/color.sty +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/graphics/graphicx.sty +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/graphics/graphicx.sty +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/graphics/keyval.sty +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/graphics/keyval.sty +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/graphics/graphics.sty +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/graphics/graphics.sty +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/graphics/trig.sty +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/graphics/trig.sty +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/graphics-cfg/graphics.cfg +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/graphics-cfg/graphics.cfg +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/graphics-cfg/graphics.cfg +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/psnfss/bookman.sty +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/psnfss/bookman.sty +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/cjk/texinput/CJKutf8.sty +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/cjk/texinput/CJKutf8.sty +INPUT /usr/local/texlive/2024/texmf-dist/tex/generic/iftex/ifpdf.sty +INPUT /usr/local/texlive/2024/texmf-dist/tex/generic/iftex/ifpdf.sty +INPUT /usr/local/texlive/2024/texmf-dist/tex/generic/iftex/iftex.sty +INPUT /usr/local/texlive/2024/texmf-dist/tex/generic/iftex/iftex.sty +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/base/inputenc.sty +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/base/inputenc.sty +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/cjk/texinput/CJK.sty +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/cjk/texinput/CJK.sty +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/cjk/texinput/mule/MULEenc.sty +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/cjk/texinput/mule/MULEenc.sty +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/cjk/texinput/CJK.enc +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/base/fontenc.sty +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/base/fontenc.sty +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/psnfss/ot1pbk.fd +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/psnfss/ot1pbk.fd +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/psnfss/ot1pbk.fd +INPUT /usr/local/texlive/2024/texmf-dist/fonts/map/fontname/texfonts.map +INPUT /usr/local/texlive/2024/texmf-dist/fonts/tfm/adobe/bookman/pbkl7t.tfm +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/base/latexsym.sty +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/base/latexsym.sty +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/mathtools/mathtools.sty +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/mathtools/mathtools.sty +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/tools/calc.sty +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/tools/calc.sty +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/mathtools/mhsetup.sty +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/mathtools/mhsetup.sty +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/amsmath/amsmath.sty +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/amsmath/amsmath.sty +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/amsmath/amsopn.sty +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/amsmath/amstext.sty +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/amsmath/amstext.sty +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/amsmath/amsgen.sty +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/amsmath/amsgen.sty +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/amsmath/amsbsy.sty +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/amsmath/amsbsy.sty +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/amsmath/amsopn.sty +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/amsfonts/amssymb.sty +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/amsfonts/amssymb.sty +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/amsfonts/amsfonts.sty +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/amsfonts/amsfonts.sty +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/base/fontenc.sty +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/psnfss/t1pbk.fd +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/psnfss/t1pbk.fd +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/psnfss/t1pbk.fd +INPUT /usr/local/texlive/2024/texmf-dist/fonts/tfm/adobe/bookman/pbkl8t.tfm +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/koma-script/typearea.sty +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/koma-script/typearea.sty +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/koma-script/scrkbase.sty +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/koma-script/scrkbase.sty +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/koma-script/scrbase.sty +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/koma-script/scrbase.sty +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/koma-script/scrlfile.sty +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/koma-script/scrlfile.sty +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/koma-script/scrlfile-hook.sty +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/koma-script/scrlfile-hook.sty +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/koma-script/scrlogo.sty +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/koma-script/scrlogo.sty +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/listings/listings.sty +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/listings/listings.sty +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/listings/lstpatch.sty +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/listings/lstpatch.sty +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/listings/lstpatch.sty +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/listings/lstmisc.sty +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/listings/lstmisc.sty +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/listings/lstmisc.sty +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/listings/listings.cfg +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/listings/listings.cfg +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/listings/listings.cfg +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/url/url.sty +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/url/url.sty +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/hyperref/hyperref.sty +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/hyperref/hyperref.sty +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/kvsetkeys/kvsetkeys.sty +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/kvsetkeys/kvsetkeys.sty +INPUT /usr/local/texlive/2024/texmf-dist/tex/generic/kvdefinekeys/kvdefinekeys.sty +INPUT /usr/local/texlive/2024/texmf-dist/tex/generic/kvdefinekeys/kvdefinekeys.sty +INPUT /usr/local/texlive/2024/texmf-dist/tex/generic/pdfescape/pdfescape.sty +INPUT /usr/local/texlive/2024/texmf-dist/tex/generic/pdfescape/pdfescape.sty +INPUT /usr/local/texlive/2024/texmf-dist/tex/generic/ltxcmds/ltxcmds.sty +INPUT /usr/local/texlive/2024/texmf-dist/tex/generic/ltxcmds/ltxcmds.sty +INPUT /usr/local/texlive/2024/texmf-dist/tex/generic/pdftexcmds/pdftexcmds.sty +INPUT /usr/local/texlive/2024/texmf-dist/tex/generic/pdftexcmds/pdftexcmds.sty +INPUT /usr/local/texlive/2024/texmf-dist/tex/generic/infwarerr/infwarerr.sty +INPUT /usr/local/texlive/2024/texmf-dist/tex/generic/infwarerr/infwarerr.sty +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/hycolor/hycolor.sty +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/hycolor/hycolor.sty +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/auxhook/auxhook.sty +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/auxhook/auxhook.sty +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/hyperref/nameref.sty +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/hyperref/nameref.sty +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/refcount/refcount.sty +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/refcount/refcount.sty +INPUT /usr/local/texlive/2024/texmf-dist/tex/generic/gettitlestring/gettitlestring.sty +INPUT /usr/local/texlive/2024/texmf-dist/tex/generic/gettitlestring/gettitlestring.sty +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/kvoptions/kvoptions.sty +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/kvoptions/kvoptions.sty +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/etoolbox/etoolbox.sty +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/etoolbox/etoolbox.sty +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/hyperref/pd1enc.def +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/hyperref/pd1enc.def +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/hyperref/pd1enc.def +INPUT /usr/local/texlive/2024/texmf-dist/tex/generic/intcalc/intcalc.sty +INPUT /usr/local/texlive/2024/texmf-dist/tex/generic/intcalc/intcalc.sty +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/hyperref/puenc.def +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/hyperref/puenc.def +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/hyperref/puenc.def +INPUT /usr/local/texlive/2024/texmf-dist/tex/generic/bitset/bitset.sty +INPUT /usr/local/texlive/2024/texmf-dist/tex/generic/bitset/bitset.sty +INPUT /usr/local/texlive/2024/texmf-dist/tex/generic/bigintcalc/bigintcalc.sty +INPUT /usr/local/texlive/2024/texmf-dist/tex/generic/bigintcalc/bigintcalc.sty +INPUT /usr/local/texlive/2024/texmf-dist/tex/generic/atbegshi/atbegshi.sty +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/base/atbegshi-ltx.sty +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/base/atbegshi-ltx.sty +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/hyperref/hpdftex.def +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/hyperref/hpdftex.def +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/hyperref/hpdftex.def +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/atveryend/atveryend.sty +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/base/atveryend-ltx.sty +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/base/atveryend-ltx.sty +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/rerunfilecheck/rerunfilecheck.sty +INPUT /usr/local/texlive/2024/texmf-dist/tex/latex/rerunfilecheck/rerunfilecheck.sty +INPUT /usr/local/texlive/2024/texmf-dist/tex/generic/uniquecounter/uniquecounter.sty +INPUT /usr/local/texlive/2024/texmf-dist/tex/generic/uniquecounter/uniquecounter.sty diff --git a/docs/python/specs/source_header.tex b/docs/python/specs/source_header.tex new file mode 100644 index 0000000..05c6ca3 --- /dev/null +++ b/docs/python/specs/source_header.tex @@ -0,0 +1,152 @@ +\documentclass[epic,eepic,10pt,a4paper]{article} +\usepackage[usenames,dvipsnames,svgnames,table]{xcolor} +\usepackage{graphicx,bookman} +\usepackage{graphics} +\usepackage{CJKutf8} +\usepackage{latexsym} +\usepackage{mathtools} +\usepackage{amsmath,amssymb} + +\usepackage[T1]{fontenc} + +\usepackage[paper=210mm:297mm]{typearea} + +\usepackage{listings} + +\lstdefinelanguage{Python}{ + keywords={const, let, break, case, catch, continue, debugger, default, delete, do, else, finally, for, function, if, in, instanceof, new, return, switch, this, throw, try, typeof, var, void, while, with}, + morecomment=[l]{//}, + morecomment=[s]{/*}{*/}, + morestring=[b]', + morestring=[b]", + sensitive=true +} + +\lstset{ + language=Python, + basicstyle=\ttfamily, + showstringspaces=false, + showspaces=false, + escapechar={^} +} + +\pagestyle{myheadings} + +% ALIGN EVEN- AND ODD-NUMBERED PAGES. +\evensidemargin 35pt + +% HORIZONTAL MARGINS +% Left margin 1 inch (0 + 1) +\setlength{\oddsidemargin}{0in} +% Text width 6.5 inch (so right margin 1 inch). +\setlength{\textwidth}{6.5in} + +% ---------------- +% VERTICAL MARGINS +% Top margin 0.5 inch (-0.5 + 1) +\setlength{\topmargin}{-0.5in} +% Head height 0.25 inch (where page headers go) +\setlength{\headheight}{0.25in} +% Head separation 0.25 inch (between header and top line of text) +\setlength{\headsep}{0.25in} +% Text height 8.5 inch (so bottom margin 1.5 in) +\setlength{\textheight}{10.0in} + +% ---------------- +% PARAGRAPH INDENTATION +\setlength{\parindent}{0in} + +% SPACE BETWEEN PARAGRAPHS +%\setlength{\parskip}{\medskipamount} + +% ---------------- +% EVALUATION SYMBOL +\newcommand{\evalsto}{$\Longrightarrow$} + +% ---------------- +% STRUTS +% HORIZONTAL STRUT. One argument (width). +\newcommand{\hstrut}[1]{\hspace*{#1}} +% VERTICAL STRUT. Two arguments (offset from baseline, height). +\newcommand{\vstrut}[2]{\rule[#1]{0in}{#2}} + +% ---------------- +% EMPTY BOXES OF VARIOUS WIDTHS, FOR INDENTATION +\newcommand{\hm}{\hspace*{1em}} +\newcommand{\hmm}{\hspace*{2em}} +\newcommand{\hmmm}{\hspace*{3em}} +\newcommand{\hmmmm}{\hspace*{4em}} + +% ---------------- +% VARIOUS CONVENIENT WIDTHS RELATIVE TO THE TEXT WIDTH, FOR BOXES. +\newlength{\hlessmm} +\setlength{\hlessmm}{\textwidth} +\addtolength{\hlessmm}{-2em} + +\newlength{\hlessmmmm} +\setlength{\hlessmmmm}{\textwidth} +\addtolength{\hlessmmmm}{-4em} + +% ---------------- +% ``TIGHTLIST'' ENVIRONMENT (no para space between items, small indent) +\newenvironment{tightlist}% +{\begin{list}{$\bullet$}{% + \setlength{\topsep}{0in} + \setlength{\partopsep}{0in} + \setlength{\itemsep}{0in} + \setlength{\parsep}{0in} + \setlength{\leftmargin}{1.5em} + \setlength{\rightmargin}{0in} + \setlength{\itemindent}{0in} +} +}% +{\end{list} +} + +% ---------------- +% CODE FONT (e.g. {\cf x := 0}). +\newcommand{\cf}{\footnotesize\tt} + +% ---------------- +% INSTRUCTION POINTER +\newcommand{\IP}{$\bullet$} +\newcommand{\goesto}{$\longrightarrow$} + +% \illuswidth is used to set up boxes around illustrations. +\newlength{\illuswidth} +\setlength{\illuswidth}{\textwidth} +\addtolength{\illuswidth}{-7pt} + +% PROBLEM SET HEADER -- args are semester and problem set or solution +% example: \psetheader{Spring Semester, 1989}{Problem set 1} +\newcommand{\docheader}[4]{% + + \thispagestyle{empty} + +\markright{SICP, Python Adaptation, #2 #3, #1} +\begin{center} + {\Large {\bf Specification of #2 #3}---#1 edition}\\[10mm] + + {\large #4}\\[5mm] + + {\large National University of Singapore \\ + School of Computing}\\[10mm] + + {\large \today}\\[10mm] +\end{center} +} + +% ---------------------------------------------------------------- +% HERE BEGINS THE DOCUMENT +% start with \begin{document} + + + \usepackage{url} + \usepackage{hyperref} + + \hypersetup{ + colorlinks=true, + linkcolor=Maroon, + filecolor=Maroon, + urlcolor=Maroon +} diff --git a/docs/python/specs/source_import.tex b/docs/python/specs/source_import.tex new file mode 100644 index 0000000..4da63cb --- /dev/null +++ b/docs/python/specs/source_import.tex @@ -0,0 +1,6 @@ +\subsection*{Import directives} + +Import directives allow programs to import values from modules and bind them to names, whose scope +is the entire program in which the import directive occurs. All names that appear in import directives +must be distinct, and must also be distinct from all top-level variables. The Source specifications do not specify how modules are +programmed. diff --git a/docs/python/specs/source_indentation.tex b/docs/python/specs/source_indentation.tex new file mode 100644 index 0000000..9a6778c --- /dev/null +++ b/docs/python/specs/source_indentation.tex @@ -0,0 +1,14 @@ +\subsection*{Indentation} + +In Python, +\href{https://docs.python.org/3/reference/lexical_analysis.html\#indentation}{\color{DarkBlue} +indentation} +is syntactically significant and strictly enforces code block structure. Unlike languages using braces, +Python employs whitespace (spaces or tabs) to delimit blocks for control flow (e.g., \texttt{if}, \texttt{for}, \texttt{while}), function definitions, and class declarations. Key rules: + +\begin{itemize} +\item Consistency: Use 4 spaces per indentation level (PEP 8 recommendation). Mixing tabs and spaces is prohibited. +\item Alignment: Statements within the same block must align vertically. Misaligned indentation raises an \texttt{IndentationError}. +\item Nesting: Each nested block increases indentation by one level. Dedenting resumes the outer block. +\item Line Continuation: For multi-line statements, align wrapped lines with the opening delimiter or use an extra level. +\end{itemize} diff --git a/docs/python/specs/source_intro.tex b/docs/python/specs/source_intro.tex new file mode 100644 index 0000000..ac21663 --- /dev/null +++ b/docs/python/specs/source_intro.tex @@ -0,0 +1,5 @@ +The language ``Python \S $x$'' is a sublanguage of +\href{https://docs.python.org/3/index.html}{\color{DarkBlue} +Python 3.13} +and defined in the documents titled ``Python \S $x$'', where $x$ refers to the +respective textbook chapter. diff --git a/docs/python/specs/source_names_lang.tex b/docs/python/specs/source_names_lang.tex new file mode 100644 index 0000000..7a2e06a --- /dev/null +++ b/docs/python/specs/source_names_lang.tex @@ -0,0 +1,25 @@ +\subsection*{Names} + +Names\footnote{ +In +\href{https://docs.python.org/3/reference/lexical_analysis.html}{ +\color{DarkBlue} Python 3.13 Documentation}, +these names are called \emph{identifiers}. +} start with \verb@_@, or a +letter\footnote{ +By \emph{letter} +we mean \href{http://unicode.org/reports/tr44/}{\color{DarkBlue}Unicode} letters (L) or letter numbers (NI). +} and contain only \verb@_@, +letters or digits\footnote{ +By \emph{digit} we mean characters in the +\href{http://unicode.org/reports/tr44/}{Unicode} categories +Nd (including the decimal digits 0, 1, 2, 3, 4, 5, 6, 7, 8, 9), Mn, Mc and Pc. +}. Reserved words\footnote{ +By \emph{reserved word} we mean any of: +$\textbf{\texttt{False}}$, $\textbf{\texttt{await}}$, $\textbf{\texttt{else}}$, $\textbf{\texttt{import}}$, $\textbf{\texttt{pass}}$, $\textbf{\texttt{None}}$, $\textbf{\texttt{break}}$, $\textbf{\texttt{except}}$, $\textbf{\texttt{in}}$, $\textbf{\texttt{raise}}$, $\textbf{\texttt{True}}$, $\textbf{\texttt{class}}$, $\textbf{\texttt{finally}}$, $\textbf{\texttt{is}}$, $\textbf{\texttt{return}}$, $\textbf{\texttt{and}}$, $\textbf{\texttt{continue}}$, $\textbf{\texttt{for}}$, $\textbf{\texttt{lambda}}$, $\textbf{\texttt{try}}$, $\textbf{\texttt{as}}$, $\textbf{\texttt{def}}$, $\textbf{\texttt{from}}$, $\textbf{\texttt{nonlocal}}$, $\textbf{\texttt{while}}$, $\textbf{\texttt{assert}}$, $\textbf{\texttt{del}}$, $\textbf{\texttt{global}}$, $\textbf{\texttt{not}}$, $\textbf{\texttt{with}}$, $\textbf{\texttt{async}}$, $\textbf{\texttt{elif}}$, $\textbf{\texttt{if}}$, $\textbf{\texttt{or}}$, $\textbf{\texttt{yield}}$. +These are all reserved words, or keywords of the language that cannot be used as ordinary identifiers. +} are not allowed as names. + +Valid names are \verb@x@, \verb@_45@, and $\mathtt{\pi}$, +but always keep in mind that programming is communicating and that the familiarity of the +audience with the characters used in names is an important aspect of program readability. diff --git a/docs/python/specs/source_numbers.tex b/docs/python/specs/source_numbers.tex new file mode 100644 index 0000000..a78193a --- /dev/null +++ b/docs/python/specs/source_numbers.tex @@ -0,0 +1,25 @@ +\subsection*{\href{https://sourceacademy.org/sicpjs/1.1.1\#p3}{Numbers}} + +Python supports three numeric types: integers (\texttt{int}), floats (\texttt{float}), and complex numbers (\texttt{complex}). + +\subsubsection*{Integers (\texttt{int})} + +Integers can be represented in decimal notation, optionally prefixed with a sign (\texttt{+} or \texttt{-}). +Additional base notations are supported, such as binary (\texttt{0b1010} or \texttt{0B1010}), octal (\texttt{0o777} or \texttt{0O777}), and +hexadecimal (\texttt{0x1A3F} or \texttt{0X1A3F}). +Underscores (\verb|_|) may be used for readability (e.g., \verb|1_000_000|). +Examples include \texttt{42}, \texttt{-0b1101}, and \verb|0x_FF_00|. + +\subsubsection*{Floats (\texttt{float})} +Floats use decimal notation with an optional decimal dot. Scientific notation (multiplying the number by +$10^x$) is indicated with the letter \texttt{e} or \texttt{E}, followed by the exponent +\texttt{x}. +Special values inf (infinity), -inf, and nan (not a number) are allowed. +Examples include \texttt{3.14}, \texttt{-0.001e+05}, and \texttt{6.022E23}. + +\subsubsection*{Complex Numbers (\texttt{complex})} +Complex numbers are written as \texttt{±j}, where \texttt{j} (or \texttt{J}) denotes the imaginary unit. +Both the real and imaginary parts are stored as floats. The imaginary part is mandatory +(e.g., \texttt{5j}, \texttt{0j}, and \texttt{0 + 3j} is valid, \texttt{5} alone is real). + +Examples include \texttt{2+3j}, \texttt{-4.5J}, \texttt{0j}, and \texttt{1e3-6.2E2J}. \ No newline at end of file diff --git a/docs/python/specs/source_py_differences.tex b/docs/python/specs/source_py_differences.tex new file mode 100644 index 0000000..1726702 --- /dev/null +++ b/docs/python/specs/source_py_differences.tex @@ -0,0 +1,47 @@ +\section*{Deviations from native Python} + +We intend the Python \S $x$ to be a conservative extension of +native Python: Every correct Python \S $x$ program should behave +\emph{exactly} the same using a Python \S $x$ implementation, as it does +using a native Python implementation. We assume, of course, that +suitable libraries are used by the TypeScript implementation, to +account for the predefined names of Python \S $x$. +This section lists some exceptions where we think a Python \S $x$ +implementation should be allowed to deviate from the native Python +specification, for the sake of internal consistency and esthetics. + +\begin{description} +\item[{Output Behavior Differences Between py-slang and Standard Python REPL:}] + Python provides an interactive mode, where users can type and immediately + evaluate Python expressions line by line. This mode is entered when you + simply type python in a terminal without specifying a file. This is commonly + referred to as the Python REPL. + In the standard Python REPL, any evaluated expression automatically has its + result printed to the console, even if the user does not explicitly call + \texttt{print()}. For example: + + \begin{lstlisting} +>>> 1 + 2 +3 +>>> "hello" +'hello' + \end{lstlisting} + + This is because Python's REPL implicitly displays the return value of each + expression, unless it is None. + + In contrast, py-slang adopts a more controlled and minimalistic REPL behavior: + Only expressions explicitly passed to \texttt{print()} produce output. If the + expression is evaluated without a print call, no output will appear, even + though a value is computed. + + For example, in py-slang: + + \begin{lstlisting} +print(1 + 2) # Outputs: 3 + \end{lstlisting} + + This design aligns with the pedagogical goals of Source Academy, reinforcing + the idea that output should be intentional and explicit, helping students + better understand the role of side effects and output operations. +\end{description} \ No newline at end of file diff --git a/docs/python/specs/source_return.tex b/docs/python/specs/source_return.tex new file mode 100644 index 0000000..35e6ef0 --- /dev/null +++ b/docs/python/specs/source_return.tex @@ -0,0 +1,56 @@ +\subsection*{Restrictions} + +\begin{itemize} +\item In Python, a logical line is the smallest unit of code that the +interpreter can execute, typically corresponding to a complete statement. +A physical line, by contrast, is a single line in the source file, +usually ending with a newline character. A logical line may span multiple +physical lines depending on whether line joining is used. + +By default, each physical line corresponds to a logical line. However, +when a statement is too long, Python allows it to be split across multiple +physical lines using line continuation. Python provides two ways to join +lines: \textbf{explicit line joining} and \textbf{implicit line joining}. + +\textbf{Explicit line joining} uses a backslash (\textbackslash) to join +the current physical line with the next one, forming a single logical line. +The backslash must be the last character on the line—no characters +(including whitespace or comments) are allowed after it. + +\begin{lstlisting} +total = 1 + 2 + 3 + \ + 4 + 5 +\end{lstlisting} + +\textbf{Implicit line joining} occurs when expressions are enclosed in +parentheses \texttt{()}, square brackets \texttt{[]}, or braces \texttt{\{\}}. +Within these delimiters, line breaks are allowed without using a backslash. + +\begin{lstlisting} +total = ( + 1 + 2 + 3 + + 4 + 5 + ) +\end{lstlisting} + +Therefore, when breaking a statement across lines, you must either use a backslash for explicit continuation or wrap the expression in parentheses, brackets, or braces for implicit continuation. Unlike JavaScript, which uses automatic semicolon insertion, Python requires each line to be syntactically complete—it does not infer the end of a statement implicitly. + +For details on logical lines, see the official Python documentation: +\href{https://docs.python.org/3/reference/lexical_analysis.html#logical-lines}{Python Lexical Analysis – Logical Lines}. + + +\item Return statements are only allowed in bodies of functions. Each return statement must appear on a single logical line. +\item Lambda expressions are limited to a single logical line. +\item Re-declaration variables or functions is not allowed. Once a variable or function is defined, it cannot be redefined with the same name in the same scope +\footnote{ +Scope refers to the region of a program in which a particular name (such as a variable, function, or class) is defined and can be accessed. In other words, +it determines the part of the program where you can use that name without causing a name error. +Scope is determined by the program's structure (usually its lexical or textual layout) and governs the visibility and lifetime of variables and other identifiers. + +In \href{https://docs.python.org/3/tutorial/classes.html\#python-scopes-and-namespaces}{\color{DarkBlue}Python}, the \emph{scope} of a declaration is determined lexically: a variable declared inside a function is local to that function; +if it is declared outside any function, it is global (i.e., module-level). Moreover, if a variable is declared in an enclosing function, +it is available to inner functions (the enclosing scope), and if not found in these scopes, Python looks into the built-in scope. +}. +\end{itemize} + + diff --git a/docs/python/specs/source_standard.tex b/docs/python/specs/source_standard.tex new file mode 100644 index 0000000..bf033c0 --- /dev/null +++ b/docs/python/specs/source_standard.tex @@ -0,0 +1,21 @@ +\section{Standard Library} + +The standard library contains constants and functions that are +always available in this language. + +In py-slang, the standard library functions are not implemented +using a conventional split between primitive and predeclared +functions. Unlike in Source, where predeclared functions are +defined using built-in primitives, all standard library functions +in py-slang are written directly in TypeScript and embedded into +the runtime of the CSE Machine. These functions are treated as +part of the host environment rather than as user-level definitions, +and they interact directly with the evaluator's internal control +stack and environment. This design simplifies the interpreter +architecture and allows for tighter integration with the execution +model, enabling better support for visualization, error handling, +and platform-specific extensions within the Source Academy learning +environment. + +The standard library for Python \S $x$ is documented in online +documentation of Python \S $x$. diff --git a/docs/python/specs/source_strings.tex b/docs/python/specs/source_strings.tex new file mode 100644 index 0000000..18ce973 --- /dev/null +++ b/docs/python/specs/source_strings.tex @@ -0,0 +1,35 @@ +\subsection*{\href{https://sourceacademy.org/sicpjs/2.3.1}{Strings}} + +Strings are of the form \texttt{"}$ \textit{double-quote-characters} $\texttt{"}, +where $\textit{double-quote-characters}$ is a possibly empty sequence of characters without +the character \texttt{"} and without the newline character, +of the form +\texttt{'}$ \textit{single-quote-characters} $\texttt{'}, +where $\textit{single-quote-characters}$ is a possibly empty sequence of characters without +the character~\texttt{'} and without the newline character, +and of the form +\texttt{'}\texttt{'}\texttt{'}$ \textit{triple-single-quote-characters} $\texttt{'}\texttt{'}\texttt{'}, or +\texttt{"""}$ \textit{triple-double-quote-characters} $\texttt{"""} +where $\textit{backquote-characters}$ is a possibly empty sequence of characters and +can span multiple lines and may contain both single and double quotes without escaping. + +The following characters can be represented in strings\footnote{ +In \href{https://docs.python.org/3/reference/lexical_analysis.html}{ +\color{DarkBlue} Python 3.13 Documentation}, +unless an 'r' or 'R' prefix is present, escape sequences in string and bytes literals are interpreted according to rules similar to those used by Standard C. \emph{identifiers}. +} as given: +\begin{itemize} + \item \verb|\|: Backslash followed by a newline is ignored. + \item \verb|\\|: Represents a backslash (i.e., \texttt{\textbackslash}). + \item \verb|\'|: Represents a single quote ('). + \item \verb|\"|: Represents a double quote ("). + \item \verb|\a|: Represents the ASCII Bell (BEL) character. + \item \verb|\b|: Represents the ASCII Backspace (BS) character. + \item \verb|\f|: Represents the ASCII Formfeed (FF) character. + \item \verb|\n|: Represents the ASCII Linefeed (LF) character. + \item \verb|\r|: Represents the ASCII Carriage Return (CR) character. + \item \verb|\t|: Represents the ASCII Horizontal Tab (TAB) character. + \item \verb|\v|: Represents the ASCII Vertical Tab (VT) character. + % \item \verb|\ooo|: Represents the character with the octal value \texttt{ooo}. + % \item \verb|\xhh|: Represents the character with the hexadecimal value \texttt{hh}. +\end{itemize} diff --git a/docs/python/specs/source_typing.tex b/docs/python/specs/source_typing.tex new file mode 100644 index 0000000..2f7537e --- /dev/null +++ b/docs/python/specs/source_typing.tex @@ -0,0 +1,69 @@ + +\section{Dynamic Type Checking} + +Expressions evaluate to integers, floats, complex numbers, boolean values, strings or function values. +Implementations of Source generate error messages when unexpected values are used as follows. + +Only function values can be applied using the syntax: + +\begin{eqnarray*} + \textit{expression} + & ::= & \textit{name} + \texttt{\textbf{(}}\ \textit{expressions} \ + \texttt{\textbf{)}}\\ +\end{eqnarray*} + +For compound functions, implementations need to check that the number of \textit{expressions} +matches the number of parameters. + +The following table specifies what arguments Source's operators +take and what results they return. Implementations need to check the types of arguments and +generate an error message when the types do not match. + +\begin{center} +\begin{tabular}{c|c|c|c} +operator & argument 1 & argument 2 & result\\ \hline +\texttt{\textbf{+,-,*}} & int & int & int\\ +\texttt{\textbf{+,-,*}} & int & float & float\\ +\texttt{\textbf{+,-,*}} & int & complex & complex\\ +\texttt{\textbf{+,-,*}} & float & int, float & float\\ +\texttt{\textbf{+,-,*}} & float & complex & complex\\ +\texttt{\textbf{+,-,*}} & complex & int, float, complex & complex\\ +\texttt{\href{https://sourceacademy.org/sicpjs/3.3.4\#p24}{\textbf{+}}} & string & string & string\\ +\texttt{\textbf{/}} & int & int, float & float\\ +\texttt{\textbf{/}} & int & complex & complex\\ +\texttt{\textbf{/}} & float & int, float & float\\ +\texttt{\textbf{/}} & float & complex & complex\\ +\texttt{\textbf{/}} & complex & int, float, complex & complex\\ +\texttt{\textbf{**}} & int & int \verb|>=| 0 & int\\ +\texttt{\textbf{**}} & int & int \verb|<| 0 & float\\ +\texttt{\textbf{**}} & int & float & float\\ +\texttt{\textbf{**}} & int & complex & complex\\ +\texttt{\textbf{**}} & float & int, float & float\\ +\texttt{\textbf{**}} & float & complex & complex\\ +\texttt{\textbf{**}} & complex & int, float, complex & complex\\ +\texttt{\textbf{\%}} & int & int & int\\ +\texttt{\textbf{\%}} & int & float & float\\ +\texttt{\textbf{\%}} & float & float & float\\ +\texttt{\textbf{==}} & int,float,complex & int,float,complex & bool\\ +\texttt{\textbf{==}} & string & string & bool\\ +\texttt{\textbf{!=}} & int,float,complex & int,float,complex & bool\\ +\texttt{\textbf{!=}} & string & string & bool\\ +\texttt{\textbf{>}} & int,float & int,float & bool\\ +\texttt{\textbf{>}} & string & string & bool\\ +\texttt{\textbf{<}} & int,float & int,float & bool\\ +\texttt{\textbf{<}} & string & string & bool\\ +\texttt{\textbf{>=}} & int,float & int,float & bool\\ +\texttt{\textbf{>=}} & string & string & bool\\ +\texttt{\textbf{<=}} & int,float & int,float & bool\\ +\texttt{\textbf{<=}} & string & string & bool\\ +\texttt{\textbf{and}} & bool & bool & bool\\ +\texttt{\textbf{or}} & bool & bool & bool\\ +\texttt{\textbf{not}} & bool & & bool\\ +\texttt{\textbf{-}} & int & & int\\ +\texttt{\textbf{-}} & float & & float\\ +\texttt{\textbf{-}} & complex & & complex + +\end{tabular} +\end{center} + diff --git a/scripts/jsdoc.sh b/scripts/jsdoc.sh new file mode 100755 index 0000000..fa94d66 --- /dev/null +++ b/scripts/jsdoc.sh @@ -0,0 +1,66 @@ +#! /usr/bin/env bash + +set -e + +JSDOC="node_modules/.bin/jsdoc" +TMPL="docs/jsdoc/templates/template" +DST="docs/python" +MD="docs/md" +LIB="docs/lib" +SPECS="docs/python/specs" + +main() { + + if [ "$1" == "prepare" ]; then + prepare + elif [ "$1" == "clean" ]; then + clean + elif [[ "$(git rev-parse --show-toplevel 2> /dev/null)" -ef "$PWD" ]]; then + run + else + echo "Please run this command from the git root directory." + false # exit 1 + fi +} + +run() { + + # Source §1 + + ${JSDOC} -r -t ${TMPL} \ + -c docs/jsdoc/conf.json \ + -R ${MD}/README_1.md \ + -d ${DST}/"python_1"/ \ + ${LIB}/misc.js \ + ${LIB}/math.js + + # # MISC + + # ${JSDOC} -r -t ${TMPL} \ + # -c docs/jsdoc/conf.json \ + # -R ${MD}/README_MISC.md \ + # -d ${DST}/MISC/ \ + # ${LIB}/misc.js + + # # MATH + + # ${JSDOC} -r -t ${TMPL} \ + # -c docs/jsdoc/conf.json \ + # -R ${MD}/README_MATH.md \ + # -d ${DST}/MATH/ \ + # ${LIB}/math.js +} + +prepare() { + run + cp -r docs/images ${DST} ; \ + cd ${SPECS}; make; cp *.pdf ../source; cd ../.. +} + +clean() { + + rm -rf ${DST}/* + +} + +main $1 diff --git a/source_1.pdf b/source_1.pdf deleted file mode 100644 index b9a75d7..0000000 Binary files a/source_1.pdf and /dev/null differ