EDGAR® Renderer Technical Operation

Several alternative installation strategies can be followed:

  1. Install a pre-built application.  (See Quick Start)
  2. Install from sources on GitHub.

Once installed there are three strategies for using the EDGAR renderer:

  1. Interactively from its GUI. (See Quick Start)
  2. Technical Operation
    1. From command line. (Can be integrated to your preparation environment.)
    2. As a web service. (Can use built-in web service.)
    3. Polled operation as a daemon service.

Installing

Pre-built application

(See Quick start)

From GitHub sources

Please install the following components on your platform:

  • Python 3.12 from python.org or other
  • Python libraries for: lxml, numpy, isodate, regex, openpyxl, pyparsing, Pillow, pywin32 (Windows only), dateutil, holidays, six, tornado, matplotlib, cheroot and cherrypy. (You may use pip, easy_install, or Windows binaries on http://www.lfd.uci.edu/~gohlke/pythonlibs/)  Plugins may also require graphviz, pg8000, pycountry and others (per authors of plugins).
  • Arelle® Source code on GitHub (master branch suggested)
  • EDGAR Renderer Source code on GitHub. Suggested installation location is under Arelle’s plugin directory – {installed Arelle location}/arelle/plugin/EdgarRenderer

User Operation

Interactively from its GUI

(See Quick start)

Command line operation

Try “about” to see if it loads correctly.

Windows pre-built app:
arelleCmdLine -a

Mac app: Arelle.app/Contents/MacOS/arelleCmdLine -a

Windows from GitHub sources
python arelleCmdLine.py -a

MacOS from GitHub sources
python arelleCmdLine.py -a

Try help (showing flags only)
{arelle} -h

Load inline XBRL /somewhere/myTest.htm, validate, and put output rendering output results to /somewhere/out, also copying source document to output for ixviewer:

{arelle} -f /somewhere/myTest.htm --plugins EdgarRenderer --disclosureSystem efm-pragmatic --validate -r /somewhere/out

The -r out directory is cleared by the on each run to assure no remaining files from a prior run may be intermixed. Please don’t point the -r out directory to a shared location.

The -f parameter may be a zip file, in which case all the instances detected in the root directory of the zip are processed.

The file -f parameter may be a JSON structure (as used in EDGAR itself) to pass in more information about the filing (see validate/EFM/init.py) such as:

  • for a single instance filing, such as an SDR K form (without \n’s pretty printed below): -f '[{"file": "/Users/joe/.../gpc_gd1-20130930.htm", "cik": "0000350001", "cikNameList": {"0001306276":"BIGS FUND TRUST CO"}, "submissionType":"SDR-A", "exhibitType":"EX-99.K SDR.INS", "accessionNumber":"0001125840-15-000159"}]'
  • for multiple instances (SDR-L’s), add more of the {"file": ...} entries.
  • for inline XBRL document sets (IXDSes) of possibly multiple documents per IXDS entry --file '[{"ixds":[{"file":file1,"documentType":"6-K"},{"file":file2,"documentType":"EX-99.1"}...],"cik":"0000350001","submissionType":"6-K",...}]' DocumentType may be specified per file and the rest of the parameters per ixds.
  • for Windows called from Java, the JSON must be quoted as thus: -f "[{\"file\":\"z:\\Documents\\...\\gpc_gd1-20130930.htm\", \"cik\": \"0000350001\", \"cikNameList\": {\"0000350001\":\"BIG FUND TRUST CO\"}, \"submissionType\":\"SDR-A\", \"exhibitType\":\"EX-99.K SDR.INS\"}]"

The file parameter JSON structure may pass in EDGAR Link Online (ELO) parameters to perform the same validation as EDGAR does with submission parameters:
[ {# current fields in JSON structure from Arelle Wrapper, per instance "file": "file path to instance or html", "cik": "1234567890", "cikNameList": { "cik1": "name1", "cik2":"name2", "cik3":"name3"...}, "submissionType" : "SDR-A", "exhibitType": "EX-99.K", "itemsList": [] # array of items, e.g. ["5.03"] (either array of strings blank-separated items in string) "accessionNumber":"0001125840-15-000159" , # new fields "periodOfReport": "mm-dd-yyyy", "entityRegistration.fyEnd": "mm/dd", # the FY End value from entity (CIK) registration "entity.repFileNum": file number from entity (CIK) registration "submissionHeader.fyEnd": "mm/dd", # the FY End value from submission header "voluntaryFilerFlag": true/false, # JSON Boolean, string Yes/No, yes/no, Y/N, y/n or absent "wellKnownSeasonedIssuerFlag": true/false, # JSON Boolean, string Yes/No, yes/no, Y/N, y/n or absent "shellCompanyFlag": true/false, true/false, # JSON Boolean, string Yes/No, yes/no, Y/N, y/n or absent "acceleratedFilerStatus": true/false, # JSON Boolean, string Yes/No, yes/no, Y/N, y/n or absent "smallBusinessFlag": true/false, # JSON Boolean, string Yes/No, yes/no, Y/N, y/n or absent "emergingGrowthCompanyFlag": true/false, # JSON Boolean, string Yes/No, yes/no, Y/N, y/n or absent "exTransitionPeriodFlag": true/false, # JSON Boolean, string Yes/No, yes/no, Y/N, y/n or absent # filer - use "cik" above "invCompanyType": "N-1A" # from table of investment company types "rptIncludeAllSeriesFlag": true/false, # JSON Boolean, string Yes/No, yes/no, Y/N, y/n or absent "rptSeriesClassInfo.seriesIds": ["S0000990666", ...] # list of EDGAR seriesId values "newClass2.seriesIds": [] # //seriesId xpath result on submission headers # CEF forms "eligibleFundFlag": true/false, # JSON Boolean, string Yes/No, yes/no, Y/N, y/n or absent "pursuantGeneralInstructionFlag": true/false, # JSON Boolean, string Yes/No, yes/no, Y/N, y/n or absent "filerNewRegistrantFlag": true/false, # JSON Boolean, string Yes/No, yes/no, Y/N, y/n or absent # Test/debug fields datetimeForTesting: xml-syntax datetime to override clock time for test/debug purposes }, {"file": "file 2"... ]
Note that JSON Boolean objects (true/false) do not have quotation marks.

Further details of instructions are in the comments to plugin/EdgarRenderer/__init__.py and plugin/validate/EFM/__init__.py

Web service operation

You may use the built-in web server or install to Apache/CGI or IIS/CGI (see documentation – API Web Services)

To start the built-in web server:
Windows pre-built app:
arelleCmdLine --webserver locahost:8080

Mac app: Arelle.app/Contents/MacOS/arelleCmdLine --webserver locahost:8080

Default is a single-thread web server. To add multi-threaded serving, specify the cheroot server, {arelleCmdLine} --webserver localhost:8080:cheroot.

To test that it is operating, from browser: http://localhost:8080/about. For help: http://localhost:8080/help.

To run a validation on a zip file containing the instance document and link bases:
curl -X POST "-HContent-type: application/zip" -T myInstanceAndLinkbases.zip -o edgarRendererResultsOutput.zip "http://localhost:8080/rest/xbrl/validation?efm-pragmatic&media=zip&plugins=EdgarRenderer&logFile=log.xml"
The log file of messages and errors will be in the zip as “log.xml” in xml format (or .txt or .json, as you wish).

The input file (posted by web service request) may be a zip file, in which case all the instances detected in the zip file’s root directory are processed.

Redline markups in inline XBRL documents

When viewing FilingSummary.htm in a browser, add the parameter ?redline=true to enable viewing redline markups on filings before submission to SEC. (These are a private communication from filer to SEC which are not disseminated to the public.)

Polled operation as a daemon service

See directory plugin/EdgarRenderer/svc_template. Batch scripts BuilderService.bat and .sh start a polling application, which looks for input zip files in a subdirectory Filings, processes each instance detected in the zip file root directory, puts results in Reports, archives input in Archive, and errors to Errors.

Contact and Support

End user support is by e-mail direct to SEC at: StructuredData@sec.gov

 

Comments are closed.