Package: edfi-canvas-extractor
Canvas ExtractorThis tool retrieves and writes out to CSV students, active sections,
assignments, and submissions by querying the Canvas API. For more information on
the this tool and its output files, please see the main repositoryreadme.Getting StartedDownload the latest code fromthe project
homepageby clicking on
the green "CODE" button and choosing an appropriate option. If choosing the
Zip option, extract the file contents using your favorite zip tool.Open a command prompt* and change to this file's directory (* e.g. cmd.exe,
PowerShell, bash).Ensure you havePython 3.9+ and Poetry.At a command prompt, install all required dependencies:poetryinstallOptional: make a copy of the.env.examplefile, named simply.env, and
customize the settings as described in the Configuration section below.Create an access token by signing into your Canvas instance. Go to Account >
Settings, then scroll down to the "Approved Integrations" section and click
the "New Access Token" button. If using a.envfile, then copy the token
into this file.Run the extractor one of two ways:Execute the extractor with minimum command line arguments:poetryrunpythonedfi_canvas_extractor-b[canvasurl]-a[apitoken]-s[startdaterange]-e[enddaterange]-fassignmentsAlternately, run with environment variables or.envfile:poetryrunpythonedfi_canvas_extractorFor detailed help, executepoetry run python edfi_canvas_extractor -h.ConfigurationApplication configuration is provided through environment variables or command
line interface (CLI) arguments. CLI arguments take precedence over environment
variables. Environment variables can be set the normal way, or by using a
dedicated.envfilelikeCANVAS_BASE_URL=[CANVAS_BASE_URL]
CANVAS_ACCESS_TOKEN=[CANVAS_ACCESS_TOKEN]
START_DATE=[CLASS_START_DATE]
END_DATE=[CLASS_END_DATE]
OUTPUT_DIRECTORY=dataSupported parameters:DescriptionRequiredCommand Line ArgumentEnvironment VariableBase Canvas URLyes-bor--base-urlCANVAS_BASE_URLCanvas API access tokenyes-aor--access-tokenCANVAS_ACCESS_TOKENOutput Directoryno (default: [working directory]/data)-oor--output-directoryOUTPUT_DIRECTORYSync database directoryno (default: [working directory]/data)-dor--sync-database-directorySYNC_DATABASE_DIRECTORYStart date*, yyyy-mm-dd formatyes-sor--start_dateSTART_DATEEnd date*, yyyy-mm-dd formatyes-eor--end_dateEND_DATELog level**no (default: INFO)-lor--log-levelLOG_LEVELFeature***no (default: core, not removable)-for--featureFEATURE*Start DateandEnd Dateare used in pulling course data and would
typically span a semester or equivalent school calendar timespan.** Valid values for the optionallog level:DEBUGINFO(default)WARNINGERRORCRITICAL*** When there's no specified feature, the extractor will always process Users,
Sections, and Section Associations, which are considered the core feature. Other
features (can combine two or more):assignments (Enables the extraction of assignments and submissions)grades (Enables the extraction of grades) -EXPERIMENTAL, subject to
breaking changesWhen setting features via.envfile or through environment variable, combine
features by using a bracketed comma-separate list, e.g.FEATURE=[assignments, grades]. To combine features at the command line, simply list them together:--feature assignments, grades.OutputCSV files in the data(or the specified output) directory with theLMS Unifying
Data
Modelformat.Logging and Exit CodesLog statements are written to the standard output. If you wish to capture log
details, then be sure to redirect the output to a file. For example:poetryrunpythonedfi_canvas_extractor>2020-12-07-15-43.logIf any errors occurred during the script run, then there will be a final print
message to the standard error handler as an additional mechanism for calling
attention to the error:"A fatal error occurred, please review the log output for more information."The application will exit with status code1if there were any log messages at
the ERROR or CRITICAL level, otherwise it will exit with status code0.Developer OperationsStyle check:poetry run flake8Static typing check:poetry run mypy .Run unit tests:poetry run pytestRun unit tests with code coverage:poetry run coverage run -m pytestView code coverage:poetry run coverage reportAlso seebuild.pyfor
use of the build script.Visual Studio Code (Optional)To work in Visual Studio Code install the Python Extension.
Then typeCtrl-Shift-P, then choosePython:Select Interpreter,
then choose the environment that includes.venvin the name.Legal InformationCopyright (c) 2022 Ed-Fi Alliance, LLC and contributors.Licensed under theApache License, Version
2.0(the
"License").Unless required by applicable law or agreed to in writing, software distributed
under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
CONDITIONS OF ANY KIND, either express or implied. See the License for the
specific language governing permissions and limitations under the License.SeeNOTICESfor
additional copyright and license notifications.