Overview
| Comment: | [server] code clarity, +version 1.3.1 | 
|---|---|
| Downloads: | Tarball | ZIP archive | SQL archive | 
| Timelines: | family | ancestors | descendants | both | trunk | server | v1.3.1 | 
| Files: | files | file ages | folders | 
| SHA3-256: | 137cf12febdb40fa27ff12f2c5aa7812 | 
| User & Date: | olr on 2019-08-21 07:04:10 | 
| Other Links: | manifest | tags | 
Context
| 2019-08-21 | ||
| 08:28 | [fr] test check-in: 48c8116d91 user: olr tags: trunk, fr | |
| 07:04 | [server] code clarity, +version 1.3.1 check-in: 137cf12feb user: olr tags: trunk, server, v1.3.1 | |
| 2019-08-20 | ||
| 16:31 | [build] add tests to text processor actions to prevent weird bugs check-in: 7542272427 user: olr tags: trunk, build | |
Changes
Modified gc_lang/fr/config.ini from [e602f974a1] to [b4b3700788].
| 1 2 3 4 5 6 7 8 | [args] lang = fr lang_name = French locales = fr_FR fr_BE fr_CA fr_CH fr_LU fr_BF fr_BJ fr_CD fr_CI fr_CM fr_MA fr_ML fr_MU fr_NE fr_RE fr_SN fr_TG country_default = FR name = Grammalecte implname = grammalecte # always use 3 numbers for version: x.y.z | | | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | [args] lang = fr lang_name = French locales = fr_FR fr_BE fr_CA fr_CH fr_LU fr_BF fr_BJ fr_CD fr_CI fr_CM fr_MA fr_ML fr_MU fr_NE fr_RE fr_SN fr_TG country_default = FR name = Grammalecte implname = grammalecte # always use 3 numbers for version: x.y.z version = 1.3.1 author = Olivier R. provider = Grammalecte.net link = https://grammalecte.net description = Correcteur grammatical pour le français. extras = README_fr.txt logo = logo.png | 
| ︙ | ︙ | 
Modified grammalecte-server.py from [800ce882b1] to [38ce8a200e].
| ︙ | ︙ | |||
| 22 23 24 25 26 27 28 | 
#### GRAMMAR CHECKER ####
oGrammarChecker = grammalecte.GrammarChecker("fr", "Server")
oSpellChecker = oGrammarChecker.getSpellChecker()
oTextFormatter = oGrammarChecker.getTextFormatter()
oGCE = oGrammarChecker.getGCEngine()
 | < < < < < < < < < < < < < < < < | 22 23 24 25 26 27 28 29 30 31 32 33 34 35 | 
#### GRAMMAR CHECKER ####
oGrammarChecker = grammalecte.GrammarChecker("fr", "Server")
oSpellChecker = oGrammarChecker.getSpellChecker()
oTextFormatter = oGrammarChecker.getTextFormatter()
oGCE = oGrammarChecker.getGCEngine()
def parseText (sText, dOptions=None, bFormatText=False, sError=""):
    "parse <sText> and return errors in a JSON format"
    sJSON = '{ "program": "grammalecte-fr", "version": "'+oGCE.version+'", "lang": "'+oGCE.lang+'", "error": "'+sError+'", "data" : [\n'
    sDataJSON = ""
    for i, sParagraph in enumerate(txt.getParagraph(sText), 1):
        if bFormatText:
 | 
| ︙ | ︙ | |||
| 70 71 72 73 74 75 76 77 78 79 80 81 82 83 | 
            return '{"error": "suggestion module failed"}'
        try:
            return '{"suggestions": ' + json.dumps(lSugg, ensure_ascii=False) + '}'
        except json.JSONDecodeError:
            return '{"error": "json encoding error"}'
    return '{"error": "no token given"}'
#### SERVEUR ####
HOMEPAGE = """
<!DOCTYPE HTML>
<html>
    <head>
 | > > > > > > > > > > > > > > > > > | 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 | 
            return '{"error": "suggestion module failed"}'
        try:
            return '{"suggestions": ' + json.dumps(lSugg, ensure_ascii=False) + '}'
        except json.JSONDecodeError:
            return '{"error": "json encoding error"}'
    return '{"error": "no token given"}'
#### PROCESS POOL EXECUTOR ####
xProcessPoolExecutor = None
def initExecutor (nMultiCPU=None):
    "process pool executor initialisation"
    global xProcessPoolExecutor
    if xProcessPoolExecutor:
        # we shutdown the ProcessPoolExecutor which may have been launched previously
        print("ProcessPoolExecutor shutdown.")
        xProcessPoolExecutor.shutdown(wait=False)
    nMaxCPU = max(os.cpu_count()-1, 1)
    if nMultiCPU is None or not (1 <= nMultiCPU <= nMaxCPU):
        nMultiCPU = nMaxCPU
    print("CPU processes used for workers: ", nMultiCPU)
    xProcessPoolExecutor = concurrent.futures.ProcessPoolExecutor(max_workers=nMultiCPU)
#### SERVEUR ####
HOMEPAGE = """
<!DOCTYPE HTML>
<html>
    <head>
 | 
| ︙ | ︙ | |||
| 349 350 351 352 353 354 355 | 
    main(xArgs.host or "localhost", \
         xArgs.port or 8080, \
         dOpt,
         xArgs.test_page,
         xArgs.multiprocessor)
else:
 | | | 350 351 352 353 354 355 356 357 358 359 | 
    main(xArgs.host or "localhost", \
         xArgs.port or 8080, \
         dOpt,
         xArgs.test_page,
         xArgs.multiprocessor)
else:
    # Must be launched at start, for WSGI server (which doesn’t call main())
    # WSGI servers just import the given file as a module and use an object exported from it (<app> in this case) to run the server.
    initExecutor()
 |