diff --git a/.github/workflows/test-and-run.yml b/.github/workflows/test-and-run.yml index b4327bf..e65fc43 100644 --- a/.github/workflows/test-and-run.yml +++ b/.github/workflows/test-and-run.yml @@ -19,20 +19,24 @@ jobs: runs-on: ${{ matrix.os }} steps: - uses: actions/checkout@v3 + - name: Install poetry + run: pipx install poetry - name: Set up Python ${{ matrix.python-version }} - uses: actions/setup-python@v3 + uses: actions/setup-python@v4 with: python-version: ${{ matrix.python-version }} + cache: 'poetry' - name: Install dependencies run: | python -m pip install --upgrade pip - python -m pip install flake8 pytest + poetry env use "${{ matrix.python-version }}" + poetry install - name: Lint with flake8 run: | # stop the build if there are Python syntax errors or undefined names - flake8 . --count --select=E9,F63,F7,F82 --show-source --statistics + poetry run flake8 . --count --select=E9,F63,F7,F82 --show-source --statistics # exit-zero treats all errors as warnings. The GitHub editor is 127 chars wide - flake8 . --count --exit-zero --max-complexity=10 --max-line-length=127 --statistics + poetry run flake8 . --count --exit-zero --max-complexity=10 --max-line-length=127 --statistics - name: Test with pytest run: | - python -m pytest tests/ + poetry run pytest tests/ diff --git a/docs/_build/doctrees/code/align/aligner.doctree b/docs/_build/doctrees/code/align/aligner.doctree index ded4974..41216a7 100644 Binary files a/docs/_build/doctrees/code/align/aligner.doctree and b/docs/_build/doctrees/code/align/aligner.doctree differ diff --git a/docs/_build/doctrees/code/align/index.doctree b/docs/_build/doctrees/code/align/index.doctree index ddd58e9..63e16a8 100644 Binary files a/docs/_build/doctrees/code/align/index.doctree and b/docs/_build/doctrees/code/align/index.doctree differ diff --git a/docs/_build/doctrees/code/align/transcriptprocessor.doctree b/docs/_build/doctrees/code/align/transcriptprocessor.doctree index ff40422..3adfedb 100644 Binary files a/docs/_build/doctrees/code/align/transcriptprocessor.doctree and b/docs/_build/doctrees/code/align/transcriptprocessor.doctree differ diff --git a/docs/_build/doctrees/code/cmudictionary.doctree b/docs/_build/doctrees/code/cmudictionary.doctree index 3626de3..d06fa70 100644 Binary files a/docs/_build/doctrees/code/cmudictionary.doctree and b/docs/_build/doctrees/code/cmudictionary.doctree differ diff --git a/docs/_build/doctrees/code/extract/esps.doctree b/docs/_build/doctrees/code/extract/esps.doctree index 143f21e..8c6e1ea 100644 Binary files a/docs/_build/doctrees/code/extract/esps.doctree and b/docs/_build/doctrees/code/extract/esps.doctree differ diff --git a/docs/_build/doctrees/code/extract/index.doctree b/docs/_build/doctrees/code/extract/index.doctree index 9ee6adb..adb34d6 100644 Binary files a/docs/_build/doctrees/code/extract/index.doctree and b/docs/_build/doctrees/code/extract/index.doctree differ diff --git a/docs/_build/doctrees/code/extract/mahalanobis.doctree b/docs/_build/doctrees/code/extract/mahalanobis.doctree index df587e4..afecdc2 100644 Binary files a/docs/_build/doctrees/code/extract/mahalanobis.doctree and b/docs/_build/doctrees/code/extract/mahalanobis.doctree differ diff --git a/docs/_build/doctrees/code/extract/plotnik.doctree b/docs/_build/doctrees/code/extract/plotnik.doctree index 9a94e25..382d25a 100644 Binary files a/docs/_build/doctrees/code/extract/plotnik.doctree and b/docs/_build/doctrees/code/extract/plotnik.doctree differ diff --git a/docs/_build/doctrees/code/extract/remeasure.doctree b/docs/_build/doctrees/code/extract/remeasure.doctree index 078898a..6b0a8ce 100644 Binary files a/docs/_build/doctrees/code/extract/remeasure.doctree and b/docs/_build/doctrees/code/extract/remeasure.doctree differ diff --git a/docs/_build/doctrees/code/extract/vowel.doctree b/docs/_build/doctrees/code/extract/vowel.doctree index 822634a..041583c 100644 Binary files a/docs/_build/doctrees/code/extract/vowel.doctree and b/docs/_build/doctrees/code/extract/vowel.doctree differ diff --git a/docs/_build/doctrees/code/praat.doctree b/docs/_build/doctrees/code/praat.doctree index 4f395d6..fe8b674 100644 Binary files a/docs/_build/doctrees/code/praat.doctree and b/docs/_build/doctrees/code/praat.doctree differ diff --git a/docs/_build/doctrees/environment.pickle b/docs/_build/doctrees/environment.pickle index 01777a2..58eab08 100644 Binary files a/docs/_build/doctrees/environment.pickle and b/docs/_build/doctrees/environment.pickle differ diff --git a/docs/_build/doctrees/index.doctree b/docs/_build/doctrees/index.doctree index 3689e1a..bb4ec4d 100644 Binary files a/docs/_build/doctrees/index.doctree and b/docs/_build/doctrees/index.doctree differ diff --git a/docs/_build/doctrees/usage/installation.doctree b/docs/_build/doctrees/usage/installation.doctree index fbb8fda..e23ccd1 100644 Binary files a/docs/_build/doctrees/usage/installation.doctree and b/docs/_build/doctrees/usage/installation.doctree differ diff --git a/docs/_build/doctrees/usage/quickstart.doctree b/docs/_build/doctrees/usage/quickstart.doctree index bef0240..63d3bc9 100644 Binary files a/docs/_build/doctrees/usage/quickstart.doctree and b/docs/_build/doctrees/usage/quickstart.doctree differ diff --git a/docs/_build/html/.buildinfo b/docs/_build/html/.buildinfo index 8247159..9ea5fc0 100644 --- a/docs/_build/html/.buildinfo +++ b/docs/_build/html/.buildinfo @@ -1,4 +1,4 @@ # Sphinx build info version 1 # This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done. -config: a9e501948c645bf032c7e86e32c92cb5 +config: 8745e4e4f0df8712ab397deb6ddc5d88 tags: 645f666f9bcd5a90fca523b33c5a78b7 diff --git a/docs/_build/html/_static/documentation_options.js b/docs/_build/html/_static/documentation_options.js index 15926ec..46b05d8 100644 --- a/docs/_build/html/_static/documentation_options.js +++ b/docs/_build/html/_static/documentation_options.js @@ -1,6 +1,6 @@ var DOCUMENTATION_OPTIONS = { URL_ROOT: document.getElementById("documentation_options").getAttribute('data-url_root'), - VERSION: '2.0.1', + VERSION: '2.0.2-dev', LANGUAGE: 'None', COLLAPSE_INDEX: false, BUILDER: 'html', diff --git a/docs/_build/html/code/align/aligner.html b/docs/_build/html/code/align/aligner.html index 1209fc3..145760d 100644 --- a/docs/_build/html/code/align/aligner.html +++ b/docs/_build/html/code/align/aligner.html @@ -6,7 +6,7 @@ - FAVE Aligner module — Forced Alignment and Vowel Extraction (FAVE) 2.0.1 documentation + FAVE Aligner module — Forced Alignment and Vowel Extraction (FAVE) 2.0.2-dev documentation @@ -40,7 +40,7 @@

Navigation

  • previous |
  • - + @@ -128,7 +128,7 @@

    Next topic

    This Page

    @@ -161,7 +161,7 @@

    Navigation

  • previous |
  • - + diff --git a/docs/_build/html/code/align/index.html b/docs/_build/html/code/align/index.html index 07f2492..2e32924 100644 --- a/docs/_build/html/code/align/index.html +++ b/docs/_build/html/code/align/index.html @@ -6,7 +6,7 @@ - FAVE Align module — Forced Alignment and Vowel Extraction (FAVE) 2.0.1 documentation + FAVE Align module — Forced Alignment and Vowel Extraction (FAVE) 2.0.2-dev documentation @@ -40,7 +40,7 @@

    Navigation

  • previous |
  • - + @@ -83,7 +83,7 @@

    Next topic

    This Page

    @@ -116,7 +116,7 @@

    Navigation

  • previous |
  • - + diff --git a/docs/_build/html/code/align/transcriptprocessor.html b/docs/_build/html/code/align/transcriptprocessor.html index 946c001..ca068ae 100644 --- a/docs/_build/html/code/align/transcriptprocessor.html +++ b/docs/_build/html/code/align/transcriptprocessor.html @@ -6,7 +6,7 @@ - FAVE TranscriptProcessor module — Forced Alignment and Vowel Extraction (FAVE) 2.0.1 documentation + FAVE TranscriptProcessor module — Forced Alignment and Vowel Extraction (FAVE) 2.0.2-dev documentation @@ -40,7 +40,7 @@

    Navigation

  • previous |
  • - + @@ -124,7 +124,7 @@

    Next topic

    This Page

    @@ -157,7 +157,7 @@

    Navigation

  • previous |
  • - + diff --git a/docs/_build/html/code/cmudictionary.html b/docs/_build/html/code/cmudictionary.html index 50d5ce7..ae3ac79 100644 --- a/docs/_build/html/code/cmudictionary.html +++ b/docs/_build/html/code/cmudictionary.html @@ -6,7 +6,7 @@ - FAVE CMU Dictionary module — Forced Alignment and Vowel Extraction (FAVE) 2.0.1 documentation + FAVE CMU Dictionary module — Forced Alignment and Vowel Extraction (FAVE) 2.0.2-dev documentation @@ -40,7 +40,7 @@

    Navigation

  • previous |
  • - + @@ -154,7 +154,7 @@

    Next topic

    This Page

    @@ -187,7 +187,7 @@

    Navigation

  • previous |
  • - + diff --git a/docs/_build/html/code/extract/esps.html b/docs/_build/html/code/extract/esps.html index cd8b34c..a97e966 100644 --- a/docs/_build/html/code/extract/esps.html +++ b/docs/_build/html/code/extract/esps.html @@ -6,7 +6,7 @@ - FAVE esps module — Forced Alignment and Vowel Extraction (FAVE) 2.0.1 documentation + FAVE esps module — Forced Alignment and Vowel Extraction (FAVE) 2.0.2-dev documentation @@ -40,7 +40,7 @@

    Navigation

  • previous |
  • - + @@ -82,7 +82,7 @@

    Next topic

    This Page

    @@ -115,7 +115,7 @@

    Navigation

  • previous |
  • - + diff --git a/docs/_build/html/code/extract/index.html b/docs/_build/html/code/extract/index.html index 0e4ea99..f8a2e25 100644 --- a/docs/_build/html/code/extract/index.html +++ b/docs/_build/html/code/extract/index.html @@ -6,7 +6,7 @@ - FAVE Extract module — Forced Alignment and Vowel Extraction (FAVE) 2.0.1 documentation + FAVE Extract module — Forced Alignment and Vowel Extraction (FAVE) 2.0.2-dev documentation @@ -40,7 +40,7 @@

    Navigation

  • previous |
  • - + @@ -86,7 +86,7 @@

    Next topic

    This Page

    @@ -119,7 +119,7 @@

    Navigation

  • previous |
  • - + diff --git a/docs/_build/html/code/extract/mahalanobis.html b/docs/_build/html/code/extract/mahalanobis.html index b858670..1cfa899 100644 --- a/docs/_build/html/code/extract/mahalanobis.html +++ b/docs/_build/html/code/extract/mahalanobis.html @@ -6,7 +6,7 @@ - FAVE Mahalanobis module — Forced Alignment and Vowel Extraction (FAVE) 2.0.1 documentation + FAVE Mahalanobis module — Forced Alignment and Vowel Extraction (FAVE) 2.0.2-dev documentation @@ -40,7 +40,7 @@

    Navigation

  • previous |
  • - + @@ -105,7 +105,7 @@

    Next topic

    This Page

    @@ -138,7 +138,7 @@

    Navigation

  • previous |
  • - + diff --git a/docs/_build/html/code/extract/plotnik.html b/docs/_build/html/code/extract/plotnik.html index 4f3bae9..3b7effb 100644 --- a/docs/_build/html/code/extract/plotnik.html +++ b/docs/_build/html/code/extract/plotnik.html @@ -6,7 +6,7 @@ - FAVE Plotnik module — Forced Alignment and Vowel Extraction (FAVE) 2.0.1 documentation + FAVE Plotnik module — Forced Alignment and Vowel Extraction (FAVE) 2.0.2-dev documentation @@ -40,7 +40,7 @@

    Navigation

  • previous |
  • - + @@ -186,6 +186,12 @@

    Navigation

    translates numerical following sequence code to a readable code.

    +
    +
    +fave.extract.plotnik.plt_ipa(cd)
    +

    translates numerical vowel class code to ipa-like.

    +
    +
    fave.extract.plotnik.plt_manner(fm)
    @@ -274,7 +280,7 @@

    Next topic

    This Page

    @@ -307,7 +313,7 @@

    Navigation

  • previous |
  • - + diff --git a/docs/_build/html/code/extract/remeasure.html b/docs/_build/html/code/extract/remeasure.html index f78cef4..abb64d7 100644 --- a/docs/_build/html/code/extract/remeasure.html +++ b/docs/_build/html/code/extract/remeasure.html @@ -6,7 +6,7 @@ - FAVE Remeasure module — Forced Alignment and Vowel Extraction (FAVE) 2.0.1 documentation + FAVE Remeasure module — Forced Alignment and Vowel Extraction (FAVE) 2.0.2-dev documentation @@ -40,7 +40,7 @@

    Navigation

  • previous |
  • - + @@ -126,7 +126,7 @@

    Next topic

    This Page

    @@ -159,7 +159,7 @@

    Navigation

  • previous |
  • - + diff --git a/docs/_build/html/code/extract/vowel.html b/docs/_build/html/code/extract/vowel.html index bb368bb..6499fd8 100644 --- a/docs/_build/html/code/extract/vowel.html +++ b/docs/_build/html/code/extract/vowel.html @@ -6,7 +6,7 @@ - FAVE Vowel module — Forced Alignment and Vowel Extraction (FAVE) 2.0.1 documentation + FAVE Vowel module — Forced Alignment and Vowel Extraction (FAVE) 2.0.2-dev documentation @@ -40,7 +40,7 @@

    Navigation

  • previous |
  • - + @@ -100,7 +100,7 @@

    Next topic

    This Page

    @@ -133,7 +133,7 @@

    Navigation

  • previous |
  • - + diff --git a/docs/_build/html/code/praat.html b/docs/_build/html/code/praat.html index add1d09..5124fbb 100644 --- a/docs/_build/html/code/praat.html +++ b/docs/_build/html/code/praat.html @@ -6,7 +6,7 @@ - FAVE Praat module — Forced Alignment and Vowel Extraction (FAVE) 2.0.1 documentation + FAVE Praat module — Forced Alignment and Vowel Extraction (FAVE) 2.0.2-dev documentation @@ -36,7 +36,7 @@

    Navigation

  • previous |
  • - + @@ -216,7 +216,7 @@

    Previous topic

    This Page

    @@ -246,7 +246,7 @@

    Navigation

  • previous |
  • - + diff --git a/docs/_build/html/genindex.html b/docs/_build/html/genindex.html index 1646dc5..35dbd9c 100644 --- a/docs/_build/html/genindex.html +++ b/docs/_build/html/genindex.html @@ -5,7 +5,7 @@ - Index — Forced Alignment and Vowel Extraction (FAVE) 2.0.1 documentation + Index — Forced Alignment and Vowel Extraction (FAVE) 2.0.2-dev documentation @@ -31,7 +31,7 @@

    Navigation

  • modules |
  • - + @@ -345,6 +345,8 @@

    P

  • Phone (class in fave.cmudictionary)
  • plt_folseq() (in module fave.extract.plotnik) +
  • +
  • plt_ipa() (in module fave.extract.plotnik)
  • plt_manner() (in module fave.extract.plotnik)
  • @@ -353,11 +355,11 @@

    P

  • plt_preseg() (in module fave.extract.plotnik)
  • plt_voice() (in module fave.extract.plotnik) -
  • -
  • plt_vowels() (in module fave.extract.plotnik)
  • diff --git a/docs/_build/html/index.html b/docs/_build/html/index.html index 35dc555..a69cb46 100644 --- a/docs/_build/html/index.html +++ b/docs/_build/html/index.html @@ -6,7 +6,7 @@ - Forced Alignment and Vowel Extraction (FAVE) — Forced Alignment and Vowel Extraction (FAVE) 2.0.1 documentation + Forced Alignment and Vowel Extraction (FAVE) — Forced Alignment and Vowel Extraction (FAVE) 2.0.2-dev documentation @@ -36,7 +36,7 @@

    Navigation

  • next |
  • - + @@ -51,35 +51,78 @@

    Forced Alignment and Vowel Extraction (FAVE)

    Warning

    -

    If you have used FAVE before, please read What’s new in version 2 to familiarize yourself with the differences between the current and legacy versions of FAVE.

    +

    If you have used FAVE before, please read +usage/whats-new to familiarize yourself +with the differences between the current and legacy versions of FAVE.

    Guides and documentation

    +
    +

    For Users

    +
    +
    +

    For Developers

    + +
    -
    -

    Indices

    -
    @@ -94,8 +137,11 @@

    IndicesTable of Contents

    @@ -109,7 +155,7 @@

    Next topic

    This Page

    @@ -139,7 +185,7 @@

    Navigation

  • next |
  • - + diff --git a/docs/_build/html/objects.inv b/docs/_build/html/objects.inv index b3d785a..ac889f4 100644 Binary files a/docs/_build/html/objects.inv and b/docs/_build/html/objects.inv differ diff --git a/docs/_build/html/py-modindex.html b/docs/_build/html/py-modindex.html index 2d974d3..ab37356 100644 --- a/docs/_build/html/py-modindex.html +++ b/docs/_build/html/py-modindex.html @@ -5,7 +5,7 @@ - Python Module Index — Forced Alignment and Vowel Extraction (FAVE) 2.0.1 documentation + Python Module Index — Forced Alignment and Vowel Extraction (FAVE) 2.0.2-dev documentation @@ -34,7 +34,7 @@

    Navigation

  • modules |
  • - + @@ -138,7 +138,7 @@

    Navigation

  • modules |
  • - + diff --git a/docs/_build/html/search.html b/docs/_build/html/search.html index 8c88e1e..db96fae 100644 --- a/docs/_build/html/search.html +++ b/docs/_build/html/search.html @@ -5,7 +5,7 @@ - Search — Forced Alignment and Vowel Extraction (FAVE) 2.0.1 documentation + Search — Forced Alignment and Vowel Extraction (FAVE) 2.0.2-dev documentation @@ -37,7 +37,7 @@

    Navigation

  • modules |
  • - + @@ -97,7 +97,7 @@

    Navigation

  • modules |
  • - + diff --git a/docs/_build/html/searchindex.js b/docs/_build/html/searchindex.js index 59a840e..7a7aa76 100644 --- a/docs/_build/html/searchindex.js +++ b/docs/_build/html/searchindex.js @@ -1 +1 @@ -Search.setIndex({docnames:["code/align/aligner","code/align/index","code/align/transcriptprocessor","code/cmudictionary","code/extract/esps","code/extract/index","code/extract/mahalanobis","code/extract/plotnik","code/extract/remeasure","code/extract/vowel","code/index","code/praat","index","usage/index","usage/installation","usage/quickstart","usage/whats-new"],envversion:{"sphinx.domains.c":2,"sphinx.domains.changeset":1,"sphinx.domains.citation":1,"sphinx.domains.cpp":5,"sphinx.domains.index":1,"sphinx.domains.javascript":2,"sphinx.domains.math":2,"sphinx.domains.python":3,"sphinx.domains.rst":2,"sphinx.domains.std":2,sphinx:56},filenames:["code/align/aligner.rst","code/align/index.rst","code/align/transcriptprocessor.rst","code/cmudictionary.rst","code/extract/esps.rst","code/extract/index.rst","code/extract/mahalanobis.rst","code/extract/plotnik.rst","code/extract/remeasure.rst","code/extract/vowel.rst","code/index.rst","code/praat.rst","index.rst","usage/index.rst","usage/installation.rst","usage/quickstart.rst","usage/whats-new.rst"],objects:{"fave.align":[[0,0,0,"-","aligner"],[2,0,0,"-","transcriptprocessor"]],"fave.align.aligner":[[0,1,1,"","Aligner"]],"fave.align.aligner.Aligner":[[0,2,1,"","align"],[0,2,1,"","check_against_dictionary"],[0,2,1,"","check_transcript"],[0,2,1,"","get_duration"],[0,2,1,"","merge_textgrids"],[0,2,1,"","process_style_tier"],[0,2,1,"","read_transcript"]],"fave.align.transcriptprocessor":[[2,1,1,"","TranscriptProcessor"]],"fave.align.transcriptprocessor.TranscriptProcessor":[[2,2,1,"","check_dictionary_entries"],[2,2,1,"","check_transcription_file"],[2,2,1,"","check_transcription_format"],[2,2,1,"","preprocess_transcription"],[2,2,1,"","read_transcription_file"],[2,2,1,"","replace_smart_quotes"]],"fave.cmudictionary":[[3,1,1,"","CMU_Dictionary"],[3,1,1,"","Phone"],[3,3,1,"","read_dict"],[3,3,1,"","read_phoneset"]],"fave.cmudictionary.CMU_Dictionary":[[3,2,1,"","add_dictionary_entries"],[3,2,1,"","check_phone"],[3,2,1,"","check_transcription"],[3,2,1,"","check_word"],[3,2,1,"","merge_dicts"],[3,2,1,"","read"],[3,2,1,"","write_dict"],[3,2,1,"","write_unknown_words"]],"fave.extract":[[4,0,0,"-","esps"],[6,0,0,"-","mahalanobis"],[7,0,0,"-","plotnik"],[8,0,0,"-","remeasure"],[9,0,0,"-","vowel"]],"fave.extract.esps":[[4,3,1,"","rmFormantFiles"]],"fave.extract.mahalanobis":[[6,3,1,"","mahalanobis"]],"fave.extract.plotnik":[[7,1,1,"","PltFile"],[7,1,1,"","VowelMeasurement"],[7,3,1,"","arpabet2plotnik"],[7,3,1,"","cmu2plotnik_code"],[7,3,1,"","convertDur"],[7,3,1,"","convertStress"],[7,3,1,"","get_age"],[7,3,1,"","get_city"],[7,3,1,"","get_first_name"],[7,3,1,"","get_last_name"],[7,3,1,"","get_n"],[7,3,1,"","get_n_foll_c"],[7,3,1,"","get_n_foll_syl"],[7,3,1,"","get_s"],[7,3,1,"","get_sex"],[7,3,1,"","get_state"],[7,3,1,"","get_stressed_v"],[7,3,1,"","get_ts"],[7,3,1,"","is_v"],[7,3,1,"","outputPlotnikFile"],[7,3,1,"","phila_system"],[7,3,1,"","plt_folseq"],[7,3,1,"","plt_manner"],[7,3,1,"","plt_place"],[7,3,1,"","plt_preseg"],[7,3,1,"","plt_voice"],[7,3,1,"","plt_vowels"],[7,3,1,"","process_measurement_line"],[7,3,1,"","process_plt_file"],[7,3,1,"","split_stress_digit"],[7,3,1,"","style2plotnik"],[7,3,1,"","word2fname"],[7,3,1,"","word2trans"]],"fave.extract.remeasure":[[8,1,1,"","VowelMeasurement"],[8,3,1,"","calculateVowelMeans"],[8,3,1,"","createVowelDictionary"],[8,3,1,"","excludeOutliers"],[8,3,1,"","loadfile"],[8,3,1,"","output"],[8,3,1,"","pruneVowels"],[8,3,1,"","repredictF1F2"]],"fave.extract.vowel":[[9,3,1,"","isDiphthong"],[9,3,1,"","isIngliding"],[9,3,1,"","isShort"],[9,3,1,"","isUpgliding"]],"fave.praat":[[11,1,1,"","Formant"],[11,1,1,"","Intensity"],[11,1,1,"","Interval"],[11,1,1,"","IntervalTier"],[11,1,1,"","LPC"],[11,1,1,"","MFCC"],[11,1,1,"","Point"],[11,1,1,"","PointTier"],[11,1,1,"","TextGrid"]],"fave.praat.Formant":[[11,2,1,"","bandwidths"],[11,2,1,"","formants"],[11,2,1,"","intensities"],[11,2,1,"","n"],[11,2,1,"","read"],[11,2,1,"","times"],[11,2,1,"","xmax"],[11,2,1,"","xmin"]],"fave.praat.Intensity":[[11,2,1,"","read"]],"fave.praat.IntervalTier":[[11,2,1,"","rename"],[11,2,1,"","sort_intervals"],[11,2,1,"","tidyup"]],"fave.praat.LPC":[[11,2,1,"","read"]],"fave.praat.MFCC":[[11,2,1,"","read"]],"fave.praat.TextGrid":[[11,2,1,"","read"],[11,2,1,"","write"]],fave:[[3,0,0,"-","cmudictionary"],[11,0,0,"-","praat"]]},objnames:{"0":["py","module","Python module"],"1":["py","class","Python class"],"2":["py","method","Python method"],"3":["py","function","Python function"]},objtypes:{"0":"py:module","1":"py:class","2":"py:method","3":"py:function"},terms:{"0":[6,7,11,12,13,16],"1":[6,16],"10":16,"12":16,"14":16,"1d":6,"2":[12,13],"2000":16,"2006":16,"2008":16,"2014":16,"2015":16,"2020":16,"2022":16,"3":[7,16],"4":16,"5":[2,6,16],"7":16,"8":[7,16],"9":16,"break":16,"case":[6,7],"class":[0,1,2,3,5,7,8,11],"default":[11,15],"do":16,"final":7,"function":[0,2,3,5],"import":[6,15,16],"long":[11,16],"new":[3,11,12,13,15],"return":[2,3,7,8,11],"short":[9,11],"static":[2,3],"true":[6,9],"try":16,A:6,As:16,For:16,If:[2,10,12,14,16],In:16,It:[0,1,5,8,16],The:[0,1,5,13],These:16,To:16,_:6,_ic_:6,_u_:6,_v_:6,abil:16,abov:16,ac:7,accord:[8,11,15],account:16,accumul:16,acoust:5,add:[0,2,3,7,16],add_dictionary_entri:3,addit:3,ae:9,after:16,ag:[7,16],again:16,against:6,ah:9,align:[2,5,10,13,14,15],all:[0,2,4,16],all_input:2,allow:[0,3,16],alreadi:[14,16],also:16,alwai:16,among:16,an:[2,6,8,11],ani:[3,16],announc:16,api:16,appli:16,ar:[6,8,10,14,16],area:16,arg:2,argument:16,arpabet2plotnik:7,arpabet:[2,3,7],arrai:[6,8],ask:13,assign:[3,11],assum:16,attempt:16,audio:[5,15],audiofil:[15,16],august:16,author:3,autom:0,avail:[14,16],avoid:16,aw:9,ay:9,b1:8,b3:8,bandaid:16,bandwidth:11,base:[8,16],batch:16,becaus:16,becom:6,befor:[12,14,16],began:16,begin:15,behavior:16,being:16,best:16,between:[0,6,11,12],brickhous:16,bug:[14,16],build:16,built:16,c:16,calcul:8,calculatevowelmean:8,came:16,can:[11,14,16],categori:8,caus:16,cd:7,cepstral:11,chang:16,charact:7,check:[0,2,3,6,7,9,15],check_against_dictionari:0,check_dictionary_entri:2,check_phon:3,check_transcript:[0,3],check_transcription_fil:2,check_transcription_format:2,check_word:3,christian:16,chunkname_textgrid:0,citi:7,cmu2plotnik_cod:7,cmu:[2,7],cmu_dictionari:3,cmudictionari:[3,10,12],coda:7,code:[7,11,16],coeffici:11,come:16,command:16,comment:7,compat:16,complet:16,complex:16,comput:[6,14],configur:16,conform:3,conson:7,contain:[0,1,5,13,16],content:[0,7],continu:16,contour:11,contribut:[10,14],convert:7,convertdur:7,convertstress:7,coordin:0,correct:2,correspond:7,could:16,count:7,cov:6,covari:[6,8],creat:[8,15,16],createvoweldictionari:8,current:[12,16],custom:16,custom_dictionari:[15,16],customiz:16,d1:3,d2:3,data:[2,7,13,15],date:16,debian:14,debt:16,defin:6,delet:[2,4],delimit:2,depend:[6,15,16],deprec:16,detail:16,develop:[10,16],dict:[2,3],dictionari:[0,2,7,8,15,16],dictionary_fil:3,differ:[0,12],digit:7,dimens:6,diphthong:9,direct:15,directli:16,distanc:[6,8],distinct:3,distribut:8,document:16,doubl:[7,16],download:[15,16],duct:16,dur:7,durat:[0,7,8],dure:16,e:9,each:[3,8,11,15],easi:[0,16],easier:16,easili:16,either:11,empti:[2,11],end:[10,11,16],enough:8,enter:[3,7],entri:[0,2,3],environment:7,error:16,esp:[5,10],etc:16,euclidean:6,evanini:3,even:16,everi:16,exampl:16,exclud:8,excludeoutli:8,exist:[7,16],exit:2,extend:16,extens:4,extract:[4,6,7,8,9,10,13,14,15],extractform:[8,15],ey:[6,9],f1:[8,11],f2:8,f3:11,f:[3,7],faav:2,faavalign:15,fadir:0,fail:16,familiar:12,fanci:2,fave:10,featur:[3,16],februari:16,feel:14,field:2,file:[0,1,2,3,4,5,7,8,11,16],filenam:[7,11],filestem:4,find:[8,10],first:7,fix:16,flag:16,fm:7,fname:3,folder:16,foll_p:7,follow:[7,16],forc:[2,15,16],formant:[7,11,15,16],format:[2,7,8,11],foundat:16,fp:7,frame:11,free:14,frequenc:11,frequent:13,freuhwald:16,from:[2,3,5,6,7,8,11,16],fs:7,full:16,futur:16,fv:7,gap:11,get:0,get_:7,get_ag:7,get_citi:7,get_dur:0,get_first_nam:7,get_last_nam:7,get_n:7,get_n_foll_c:7,get_n_foll_syl:7,get_sex:7,get_stat:7,get_stressed_v:7,get_t:7,given:[3,4,11],glide:7,go:16,good:16,greater:16,guid:16,h:16,ha:16,had:16,handl:[0,2],hard:16,harder:16,have:[2,12,16],header:7,help:[10,16],higher:16,highli:16,histori:16,hold:16,how:[13,16],htk:14,i:[7,9,16],ic:6,ident:6,identifi:8,improv:16,includ:[7,15,16],incorrect:6,increas:16,index:[3,7,8,12,14],indexerror:3,indic:8,infil:3,inglid:9,input:2,insert:11,instal:[12,13,15],instruct:16,integ:7,intens:11,interact:0,interfac:[0,16],intern:[10,16],interv:11,intervalti:11,introduc:16,inv:6,invers:6,irrespons:16,is_v:7,isdiphthong:9,isinglid:9,isshort:9,isupglid:9,its:[15,16],iy:9,januari:16,josef:16,keelan:3,keep:16,knowledg:16,known:16,kwarg:[0,2,3],label:[3,7],labovian:7,langaug:16,languag:16,larg:16,larger:0,last:7,latest:16,learn:13,least:16,leav:16,left:[8,16],legaci:12,less:16,letter:7,librari:[0,14],licens:16,life:16,like:[10,14,16],limit:7,linalg:6,line:[2,3,7,8,16],linear:11,list:[2,3,8,11,15,16],littl:16,load:[8,16],loadfil:8,locat:16,longer:16,lookup:2,lpc:11,m:[14,16],mac:14,made:16,mahalanobi:[5,8,10],mahalanobis_scipi:6,mai:16,main:0,main_textgrid:0,maintain:16,make:[7,8,16],manag:16,mani:16,manipul:1,manner:7,manual:14,mark:11,matric:8,matrix:6,maximum:11,mean:[6,8,16],measur:[5,7,8,11],mel:11,memori:2,merg:3,merge_dict:3,merge_textgrid:0,mfa:16,mfcc:11,might:[14,16],migrat:16,modif:14,modifi:7,modul:[12,13],moment:14,montral:16,more:[7,10,16],msec:7,multipl:3,n:[6,11],name:[7,11,16],navig:16,need:[14,16],new_textgrid:0,newer:16,newnam:11,next_word:3,none:[0,3,7,11],normal:7,np:6,number:[5,7,11],numer:7,numpi:8,o:9,object:[1,3,7,11],observ:[6,8],obvious:6,octob:16,off:16,often:16,older:16,omit:16,onc:16,one:[7,16],ongo:[14,16],open:15,option:[2,16],order:[14,16],origin:7,other:[0,3,16],out:[7,15,16],outli:8,outlier:8,output:[8,16],outputalign:[15,16],outputfilenam:[15,16],outputplotnikfil:7,over:16,overal:0,ow:9,own:[8,16],oy:9,packag:16,page:12,par:11,param:3,paramet:11,parenthes:7,part:3,particularli:6,patch:16,path:3,pc:7,peopl:16,person:16,phila_system:7,philadelphia:7,phone:[3,7],phonem:3,phoneset:[3,7],phonet:3,pip:[13,16],place:7,pleas:[12,14],plotnik:[5,10],plt:7,plt_folseq:7,plt_manner:7,plt_place:7,plt_preseg:7,plt_voic:7,plt_vowel:7,pltfile:7,point:[0,11],pointtier:11,possibl:16,praat:[10,12,14],praatpath:0,prec_p:7,preced:7,predict:[8,11],preprocess:2,preprocess_transcript:2,present:7,previou:16,problem:16,process:[0,2,16],process_measurement_lin:7,process_plt_fil:7,process_style_ti:0,program:[0,16],programm:[10,16],prompt:2,pronounc:[3,7],pronunci:3,pronunciation_dictionari:2,proper:16,prune:8,prunevowel:8,ps:7,publish:14,py:[0,15],pypi:14,python3:[14,15,16],python:[13,14],question:13,quick:16,quickstart:[12,13],quot:2,rais:3,ran:16,random:6,re:16,reach:16,read:[0,2,3,7,11,12,16],read_dict:3,read_phoneset:3,read_transcript:0,read_transcription_fil:2,readabl:7,readm:16,receiv:16,recommend:16,redefin:7,releas:16,reli:16,remain:16,remeasur:[5,10],renam:11,repai:16,replac:[2,16],replace_smart_quot:2,report:14,repredictf1f2:8,repres:[3,7,8,11],represent:3,requir:[7,13],research:16,restructur:16,review:16,rewrit:16,right:16,risk:16,riski:16,rmformantfil:4,run:16,s:[3,8,12,13],sai:16,same:[3,6],sampl:6,save:11,schedul:16,scipi:6,script:[0,10,15,16],search:12,second:[7,11],section:[10,13,16],secur:16,see:[14,16],segment:7,select:[2,8],semant:16,sensibl:16,sensit:16,separ:7,sequenc:7,seri:11,set:15,sex:7,should:[8,16],similar:16,simpli:16,sinc:16,singl:7,situat:16,size:16,slight:14,slightli:16,small:16,so:16,softwar:[12,13],some:[6,16],sometim:14,soon:16,sooner:16,sort:11,sort_interv:11,sound:16,soundfil:0,sox:14,spatial:6,speaker:[0,7,8],specif:16,specifi:16,split:7,split_stress_digit:7,sqrt:6,stabl:16,start:[11,16],state:7,stem:4,step:16,still:16,straight:2,stress:7,string:3,structur:16,style2plotnik:7,style:[0,3,7],style_ti:0,stylecod:7,subject:7,success:16,sum:6,sunset:16,support:[14,16],sure:[8,16],syllabl:7,syntax:16,system:[14,16],t:6,tab:2,taken:8,tape:16,techinc:16,technic:16,telsur:7,tempdir:0,termin:16,text:11,textgrid:[0,11,15,16],tgfile:0,than:[7,16],thei:14,them:[3,8,16],thi:[6,10,12,13,14,16],thing:16,those:16,through:16,thrown:6,tidyup:11,tier:[0,11],time:[11,16],token:[7,8],top:16,trade:16,tran:7,transcript:[1,2,3,7,11,15,16],transcriptionfil:[15,16],transcriptprocessor:[0,1,10,16],translat:7,transript_fil:2,tri:8,trsfile:0,tsv:[15,16],two:[1,3,6],txt:[3,15,16],type:8,u:[6,9],udnerstand:16,understood:16,uniqu:7,unknown:[2,3,16],unknown_word:[15,16],unlik:16,unstress:7,until:16,updat:13,upglid:9,upper:7,us:[0,6,10,12,13,14],usag:[10,16],user:[0,2,3,10,12,14,16],uw:9,v2:16,v3:16,v:[6,9],vagu:16,valu:[7,11],valueerror:6,vector:6,version:[3,12,13],voic:7,vowel:[5,7,8,10],vowelcov:8,vowelmean:8,vowelmeasur:[7,8],vowelsystem:7,vulner:16,wai:[0,16],want:10,wav:[15,16],wavfil:[0,2],we:16,websit:[12,16],were:16,what:[12,13],when:[6,16],where:[6,16],whether:[3,7,9],which:[8,16],who:[10,16],wide:16,word2fnam:7,word2tran:7,word:[2,3,7,15,16],work:[3,14],workflow:16,would:[10,14,16],wrapper:2,write:[2,3,7,8,11],write_dict:3,write_unknown_word:3,written:16,x:8,xmax:11,xmin:11,xrang:6,xxxxx:7,year:16,you:[10,12,14,16],your:[10,14,15],yourself:12},titles:["FAVE Aligner module","FAVE Align module","FAVE TranscriptProcessor module","FAVE CMU Dictionary module","FAVE esps module","FAVE Extract module","FAVE Mahalanobis module","FAVE Plotnik module","FAVE Remeasure module","FAVE Vowel module","Module documentation","FAVE Praat module","Forced Alignment and Vowel Extraction (FAVE)","FAVE User Guides","Installing FAVE 2","Quickstart guide to using FAVE 2.0","What\u2019s new in version 2"],titleterms:{"0":15,"2":[14,15,16],"new":16,The:16,align:[0,1,12,16],ask:16,check:16,cmu:3,content:16,data:16,dictionari:3,differ:16,document:[10,12],doe:16,esp:4,extract:[5,12,16],extractform:16,faavalign:16,fave:[0,1,2,3,4,5,6,7,8,9,11,12,13,14,15,16],forc:12,frequent:16,get:16,guid:[12,13,15],indic:12,instal:[14,16],mahalanobi:6,manag:14,modul:[0,1,2,3,4,5,6,7,8,9,10,11,16],old:16,other:14,packag:14,pip:14,plotnik:7,praat:11,py:16,python:16,question:16,quickstart:15,remeasur:8,requir:14,s:16,softwar:[14,16],transcriptprocessor:2,updat:16,us:[15,16],user:13,version:16,vowel:[9,12,16],wa:16,what:16,why:16,work:16,wrong:16,your:16}}) \ No newline at end of file +Search.setIndex({docnames:["code/align/aligner","code/align/index","code/align/transcriptprocessor","code/cmudictionary","code/extract/esps","code/extract/index","code/extract/mahalanobis","code/extract/plotnik","code/extract/remeasure","code/extract/vowel","code/index","code/praat","index","usage/cli_startup/cli_setup","usage/index","usage/installation","usage/quickstart","usage/whats-new"],envversion:{"sphinx.domains.c":2,"sphinx.domains.changeset":1,"sphinx.domains.citation":1,"sphinx.domains.cpp":5,"sphinx.domains.index":1,"sphinx.domains.javascript":2,"sphinx.domains.math":2,"sphinx.domains.python":3,"sphinx.domains.rst":2,"sphinx.domains.std":2,sphinx:56},filenames:["code/align/aligner.md","code/align/index.md","code/align/transcriptprocessor.md","code/cmudictionary.md","code/extract/esps.md","code/extract/index.md","code/extract/mahalanobis.md","code/extract/plotnik.md","code/extract/remeasure.md","code/extract/vowel.md","code/index.md","code/praat.md","index.md","usage/cli_startup/cli_setup.md","usage/index.md","usage/installation.md","usage/quickstart.md","usage/whats-new.md"],objects:{"fave.align":[[0,0,0,"-","aligner"],[2,0,0,"-","transcriptprocessor"]],"fave.align.aligner":[[0,1,1,"","Aligner"]],"fave.align.aligner.Aligner":[[0,2,1,"","align"],[0,2,1,"","check_against_dictionary"],[0,2,1,"","check_transcript"],[0,2,1,"","get_duration"],[0,2,1,"","merge_textgrids"],[0,2,1,"","process_style_tier"],[0,2,1,"","read_transcript"]],"fave.align.transcriptprocessor":[[2,1,1,"","TranscriptProcessor"]],"fave.align.transcriptprocessor.TranscriptProcessor":[[2,2,1,"","check_dictionary_entries"],[2,2,1,"","check_transcription_file"],[2,2,1,"","check_transcription_format"],[2,2,1,"","preprocess_transcription"],[2,2,1,"","read_transcription_file"],[2,2,1,"","replace_smart_quotes"]],"fave.cmudictionary":[[3,1,1,"","CMU_Dictionary"],[3,1,1,"","Phone"],[3,3,1,"","read_dict"],[3,3,1,"","read_phoneset"]],"fave.cmudictionary.CMU_Dictionary":[[3,2,1,"","add_dictionary_entries"],[3,2,1,"","check_phone"],[3,2,1,"","check_transcription"],[3,2,1,"","check_word"],[3,2,1,"","merge_dicts"],[3,2,1,"","read"],[3,2,1,"","write_dict"],[3,2,1,"","write_unknown_words"]],"fave.extract":[[4,0,0,"-","esps"],[6,0,0,"-","mahalanobis"],[7,0,0,"-","plotnik"],[8,0,0,"-","remeasure"],[9,0,0,"-","vowel"]],"fave.extract.esps":[[4,3,1,"","rmFormantFiles"]],"fave.extract.mahalanobis":[[6,3,1,"","mahalanobis"]],"fave.extract.plotnik":[[7,1,1,"","PltFile"],[7,1,1,"","VowelMeasurement"],[7,3,1,"","arpabet2plotnik"],[7,3,1,"","cmu2plotnik_code"],[7,3,1,"","convertDur"],[7,3,1,"","convertStress"],[7,3,1,"","get_age"],[7,3,1,"","get_city"],[7,3,1,"","get_first_name"],[7,3,1,"","get_last_name"],[7,3,1,"","get_n"],[7,3,1,"","get_n_foll_c"],[7,3,1,"","get_n_foll_syl"],[7,3,1,"","get_s"],[7,3,1,"","get_sex"],[7,3,1,"","get_state"],[7,3,1,"","get_stressed_v"],[7,3,1,"","get_ts"],[7,3,1,"","is_v"],[7,3,1,"","outputPlotnikFile"],[7,3,1,"","phila_system"],[7,3,1,"","plt_folseq"],[7,3,1,"","plt_ipa"],[7,3,1,"","plt_manner"],[7,3,1,"","plt_place"],[7,3,1,"","plt_preseg"],[7,3,1,"","plt_voice"],[7,3,1,"","plt_vowels"],[7,3,1,"","process_measurement_line"],[7,3,1,"","process_plt_file"],[7,3,1,"","split_stress_digit"],[7,3,1,"","style2plotnik"],[7,3,1,"","word2fname"],[7,3,1,"","word2trans"]],"fave.extract.remeasure":[[8,1,1,"","VowelMeasurement"],[8,3,1,"","calculateVowelMeans"],[8,3,1,"","createVowelDictionary"],[8,3,1,"","excludeOutliers"],[8,3,1,"","loadfile"],[8,3,1,"","output"],[8,3,1,"","pruneVowels"],[8,3,1,"","repredictF1F2"]],"fave.extract.vowel":[[9,3,1,"","isDiphthong"],[9,3,1,"","isIngliding"],[9,3,1,"","isShort"],[9,3,1,"","isUpgliding"]],"fave.praat":[[11,1,1,"","Formant"],[11,1,1,"","Intensity"],[11,1,1,"","Interval"],[11,1,1,"","IntervalTier"],[11,1,1,"","LPC"],[11,1,1,"","MFCC"],[11,1,1,"","Point"],[11,1,1,"","PointTier"],[11,1,1,"","TextGrid"]],"fave.praat.Formant":[[11,2,1,"","bandwidths"],[11,2,1,"","formants"],[11,2,1,"","intensities"],[11,2,1,"","n"],[11,2,1,"","read"],[11,2,1,"","times"],[11,2,1,"","xmax"],[11,2,1,"","xmin"]],"fave.praat.Intensity":[[11,2,1,"","read"]],"fave.praat.IntervalTier":[[11,2,1,"","rename"],[11,2,1,"","sort_intervals"],[11,2,1,"","tidyup"]],"fave.praat.LPC":[[11,2,1,"","read"]],"fave.praat.MFCC":[[11,2,1,"","read"]],"fave.praat.TextGrid":[[11,2,1,"","read"],[11,2,1,"","write"]],fave:[[3,0,0,"-","cmudictionary"],[11,0,0,"-","praat"]]},objnames:{"0":["py","module","Python module"],"1":["py","class","Python class"],"2":["py","method","Python method"],"3":["py","function","Python function"]},objtypes:{"0":"py:module","1":"py:class","2":"py:method","3":"py:function"},terms:{"0":[6,7,11,12,14,17],"1":[6,17],"10":17,"12":17,"14":17,"1d":6,"2":[12,14],"2000":17,"2006":17,"2008":17,"2014":17,"2015":17,"2020":17,"2022":17,"3":[7,17],"4":17,"5":[2,6,17],"7":17,"8":[7,17],"9":17,"break":17,"case":[6,7],"class":[0,1,2,3,5,7,8,11],"default":[11,16],"do":17,"final":7,"function":[0,2,3,5],"import":[6,16,17],"long":[11,17],"new":[3,11,12,14,16],"return":[2,3,7,8,11],"short":[9,11],"static":[2,3],"true":[6,9],"try":17,A:6,As:17,For:17,If:[2,10,12,15,17],In:17,It:[0,1,5,8,17],The:[0,1,5,12,14],These:17,To:17,_:6,_ic_:6,_u_:6,_v_:6,abil:17,abov:17,ac:7,accord:[8,11,16],account:17,accumul:17,acoust:5,add:[0,2,3,7,17],add_dictionary_entri:3,addit:3,ae:9,after:17,ag:[7,17],again:17,against:6,ah:9,align:[2,5,10,14,15,16],all:[0,2,4,17],all_input:2,allow:[0,3,17],alreadi:[15,17],also:17,alwai:17,among:17,an:[2,6,8,11],ani:[3,17],announc:17,api:17,appli:17,ar:[6,8,10,15,17],area:17,arg:2,argument:17,arpabet2plotnik:7,arpabet:[2,3,7],arrai:[6,8],ask:[12,14],assign:[3,11],assum:17,attempt:17,audio:[5,16],audiofil:[16,17],august:17,author:3,autom:0,avail:[15,17],avoid:17,aw:9,ay:9,b1:8,b3:8,bandaid:17,bandwidth:11,base:[8,17],batch:17,becaus:17,becom:6,befor:[12,15,17],began:17,begin:16,behavior:17,being:17,best:17,between:[0,6,11,12],brickhous:17,bug:[15,17],build:17,built:17,c:17,calcul:8,calculatevowelmean:8,came:17,can:[11,15,17],categori:8,caus:17,cd:7,cepstral:11,chang:17,charact:7,check:[0,2,3,6,7,9,12,16],check_against_dictionari:0,check_dictionary_entri:2,check_phon:3,check_transcript:[0,3],check_transcription_fil:2,check_transcription_format:2,check_word:3,christian:17,chunkname_textgrid:0,citi:7,cmu2plotnik_cod:7,cmu:[2,7],cmu_dictionari:3,cmudictionari:[3,10,12],coda:7,code:[7,11,17],coeffici:11,come:17,command:17,comment:7,compat:17,complet:17,complex:17,comput:[6,15],configur:17,conform:3,conson:7,contain:[0,1,5,14,17],content:[0,7],continu:17,contour:11,contribut:[10,15],convert:7,convertdur:7,convertstress:7,coordin:0,correct:2,correspond:7,could:17,count:7,cov:6,covari:[6,8],creat:[8,16,17],createvoweldictionari:8,current:[12,17],custom:17,custom_dictionari:[16,17],customiz:17,d1:3,d2:3,data:[2,7,12,14,16],date:17,debian:15,debt:17,defin:6,delet:[2,4],delimit:2,depend:[6,16,17],deprec:17,detail:17,develop:[10,17],dict:[2,3],dictionari:[0,2,7,8,16,17],dictionary_fil:3,differ:[0,12],digit:7,dimens:6,diphthong:9,direct:16,directli:17,distanc:[6,8],distinct:3,distribut:8,doc:[],document:17,doe:12,doubl:[7,17],download:[16,17],duct:17,dur:7,durat:[0,7,8],dure:17,e:9,each:[3,8,11,16],easi:[0,17],easier:17,easili:17,either:11,empti:[2,11],end:[10,11,17],enough:8,enter:[3,7],entri:[0,2,3],environment:7,error:17,esp:[5,10,12],etc:17,euclidean:6,evanini:3,even:17,everi:17,exampl:17,exclud:8,excludeoutli:8,exist:[7,17],exit:2,extend:17,extens:4,extract:[4,6,7,8,9,10,14,15,16],extractform:[8,12,16],ey:[6,9],f1:[8,11],f2:8,f3:11,f:[3,7],faav:2,faavalign:[12,16],fadir:0,fail:17,familiar:12,fanci:2,fave:10,featur:[3,17],februari:17,feel:15,field:2,file:[0,1,2,3,4,5,7,8,11,17],filenam:[7,11],filestem:4,find:[8,10],first:7,fix:17,flag:17,fm:7,fname:3,folder:17,foll_p:7,follow:[7,17],forc:[2,16,17],formant:[7,11,16,17],format:[2,7,8,11],foundat:17,fp:7,frame:11,free:15,frequenc:11,frequent:[12,14],freuhwald:17,from:[2,3,5,6,7,8,11,17],fs:7,full:17,futur:17,fv:7,gap:11,genindex:[],get:[0,12],get_:7,get_ag:7,get_citi:7,get_dur:0,get_first_nam:7,get_last_nam:7,get_n:7,get_n_foll_c:7,get_n_foll_syl:7,get_sex:7,get_stat:7,get_stressed_v:7,get_t:7,given:[3,4,11],glide:7,go:17,good:17,greater:17,guid:17,h:17,ha:17,had:17,handl:[0,2],hard:17,harder:17,have:[2,12,17],header:7,help:[10,17],higher:17,highli:17,histori:17,hold:17,how:[14,17],htk:15,i:[7,9,17],ic:6,ident:6,identifi:8,improv:17,includ:[7,16,17],incorrect:6,increas:17,index:[3,7,8,15],indexerror:3,indic:8,infil:3,inglid:9,input:2,insert:11,instal:[12,14,16],instruct:17,integ:7,intens:11,interact:0,interfac:[0,17],intern:[10,17],interpret:[],interv:11,intervalti:11,introduc:17,inv:6,invers:6,ipa:7,irrespons:17,is_v:7,isdiphthong:9,isinglid:9,isshort:9,isupglid:9,its:[16,17],iy:9,januari:17,josef:17,keelan:3,keep:17,knowledg:17,known:17,kwarg:[0,2,3],label:[3,7],labovian:7,langaug:17,languag:17,larg:17,larger:0,last:7,latest:17,learn:14,least:17,leav:17,left:[8,17],legaci:12,less:17,letter:7,librari:[0,15],licens:17,life:17,like:[7,10,15,17],limit:7,linalg:6,line:[2,3,7,8,17],linear:11,list:[2,3,8,11,16,17],littl:17,load:[8,17],loadfil:8,locat:17,longer:17,lookup:2,lpc:11,m:[15,17],mac:15,made:17,mahalanobi:[5,8,10,12],mahalanobis_scipi:6,mai:17,main:0,main_textgrid:0,maintain:17,make:[7,8,17],manag:[12,17],mani:17,manipul:1,manner:7,manual:15,mark:11,matric:8,matrix:6,maxdepth:[],maximum:11,mean:[6,8,17],measur:[5,7,8,11],mel:11,memori:2,merg:3,merge_dict:3,merge_textgrid:0,mfa:17,mfcc:11,might:[15,17],migrat:17,modif:15,modifi:7,modindex:[],modul:[12,14],moment:15,montral:17,more:[7,10,17],msec:7,multipl:3,n:[6,11],name:[7,11,17],navig:17,need:[15,17],new_textgrid:0,newer:17,newnam:11,next_word:3,none:[0,3,7,11],normal:7,note:[],np:6,number:[5,7,11],numer:7,numpi:8,o:9,object:[1,3,7,11],observ:[6,8],obvious:6,octob:17,off:17,often:17,old:12,older:17,omit:17,onc:17,one:[7,17],ongo:[15,17],open:16,option:[2,17],order:[15,17],origin:7,other:[0,3,12,17],out:[7,16,17],outli:8,outlier:8,output:[8,17],outputalign:[16,17],outputfilenam:[16,17],outputplotnikfil:7,over:17,overal:0,ow:9,own:[8,17],oy:9,packag:[12,17],page:[],par:11,param:3,paramet:11,parenthes:7,part:3,particularli:6,patch:17,path:3,pc:7,peopl:17,person:17,phila_system:7,philadelphia:7,phone:[3,7],phonem:3,phoneset:[3,7],phonet:3,pip:[12,14,17],place:7,pleas:[12,15],plotnik:[5,10,12],plt:7,plt_folseq:7,plt_ipa:7,plt_manner:7,plt_place:7,plt_preseg:7,plt_voic:7,plt_vowel:7,pltfile:7,point:[0,11],pointtier:11,possibl:17,praat:[10,12,15],praatpath:0,prec_p:7,preced:7,predict:[8,11],preprocess:2,preprocess_transcript:2,present:7,previou:17,problem:17,process:[0,2,17],process_measurement_lin:7,process_plt_fil:7,process_style_ti:0,program:[0,17],programm:[10,17],prompt:2,pronounc:[3,7],pronunci:3,pronunciation_dictionari:2,proper:17,prune:8,prunevowel:8,ps:7,publish:15,py:[0,12,16],pypi:15,python3:[15,16,17],python:[12,14,15],question:[12,14],quick:17,quickstart:[12,14],quot:2,rais:3,ran:17,random:6,re:17,reach:17,read:[0,2,3,7,11,12,17],read_dict:3,read_phoneset:3,read_transcript:0,read_transcription_fil:2,readabl:7,readm:17,receiv:17,recommend:17,redefin:7,ref:[],releas:17,reli:17,remain:17,remeasur:[5,10,12],renam:11,repai:17,replac:[2,17],replace_smart_quot:2,report:15,repredictf1f2:8,repres:[3,7,8,11],represent:3,requir:[7,12,14],research:17,restructur:17,review:17,rewrit:17,right:17,risk:17,riski:17,rmformantfil:4,role:[],run:17,s:[3,8,12,14],sai:17,same:[3,6],sampl:6,save:11,schedul:17,scipi:6,script:[0,10,16,17],search:[],second:[7,11],section:[10,14,17],secur:17,see:[15,17],segment:7,select:[2,8],semant:17,sensibl:17,sensit:17,separ:7,sequenc:7,seri:11,set:16,sex:7,should:[8,17],similar:17,simpli:17,sinc:17,singl:7,situat:17,size:17,slight:15,slightli:17,small:17,so:17,softwar:[12,14],some:[6,17],sometim:15,soon:17,sooner:17,sort:11,sort_interv:11,sound:17,soundfil:0,sox:15,spatial:6,speaker:[0,7,8],specif:17,specifi:17,split:7,split_stress_digit:7,sqrt:6,stabl:17,start:[11,17],state:7,stem:4,step:17,still:17,straight:2,stress:7,string:3,structur:17,style2plotnik:7,style:[0,3,7],style_ti:0,stylecod:7,subject:7,success:17,sum:6,sunset:17,support:[15,17],sure:[8,17],syllabl:7,syntax:17,system:[15,17],t:6,tab:2,taken:8,tape:17,techinc:17,technic:17,telsur:7,tempdir:0,termin:17,text:11,textgrid:[0,11,16,17],tgfile:0,than:[7,17],thei:15,them:[3,8,17],thi:[6,10,12,14,15,17],thing:17,those:17,through:17,thrown:6,tidyup:11,tier:[0,11],time:[11,17],titl:[],toctre:[],token:[7,8],top:17,trade:17,tran:7,transcript:[1,2,3,7,11,16,17],transcriptionfil:[16,17],transcriptprocessor:[0,1,10,12,17],translat:7,transript_fil:2,tri:8,trsfile:0,tsv:[16,17],two:[1,3,6],txt:[3,16,17],type:8,u:[6,9],udnerstand:17,understood:17,uniqu:7,unknown:[2,3,17],unknown_word:[16,17],unlik:17,unstress:7,until:17,updat:[12,14],upglid:9,upper:7,us:[0,6,10,12,14,15],usag:[10,12,17],user:[0,2,3,10,15,17],uw:9,v2:17,v3:17,v:[6,9],vagu:17,valu:[7,11],valueerror:6,vector:6,version:[3,12,14],voic:7,vowel:[5,7,8,10],vowelcov:8,vowelmean:8,vowelmeasur:[7,8],vowelsystem:7,vulner:17,wa:12,wai:[0,17],want:10,warn:[],wav:[16,17],wavfil:[0,2],we:17,websit:[12,17],were:17,what:[12,14],when:[6,17],where:[6,17],whether:[3,7,9],which:[8,17],who:[10,17],why:12,wide:17,word2fnam:7,word2tran:7,word:[2,3,7,16,17],work:[3,12,15],workflow:17,would:[10,15,17],wrapper:2,write:[2,3,7,8,11],write_dict:3,write_unknown_word:3,written:17,wrong:12,x:8,xmax:11,xmin:11,xrang:6,xxxxx:7,year:17,you:[10,12,15,17],your:[10,12,15,16],yourself:12},titles:["FAVE Aligner module","FAVE Align module","FAVE TranscriptProcessor module","FAVE CMU Dictionary module","FAVE esps module","FAVE Extract module","FAVE Mahalanobis module","FAVE Plotnik module","FAVE Remeasure module","FAVE Vowel module","Module documentation","FAVE Praat module","Forced Alignment and Vowel Extraction (FAVE)","<no title>","FAVE User Guides","Installing FAVE 2","Quickstart guide to using FAVE 2.0","What\u2019s new in version 2"],titleterms:{"0":16,"2":[15,16,17],"new":17,For:12,The:17,align:[0,1,12,17],ask:17,check:17,cmu:3,content:17,data:17,develop:12,dictionari:3,differ:17,document:[10,12],doe:17,esp:4,extract:[5,12,17],extractform:17,faavalign:17,fave:[0,1,2,3,4,5,6,7,8,9,11,12,14,15,16,17],forc:12,frequent:17,get:17,guid:[12,14,16],indic:[],instal:[15,17],mahalanobi:6,manag:15,modul:[0,1,2,3,4,5,6,7,8,9,10,11,17],old:17,other:15,packag:15,pip:15,plotnik:7,praat:11,py:17,python:17,question:17,quickstart:16,remeasur:8,requir:15,s:17,softwar:[15,17],transcriptprocessor:2,updat:17,us:[16,17],user:[12,14],version:17,vowel:[9,12,17],wa:17,what:17,why:17,work:17,wrong:17,your:17}}) \ No newline at end of file diff --git a/docs/_build/html/usage/installation.html b/docs/_build/html/usage/installation.html index 294074b..755049b 100644 --- a/docs/_build/html/usage/installation.html +++ b/docs/_build/html/usage/installation.html @@ -6,7 +6,7 @@ - Installing FAVE 2 — Forced Alignment and Vowel Extraction (FAVE) 2.0.1 documentation + Installing FAVE 2 — Forced Alignment and Vowel Extraction (FAVE) 2.0.2-dev documentation @@ -40,7 +40,7 @@

    Navigation

  • previous |
  • - + @@ -55,13 +55,11 @@

    Navigation

    Installing FAVE 2

    Required software

    -
    -
    FAVE sometimes requires other software libraries in order to work.
      +

      FAVE sometimes requires other software libraries in order to work.

      +
      • FAVE-align requires SoX and HTK.

      • FAVE-extract requires Praat.

      -
    -

    You will need to manually install these if they are not already installed on your computer.

    Warning

    @@ -76,7 +74,7 @@

    Install with PIP

    Other package managers

    -

    Work is ongoing to publish FAVE as a debian package, but no other package system is supported at the moment. If you would like to package FAVE for your system, please feel free to contribute!

    +

    Work is ongoing to publish FAVE as a debian package, but no other package system is supported at the moment. If you would like to package FAVE for your system, please feel free to contribute

    @@ -115,7 +113,7 @@

    Next topic

    This Page

    @@ -148,7 +146,7 @@

    Navigation

  • previous |
  • - + diff --git a/docs/_build/html/usage/quickstart.html b/docs/_build/html/usage/quickstart.html index 8c36a6e..0687481 100644 --- a/docs/_build/html/usage/quickstart.html +++ b/docs/_build/html/usage/quickstart.html @@ -6,7 +6,7 @@ - Quickstart guide to using FAVE 2.0 — Forced Alignment and Vowel Extraction (FAVE) 2.0.1 documentation + Quickstart guide to using FAVE 2.0 — Forced Alignment and Vowel Extraction (FAVE) 2.0.2-dev documentation @@ -40,7 +40,7 @@

    Navigation

  • previous |
  • - + @@ -53,37 +53,36 @@

    Navigation

    Quickstart guide to using FAVE 2.0

    -
    -
      +
      1. Install FAVE and its dependencies according to the directions.

      2. Download the FAAValign.py and extractFormants.py scripts.

      3. -
      4. Check your transcription for out-of-dictionary words

        +
      5. Check your transcription for out-of-dictionary words

      6. +
      Check for out-of-dictionary words
      python3 FAAValign.py --check unknown_words.txt AudioFile.wav TranscriptionFile.txt OutputAlignment.TextGrid
       
      - +
      1. Open unknown_words.txt and create a transcription for each word listed.

      2. -
      3. Align your audio and transcripts including your new transcriptions:

        +
      4. Align your audio and transcripts including your new transcriptions:

      5. +
      Begin forced alignment
      python3 FAAValign.py --import custom_dictionary.txt AudioFile.wav TranscriptionFile.txt OutputAlignment.TextGrid
       
      - -
    1. Extract formant data using the default settings:

      +
        +
      1. Extract formant data using the default settings:

      2. +
      Extract formant data
      python3 extractFormants.py AudioFile.wav Alignment.TextGrid OutputFileName.tsv
       
      -
    2. -
    -
    @@ -106,7 +105,7 @@

    Next topic

    This Page

    @@ -139,7 +138,7 @@

    Navigation

  • previous |
  • - + diff --git a/docs/code/align/aligner.rst b/docs/code/align/aligner.md similarity index 54% rename from docs/code/align/aligner.rst rename to docs/code/align/aligner.md index 5b4e893..befa0e9 100644 --- a/docs/code/align/aligner.rst +++ b/docs/code/align/aligner.md @@ -1,5 +1,6 @@ -FAVE Aligner module -=================== +# FAVE Aligner module +```{eval-rst} .. automodule:: fave.align.aligner :members: +``` diff --git a/docs/code/align/index.rst b/docs/code/align/index.md similarity index 60% rename from docs/code/align/index.rst rename to docs/code/align/index.md index 1d6255f..c60c483 100644 --- a/docs/code/align/index.rst +++ b/docs/code/align/index.md @@ -1,9 +1,9 @@ -FAVE Align module -================= +# FAVE Align module The FAVE Align module contains classes for the manipulation of transcripts and alignment objects. It contains two files. -.. toctree:: - aligner - transcriptprocessor +```{toctree} +aligner +transcriptprocessor +``` diff --git a/docs/code/align/transcriptprocessor.md b/docs/code/align/transcriptprocessor.md new file mode 100644 index 0000000..b82360f --- /dev/null +++ b/docs/code/align/transcriptprocessor.md @@ -0,0 +1,6 @@ +# FAVE TranscriptProcessor module + +```{eval-rst} +.. automodule:: fave.align.transcriptprocessor + :members: +``` diff --git a/docs/code/align/transcriptprocessor.rst b/docs/code/align/transcriptprocessor.rst deleted file mode 100644 index d5a26ec..0000000 --- a/docs/code/align/transcriptprocessor.rst +++ /dev/null @@ -1,5 +0,0 @@ -FAVE TranscriptProcessor module -=============================== - -.. automodule:: fave.align.transcriptprocessor - :members: diff --git a/docs/code/cmudictionary.md b/docs/code/cmudictionary.md new file mode 100644 index 0000000..19d1898 --- /dev/null +++ b/docs/code/cmudictionary.md @@ -0,0 +1,6 @@ +# FAVE CMU Dictionary module + +```{eval-rst} +.. automodule:: fave.cmudictionary + :members: +``` diff --git a/docs/code/cmudictionary.rst b/docs/code/cmudictionary.rst deleted file mode 100644 index ca74086..0000000 --- a/docs/code/cmudictionary.rst +++ /dev/null @@ -1,5 +0,0 @@ -FAVE CMU Dictionary module -========================== - -.. automodule:: fave.cmudictionary - :members: diff --git a/docs/code/extract/esps.rst b/docs/code/extract/esps.md similarity index 51% rename from docs/code/extract/esps.rst rename to docs/code/extract/esps.md index fb38b95..c54a1b7 100644 --- a/docs/code/extract/esps.rst +++ b/docs/code/extract/esps.md @@ -1,5 +1,6 @@ -FAVE esps module -========================== +# FAVE esps module +```{eval-rst} .. automodule:: fave.extract.esps :members: +``` diff --git a/docs/code/extract/index.rst b/docs/code/extract/index.md similarity index 61% rename from docs/code/extract/index.rst rename to docs/code/extract/index.md index af27ecd..10f3ffe 100644 --- a/docs/code/extract/index.rst +++ b/docs/code/extract/index.md @@ -1,12 +1,12 @@ -FAVE Extract module -=================== +# FAVE Extract module The FAVE Extract module contains functions and classes for extracting acoustic measurements of vowels from aligned audio. It contains a number of files. -.. toctree:: - esps - mahalanobis - plotnik - remeasure - vowel +```{toctree} +esps +mahalanobis +plotnik +remeasure +vowel +``` diff --git a/docs/code/extract/mahalanobis.rst b/docs/code/extract/mahalanobis.md similarity index 52% rename from docs/code/extract/mahalanobis.rst rename to docs/code/extract/mahalanobis.md index 5ebc960..b37aa56 100644 --- a/docs/code/extract/mahalanobis.rst +++ b/docs/code/extract/mahalanobis.md @@ -1,5 +1,6 @@ -FAVE Mahalanobis module -======================= +# FAVE Mahalanobis module +```{eval-rst} .. automodule:: fave.extract.mahalanobis :members: +``` diff --git a/docs/code/extract/plotnik.rst b/docs/code/extract/plotnik.md similarity index 55% rename from docs/code/extract/plotnik.rst rename to docs/code/extract/plotnik.md index 2e58806..1b8d125 100644 --- a/docs/code/extract/plotnik.rst +++ b/docs/code/extract/plotnik.md @@ -1,5 +1,6 @@ -FAVE Plotnik module -=================== +# FAVE Plotnik module +```{eval-rst} .. automodule:: fave.extract.plotnik :members: +``` diff --git a/docs/code/extract/remeasure.rst b/docs/code/extract/remeasure.md similarity index 51% rename from docs/code/extract/remeasure.rst rename to docs/code/extract/remeasure.md index 716c31f..b95fe91 100644 --- a/docs/code/extract/remeasure.rst +++ b/docs/code/extract/remeasure.md @@ -1,5 +1,6 @@ -FAVE Remeasure module -========================== +# FAVE Remeasure module +```{eval-rst} .. automodule:: fave.extract.remeasure :members: +``` diff --git a/docs/code/extract/vowel.rst b/docs/code/extract/vowel.md similarity index 51% rename from docs/code/extract/vowel.rst rename to docs/code/extract/vowel.md index 500cee6..49e4601 100644 --- a/docs/code/extract/vowel.rst +++ b/docs/code/extract/vowel.md @@ -1,5 +1,6 @@ -FAVE Vowel module -========================== +# FAVE Vowel module +```{eval-rst} .. automodule:: fave.extract.vowel :members: +``` diff --git a/docs/code/index.md b/docs/code/index.md new file mode 100644 index 0000000..80a0b79 --- /dev/null +++ b/docs/code/index.md @@ -0,0 +1,10 @@ +# Module documentation + +This section documents the internals of FAVE. If you are a programmer who wants to use FAVE as a module in your scripts or would like to contribute to FAVE as a developer, these documents will be useful to you. End users will find the {doc}`usage <../usage/index>` section more helpful. + +```{toctree} +fave.align +fave.extract +fave.cmudictionary +fave.praat +``` diff --git a/docs/code/index.rst b/docs/code/index.rst deleted file mode 100644 index 0354d5a..0000000 --- a/docs/code/index.rst +++ /dev/null @@ -1,10 +0,0 @@ -Module documentation -==================== - -This section documents the internals of FAVE. If you are a programmer who wants to use FAVE as a module in your scripts or would like to contribute to FAVE as a developer, these documents will be useful to you. End users will find the :doc:`usage <../usage/index>` section more helpful. - -.. toctree:: - fave.align - fave.extract - fave.cmudictionary - fave.praat diff --git a/docs/code/praat.rst b/docs/code/praat.md similarity index 51% rename from docs/code/praat.rst rename to docs/code/praat.md index 8cb3b87..069e77c 100644 --- a/docs/code/praat.rst +++ b/docs/code/praat.md @@ -1,5 +1,6 @@ -FAVE Praat module -================= +# FAVE Praat module +```{eval-rst} .. automodule:: fave.praat :members: +``` diff --git a/docs/conf.py b/docs/conf.py index 9fd2a62..255e028 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -57,7 +57,7 @@ # Add any Sphinx extension module names here, as strings. They can be # extensions coming with Sphinx (named 'sphinx.ext.*') or your custom # ones. -extensions = ['sphinx.ext.autodoc','sphinx.ext.napoleon'] +extensions = ['sphinx.ext.autodoc','sphinx.ext.napoleon', "myst_parser"] # Add any paths that contain templates here, relative to this directory. templates_path = ['_templates'] diff --git a/docs/index.md b/docs/index.md new file mode 100644 index 0000000..98de552 --- /dev/null +++ b/docs/index.md @@ -0,0 +1,29 @@ +# Forced Alignment and Vowel Extraction (FAVE) + +This website documents the FAVE software, version 2. + +```{warning} +If you have used FAVE before, please read +[usage/whats-new](usage/whats-new.rst) to familiarize yourself +with the differences between the current and legacy versions of FAVE. +``` + + +## Guides and documentation + +### For Users + +```{toctree} maxdepth: 2 +usage/index +``` + +### For Developers + +```{toctree} maxdepth: 2 +code/index +``` + + + diff --git a/docs/index.rst b/docs/index.rst deleted file mode 100644 index c4fe4d0..0000000 --- a/docs/index.rst +++ /dev/null @@ -1,27 +0,0 @@ -.. Forced Alignment and Vowel Extraction documentation master file, created by - sphinx-quickstart on Thu May 14 23:03:08 2020. - You can adapt this file completely to your liking, but it should at least - contain the root `toctree` directive. - -Forced Alignment and Vowel Extraction (FAVE) -============================================ - -This website documents the FAVE software, version 2. - -.. warning:: - If you have used FAVE before, please read :doc:`usage/whats-new` to familiarize yourself with the differences between the current and legacy versions of FAVE. - -Guides and documentation ------------------------- -.. toctree:: - :maxdepth: 2 - - usage/index - code/index - -Indices -------- - -* :ref:`genindex` -* :ref:`modindex` -* :ref:`search` diff --git a/docs/requirements.txt b/docs/requirements.txt index 27ef656..da3fba6 100644 --- a/docs/requirements.txt +++ b/docs/requirements.txt @@ -1,2 +1,3 @@ jinja2==3.0.0 sphinx-pyproject==0.1.0 +myst-parser~=0.18 diff --git a/docs/usage/cli_startup/cli_setup.md b/docs/usage/cli_startup/cli_setup.md new file mode 100644 index 0000000..e69de29 diff --git a/docs/usage/index.md b/docs/usage/index.md new file mode 100644 index 0000000..b348fb2 --- /dev/null +++ b/docs/usage/index.md @@ -0,0 +1,11 @@ +# FAVE User Guides + +This section contains user guides for learning how to align and extract data with FAVE. + +```{toctree} +:maxdepth: 2 + +whats-new +installation +quickstart +``` diff --git a/docs/usage/index.rst b/docs/usage/index.rst deleted file mode 100644 index 4d9f1c9..0000000 --- a/docs/usage/index.rst +++ /dev/null @@ -1,11 +0,0 @@ -FAVE User Guides -================ - -This section contains user guides for learning how to align and extract data with FAVE. - -.. toctree:: - :maxdepth: 2 - - whats-new - installation - quickstart diff --git a/docs/usage/installation.md b/docs/usage/installation.md new file mode 100644 index 0000000..4cd5b39 --- /dev/null +++ b/docs/usage/installation.md @@ -0,0 +1,27 @@ +# Installing FAVE 2 + +## Required software + +FAVE sometimes requires other software libraries in order to work. + + - FAVE-align requires [SoX](http://sox.sourceforge.net/) and [HTK](https://htk.eng.cam.ac.uk/). + - FAVE-extract requires [Praat](https://www.fon.hum.uva.nl/praat/). + +You will need to manually install these if they are not already installed on your computer. + +```{warning} +Mac users: HTK might need slight modification before it works. See [this bug report](https://github.com/JoFrhwld/FAVE/issues/48). +``` + + +## Install with PIP + +FAVE is available on the Python Package Index (PyPI) as `fave`. You can install it using: + +```console +python3 -m pip install fave +``` + +### Other package managers + +Work is ongoing to publish FAVE as a debian package, but no other package system is supported at the moment. If you would like to package FAVE for your system, please feel free to [contribute](../contributing) diff --git a/docs/usage/installation.rst b/docs/usage/installation.rst deleted file mode 100644 index bc8ebdc..0000000 --- a/docs/usage/installation.rst +++ /dev/null @@ -1,27 +0,0 @@ -Installing FAVE 2 -================= - -Required software ------------------ - -FAVE sometimes requires other software libraries in order to work. - * FAVE-align requires `SoX `_ and `HTK `_. - * FAVE-extract requires `Praat `_. - -You will need to manually install these if they are not already installed on your computer. - -.. warning:: - Mac users: HTK might need slight modification before it works. See `this bug report `_. - -Install with PIP ----------------- - -FAVE is available on the Python Package Index (PyPI) as ``fave``. You can install it using: - -.. code-block:: console - - python3 -m pip install fave - -Other package managers -^^^^^^^^^^^^^^^^^^^^^^ -Work is ongoing to publish FAVE as a debian package, but no other package system is supported at the moment. If you would like to package FAVE for your system, please feel free to :doc:`contribute <../contributing>`! diff --git a/docs/usage/quickstart.md b/docs/usage/quickstart.md new file mode 100644 index 0000000..8ae76dc --- /dev/null +++ b/docs/usage/quickstart.md @@ -0,0 +1,31 @@ +# Quickstart guide to using FAVE 2.0 + +1. Install FAVE and its dependencies according to {doc}`the directions `. + +2. Download the `FAAValign.py` and `extractFormants.py` scripts. + +3. Check your transcription for out-of-dictionary words + +```{code-block} console +:caption: Check for out-of-dictionary words + +python3 FAAValign.py --check unknown_words.txt AudioFile.wav TranscriptionFile.txt OutputAlignment.TextGrid +``` + +4. Open `unknown_words.txt` and create a transcription for each word listed. + +5. Align your audio and transcripts including your new transcriptions: + +```{code-block} console +:caption: Begin forced alignment + +python3 FAAValign.py --import custom_dictionary.txt AudioFile.wav TranscriptionFile.txt OutputAlignment.TextGrid +``` + +6. Extract formant data using the default settings: + +```{code-block} console +:caption: Extract formant data + +python3 extractFormants.py AudioFile.wav Alignment.TextGrid OutputFileName.tsv +``` diff --git a/docs/usage/quickstart.rst b/docs/usage/quickstart.rst deleted file mode 100644 index c9fdb1b..0000000 --- a/docs/usage/quickstart.rst +++ /dev/null @@ -1,24 +0,0 @@ -Quickstart guide to using FAVE 2.0 -================================== - - #. Install FAVE and its dependencies according to :doc:`the directions `. - #. Download the ``FAAValign.py`` and ``extractFormants.py`` scripts. - #. Check your transcription for out-of-dictionary words - - .. code-block:: console - :caption: Check for out-of-dictionary words - - python3 FAAValign.py --check unknown_words.txt AudioFile.wav TranscriptionFile.txt OutputAlignment.TextGrid - #. Open ``unknown_words.txt`` and create a transcription for each word listed. - #. Align your audio and transcripts including your new transcriptions: - - .. code-block:: console - :caption: Begin forced alignment - - python3 FAAValign.py --import custom_dictionary.txt AudioFile.wav TranscriptionFile.txt OutputAlignment.TextGrid - #. Extract formant data using the default settings: - - .. code-block:: console - :caption: Extract formant data - - python3 extractFormants.py AudioFile.wav Alignment.TextGrid OutputFileName.tsv diff --git a/docs/usage/whats-new.md b/docs/usage/whats-new.md new file mode 100644 index 0000000..c9aa071 --- /dev/null +++ b/docs/usage/whats-new.md @@ -0,0 +1,149 @@ +# What's new in version 2 + +Version 2.0.0 of FAVE was released February 10, 2022 replacing 1.3.1 which was released in October 2020. Like many software packages, FAVE follows the [semantic versioning](https://semver.org/) system, and the change from version 1 to version 2 means that this update introduces **changes that will break existing workflows**. The maintainers have made every attempt to keep the interface as similar to version 1 as possible, but long-time users will need to review and update their internal documentation and software to account for these new changes. To help this process, the FAVE maintainers have written this migration guide. + +```{contents} +``` + +## Updating software + +### Check your python version + +```{note} +We say FAVE runs on Python 3, but that's a little vague. Python 3.0 is 14 years old and like Python 2 no longer receives security updates. In order to run FAVE 2 you need at least Python 3.8, and we recommend using the latest stable version of Python. +``` + +You can check your current version of python using: + +```{code-block} console +:caption: Check your python version + +python --version +``` + +If that command outputs a version 3.8 or higher (so 3.9, 3.10, etc.) then you have the proper python version installed. + +If you get a version like 2.7, you should see if you *also* have Python 3 on your system: + +```{code-block} console +:caption: Check Python 3 specifically + +python3 --version +``` + +If that command outputs a version greater than 3.8, then you have a proper version. If it outputs a version *less* than that, like 3.5 or 3.7, you will need to install a newer version of python. + +If the command fails, then you do not have any python 3 version installed and you will need to install a compatible version. + +```{note} +You can download the latest python version from [the Python Software Foundation website](https://www.python.org/downloads/). Once downloaded, install as instructed, and then go through the above steps again to check that the installation was successful. +``` + +### Installing FAVE + +Install FAVE using Python's built-in software package manager pip: + +```{code-block} console +:caption: Install FAVE using pip + +python3 -m pip install fave +``` + +```{note} +Older versions of FAVE could simply be downloaded and ran. Unlike previous versions FAVE 2 needs to be *installed*. +``` + +## Aligning and extracting with FAVE 2 + +```{warning} +The argument order and behavior has changed in version 2. Double check the documentation to make sure that you're using the right commands. +``` + +FAVE can still be run as a command-line program using `FAAValign.py` and `extractFormants.py`, but the location and syntax for these files have changed slightly. These scripts come with help documentation. In a terminal, navigate to the FAVE folder (containing files like LICENSE and README) and run one of the following commands for details on how to run the script. + +```{code-block} console +:caption: Usage help from command line + +python3 fave/FAAValign.py --help +python3 fave/extractformants.py --help +``` + +```{note} +Development is ongoing to have these scripts installed system wide, but as of 2.0.1, you may still need to download them and run them directly. +``` + +### Aligning using FAAValign.py + +Before aligning, you should check the transcription for out-of-dictionary words. For this you use the `-c` or `--check` flag, followed by the name of a file where any unknown words should be listed. + +```{code-block} console +:caption: Check for unknown transcriptions + +python3 fave/FAAValign.py --check unknown_words.txt AudioFile.wav TranscriptionFile.txt OutputAlignment.TextGrid +``` + +You can then create your own transcriptions for these words, and include them in the aligning process using the `-i` or `-import` flag. + +```{code-block} console +:caption: Include custom dictionary file + +python3 fave/FAAValign.py --import custom_dictionary.txt AudioFile.wav TranscriptionFile.txt OutputAlignment.TextGrid +``` + +```{note} +It is best to *always* specify the sound file, transcript file, and output file. + +If the transcript file or output file are omitted, FAVE will do its best to assume a sensible name based on the sound file name, but this may not always work. + +If you run into errors, try specifying the transcript and output file names. +``` + +### Getting vowel data using extractFormants.py + +Formant data for vowels can be extracted using: + +```{code-block} console +:caption: Extract formant data + +python3 fave/extractFormants.py AudioFile.wav Alignment.TextGrid OutputFileName.tsv +``` + +If you used the Montral Forced Aligner to align your transcript, you should include the `--mfa` flag when extracting formant data. + +```{code-block} console +:caption: Extract data from MFA alignment + +python3 fave/extractFormants.py --mfa AudioFile.wav Alignment.TextGrid OutPutFileName.tsv +``` + +```{note} +The formant extraction process is *highly* customizable and these can be configured from the command line using flags. To see a list of all the configuration options, run the script with the `-h` or `--help` flags. +``` + +## The FAVE Python module + +```{note} +The documentation of FAVE's API is in {doc}`the code documentation section <../code/index>`. +``` + +New to version 2 is the ability to `import` FAVE as a python module. This allows you to use FAVE in custom scripts for things like batch alignment, extraction, or customizing the behavior during alignment. + +```{code-block} python +:caption: Example of loading a FAVE module + +from fave.align import TranscriptProcessor +``` + +## Frequently Asked Questions + +### What was wrong with the old FAVE? + +FAVE is written in the Python programming language. Python v2 was released in 2000 and was the langauge FAVE was written for. In 2006 development began on Python v3 which was released in 2008. Python 2 was scheduled to reach end-of-life in 2015, 7 years after the release of Python 3. In 2014, that sunset date was extended to 2020, and on January 1, 2020, 12 years after the release of Python 3, the developers announced that Python 2 was no longer supported. It would not receive bug fixes, and any security vulnerabilities would not be fixed. All users who had not already migrated to Python 3 were instructed to do so as soon as possible. As of August 2022, Python 3.10.4 is the current stable version. You can read [the full history from the Python Software Foundation](https://www.python.org/doc/sunset-python-2/). + +FAVE, being written for Python 2, was not compatible with the latest versions of Python. [Continuing to use Python 2 increases security risks](https://www.darkreading.com/vulnerabilities-threats/continued-use-of-python-2-will-heighten-security-risks) and it would be irresponsible to ask researchers holding sensitive personal data to introduce a security risk into their systems when other options are available. In 2020, maintainers Josef Freuhwald and Christian Brickhouse began rewriting FAVE to be compatible with Python 3. This migration was completed and released as FAVE 2.0.0 in February 2022. + +### Why does the new version work differently? + +FAVE is old software, and as software ages it accumulates changes that make it more complex. Bandaids, duct tape, patches, and other fixes are applied as needed to make sure the code keeps running for those who rely on it. Over time, the people who introduced and understood why and how these quick fixes worked leave, and often the knowledge leaves with them. What remains is a large, complex program that is hard to fix and even harder to add new features to. Among software programmers, this is known as [techincal debt](https://en.wikipedia.org/wiki/Technical_debt). FAVE was not migrated to Python 3 sooner because doing so was risky. The size and complexity of the program made it likely that even small changes might cause problems in other areas, and so the software was left as-is until the deprecation of Python 2 forced migration. + +To avoid this situation in the future, the migration to Python 3 also included changes which made the code easier to maintain. Since maintainers would be reading through all of the code to make sure it worked with Python 3, it was a good time to start repaying technical debt. The code was restructured so that it could easily be imported into python scripts as a module, and new workflows were created to allow for easier installation of the program and its dependencies. These improvements came with trade-offs, and in order to structure the code in a way that made it easy to udnerstand, maintain, and build new features on top of, we needed to make some changes to the previous interface. diff --git a/docs/usage/whats-new.rst b/docs/usage/whats-new.rst deleted file mode 100644 index 19c0d1d..0000000 --- a/docs/usage/whats-new.rst +++ /dev/null @@ -1,135 +0,0 @@ -What's new in version 2 -======================= - -Version 2.0.0 of FAVE was released February 10, 2022 replacing 1.3.1 which was released in October 2020. Like many software packages, FAVE follows the `semantic versioning `_ system, and the change from version 1 to version 2 means that this update introduces **changes that will break existing workflows**. The maintainers have made every attempt to keep the interface as similar to version 1 as possible, but long-time users will need to review and update their internal documentation and software to account for these new changes. To help this process, the FAVE maintainers have written this migration guide. - -.. contents:: - -Updating software ------------------ - -Check your python version -^^^^^^^^^^^^^^^^^^^^^^^^^ -.. note:: - We say FAVE runs on Python 3, but that's a little vague. Python 3.0 is 14 years old and like Python 2 no longer receives security updates. In order to run FAVE 2 you need at least Python 3.8, and we recommend using the latest stable version of Python. - -You can check your current version of python using: - -.. code-block:: console - :caption: Check your python version - - python --version - -If that command outputs a version 3.8 or higher (so 3.9, 3.10, etc.) then you have the proper python version installed. - -If you get a version like 2.7, you should see if you *also* have Python 3 on your system: - -.. code-block:: console - :caption: Check Python 3 specifically - - python3 --version - -If that command outputs a version greater than 3.8, then you have a proper version. If it outputs a version *less* than that, like 3.5 or 3.7, you will need to install a newer version of python. - -If the command fails, then you do not have any python 3 version installed and you will need to install a compatible version. - -.. note:: - You can download the latest python version from `the Python Software Foundation website `_. Once downloaded, install as instructed, and then go through the above steps again to check that the installation was successful. - -Installing FAVE -^^^^^^^^^^^^^^^ -Install FAVE using Python's built-in software package manager pip: - -.. code-block:: console - :caption: Install FAVE using pip - - python3 -m pip install fave - -.. note:: - Older versions of FAVE could simply be downloaded and ran. Unlike previous versions FAVE 2 needs to be *installed*. - -Aligning and extracting with FAVE 2 ------------------------------------ -.. warning:: - The argument order and behavior has changed in version 2. Double check the documentation to make sure that you're using the right commands. - -FAVE can still be run as a command-line program using ``FAAValign.py`` and ``extractFormants.py``, but the location and syntax for these files have changed slightly. These scripts come with help documentation. In a terminal, navigate to the FAVE folder (containing files like LICENSE and README) and run one of the following commands for details on how to run the script. - -.. code-block:: console - :caption: Usage help from command line - - python3 fave/FAAValign.py --help - python3 fave/extractformants.py --help - -.. note:: - Development is ongoing to have these scripts installed system wide, but as of 2.0.1, you may still need to download them and run them directly. - -Aligning using FAAValign.py -^^^^^^^^^^^^^^^^^^^^^^^^^^^ -Before aligning, you should check the transcription for out-of-dictionary words. For this you use the ``-c`` or ``--check`` flag, followed by the name of a file where any unknown words should be listed. - -.. code-block:: console - :caption: Check for unknown transcriptions - - python3 fave/FAAValign.py --check unknown_words.txt AudioFile.wav TranscriptionFile.txt OutputAlignment.TextGrid - -You can then create your own transcriptions for these words, and include them in the aligning process using the ``-i`` or ``-import`` flag. - -.. code-block:: console - :caption: Include custom dictionary file - - python3 fave/FAAValign.py --import custom_dictionary.txt AudioFile.wav TranscriptionFile.txt OutputAlignment.TextGrid - -.. note:: - It is best to *always* specify the sound file, transcript file, and output file. - - If the transcript file or output file are omitted, FAVE will do its best to assume a sensible name based on the sound file name, but this may not always work. - - If you run into errors, try specifying the transcript and output file names. - -Getting vowel data using extractFormants.py -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -Formant data for vowels can be extracted using: - -.. code-block:: console - :caption: Extract formant data - - python3 fave/extractFormants.py AudioFile.wav Alignment.TextGrid OutputFileName.tsv - -If you used the Montral Forced Aligner to align your transcript, you should include the ``--mfa`` flag when extracting formant data. - -.. code-block:: console - :caption: Extract data from MFA alignment - - python3 fave/extractFormants.py --mfa AudioFile.wav Alignment.TextGrid OutPutFileName.tsv - -.. note:: - The formant extraction process is *highly* customizable and these can be configured from the command line using flags. To see a list of all the configuration options, run the script with the ``-h`` or ``--help`` flags. - -The FAVE Python module ----------------------- - -.. note:: - The documentation of FAVE's API is in :doc:`the code documentation section <../code/index>`. - -New to version 2 is the ability to ``import`` FAVE as a python module. This allows you to use FAVE in custom scripts for things like batch alignment, extraction, or customizing the behavior during alignment. - -.. code-block:: python - :caption: Example of loading a FAVE module - - from fave.align import TranscriptProcessor - -Frequently Asked Questions --------------------------- - -What was wrong with the old FAVE? -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -FAVE is written in the Python programming language. Python v2 was released in 2000 and was the langauge FAVE was written for. In 2006 development began on Python v3 which was released in 2008. Python 2 was scheduled to reach end-of-life in 2015, 7 years after the release of Python 3. In 2014, that sunset date was extended to 2020, and on January 1, 2020, 12 years after the release of Python 3, the developers announced that Python 2 was no longer supported. It would not receive bug fixes, and any security vulnerabilities would not be fixed. All users who had not already migrated to Python 3 were instructed to do so as soon as possible. As of August 2022, Python 3.10.4 is the current stable version. You can read `the full history from the Python Software Foundation `_. - -FAVE, being written for Python 2, was not compatible with the latest versions of Python. `Continuing to use Python 2 increases security risks `_ and it would be irresponsible to ask researchers holding sensitive personal data to introduce a security risk into their systems when other options are available. In 2020, maintainers Josef Freuhwald and Christian Brickhouse began rewriting FAVE to be compatible with Python 3. This migration was completed and released as FAVE 2.0.0 in February 2022. - -Why does the new version work differently? -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -FAVE is old software, and as software ages it accumulates changes that make it more complex. Bandaids, duct tape, patches, and other fixes are applied as needed to make sure the code keeps running for those who rely on it. Over time, the people who introduced and understood why and how these quick fixes worked leave, and often the knowledge leaves with them. What remains is a large, complex program that is hard to fix and even harder to add new features to. Among software programmers, this is known as `techincal debt `_. FAVE was not migrated to Python 3 sooner because doing so was risky. The size and complexity of the program made it likely that even small changes might cause problems in other areas, and so the software was left as-is until the deprecation of Python 2 forced migration. - -To avoid this situation in the future, the migration to Python 3 also included changes which made the code easier to maintain. Since maintainers would be reading through all of the code to make sure it worked with Python 3, it was a good time to start repaying technical debt. The code was restructured so that it could easily be imported into python scripts as a module, and new workflows were created to allow for easier installation of the program and its dependencies. These improvements came with trade-offs, and in order to structure the code in a way that made it easy to udnerstand, maintain, and build new features on top of, we needed to make some changes to the previous interface. diff --git a/poetry.lock b/poetry.lock index 212709a..c2a50ea 100644 --- a/poetry.lock +++ b/poetry.lock @@ -229,6 +229,36 @@ typing-extensions = ">=3.7.4.1" all = ["pytz (>=2019.1)"] dates = ["pytz (>=2019.1)"] +[[package]] +name = "exceptiongroup" +version = "1.2.0" +description = "Backport of PEP 654 (exception groups)" +optional = false +python-versions = ">=3.7" +files = [ + {file = "exceptiongroup-1.2.0-py3-none-any.whl", hash = "sha256:4bfd3996ac73b41e9b9628b04e079f193850720ea5945fc96a08633c66912f14"}, + {file = "exceptiongroup-1.2.0.tar.gz", hash = "sha256:91f5c769735f051a4290d52edd0858999b57e5876e9f85937691bd4c9fa3ed68"}, +] + +[package.extras] +test = ["pytest (>=6)"] + +[[package]] +name = "flake8" +version = "5.0.4" +description = "the modular source code checker: pep8 pyflakes and co" +optional = false +python-versions = ">=3.6.1" +files = [ + {file = "flake8-5.0.4-py2.py3-none-any.whl", hash = "sha256:7a1cf6b73744f5806ab95e526f6f0d8c01c66d7bbe349562d22dfca20610b248"}, + {file = "flake8-5.0.4.tar.gz", hash = "sha256:6fbe320aad8d6b95cec8b8e47bc933004678dc63095be98528b7bdd2a9f510db"}, +] + +[package.dependencies] +mccabe = ">=0.7.0,<0.8.0" +pycodestyle = ">=2.9.0,<2.10.0" +pyflakes = ">=2.5.0,<2.6.0" + [[package]] name = "idna" version = "3.6" @@ -270,6 +300,17 @@ docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.link perf = ["ipython"] testing = ["flufl.flake8", "importlib-resources (>=1.3)", "packaging", "pyfakefs", "pytest (>=6)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-mypy", "pytest-perf (>=0.9.2)", "pytest-ruff (>=0.2.1)"] +[[package]] +name = "iniconfig" +version = "2.0.0" +description = "brain-dead simple config-ini parsing" +optional = false +python-versions = ">=3.7" +files = [ + {file = "iniconfig-2.0.0-py3-none-any.whl", hash = "sha256:b6a85871a79d2e3b22d2d1b94ac2824226a63c6b741c88f7ae975f18b6778374"}, + {file = "iniconfig-2.0.0.tar.gz", hash = "sha256:2d91e135bf72d31a410b17c16da610a82cb55f6b0477d1a902134b24a455b8b3"}, +] + [[package]] name = "isort" version = "5.13.2" @@ -347,6 +388,30 @@ files = [ {file = "lazy_object_proxy-1.10.0-pp310.pp311.pp312.pp38.pp39-none-any.whl", hash = "sha256:80fa48bd89c8f2f456fc0765c11c23bf5af827febacd2f523ca5bc1893fcc09d"}, ] +[[package]] +name = "markdown-it-py" +version = "3.0.0" +description = "Python port of markdown-it. Markdown parsing, done right!" +optional = false +python-versions = ">=3.8" +files = [ + {file = "markdown-it-py-3.0.0.tar.gz", hash = "sha256:e3f60a94fa066dc52ec76661e37c851cb232d92f9886b15cb560aaada2df8feb"}, + {file = "markdown_it_py-3.0.0-py3-none-any.whl", hash = "sha256:355216845c60bd96232cd8d8c40e8f9765cc86f46880e43a8fd22dc1a1a8cab1"}, +] + +[package.dependencies] +mdurl = ">=0.1,<1.0" + +[package.extras] +benchmarking = ["psutil", "pytest", "pytest-benchmark"] +code-style = ["pre-commit (>=3.0,<4.0)"] +compare = ["commonmark (>=0.9,<1.0)", "markdown (>=3.4,<4.0)", "mistletoe (>=1.0,<2.0)", "mistune (>=2.0,<3.0)", "panflute (>=2.3,<3.0)"] +linkify = ["linkify-it-py (>=1,<3)"] +plugins = ["mdit-py-plugins"] +profiling = ["gprof2dot"] +rtd = ["jupyter_sphinx", "mdit-py-plugins", "myst-parser", "pyyaml", "sphinx", "sphinx-copybutton", "sphinx-design", "sphinx_book_theme"] +testing = ["coverage", "pytest", "pytest-cov", "pytest-regressions"] + [[package]] name = "markupsafe" version = "2.1.5" @@ -427,6 +492,62 @@ files = [ {file = "mccabe-0.7.0.tar.gz", hash = "sha256:348e0240c33b60bbdf4e523192ef919f28cb2c3d7d5c7794f74009290f236325"}, ] +[[package]] +name = "mdit-py-plugins" +version = "0.4.0" +description = "Collection of plugins for markdown-it-py" +optional = false +python-versions = ">=3.8" +files = [ + {file = "mdit_py_plugins-0.4.0-py3-none-any.whl", hash = "sha256:b51b3bb70691f57f974e257e367107857a93b36f322a9e6d44ca5bf28ec2def9"}, + {file = "mdit_py_plugins-0.4.0.tar.gz", hash = "sha256:d8ab27e9aed6c38aa716819fedfde15ca275715955f8a185a8e1cf90fb1d2c1b"}, +] + +[package.dependencies] +markdown-it-py = ">=1.0.0,<4.0.0" + +[package.extras] +code-style = ["pre-commit"] +rtd = ["myst-parser", "sphinx-book-theme"] +testing = ["coverage", "pytest", "pytest-cov", "pytest-regressions"] + +[[package]] +name = "mdurl" +version = "0.1.2" +description = "Markdown URL utilities" +optional = false +python-versions = ">=3.7" +files = [ + {file = "mdurl-0.1.2-py3-none-any.whl", hash = "sha256:84008a41e51615a49fc9966191ff91509e3c40b939176e643fd50a5c2196b8f8"}, + {file = "mdurl-0.1.2.tar.gz", hash = "sha256:bb413d29f5eea38f31dd4754dd7377d4465116fb207585f97bf925588687c1ba"}, +] + +[[package]] +name = "myst-parser" +version = "2.0.0" +description = "An extended [CommonMark](https://spec.commonmark.org/) compliant parser," +optional = false +python-versions = ">=3.8" +files = [ + {file = "myst_parser-2.0.0-py3-none-any.whl", hash = "sha256:7c36344ae39c8e740dad7fdabf5aa6fc4897a813083c6cc9990044eb93656b14"}, + {file = "myst_parser-2.0.0.tar.gz", hash = "sha256:ea929a67a6a0b1683cdbe19b8d2e724cd7643f8aa3e7bb18dd65beac3483bead"}, +] + +[package.dependencies] +docutils = ">=0.16,<0.21" +jinja2 = "*" +markdown-it-py = ">=3.0,<4.0" +mdit-py-plugins = ">=0.4,<1.0" +pyyaml = "*" +sphinx = ">=6,<8" + +[package.extras] +code-style = ["pre-commit (>=3.0,<4.0)"] +linkify = ["linkify-it-py (>=2.0,<3.0)"] +rtd = ["ipython", "pydata-sphinx-theme (==v0.13.0rc4)", "sphinx-autodoc2 (>=0.4.2,<0.5.0)", "sphinx-book-theme (==1.0.0rc2)", "sphinx-copybutton", "sphinx-design2", "sphinx-pyscript", "sphinx-tippy (>=0.3.1)", "sphinx-togglebutton", "sphinxext-opengraph (>=0.8.2,<0.9.0)", "sphinxext-rediraffe (>=0.2.7,<0.3.0)"] +testing = ["beautifulsoup4", "coverage[toml]", "pytest (>=7,<8)", "pytest-cov", "pytest-param-files (>=0.3.4,<0.4.0)", "pytest-regressions", "sphinx-pytest"] +testing-docutils = ["pygments", "pytest (>=7,<8)", "pytest-param-files (>=0.3.4,<0.4.0)"] + [[package]] name = "natsort" version = "8.4.0" @@ -505,6 +626,43 @@ files = [ docs = ["furo (>=2023.9.10)", "proselint (>=0.13)", "sphinx (>=7.2.6)", "sphinx-autodoc-typehints (>=1.25.2)"] test = ["appdirs (==1.4.4)", "covdefaults (>=2.3)", "pytest (>=7.4.3)", "pytest-cov (>=4.1)", "pytest-mock (>=3.12)"] +[[package]] +name = "pluggy" +version = "1.4.0" +description = "plugin and hook calling mechanisms for python" +optional = false +python-versions = ">=3.8" +files = [ + {file = "pluggy-1.4.0-py3-none-any.whl", hash = "sha256:7db9f7b503d67d1c5b95f59773ebb58a8c1c288129a88665838012cfb07b8981"}, + {file = "pluggy-1.4.0.tar.gz", hash = "sha256:8c85c2876142a764e5b7548e7d9a0e0ddb46f5185161049a79b7e974454223be"}, +] + +[package.extras] +dev = ["pre-commit", "tox"] +testing = ["pytest", "pytest-benchmark"] + +[[package]] +name = "pycodestyle" +version = "2.9.1" +description = "Python style guide checker" +optional = false +python-versions = ">=3.6" +files = [ + {file = "pycodestyle-2.9.1-py2.py3-none-any.whl", hash = "sha256:d1735fc58b418fd7c5f658d28d943854f8a849b01a5d0a1e6f3f3fdd0166804b"}, + {file = "pycodestyle-2.9.1.tar.gz", hash = "sha256:2c9607871d58c76354b697b42f5d57e1ada7d261c261efac224b664affdc5785"}, +] + +[[package]] +name = "pyflakes" +version = "2.5.0" +description = "passive checker of Python programs" +optional = false +python-versions = ">=3.6" +files = [ + {file = "pyflakes-2.5.0-py2.py3-none-any.whl", hash = "sha256:4579f67d887f804e67edb544428f264b7b24f435b263c4614f384135cea553d2"}, + {file = "pyflakes-2.5.0.tar.gz", hash = "sha256:491feb020dca48ccc562a8c0cbe8df07ee13078df59813b83959cbdada312ea3"}, +] + [[package]] name = "pygments" version = "2.17.2" @@ -549,6 +707,28 @@ typing-extensions = {version = ">=3.10.0", markers = "python_version < \"3.10\"" spelling = ["pyenchant (>=3.2,<4.0)"] testutils = ["gitpython (>3)"] +[[package]] +name = "pytest" +version = "7.4.4" +description = "pytest: simple powerful testing with Python" +optional = false +python-versions = ">=3.7" +files = [ + {file = "pytest-7.4.4-py3-none-any.whl", hash = "sha256:b090cdf5ed60bf4c45261be03239c2c1c22df034fbffe691abe93cd80cea01d8"}, + {file = "pytest-7.4.4.tar.gz", hash = "sha256:2cf0005922c6ace4a3e2ec8b4080eb0d9753fdc93107415332f50ce9e7994280"}, +] + +[package.dependencies] +colorama = {version = "*", markers = "sys_platform == \"win32\""} +exceptiongroup = {version = ">=1.0.0rc8", markers = "python_version < \"3.11\""} +iniconfig = "*" +packaging = "*" +pluggy = ">=0.12,<2.0" +tomli = {version = ">=1.0.0", markers = "python_version < \"3.11\""} + +[package.extras] +testing = ["argcomplete", "attrs (>=19.2.0)", "hypothesis (>=3.56)", "mock", "nose", "pygments (>=2.7.2)", "requests", "setuptools", "xmlschema"] + [[package]] name = "pytz" version = "2024.1" @@ -560,6 +740,66 @@ files = [ {file = "pytz-2024.1.tar.gz", hash = "sha256:2a29735ea9c18baf14b448846bde5a48030ed267578472d8955cd0e7443a9812"}, ] +[[package]] +name = "pyyaml" +version = "6.0.1" +description = "YAML parser and emitter for Python" +optional = false +python-versions = ">=3.6" +files = [ + {file = "PyYAML-6.0.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d858aa552c999bc8a8d57426ed01e40bef403cd8ccdd0fc5f6f04a00414cac2a"}, + {file = "PyYAML-6.0.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:fd66fc5d0da6d9815ba2cebeb4205f95818ff4b79c3ebe268e75d961704af52f"}, + {file = "PyYAML-6.0.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:69b023b2b4daa7548bcfbd4aa3da05b3a74b772db9e23b982788168117739938"}, + {file = "PyYAML-6.0.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:81e0b275a9ecc9c0c0c07b4b90ba548307583c125f54d5b6946cfee6360c733d"}, + {file = "PyYAML-6.0.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ba336e390cd8e4d1739f42dfe9bb83a3cc2e80f567d8805e11b46f4a943f5515"}, + {file = "PyYAML-6.0.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:326c013efe8048858a6d312ddd31d56e468118ad4cdeda36c719bf5bb6192290"}, + {file = "PyYAML-6.0.1-cp310-cp310-win32.whl", hash = "sha256:bd4af7373a854424dabd882decdc5579653d7868b8fb26dc7d0e99f823aa5924"}, + {file = "PyYAML-6.0.1-cp310-cp310-win_amd64.whl", hash = "sha256:fd1592b3fdf65fff2ad0004b5e363300ef59ced41c2e6b3a99d4089fa8c5435d"}, + {file = "PyYAML-6.0.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:6965a7bc3cf88e5a1c3bd2e0b5c22f8d677dc88a455344035f03399034eb3007"}, + {file = "PyYAML-6.0.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:f003ed9ad21d6a4713f0a9b5a7a0a79e08dd0f221aff4525a2be4c346ee60aab"}, + {file = "PyYAML-6.0.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:42f8152b8dbc4fe7d96729ec2b99c7097d656dc1213a3229ca5383f973a5ed6d"}, + {file = "PyYAML-6.0.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:062582fca9fabdd2c8b54a3ef1c978d786e0f6b3a1510e0ac93ef59e0ddae2bc"}, + {file = "PyYAML-6.0.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d2b04aac4d386b172d5b9692e2d2da8de7bfb6c387fa4f801fbf6fb2e6ba4673"}, + {file = "PyYAML-6.0.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:e7d73685e87afe9f3b36c799222440d6cf362062f78be1013661b00c5c6f678b"}, + {file = "PyYAML-6.0.1-cp311-cp311-win32.whl", hash = "sha256:1635fd110e8d85d55237ab316b5b011de701ea0f29d07611174a1b42f1444741"}, + {file = "PyYAML-6.0.1-cp311-cp311-win_amd64.whl", hash = "sha256:bf07ee2fef7014951eeb99f56f39c9bb4af143d8aa3c21b1677805985307da34"}, + {file = "PyYAML-6.0.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:855fb52b0dc35af121542a76b9a84f8d1cd886ea97c84703eaa6d88e37a2ad28"}, + {file = "PyYAML-6.0.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:40df9b996c2b73138957fe23a16a4f0ba614f4c0efce1e9406a184b6d07fa3a9"}, + {file = "PyYAML-6.0.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a08c6f0fe150303c1c6b71ebcd7213c2858041a7e01975da3a99aed1e7a378ef"}, + {file = "PyYAML-6.0.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6c22bec3fbe2524cde73d7ada88f6566758a8f7227bfbf93a408a9d86bcc12a0"}, + {file = "PyYAML-6.0.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8d4e9c88387b0f5c7d5f281e55304de64cf7f9c0021a3525bd3b1c542da3b0e4"}, + {file = "PyYAML-6.0.1-cp312-cp312-win32.whl", hash = "sha256:d483d2cdf104e7c9fa60c544d92981f12ad66a457afae824d146093b8c294c54"}, + {file = "PyYAML-6.0.1-cp312-cp312-win_amd64.whl", hash = "sha256:0d3304d8c0adc42be59c5f8a4d9e3d7379e6955ad754aa9d6ab7a398b59dd1df"}, + {file = "PyYAML-6.0.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:50550eb667afee136e9a77d6dc71ae76a44df8b3e51e41b77f6de2932bfe0f47"}, + {file = "PyYAML-6.0.1-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1fe35611261b29bd1de0070f0b2f47cb6ff71fa6595c077e42bd0c419fa27b98"}, + {file = "PyYAML-6.0.1-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:704219a11b772aea0d8ecd7058d0082713c3562b4e271b849ad7dc4a5c90c13c"}, + {file = "PyYAML-6.0.1-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:afd7e57eddb1a54f0f1a974bc4391af8bcce0b444685d936840f125cf046d5bd"}, + {file = "PyYAML-6.0.1-cp36-cp36m-win32.whl", hash = "sha256:fca0e3a251908a499833aa292323f32437106001d436eca0e6e7833256674585"}, + {file = "PyYAML-6.0.1-cp36-cp36m-win_amd64.whl", hash = "sha256:f22ac1c3cac4dbc50079e965eba2c1058622631e526bd9afd45fedd49ba781fa"}, + {file = "PyYAML-6.0.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:b1275ad35a5d18c62a7220633c913e1b42d44b46ee12554e5fd39c70a243d6a3"}, + {file = "PyYAML-6.0.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:18aeb1bf9a78867dc38b259769503436b7c72f7a1f1f4c93ff9a17de54319b27"}, + {file = "PyYAML-6.0.1-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:596106435fa6ad000c2991a98fa58eeb8656ef2325d7e158344fb33864ed87e3"}, + {file = "PyYAML-6.0.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:baa90d3f661d43131ca170712d903e6295d1f7a0f595074f151c0aed377c9b9c"}, + {file = "PyYAML-6.0.1-cp37-cp37m-win32.whl", hash = "sha256:9046c58c4395dff28dd494285c82ba00b546adfc7ef001486fbf0324bc174fba"}, + {file = "PyYAML-6.0.1-cp37-cp37m-win_amd64.whl", hash = "sha256:4fb147e7a67ef577a588a0e2c17b6db51dda102c71de36f8549b6816a96e1867"}, + {file = "PyYAML-6.0.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1d4c7e777c441b20e32f52bd377e0c409713e8bb1386e1099c2415f26e479595"}, + {file = "PyYAML-6.0.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a0cd17c15d3bb3fa06978b4e8958dcdc6e0174ccea823003a106c7d4d7899ac5"}, + {file = "PyYAML-6.0.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:28c119d996beec18c05208a8bd78cbe4007878c6dd15091efb73a30e90539696"}, + {file = "PyYAML-6.0.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7e07cbde391ba96ab58e532ff4803f79c4129397514e1413a7dc761ccd755735"}, + {file = "PyYAML-6.0.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:49a183be227561de579b4a36efbb21b3eab9651dd81b1858589f796549873dd6"}, + {file = "PyYAML-6.0.1-cp38-cp38-win32.whl", hash = "sha256:184c5108a2aca3c5b3d3bf9395d50893a7ab82a38004c8f61c258d4428e80206"}, + {file = "PyYAML-6.0.1-cp38-cp38-win_amd64.whl", hash = "sha256:1e2722cc9fbb45d9b87631ac70924c11d3a401b2d7f410cc0e3bbf249f2dca62"}, + {file = "PyYAML-6.0.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:9eb6caa9a297fc2c2fb8862bc5370d0303ddba53ba97e71f08023b6cd73d16a8"}, + {file = "PyYAML-6.0.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:c8098ddcc2a85b61647b2590f825f3db38891662cfc2fc776415143f599bb859"}, + {file = "PyYAML-6.0.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5773183b6446b2c99bb77e77595dd486303b4faab2b086e7b17bc6bef28865f6"}, + {file = "PyYAML-6.0.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b786eecbdf8499b9ca1d697215862083bd6d2a99965554781d0d8d1ad31e13a0"}, + {file = "PyYAML-6.0.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bc1bf2925a1ecd43da378f4db9e4f799775d6367bdb94671027b73b393a7c42c"}, + {file = "PyYAML-6.0.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:04ac92ad1925b2cff1db0cfebffb6ffc43457495c9b3c39d3fcae417d7125dc5"}, + {file = "PyYAML-6.0.1-cp39-cp39-win32.whl", hash = "sha256:faca3bdcf85b2fc05d06ff3fbc1f83e1391b3e724afa3feba7d13eeab355484c"}, + {file = "PyYAML-6.0.1-cp39-cp39-win_amd64.whl", hash = "sha256:510c9deebc5c0225e8c96813043e62b680ba2f9c50a08d3724c7f28a747d1486"}, + {file = "PyYAML-6.0.1.tar.gz", hash = "sha256:bfdf460b1736c775f2ba9f6a92bca30bc2095067b8a9d77876d1fad6cc3b4a43"}, +] + [[package]] name = "requests" version = "2.31.0" @@ -909,4 +1149,4 @@ testing = ["big-O", "jaraco.functools", "jaraco.itertools", "more-itertools", "p [metadata] lock-version = "2.0" python-versions = ">=3.8,<4.0" -content-hash = "1c9d783c07301363c92506c8107b6e83b6e56afb14c8daf4c4c5eeee4d56be77" +content-hash = "95f046f7cc2f7ddf5b1510afabdbb21ffb96f4e67e147ad989a5c5a4625a62ba" diff --git a/pyproject.toml b/pyproject.toml index 8c9e115..11d1ace 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -27,6 +27,9 @@ sphinx = "^7" sphinx_pyproject = "0.1" jinja2 = "~3.0" pylint = "^2.5.2" +myst-parser = "^2" +pytest = "^7" +flake8 = "^5" [build-system] requires = ["poetry>=1.1"]