From 9e20d627a6c816c83e394cb419f1ba528c77cbf5 Mon Sep 17 00:00:00 2001 From: Tina815 Date: Mon, 6 Oct 2025 16:05:41 +0000 Subject: [PATCH 01/44] update readme and introduction --- README.md | 22 +++++++++++++++++++++- intro.Rmd | 15 +++++++++------ python-training.Rproj | 26 +++++++++++++------------- 3 files changed, 43 insertions(+), 20 deletions(-) diff --git a/README.md b/README.md index 1470f13..584e297 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,22 @@ # python-training -An interactive, online introduction to python training for employees in Public Health Scotland. +This is an interactive, online introduction to python training for employees +in Public Health Scotland. + +The R packages required to render this course are `learnr`, `reticulate`, +and `gradethis`. + +- `learnr` and `reticulate` can be installed from CRAN. `learnr` is required to +build the shiny app, whilst `reticulate` is required for running embedded python +sessions. + +``` r +install.packages(learnr) +install.packages(reticulate) +``` + +- `gradethis` can be installed from GitHub. It is required for specific code +checking and feedback. + +``` r +remotes::install_github("rstudio/gradethis") +``` diff --git a/intro.Rmd b/intro.Rmd index 0c6eefc..317341b 100755 --- a/intro.Rmd +++ b/intro.Rmd @@ -17,11 +17,8 @@ runtime: shiny_prerendered # Include packages here that are required throughout the training -#install.packages("learnr") -library(learnr) # Required to build the Shiny app -#install.packages("gradethis") -library(gradethis) # Required for specific code checking and specific feedback -#install.packages("reticulate") +library(learnr) +library(gradethis) library(reticulate) knitr::opts_chunk$set(echo = FALSE) @@ -29,6 +26,10 @@ knitr::opts_chunk$set(echo = FALSE) tutorial_options( exercise.checker = gradethis::grade_learnr ) + +reticulate::virtualenv_create(envname = "pyenv") +reticulate::virtualenv_install("pyenv", packages = c("pandas==2.3.1")) +reticulate::use_virtualenv("pyenv", required = TRUE) ``` @@ -47,7 +48,9 @@ knitr::include_graphics("images/phs-logo.png") ## Introduction -Welcome to an introduction to python. This course is designed as a self-led introduction to R Markdown for anyone in Public Health Scotland. +Welcome to an introduction to python. This course is designed as a self-led introduction to python for anyone in Public Health Scotland. It covers fundamental knowledge such as various data types (e.g. numbers, strings and boolean), how to write functions, importing and exporting datasets and data wrangling. You can explore python by going through the course and experimenting coding in the embedded code chunks. + +Here is the short video of a quick introduction to python: ![](https://www.youtube.com/watch?v=xkZMUX_oQX4)

Course Info

diff --git a/python-training.Rproj b/python-training.Rproj index 3af27f6..8e3c2eb 100755 --- a/python-training.Rproj +++ b/python-training.Rproj @@ -1,13 +1,13 @@ -Version: 1.0 - -RestoreWorkspace: Default -SaveWorkspace: Default -AlwaysSaveHistory: Default - -EnableCodeIndexing: Yes -UseSpacesForTab: Yes -NumSpacesForTab: 2 -Encoding: UTF-8 - -RnwWeave: Sweave -LaTeX: pdfLaTeX +Version: 1.0 + +RestoreWorkspace: Default +SaveWorkspace: Default +AlwaysSaveHistory: Default + +EnableCodeIndexing: Yes +UseSpacesForTab: Yes +NumSpacesForTab: 2 +Encoding: UTF-8 + +RnwWeave: Sweave +LaTeX: pdfLaTeX From 3f856ffe17a75b0691dac114b67b4bdaf77b2124 Mon Sep 17 00:00:00 2001 From: Tina815 Date: Tue, 18 Nov 2025 15:49:26 +0000 Subject: [PATCH 02/44] fix readme and modify foundation --- README.md | 4 +- css/style.css | 6 ++ images/foundations-buildingblocks.png | Bin 0 -> 36901 bytes intro.Rmd | 96 ++++++++++++++++++-------- 4 files changed, 74 insertions(+), 32 deletions(-) create mode 100644 images/foundations-buildingblocks.png diff --git a/README.md b/README.md index 584e297..150ea55 100644 --- a/README.md +++ b/README.md @@ -10,8 +10,8 @@ build the shiny app, whilst `reticulate` is required for running embedded python sessions. ``` r -install.packages(learnr) -install.packages(reticulate) +install.packages("learnr") +install.packages("reticulate") ``` - `gradethis` can be installed from GitHub. It is required for specific code diff --git a/css/style.css b/css/style.css index 46a3a89..72606c0 100644 --- a/css/style.css +++ b/css/style.css @@ -56,4 +56,10 @@ img { border-color: #bd27b9; border-radius: 5px; padding: 10px; +} + +.supporting-image-left { + float: left; + width: 400px; + padding-top: 10px; } \ No newline at end of file diff --git a/images/foundations-buildingblocks.png b/images/foundations-buildingblocks.png new file mode 100644 index 0000000000000000000000000000000000000000..09f2b9aa8b87ff497aa4de018fb5e4ed664db33e GIT binary patch literal 36901 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 U*@p2DUI9O!MP!7_1oiy>581mS_y7O^ literal 0 HcmV?d00001 diff --git a/intro.Rmd b/intro.Rmd index 317341b..d2b04ba 100755 --- a/intro.Rmd +++ b/intro.Rmd @@ -27,9 +27,9 @@ tutorial_options( exercise.checker = gradethis::grade_learnr ) -reticulate::virtualenv_create(envname = "pyenv") -reticulate::virtualenv_install("pyenv", packages = c("pandas==2.3.1")) -reticulate::use_virtualenv("pyenv", required = TRUE) +reticulate::virtualenv_create(envname = "venv313") +reticulate::virtualenv_install("venv313", packages = c("pandas==2.3.3")) +reticulate::use_virtualenv("venv313", required = TRUE) ``` @@ -64,36 +64,22 @@ Here is the short video of a quick introduction to python: ![](https://www.youtu ### What is Python? -Python is a powerful general purpose programming language with widespread use in many application domains. Python is open source and free to use, and available for all major operating systems. +- Python is a powerful general purpose programming language with widespread use +in many application domains. -### How does Python run? - -Traditionally, when a Python script is run, the entire script is interpreted and run from the top down. - -```{python runtime, eval = FALSE, echo = TRUE} -a = 15 -b = 10 -c = a + b -print(c) -``` +- Python is open source and free to use, and available for all major operating +systems. -When the above Python script is run, the entire script will be run from the top down, resulting in an output of `25`. - -There are a number of advantages to having Python scripts run this way. To name a few: - -* The script has a sequential flow -* It is easier to debug -* It is clearer and more readable - -However, there are a number of ways to run individual lines of code within a Python script, should that be preferred. In this course, we will touch upon `Jupyter Notebook` in the *IDE* section, where this can be accomplished. +- Supported on PHS Posit Workbench. +- Learning Python opens up professional development opportunities. ## IDE ### Jupyter Notebook -There are several environments where you can run Python codes, such as "JupyterLab", "Jupyter Notebook". In this training course, we will use “Jupyter Notebook”. +There are several environments where you can run Python code, such as "JupyterLab", "Jupyter Notebook". Jupyter Notebook is designed for the easy integration of text and Python programming. It provides a more interactive workflow for Python programming, analysis and reporting. Some of its key features are: @@ -107,7 +93,7 @@ Jupyter Notebook is designed for the easy integration of text and Python program #### Open a New Jupyter Notebook -We can access "Jupyter Notebook" on [Posit Workbench](https://pwb.publichealthscotland.org/). After signing in, click on New Session and a diaglog box will pop up. Click on Editor and select "Jupyter Notebook" from the drop down list, and then Start Session. +We can access "Jupyter Notebook" on [Posit Workbench](https://pwb-prod.publichealthscotland.org/). After signing in, click on New Session and a diaglog box will pop up. Click on Editor and select "Jupyter Notebook" from the drop down list, and then Start Session. ```{r openpynb, fig.align='center', out.width="60%"} knitr::include_graphics("images/python-pwb.png") @@ -189,14 +175,54 @@ Then press *Shift + Enter* to finish. knitr::include_graphics("images/markdown-example2.PNG") ``` -#### Python Library - -Python library is a collection of functions and methods that allows you to perform lots of actions without writing your own code. For example, “pandas” is a Python library for data manipulation and analysis, which is used a lot in this training guidance. ## Foundations This section will walk you through some of the foundational knowledge of Python, including structure, style, and key data types. +We’re going to start with a high-level overview of programming concepts which will help lay the foundations for building your python skills. We’ll then build on these concepts with the specific syntax in python. This graphic shows the structure of the concepts and how they come together to form a program: + +
+```{r foundations-buildingblocks, echo=FALSE, fig.align='center', out.width="75%"} +knitr::include_graphics("images/foundations-buildingblocks.png") +``` +
+ +1. **Basic data types** - representing fundamental data, like numbers and text. + +2. **Complex data types** - taking basic data types and forming more complex, composite data types, e.g. tables. + +3. **Variables** - named storage to track "objects" across a program. + +4. **Statements** - a complete line of code, made of expressions and operators. + +5. **Control Flow** - branching (if statements) and iteration (loops). + +6. **Functions** - reusable chunks of code that can take inputs and give outputs. + +
+ +### How does Python run? + +Traditionally, when a Python script is run, the entire script is interpreted and run from the top down. + +```{python runtime, eval = FALSE, echo = TRUE} +a = 15 +b = 10 +c = a + b +print(c) +``` + +When the above Python script is run, the entire script will be run from the top down, resulting in an output of `25`. + +There are a number of advantages to having Python scripts run this way. To name a few: + +* The script has a sequential flow +* It is easier to debug +* It is clearer and more readable + +However, there are a number of ways to run individual lines of code within a Python script, should that be preferred. In this course, we will touch upon `Jupyter Notebook` in the *IDE* section, where this can be accomplished. + ### Structure **Indentation** - where indentation in other programming languages are included as a style preference, indentation in Python is extremely important, as it indicates what blocks of code should be run. @@ -231,7 +257,13 @@ knitr::include_graphics("images/r_coding_cases.png") ### Numbers -There are 3 main types of numbers that can be declared in Python. +There are 3 main types of numbers that can be declared in Python. + +1. **Integer** - Whole numbers, positive or negative, without a fractional part. They have unlimited precision in Python 3. + +2. **Floating point** - Real numbers with a fractional part, denoted by a decimal point or scientific notation. + +3. **Complex** - Numbers with a real and an imaginary component, written as `a + bj`, where `a` is the real part and `b` is the imaginary part. ```{python numbers, eval = FALSE, echo = TRUE} age = 27 # Integers @@ -401,7 +433,7 @@ my_string = 'Hello, World!' print(my_string) ``` -## Functions +## Functions & Libraries In Python, functions are a block of organised and reusable code which performs a specific task. @@ -479,6 +511,10 @@ result = add(1,2,3) print(result) ``` +#### Python Library + +Python library is a collection of functions and methods that allows you to perform lots of actions without writing your own code. For example, “pandas” is a Python library for data manipulation and analysis, which is used a lot in this training guidance. + ## Control Flow & Iteration{#comparisonoperators} From 08ca2ca6617bbed785d0e83ea49ec66fba46c28b Mon Sep 17 00:00:00 2001 From: Tina815 Date: Wed, 19 Nov 2025 10:07:52 +0000 Subject: [PATCH 03/44] update setup reticulate code --- intro.Rmd | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/intro.Rmd b/intro.Rmd index d2b04ba..025bf38 100755 --- a/intro.Rmd +++ b/intro.Rmd @@ -27,9 +27,9 @@ tutorial_options( exercise.checker = gradethis::grade_learnr ) -reticulate::virtualenv_create(envname = "venv313") -reticulate::virtualenv_install("venv313", packages = c("pandas==2.3.3")) -reticulate::use_virtualenv("venv313", required = TRUE) +reticulate::virtualenv_create(envname = "pyenv") +reticulate::virtualenv_install("pyenv", packages = c("pandas==2.3.3")) +reticulate::use_virtualenv("pyenv", required = TRUE) ``` From 39cde7d9c2316f13a522337f74643d9399eee7b7 Mon Sep 17 00:00:00 2001 From: Josie Date: Wed, 10 Dec 2025 10:15:01 +0000 Subject: [PATCH 04/44] Images for training --- images/vs-code-file.png | Bin 0 -> 18469 bytes images/vs-code-interactive.png | Bin 0 -> 19263 bytes images/vs-code-notebook.png | Bin 0 -> 25774 bytes images/vs-code.png | Bin 0 -> 55043 bytes 4 files changed, 0 insertions(+), 0 deletions(-) create mode 100755 images/vs-code-file.png create mode 100755 images/vs-code-interactive.png create mode 100755 images/vs-code-notebook.png create mode 100755 images/vs-code.png diff --git a/images/vs-code-file.png b/images/vs-code-file.png new file mode 100755 index 0000000000000000000000000000000000000000..16c036949437d65b1dd81a6f51ed6f24c25c110a GIT binary patch literal 18469 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 literal 0 HcmV?d00001 diff --git a/images/vs-code-notebook.png b/images/vs-code-notebook.png new file mode 100755 index 0000000000000000000000000000000000000000..7295a2faa9f2df3cdf37d69191ed917d04f4dde4 GIT binary patch literal 25774 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 Boyq_J literal 0 HcmV?d00001 diff --git a/images/vs-code.png b/images/vs-code.png new file mode 100755 index 0000000000000000000000000000000000000000..c6f96f9803a8af0fbe6a2059daa9394b0b9e3cd0 GIT binary patch literal 55043 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 A`~Uy| literal 0 HcmV?d00001 From cd93df6f1dbbb64a2b525fd0a8443c55fa33f126 Mon Sep 17 00:00:00 2001 From: Josie Date: Wed, 10 Dec 2025 10:49:55 +0000 Subject: [PATCH 05/44] VS code section --- intro.Rmd | 53 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) diff --git a/intro.Rmd b/intro.Rmd index 025bf38..b305e2c 100755 --- a/intro.Rmd +++ b/intro.Rmd @@ -77,6 +77,59 @@ systems. ## IDE +### VS Code + +Visual Studio Code is an open-source code editor that supports multiple programming languages including Python and R and is highly customisable with extensions. For the purposes of this course we will focus on python. + +**Please note this is only a brief introduction on VS Code. For detailed instructions on how to set up VS code and use Python in Posit Workbench please see [VS Code Setup instructions](https://github.com/Public-Health-Scotland/vscode_prep). These instructions include setting up extensions, creating environments, installing packages, and using version control. Please follow these instructions if it is your first time using VS code on Posit Workbench.** + + +#### Getting Started + +We can access VS Code on [Posit Workbench](https://pwb-prod.publichealthscotland.org/) the same way we access R studio. After signing in, click on New Session and a diaglog box will pop up. Click on VS code from the options at the start, select your memory requirements, and then Start Session. + +```{r vscode, fig.align='center', out.width="60%"} +knitr::include_graphics("images/vs-code.png") +``` +
+ +#### Opening files and folders + +Once your session opens you can go ahead and open the folder by either clicking open folder in the explorer pain or using the keyboard shortcut (Ctrl+ O). You can create a new file by pressing the following button shown in the image or using the keyboard shortcut (Ctrl + Alt + Window + N). Python files are .py files. + +```{r vscodefile, fig.align='center', out.width="60%"} +knitr::include_graphics("images/vs-code-file.png") +``` +
+ + +#### Running code + +There are several ways to run code in VS code: + +**1. Running an entire script** + +To execute the full script you can type the following into the terminal and press enter. The easiest way to open a new terminal is the keyboard shortcut (Ctrl + Shift + C). +```{python terminal, eval = FALSE, echo = TRUE} +python your_file_name.py +``` + +Another way to run the whole script is to use the run button at the top of the editor. This is essentially the equivalent of pressing source to run a script in R studio. + +**2. Running Code Snippets interactively** + +If you wish to run snippets of your code or run it line by line you can do this using an interactive notebook. By pressing Shift + Enter on a line of code it should open an interactive window as shown below. You can also highlight sections of code and press Shift + Enter. This is very similar to running code in R studio by pressing ctrl + enter. + +```{r vscodeinteractive, fig.align='center',out.width="100%"} +knitr::include_graphics("images/vs-code-interactive.png") +``` + +You can also use Jupyter Notebooks by creating a .ipynb file. Each cell can be executed individually using Shift + Enter or by pressing the run button. This allows you to create code or markdown snippets. This will look like the following. + +```{r vscodenotebook, fig.align='center',out.width="100%"} +knitr::include_graphics("images/vs-code-notebook.png") +``` + ### Jupyter Notebook There are several environments where you can run Python code, such as "JupyterLab", "Jupyter Notebook". From 10a02b17bc04488cebb023042f638f276e121952 Mon Sep 17 00:00:00 2001 From: Josie Date: Wed, 10 Dec 2025 11:29:10 +0000 Subject: [PATCH 06/44] Small changes --- intro.Rmd | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/intro.Rmd b/intro.Rmd index b305e2c..086cfeb 100755 --- a/intro.Rmd +++ b/intro.Rmd @@ -95,7 +95,7 @@ knitr::include_graphics("images/vs-code.png") #### Opening files and folders -Once your session opens you can go ahead and open the folder by either clicking open folder in the explorer pain or using the keyboard shortcut (Ctrl+ O). You can create a new file by pressing the following button shown in the image or using the keyboard shortcut (Ctrl + Alt + Window + N). Python files are .py files. +Once your session opens you can go ahead and open the folder by either clicking open folder in the explorer pain or using the keyboard shortcut (Ctrl+ O). You can create a new file by pressing the following button shown in the image. Python files are .py files. ```{r vscodefile, fig.align='center', out.width="60%"} knitr::include_graphics("images/vs-code-file.png") @@ -116,7 +116,7 @@ python your_file_name.py Another way to run the whole script is to use the run button at the top of the editor. This is essentially the equivalent of pressing source to run a script in R studio. -**2. Running Code Snippets interactively** +**2. Running Code Snippets Interactively** If you wish to run snippets of your code or run it line by line you can do this using an interactive notebook. By pressing Shift + Enter on a line of code it should open an interactive window as shown below. You can also highlight sections of code and press Shift + Enter. This is very similar to running code in R studio by pressing ctrl + enter. @@ -130,6 +130,8 @@ You can also use Jupyter Notebooks by creating a .ipynb file. Each cell can be e knitr::include_graphics("images/vs-code-notebook.png") ``` +Note that running code interactively does require certain extensions to be installed. + ### Jupyter Notebook There are several environments where you can run Python code, such as "JupyterLab", "Jupyter Notebook". From f2e04bf45eaa8154c3c84f0bcfbbbcd89f5bafa2 Mon Sep 17 00:00:00 2001 From: Josie Steele <166606214+JosieSteele@users.noreply.github.com> Date: Tue, 16 Dec 2025 13:35:23 +0000 Subject: [PATCH 07/44] Apply suggestions from code review- typos, capitals etc Co-authored-by: Russell McCreath <33964310+rmccreath@users.noreply.github.com> --- intro.Rmd | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/intro.Rmd b/intro.Rmd index 086cfeb..598d52a 100755 --- a/intro.Rmd +++ b/intro.Rmd @@ -86,7 +86,7 @@ Visual Studio Code is an open-source code editor that supports multiple programm #### Getting Started -We can access VS Code on [Posit Workbench](https://pwb-prod.publichealthscotland.org/) the same way we access R studio. After signing in, click on New Session and a diaglog box will pop up. Click on VS code from the options at the start, select your memory requirements, and then Start Session. +We can access VS Code on [Posit Workbench](https://pwb-prod.publichealthscotland.org/) the same way we access RStudio. After signing in, click on 'New Session' and a dialog box will pop up. Click on 'VS Code' from the options at the start, select your memory requirements, and then 'Start Session'. ```{r vscode, fig.align='center', out.width="60%"} knitr::include_graphics("images/vs-code.png") @@ -95,7 +95,7 @@ knitr::include_graphics("images/vs-code.png") #### Opening files and folders -Once your session opens you can go ahead and open the folder by either clicking open folder in the explorer pain or using the keyboard shortcut (Ctrl+ O). You can create a new file by pressing the following button shown in the image. Python files are .py files. +Once your session opens you can go ahead and open the folder by either clicking on the folder in the explorer pain or using the keyboard shortcut (`Ctrl` + `O`). You can create a new file by pressing the 'New File...' button shown in the image. ```{r vscodefile, fig.align='center', out.width="60%"} knitr::include_graphics("images/vs-code-file.png") @@ -105,26 +105,26 @@ knitr::include_graphics("images/vs-code-file.png") #### Running code -There are several ways to run code in VS code: +There are several ways to run code in VS Code: **1. Running an entire script** -To execute the full script you can type the following into the terminal and press enter. The easiest way to open a new terminal is the keyboard shortcut (Ctrl + Shift + C). +To execute the full script you can type the following into the terminal and press enter. The easiest way to open a new terminal is the keyboard shortcut (`Ctrl` + `Shift` + `C`). ```{python terminal, eval = FALSE, echo = TRUE} python your_file_name.py ``` -Another way to run the whole script is to use the run button at the top of the editor. This is essentially the equivalent of pressing source to run a script in R studio. +Another way to run the whole script is to use the run button at the top of the editor. This is essentially the equivalent of pressing source to run a script in RStudio. -**2. Running Code Snippets Interactively** +**2. Running code snippets interactively** -If you wish to run snippets of your code or run it line by line you can do this using an interactive notebook. By pressing Shift + Enter on a line of code it should open an interactive window as shown below. You can also highlight sections of code and press Shift + Enter. This is very similar to running code in R studio by pressing ctrl + enter. +If you wish to run snippets of your code or run it line by line you can do this using an interactive notebook. By pressing `Shift` + `Enter` on a line of code it should open an interactive window as shown below. You can also highlight sections of code and press `Shift` + `Enter`. This is very similar to running code in RStudio by pressing `Ctrl` + `Enter`. ```{r vscodeinteractive, fig.align='center',out.width="100%"} knitr::include_graphics("images/vs-code-interactive.png") ``` -You can also use Jupyter Notebooks by creating a .ipynb file. Each cell can be executed individually using Shift + Enter or by pressing the run button. This allows you to create code or markdown snippets. This will look like the following. +You can also use Jupyter Notebooks by creating a .ipynb file. Each cell can be executed individually using `Shift` + `Enter` or by pressing the run button. This allows you to create code or markdown snippets. This will look like the following. ```{r vscodenotebook, fig.align='center',out.width="100%"} knitr::include_graphics("images/vs-code-notebook.png") From 1ef55c4b8cc5e1133e302ae17ee2c50b419bdcd6 Mon Sep 17 00:00:00 2001 From: Tina815 Date: Wed, 7 Jan 2026 15:25:16 +0000 Subject: [PATCH 08/44] modify comment in rearrange column --- intro.Rmd | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/intro.Rmd b/intro.Rmd index 025bf38..19d75f6 100755 --- a/intro.Rmd +++ b/intro.Rmd @@ -693,8 +693,8 @@ borders2.head() It is also possible to rearrange the columns within an imported dataframe. The columns in the example above can be rearranged using the following code: ```{python csv-read-columns2, exercise = TRUE, exercise.setup = "pandas-setup"} -# Rearrange the columns -borders3 = borders2[['URI', 'Specialty', 'HospitalCode']] +# Rearrange the columns by supplying multiple column names in a list using the inner square brackets. +borders3 = borders2[['URI', 'Specialty', 'HospitalCode']] # Check the first few rows of the dataset. Default is 5 rows. borders3.head() From 6be6b06c93e1d3ff048e85f2d114270d99612cd6 Mon Sep 17 00:00:00 2001 From: Josie Date: Thu, 8 Jan 2026 09:47:52 +0000 Subject: [PATCH 09/44] Changes and additions to the VS code section --- images/vs-code-interactive.png | Bin 19263 -> 25182 bytes images/vs-code-notebook.png | Bin 25774 -> 38504 bytes images/vs-code-overview.png | Bin 0 -> 92416 bytes images/vs-code-venv.png | Bin 0 -> 35721 bytes intro.Rmd | 97 +++++++++++++++++++++++++++------ 5 files changed, 81 insertions(+), 16 deletions(-) create mode 100755 images/vs-code-overview.png create mode 100755 images/vs-code-venv.png diff --git a/images/vs-code-interactive.png b/images/vs-code-interactive.png index ec8dc76e1e830a4459d72bb9f4b7baaa0dbf1280..5060f8aa36f60ccee5c48c16d131dc8f381be526 100755 GIT binary patch literal 25182 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 diff --git a/images/vs-code-notebook.png b/images/vs-code-notebook.png index 7295a2faa9f2df3cdf37d69191ed917d04f4dde4..58a502a2e19566c1660dcd6fd21e7890519a7036 100755 GIT binary patch literal 38504 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 X5~s~ELEq8s(1ejv_#@-`?T7yZcM@v$ literal 25774 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 Boyq_J diff --git a/images/vs-code-overview.png b/images/vs-code-overview.png new file mode 100755 index 0000000000000000000000000000000000000000..eacbffdd7a51ae86b42119e6e6ca6bf2385a4450 GIT binary patch literal 92416 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 z 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 SUd=lCH%L`irR2%eKmHF$>rw{* literal 0 HcmV?d00001 diff --git a/images/vs-code-venv.png b/images/vs-code-venv.png new file mode 100755 index 0000000000000000000000000000000000000000..84cda6c3152017b9e4321a678a039e1e2c197778 GIT binary patch literal 35721 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 -#### Opening files and folders +##### Layout of the Interface + +The layout of the VS Code interface can be divided into 6 different parts: + +* **Activity Bar**: This is located on the far left side of the interface. This lets you access different options and switch between different views on the primary side bar. +* **Primary Side Bar**: This is located on the left side of the interface to the right of the activity bar. It contains different views like the Explorer, Search, and Source Control to assist you while working on your project. +* **Editor**: This is located in the center of the interface and is the main place to edit your files. You can open as many editors as you like side by side vertically and horizontally. +* **Panel**: This is located at the bottom of the interface below the editor. This contains output, debug information, errors and warnings, and an integrated terminal. To open the terminal the keyboard shortcut is `Ctrl` + `'`. +* **Command Palette**: This is located right at the top of the interface. The keyboard shortcut `Ctrl` + `Shift` + `P` brings up the Command Palette and provides access to commands. +* **Status Bar**: This is located right at the bottom of the interface and provides information about the open project. + +```{r vscodeoverview, fig.align='center', out.width="100%"} +knitr::include_graphics("images/vs-code-overview.png") +``` + +##### Opening files and folders -Once your session opens you can go ahead and open the folder by either clicking on the folder in the explorer pain or using the keyboard shortcut (`Ctrl` + `O`). You can create a new file by pressing the 'New File...' button shown in the image. +Once your session opens you can go ahead and open a folder by either clicking on the folder in the explorer pane and then "Open Folder". You can open a file using the keyboard shortcut (`Ctrl` + `O`). You can create a new file by pressing the "New File" button located to the right of your folder name. ```{r vscodefile, fig.align='center', out.width="60%"} knitr::include_graphics("images/vs-code-file.png") ``` +The file path for your home directory (`~` in R Studio) is `/mnt/homes/your_username/`. The stats drive can be accessed the same as R Studio: '/conf/...'.
+#### Setting Up + +Before you start using VS Code you must set up a few different aspects. This section will cover extensions and environments. Although this section should be sufficient for getting set up, for full detailed instructions please see: [VS Code Setup instructions](https://github.com/Public-Health-Scotland/vscode_prep). These instructions include setting up extensions, creating environments, installing packages, using version control, and other hints and tips. + +##### Extensions + +In order to use VS Code you first need to install extensions. Extensions are essentially add-ons that allow you to customise what VS Code can do. You can install extensions individually however for getting started it is recommended that you do the following: + +1. Clone the following repo that can be found [here](https://github.com/Public-Health-Scotland/vscode_prep). This can be done by entering the following into the terminal `git clone https://github.com/Public-Health-Scotland/vscode_prep.git`. + +2. Once cloned, open this folder. To do this, click the explorer button on the left hand menu and then click on the open folder button. You should then be able to select the "vscode_prep" folder and click "OK". + +3. Within this folder is a script called `install_extensions.sh` which will automate the installation process. It already contains the extensions you will need to get started but it can be modified depending on your needs. To execute this script enter `bash install_extensions.sh vscode` in the terminal. + +4. Next, you will need to reload your VS Code to make sure your extensions have loaded. Press `Ctrl` + `Shift` + `P` and search "Developer: Reload Window". + + +##### Environments + +You can use venv (similar to renv in R) to create environments (private package container). It is recommended that for each project you have a new environment. You can create venv inside your Python project or outside. + +To create your first venv follow these instructions: + +1. If you cloned vscode_prep, you should close vscode_prep ("File" then "Close Folder") and start from the main user path. Open the terminal and create a folder for your new project (e.g python_demo). Use the following command in your terminal `mkdir python_demo`. + +2. Open this folder by clicking the explorer button on the left hand menu and then clicking on the open folder button. You should then be able to select the python_demo folder and click ok. + +3. In order to create a venv within this folder enter `python -m venv .venv` into the terminal. This creates a venv using whichever interpreter Python currently points to on your system. If you wish to specify a folder outwith your current folder and want your environment to use a specific Python version use something like: `/opt/python/3.11.13/bin/python3 -m venv your_file_path/.venv`. This uses the Python 3.11.13 interpreter to create a virtual environment at your_file_path/.venv. + +4. Once you have created your environment you will need to activate it. If your venv is in your current folder enter the following into the terminal `source .venv/bin/activate`. If your venv is outwith your current folder you will need to specify the file path like the following `source your_file_path/.venv/bin/activate`. + +5. You can refresh your VS Code to make sure your venv has been detected. Press `Ctrl` + `Shift` + `P` and search Developer reload window. You should see .venv as part of the terminal line. If venv has not been detect you may need to press `Ctrl` + `Shift` + `P`, search "Python: Select Interpreter" and manually select your venv. +```{r vscodevenv, fig.align='center', out.width="100%"} +knitr::include_graphics("images/vs-code-venv.png") +``` + +6. You will need to update your pip (Python package manager) which helps to download new packages: `pip install --upgrade pip wheel`. + +7. You have 2 options to install required packages (once your Python environment is activated). +* Option 1:Best practice is to have a `requirements.txt` file in every Python project folder. This would contain all the required packages for your project. An example of a `requirements.txt` file can be found in the [VS Code Setup instruction](https://github.com/Public-Health-Scotland/vscode_prep). To execute your file enter the following into the terminal `pip install -r requirements.txt --prefer-binary`. +* Option 2: Installing one package at time using the command in terminal: `pip install pandas==2.3.3 --prefer-binary`. + +Note: If you don't activate your Python environment you will probably install your package in the main Python installation. + #### Running code -There are several ways to run code in VS Code: +VS Code provides multiple ways to run code, with different approaches being more suitable depending on your workflow and the type of task you are performing. -**1. Running an entire script** +##### Running an entire script -To execute the full script you can type the following into the terminal and press enter. The easiest way to open a new terminal is the keyboard shortcut (`Ctrl` + `Shift` + `C`). +To execute the full script you can type the following into the terminal and press enter. The easiest way to open the terminal is the keyboard shortcut (`Ctrl` + `'`). ```{python terminal, eval = FALSE, echo = TRUE} python your_file_name.py ``` -Another way to run the whole script is to use the run button at the top of the editor. This is essentially the equivalent of pressing source to run a script in RStudio. +Another way to run the whole script is to use the run Python file button at the top of the editor. This is similar to using source to run a script in RStudio. -**2. Running code snippets interactively** +##### Running code snippets interactively -If you wish to run snippets of your code or run it line by line you can do this using an interactive notebook. By pressing `Shift` + `Enter` on a line of code it should open an interactive window as shown below. You can also highlight sections of code and press `Shift` + `Enter`. This is very similar to running code in RStudio by pressing `Ctrl` + `Enter`. +If you wish to run snippets of your code or run it line by line you can do this using a Python Interactive Window. By pressing `Shift` + `Enter` on a line of code it should open an interactive window as shown below. You can also highlight sections of code and press `Shift` + `Enter`. This is very similar to running code in RStudio by pressing `Ctrl` + `Enter`. ```{r vscodeinteractive, fig.align='center',out.width="100%"} knitr::include_graphics("images/vs-code-interactive.png") ``` -You can also use Jupyter Notebooks by creating a .ipynb file. Each cell can be executed individually using `Shift` + `Enter` or by pressing the run button. This allows you to create code or markdown snippets. This will look like the following. +When you run code interactively you have to make sure the kernel selected in the right hand corner of the interactive pane is the correct venv. + +##### Jupyter Notebooks in VS Code + +You can also use Jupyter Notebooks by creating a .ipynb file. Each cell can be executed individually using `Shift` + `Enter` or by pressing the run button. This allows you to create code or markdown snippets. ```{r vscodenotebook, fig.align='center',out.width="100%"} knitr::include_graphics("images/vs-code-notebook.png") ``` -Note that running code interactively does require certain extensions to be installed. +When using Jupyter notebooks you have to select a kernel in the top right hand corner of your notebook. You should select the venv you have created for your project. + ### Jupyter Notebook From bc6f6c1a894e65333b022bcebeed603d029a2440 Mon Sep 17 00:00:00 2001 From: Tina815 Date: Mon, 9 Feb 2026 16:33:35 +0000 Subject: [PATCH 10/44] make changes to delete columns --- intro.Rmd | 67 ++++++++++++++++++++----------------------------------- 1 file changed, 24 insertions(+), 43 deletions(-) diff --git a/intro.Rmd b/intro.Rmd index 19d75f6..94cc5e7 100755 --- a/intro.Rmd +++ b/intro.Rmd @@ -700,41 +700,6 @@ borders3 = borders2[['URI', 'Specialty', 'HospitalCode']] borders3.head() ``` -Once the dataframe has been read in, you can delete a specific column (or columns) that you do not need using **del** command: - -```{python delete-column, exercise = TRUE, exercise.setup = "pandas-setup"} -# Delete URI column -del borders2["URI"] - -# Check the first few rows of the dataset. Default is 5 rows. -borders2.head() -``` - -### Knowledge Check - -```{r example-quiz} -quiz( - question("[Question]", - answer("[Incorrect answer]", correct = FALSE), - answer("[Incorrect answer with feedback]", correct = FALSE, message = "[Specific feedback.]"), - answer("[Correct answer]", correct = TRUE), - incorrect = "[General feedback for any incorrect answer.]", - allow_retry = TRUE, - random_answer_order = TRUE - ) -) -``` - -### Code Exercise - -```{r example-code-q, exercise=TRUE} -# Hello World example -hello_world <- "Hello World" - -print(hello_world) -``` - - ## Explore ### Mean/Median & Summary @@ -1146,18 +1111,25 @@ borders['number_of_eyebrows'] = 2 borders.head() ``` -Sometimes we want to delete certain columns. We can use `drop` method to do so. +Sometimes we want to delete certain columns. We can use `drop` method to do so. * Removing a column by label: -```{python remove-column1, eval = FALSE, echo = TRUE} -df = df.drop(list_of_column_labels, axis = 1) -# axis = 1 specifies you are removing a column +```{python delete-column1, eval = FALSE, echo = TRUE} +df = df.drop('column_name', axis = 1) +``` + +where `1` is the *axis* number (`0` for rows and `1` for columns). + +Or `drop` method accepts `index/columns` keywords as an alternative to specifying the axis. So we can now just do: + +```{python delete-column2, eval = FALSE, echo = TRUE} +df = df.drop(columns = ['column_nameA', 'column_nameB']) ``` Let's load the first 10 rows of `borders`, and remove the first two columns `URI` and `HospitalCode` by their column labels (column names): -```{python delete-column1, exercise = TRUE, exercise.setup = "pandas-setup"} +```{python delete-column-example1, exercise = TRUE, exercise.setup = "pandas-setup"} borders_10 = borders.head(10) borders_10.drop(['URI', 'HospitalCode'], axis = 1) @@ -1165,19 +1137,28 @@ borders_10.drop(['URI', 'HospitalCode'], axis = 1) * Removing a column by index position: -```{python remove-column2, eval = FALSE, echo = TRUE} +```{python delete-column3, eval = FALSE, echo = TRUE} df = df.drop(df.columns[list_of_column_positions], axis = 1) -# axis = 1 specifies you are removing a column ``` Let's replicate the last example by using this method: -```{python delete-column2, exercise = TRUE, exercise.setup = "pandas-setup"} +```{python delete-column-example2, exercise = TRUE, exercise.setup = "pandas-setup"} borders_10 = borders.head(10) borders_10.drop(borders_10.columns[[0, 1]], axis = 1) ``` +Besides, if you want to delete the column without having to reassign `df` you can do: + +```{python delete-column4, eval = FALSE, echo = TRUE} +# Delete a single column +df.drop('column_name', axis = 1, inplace = True) + +# Delete multiple columns +df.drop(['column_nameA', 'column_nameB'], axis = 1, inplace = True) +``` + ## Wrangle – Part 2 ### Manipulate Strings From 2fa9eb781eb49dbf089571ed32cca7c976bfaffe Mon Sep 17 00:00:00 2001 From: Josie Date: Wed, 11 Feb 2026 15:31:32 +0000 Subject: [PATCH 11/44] Slight changes to clarify steps --- intro.Rmd | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/intro.Rmd b/intro.Rmd index dbc1e21..4c2b167 100755 --- a/intro.Rmd +++ b/intro.Rmd @@ -132,7 +132,7 @@ In order to use VS Code you first need to install extensions. Extensions are ess 3. Within this folder is a script called `install_extensions.sh` which will automate the installation process. It already contains the extensions you will need to get started but it can be modified depending on your needs. To execute this script enter `bash install_extensions.sh vscode` in the terminal. -4. Next, you will need to reload your VS Code to make sure your extensions have loaded. Press `Ctrl` + `Shift` + `P` and search "Developer: Reload Window". +4. You will see Installation completed! in your terminal. This means everything has worked and the extensions should have been installed. Go to Extensions icon on Activity Bar and you should see a list of the extensions installed. ##### Environments From 593ac44c3c62cbf97a390cfab0873cb413d123d6 Mon Sep 17 00:00:00 2001 From: Tina815 Date: Mon, 23 Feb 2026 17:23:01 +0000 Subject: [PATCH 12/44] modify Explore section --- intro.Rmd | 80 +++++++++++++++++-------------------------------------- 1 file changed, 24 insertions(+), 56 deletions(-) diff --git a/intro.Rmd b/intro.Rmd index e6ad0d4..798b3f3 100755 --- a/intro.Rmd +++ b/intro.Rmd @@ -828,47 +828,26 @@ borders3.head() * `describe()` returns all summary statistics based on a given array. -For example, `[""].median()` will generate the `median` value of the values within the stated column. +For example, `df["column_name"].median()` will generate the `median` value of the values within the stated column. -In the exercise below, you have the borders data-set loaded as `borders_data`. See if you can get the mean value for `LengthOfStay`, store it in a variable, and print that variable. Use the hint button if you need some help. +In the exercise below, you have the borders data-set loaded as `borders`. See if you can get the mean value for `LengthOfStay`. Please store the mean value in a variable called `mean_value`, and print that variable. Use the hint button if you need some help. ```{python mean, exercise = TRUE, exercise.setup = "pandas-setup"} - -borders_data = pd.read_csv("data/borders_inc_age.csv") - -borders_data +borders ``` ```{python mean-hint-1} - -borders_data = pd.read_csv("data/borders_inc_age.csv") - -borders_data["LengthOfStay"] +mean_value = borders["LengthOfStay"].mean() ``` - ```{python mean-hint-2} - -borders_data = pd.read_csv("data/borders_inc_age.csv") - -borders_data["LengthOfStay"].mean() -``` - - -```{python mean-hint-3} - -borders_data = pd.read_csv("data/borders_inc_age.csv") - -mean_value = borders_data["LengthOfStay"].mean() +mean_value = borders["LengthOfStay"].mean() print(mean_value) ``` ```{python mean-solution} - -borders_data = pd.read_csv("data/borders_inc_age.csv") - -mean_value = borders_data["LengthOfStay"].mean() +mean_value = borders["LengthOfStay"].mean() print(mean_value) ``` @@ -880,52 +859,41 @@ grade_code() ### Frequencies & Crosstabs -* Frequency: `["").value_counts()]` -* Crosstab: `pd.crosstab([""], [""])` -* Crosstab & Add Col/Row Totals: `pd.crosstab([""], [""], margins = True)` -tab - -Create a crosstab for `HospitalCode` and `Sex`, add column and row totals, store the table in a variable, and print it out. Use the hint button if you need some help. +* Frequency: +```{python frequency, eval = FALSE, echo = TRUE} +df["column_name".value_counts()] +``` -```{python freq, exercise = TRUE, exercise.setup = "pandas-setup"} +* Crosstab: +```{python crosstab, eval = FALSE, echo = TRUE} +pd.crosstab(df["column_nameA"], df["column_nameB"]) +``` -borders_data = pd.read_csv("data/borders_inc_age.csv") +* Crosstab & Add Column/Row Totals: +```{python crosstab2, eval = FALSE, echo = TRUE} +pd.crosstab(df["column_nameA"], df["column_nameB"], margins = True) +``` +Create a crosstab for `HospitalCode` and `Sex`, add column and row totals. Use the hint button if you need some help. +```{python freq, exercise = TRUE, exercise.setup = "pandas-setup"} +borders ``` ```{python freq-hint-1} - -borders_data = pd.read_csv("data/borders_inc_age.csv") - ...pd.crosstab(...) ``` ```{python freq-hint-2} - -borders_data = pd.read_csv("data/borders_inc_age.csv") - -crosstab_hospitalcode_sex = pd.crosstab( - borders_data["HospitalCode"], borders_data["Sex"]...) +pd.crosstab(borders["HospitalCode"], borders["Sex"]...) ``` ```{python freq-hint-3} - -borders_data = pd.read_csv("data/borders_inc_age.csv") - -crosstab_hospitalcode_sex = pd.crosstab( - borders_data["HospitalCode"], borders_data["Sex"], margins = True) -print(crosstab_hospitalcode_sex) +pd.crosstab(borders["HospitalCode"], borders["Sex"], margins = True) ``` ```{python freq-solution} - -borders_data = pd.read_csv("data/borders_inc_age.csv") - -crosstab_hospitalcode_sex = pd.crosstab( - borders_data["HospitalCode"], borders_data["Sex"], margins = True) - -print(crosstab_hospitalcode_sex) +pd.crosstab(borders["HospitalCode"], borders["Sex"], margins = True) ``` ```{python freq-check} From 43ff52a51bfae86190a7a60a6ccab276da4f8a21 Mon Sep 17 00:00:00 2001 From: Tina815 Date: Mon, 23 Feb 2026 17:26:36 +0000 Subject: [PATCH 13/44] fix code for executing install_extensions.sh --- intro.Rmd | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/intro.Rmd b/intro.Rmd index 798b3f3..ddadb5a 100755 --- a/intro.Rmd +++ b/intro.Rmd @@ -130,7 +130,7 @@ In order to use VS Code you first need to install extensions. Extensions are ess 2. Once cloned, open this folder. To do this, click the explorer button on the left hand menu and then click on the open folder button. You should then be able to select the "vscode_prep" folder and click "OK". -3. Within this folder is a script called `install_extensions.sh` which will automate the installation process. It already contains the extensions you will need to get started but it can be modified depending on your needs. To execute this script enter `bash install_extensions.sh vscode` in the terminal. +3. Within this folder is a script called `install_extensions.sh` which will automate the installation process. It already contains the extensions you will need to get started but it can be modified depending on your needs. To execute this script enter `bash install_extensions.sh vscode base` in the terminal. 4. You will see Installation completed! in your terminal. This means everything has worked and the extensions should have been installed. Go to Extensions icon on Activity Bar and you should see a list of the extensions installed. From 5108a91a6143bd12cb23fdd15b66122504591fc2 Mon Sep 17 00:00:00 2001 From: Tina815 Date: Fri, 6 Mar 2026 14:39:46 +0000 Subject: [PATCH 14/44] fix syntax for sort values --- intro.Rmd | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/intro.Rmd b/intro.Rmd index ddadb5a..a855c92 100755 --- a/intro.Rmd +++ b/intro.Rmd @@ -902,7 +902,7 @@ grade_code() ## Wrangle – Part 1 -For the next sections, we will focus on using the pandas module manipulate data and data frames. +For the next sections, we will focus on using the pandas module to manipulate data and data frames. ### Row Indexes @@ -934,11 +934,11 @@ In this RangeIndex, we start labelling rows at 0, stop before 3, and increase by ### Sorting Rows -The syntax to sort a DataFrame `df` in pandas by a particular column is +You can order the DataFrame rows in ascending order by a particular column. The syntax in pandas is: ```{python sort-value, eval = FALSE, echo = TRUE} df = df.sort_values( - by = 'Column' + by = 'column_name' ) ``` @@ -947,7 +947,7 @@ where - `.sort_values()` is a DataFrame method. By default it will sort in ascending order. To sort in descending order you can add `ascending = False`: ```{python sort-value-desc, eval = FALSE, echo = TRUE} df = df.sort_values( - by = 'Column', + by = 'column_name', ascending = False ) ``` @@ -968,8 +968,6 @@ Sometimes, we are only interested in looking at certain rows and columns of a Da We will explore how both of these work using a mini-DataFrame from `borders` data. ```{python mini-df, echo = FALSE} -import pandas as pd - mini_df = pd.read_csv("data/borders_inc_age.csv", usecols = ['URI', 'Main_Condition']).head(4) mini_df @@ -978,8 +976,6 @@ mini_df Before demonstrating we will sort the data by `Main_Condition`. This isn't necessary to use `.loc[]` or `.iloc[]`, but it will make the difference between them clearer. ```{python mini-df-sort, echo = FALSE} -import pandas as pd - mini_df = pd.read_csv("data/borders_inc_age.csv", usecols = ['URI', 'Main_Condition']).head(4) mini_df.sort_values(by = 'Main_Condition') From bd6cd9becd98a81e33050bf51596d6acd4d9ec42 Mon Sep 17 00:00:00 2001 From: Tina815 Date: Mon, 9 Mar 2026 16:06:12 +0000 Subject: [PATCH 15/44] fix some wordings and feedback link --- intro.Rmd | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/intro.Rmd b/intro.Rmd index a855c92..63dd94f 100755 --- a/intro.Rmd +++ b/intro.Rmd @@ -1324,7 +1324,7 @@ borders.head(10) ### Rename -Sometimes we would like to renames specific columns in a data frame: +Sometimes we would like to rename specific columns in a data frame: ```{python rename, eval = FALSE, echo = TRUE} df.rename(columns = {'old_column_name':'new_column_name'}) @@ -1394,7 +1394,7 @@ group_by_hospital_code = borders.groupby('HospitalCode') group_by_hospital_code.agg({'LengthOfStay':'describe'}) ``` -### Merge Dataframe +### Joining Dataframe ```{r join-diagrams-overview, echo=FALSE, fig.align='center', out.width="100%"} knitr::include_graphics("images/join_python.png") @@ -1429,5 +1429,5 @@ baby5.merge(baby6, how = 'left', on = ['FAMILYID','DOB']) #### Feedback - + From 4670eeedada21a3cfa10f0c49c1192ce56e9bc25 Mon Sep 17 00:00:00 2001 From: Tina815 Date: Mon, 9 Mar 2026 17:27:46 +0000 Subject: [PATCH 16/44] update jupyter notebook images --- images/python-pwb-blanknb.PNG | Bin 19454 -> 0 bytes images/python-pwb-blanknb.png | Bin 0 -> 38875 bytes images/python-pwb-newnb.png | Bin 26820 -> 25651 bytes images/python-pwb-startsession.PNG | Bin 20657 -> 0 bytes images/python-pwb-startsession.png | Bin 0 -> 29014 bytes images/python-pwb.png | Bin 41077 -> 83408 bytes intro.Rmd | 13 +++++++------ 7 files changed, 7 insertions(+), 6 deletions(-) delete mode 100644 images/python-pwb-blanknb.PNG create mode 100644 images/python-pwb-blanknb.png delete mode 100644 images/python-pwb-startsession.PNG create mode 100644 images/python-pwb-startsession.png diff --git a/images/python-pwb-blanknb.PNG b/images/python-pwb-blanknb.PNG deleted file mode 100644 index 1a0f29f0c69d4acab2157f285806eb03f03d0623..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19454 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
_+7N@c0VmtTRD!GPyRk3P#rik{XP@*-7Gru zd@0#5lR}Y(vH~^NuA2VbTk8Bxz*E)ElXsc(uP$;cV5`-*4!%S(TrtXeWJjsKWYb;M zPd-qYJks1O{~Mv(dId;*TbViW>SDg^1HeoSdBZyk7GR}zTJm{F!zTX^bQlp~KRoET z^{Jcs?O8?_^_#7jZt6FN)*)c>s4uz^U&y-w1H0^tbH86irzCUWdoDm$Sljm@c~AkX z`*uLNm2kBn`@`ME?7dlV`@`SMMDGX^_i_B0@olaaYb}v!j`&-e$k3O|66M1tOFcW)JTFr^r_;Yb874oq zx;EeiL8b|a^I#C%qkRegb;wQCFDj2DV~|7>^=1aW3|x@(?}r=ajz!BV+1>4F0xnt! zC_(OjvB%)5a1tll)s(@WoX>I^WkWI4{BtaaOhRsIl!F4XHWES|xkdTJe=R|>zX!i>`apt>)I`n${4>}&r5pcJeC~f>sQ*>I z*dS+Rb_e+Xn_}jb8hQL)X8QTl1=`}0^AKnh%!M*z4_J6H*ch2o?ywEh%y{7MAsg9g$x-rlXFGQ+}%*@QZva_|J znNuuMw)u60O&8d%3z{ZJd#o~{IyYLpLP&7H7T9=eD+-3Fz=y7vPMyG^B?Ma_bL5hj z2a6~tZ1g-SQ&pv@OGQiN)z#JEr);31pwrXh5-<_IdS_aglhO(g6!TeD%>2~#=fm@P z-}9%i<=4qbh3TECzHNYP=?d?{n0veKa~0aWkEpy8eXr6)<<*ye`yzZ{!|OMW0te(L z?MMt%Jgg`Wci%is#lYz*u^wNx+Wh`}HK@2`@tue9nNyM@f`M6a@7%L17n{%JgR2Jm z=8Eb`5uuxkJ=TBUh^Hxu!JS|m?6gSFbJ>K9g?mb`%q}@$`UTkW5fMk#st8?X1e}!s znS{oDxl3{4yZPy`RZL;?T3lke%w>%7bvOI8S;1|ZF~7w{U;%IvF9tP?6kvwGnJFaX z$nd?);Ji%pytb*_pYNIRpvFK8Y)#b0EkLENLZUD`lYp}pO>mY-&NWtS*Ed#(%sm^x(YYY_1?NKb<;!M3i_wUfQl53mA2qCI zFGQ>bD`BR9Tlj76udsKK)%(q-%Ev0f!ocOomn?@Z`|=h~U-!iQXe&J922@$e3e|qU zTaL&`v2zMMmdr#PCFH>0jL3%^ki#WFB@9APhD%E5?fw1n;L~EHU}eHCu30ZLwoMNA zC;^_M;o?#9;ejK(JZRACk{8N6_PE_;*54;0LNBXoOCNiUOT359tHNe@fTdym z>Y4v-fCbJW#=v6}G+t#PR^~+=+1aHL1~lpb!s%lFHh274-2p5dXRcF2nBux@b;loI zmDJ(mvBVg-mg9ex(%qHI{Qott39WV7w$JPA_HEn5;C0i2xhFH+9zQpob@#`4#ZzCk z7745SsW>n4aRk;^o0ygDP2lZm>{T`~FLLmhqN%|ZANr)-bzfa7 zyka)Fb+c#w^&1ZZmI13yp-hJqC#AU?nw9Qe;Okm+NGX255WI4ZdfTHW!*`PrShBma zx@3ZCyHAIe?nZ`0JYjd6xkVeaW&jL!N>AN+<5py^EZl#&!$`OWQL-p>tBertG>(x)v=knj=sB8V^WOo6MSN(TcyXKbl7hZ9=d!CwV9qv3;b)~@K zNw$-cX_oT+6-{vef9g3^R`WJMBL_G^+k4A#O5junSoMBMa_UVN;JHUZwu=Alg{xlL U3O+ru43uy@UHx3vIVCg!00q!RfB*mh diff --git a/images/python-pwb-blanknb.png b/images/python-pwb-blanknb.png new file mode 100644 index 0000000000000000000000000000000000000000..cad55e87058ab4c9f65f64b73ff14facd3bbb29d GIT binary patch literal 38875 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 literal 0 HcmV?d00001 diff --git a/images/python-pwb-newnb.png b/images/python-pwb-newnb.png index af806eccd52c25316d06e228f14ce835df7a660f..0fc3a6b0554055b2d5d524d3e24b1a38b2ed29e9 100644 GIT binary patch literal 25651 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 o%{H0hB#z||_>;|m?lW@VBD?3mGaxs>AAMX{66 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 literal 0 HcmV?d00001 diff --git a/images/python-pwb.png b/images/python-pwb.png index 67b031fa8feaad9af7b6e18c11e6fa1bf3bdadff..5906c867a145bdd96da7a9e27da61cb3ed1fd9be 100644 GIT binary patch literal 83408 zcmdqJbyQVd7e0FEE&)M85R@(j>6B8C?naQ1?ru;@L_|uYr5h=wK|&ee>i-%2tjX)sq9zB#&MIcb?5eVdY zOmui>IC3Bq{vbK4%057p^i!?E3segU1qlSAJR0Zh2^ze{a(JlYj6ht!bM+7Dk?QR& z1mZILk(7kGhvE8^y9bHJB>I+j^_{v^YGkYoNz4ZNZ{8S0gs5mO$eM)GDo8k*WyZ3i z5)wu@56M0pPRnE74tX=}{eyRgCYib-_T~h`&!)8r9H;&teNSVPQaqOh28fpXk{L4z zQxroxqLOL(Yj03dS1B{0@(T(+$WlQe#3r~y_xI%l)k1+Zo>U+{MHAO0zqB*Vf&t;yvS5!E?e)A^6|8gp1e4IR4^cD+?=H9_U zNN{jRPH@=YpRUxU<>gz<%xILnMbZx*1dWtz?d%wrMgDWVfU5XAk)h$ul^K7+k>7e% zE2OVp;q#(||L-_2P_z}T4j-){|Cj=+%r zZ|7yJV#&&~qZs}(7wW!DB-sBx=gGgWLi(=*y8oX%pe`GIv;C9vucf{_f*xCh9EP}Y zd^6lZOc9y&G5<^rCSuP^gyC@_=Eol|SBKLiH>VpGC2fjytFW!V7d=l)<7_-Xp!7U6 zFyl=oqNeV|<@{$sSdwJ2T2_X#5QrJSQ);*M@mn-><>++?zp zJTILel4Uq-y8qkaarfc7c`TKUPCnbuh#rcJYmonI&2KfG?clVw(SIndv7I!uxpjK_ z{9pG{(|W%iMtpn?=f{i^uE#&uSNYV1^ZjsTs9|K3a+3_bex;{*lGr)!?=gF(bA9;O*}1jpcp1@nqi^WhGdD(VZsG(EgEx(h zZX53u#Qqs3wO7MU|MMye1efoL^U73RjZfIq)(|Z6`&Ouk+0v$qH|{gsZlqf*y*9iH z#WmA1E-sbzg}M>Z(VeevNe(r5D;4Q~!Y(f_=RJS+>=|52=;COBAlc1(abY1i!O)Ay zs)}O&_h>r~r!XhYgTMBs5dvEZ-ia1)HvG>A#ozKKkqS8341)8 z)-Sf1I!Pm0S7jnOI+(O4BqIwJyF8<5JT}MjJKrbMuX7^>Ba?A(C_7vIpVtV3VWQ(x zVUqL`r*Qwm`|#mISExE=o!iEn3o)BRHit&-n6a^k1A3;8o-{!P$ng1nH@>t6KHI01bv$JCy z8$%2P9X-8Djh*j`OMjjQD>GU`1o;qt(0}B(N~sVs7`J{^1(aP?fHS2 zm>6b%Y~^0-U(3t$b(@U|*yln*b(uy@7npbr8vJR0ozYDyH_9z1N5_uS%_fLse2C^w z8vme$&gh=dIA$0yXXDYmtBbPhRX=RG0}e|v6h8~TA?oCM9uiP zc9B6HzK%`}vZ7wKjl{!;I6i0FjJ1vnFGlRR$Q{Xf5v^#illY91sn)9xM48dL1G{)KHeJd|*jSFox-` zerkTdGbRRwcbJHWN=lv110oi&t5r|Gjvf6)@cHH>vdM1Bs&N0=1t%BM_OHnOjE-#J0#bPDVc4cP@@C*gK;AaalFlt_FfrrHe;$ z_7mnx)XCX-Ns0cill}d;l3p!Wk+@2iQKiuJ8lUaN?TAdKoZQ?<-;=$#iKe6Zo@;5l zKP)0`PO9x^ZV3u}3ezo)9k2Jq**@7{yK`{3HfGe@+k4H~*}0vFUM3t4<_!x(3c0Pn z?a0l^i69W!E4zB5q~uSg=Gtw13Lfp=?(R1oy~%t=BUUL=oSZbump3eSMT&6IgZswX&pD)3NSvLVzQFdC_f^Xg zHru@jhg<#dAq)i__iac0*$(Ts>adD2Hzy~e%VUe;zTL}{HG7p@=j$*zLo-d);>{x2J1~*e6_HkRf0NOy*h%KG+lui0VD%wk^F4Vf!k4<#hL@ickgy2J)H; zx~$MDFbeyg@X*nhwhj#uNxr~+W0K;#2O9wl);!<=z-WXTU{wICQtV=(D(lX=&LyJj6gy@jDQ1OuBz5Z7N~ACd^8(=8cJ%s&kiY@M_0E1NWZsqzxSrur_A@ zmcO`MuO>7Sb&`sjdTwEX-q)6g!uI4Z;Lr0ayoSUH!FWVX?P@fL=6ClmXE&R)dP0A6 z_4LHvO8}oUl%t^c%&e(3TBFb}R*ckj?Ynd=g8~APk&ywpOCVFkcvX*TQ=#=(=wN|{ zJde$IGXoCWy`6V&H#BOGe5Emi0$#r+EYdq9;4l=nkKJ~iZIqp~o~s9)$I#EZ9eu)AeYYrH1sR+ZX}q>9lORdr5Ca+;*20 zgm-&CZtWI^|4L0ZoM(C6&MeG(`}T)%wtEN%2Zy)FuCP|^<{3y#ZYl^_Sy>Nn@2|;! z?|KDE>kJX-XGkRl2lv2}4uGkdaM$F0#fHAPJ=NBYO>amSTR-j z8F$G&eFKAX^S+s*{V^k(ilVFV@+CZ$>)AJAfTFJ_LJ4SIM3N0GgflWoWR#u#NbEB& z(%#0=t+rt&J#V5!l?ae?wJu=zi$heN6+DKG{Mlvo<+I@&WVHQC(c{IBCb_dn0S_`> z=X^dsKAxLxIj{A)Uq2!X^ZDVI9(UzS8G3wb!H}}Do?53nRCtuU;tL&7>2N=FHD*4R zmP{rlCXOqEPY~h|gCqKc3veX}0lPhgy^oGaA6s)=>{1ceOB?%r2OIJ@{WLBOizDffW=mW|$n6 zqmYb@&@9pp3=1pVc_J=>u9hVe6%aI`3w|RHTxUK3tnupcm3i#$q9ES$J0b%X2p+PO zs4kl()eAvEsdbnw^tLy$QHa5Fa8}d&N4-W*QwUt96U;X-V61JF+ zj}Levvr=2Xx3jJTdVi7ZnzPh}aq#G5l^E(%W2)8I1X*t28 zjXgpw=2!n^^);ZpM@^G2@F*X(-2ZzwnHB2!0c41yqodg=_g|73%FTe#yJF~fZi!1! z=gzgU@0Uucd^z3ZtYkhijE58~Q=?E*Tw;UGy07fYsk!DNqoAndD$>GgYL@6fPfR3V zaS?nb_|(&PtL1^scv;5ygER1>@(CBW6--Agc`&iC08^liN{p2l1O}OG&G=tRmY3dQ zjG)`|YN)>vMEg*pwH0EJf&wS2k`m`gk&fiFe!+Ei-E`+)iiiN1XYJapHo8L5D`$Fs zIFnEf8-a+_@aoWies1b(aLl4z;gQa_%xa5$(vSvS6Y)MkAg)rImX=$IBB%Gyb_aA< z%RRP#txQx=R@+Tk?droqxon&eB53d4B_iWAWK&J<86GCyn5aTQ0JbNT$s$sC#}iYL z+Pwz;nq27MZtW*e+S?xlaumENxXtSW?wWRF$l&?+CcCq)S#`Z``L-tmU)h@~f@5bF z|15~cckeD>x?uaJbH$V63y78VC%HYN!i9UTz?>+4i6Z=N$TD83JA0$4UTM^x*v zP1ks0g_Y{Ld}GyHWbgITubFCFO0dA^N}|Uk-iLoAU0irBPB+CKC+(2n-xNkg6zhCiaHux~x*09kBO}EM_`0AX?vya#98}@nM@#1x)ig+U-U|L@1l>bxu ziIa`P^~hIefq^}~%6F&Dpr%9$5u%s}?H&N?8J}HthQ}WIUiJImC;2^ho|fNu+~Bnz zqG*vM$`oM|Goc?un{J^bUtGGrZi5i-d_`@?O1b)b^kI?iKBXT(ESsOTDqaR8B(IDr z7FnNFNg*u9N~jwzFNE?p;8R!gvHHt7DNp_{fQSa6SJ2W_BX&Gnw5(G6PhbnZfrehacOm* z_LO~RsQsq7S$ut_i468J6Ix@@ @QTqPPPe5hjUlWNx389)I->f|#7n~0HRtM6>& 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%0Af4|h_M1}1>0|B0xolJa%)LhM8(&!u1NKxa2 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

pbvmYKx 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

0G;ev6 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 Cf_Byb literal 41077 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�^ql=F3MA_etMLdT8 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 diff --git a/intro.Rmd b/intro.Rmd index 63dd94f..c743039 100755 --- a/intro.Rmd +++ b/intro.Rmd @@ -213,7 +213,7 @@ Jupyter Notebook is designed for the easy integration of text and Python program #### Open a New Jupyter Notebook -We can access "Jupyter Notebook" on [Posit Workbench](https://pwb-prod.publichealthscotland.org/). After signing in, click on New Session and a diaglog box will pop up. Click on Editor and select "Jupyter Notebook" from the drop down list, and then Start Session. +We can access "Jupyter Notebook" on [Posit Workbench](https://pwb-prod.publichealthscotland.org/). After signing in, click on New Session and a diaglog box will pop up. Click on "Jupyter Notebook" and then click "Launch". ```{r openpynb, fig.align='center', out.width="60%"} knitr::include_graphics("images/python-pwb.png") @@ -225,22 +225,23 @@ You will see the interface looks like this. There are three main tabs in Jupyter - **Files** Your file directory - **Running** Lists all of the notebooks currently running -- **Clusters** For using IPython in parallel with your cluster (beyond the scope of this training guidance) ```{r startsession, fig.align='center', out.width="100%"} -knitr::include_graphics("images/python-pwb-startsession.PNG") +knitr::include_graphics("images/python-pwb-startsession.png") ```
-To open a new Jupyter Notebook, click the "New" drop down menu on the Files tab and select “Python 3.10.2” under the notebooks heading. This will open a blank Notebook with an IPython console running underneath it. +To open a new Jupyter Notebook, click the "New" drop down menu on the Files tab and select “Python 3 (ipykernel)” under the notebooks heading. This will open a blank Notebook with an IPython console running underneath it. -```{r newnb, fig.align='center', out.width="100%"} +```{r newnb, fig.align='left', out.width="25%"} knitr::include_graphics("images/python-pwb-newnb.png") ``` +
+ ```{r blanknb, fig.align='center', out.width="100%"} -knitr::include_graphics("images/python-pwb-blanknb.PNG") +knitr::include_graphics("images/python-pwb-blanknb.png") ```
From 04760651080427397ac5c912f6a8fd4e3629220f Mon Sep 17 00:00:00 2001 From: Tina815 Date: Mon, 16 Mar 2026 16:20:18 +0000 Subject: [PATCH 17/44] modify data type and data structure --- intro.Rmd | 41 +++++++++++++++++++---------------------- 1 file changed, 19 insertions(+), 22 deletions(-) diff --git a/intro.Rmd b/intro.Rmd index c743039..93240bd 100755 --- a/intro.Rmd +++ b/intro.Rmd @@ -376,7 +376,9 @@ knitr::include_graphics("images/r_coding_cases.png") ```

-### Numbers +### Basic Data Types + +#### Numbers There are 3 main types of numbers that can be declared in Python. @@ -393,21 +395,21 @@ k = 6.626e-32 # Using scientific notation var1 = 2 + 5.2j # Complex numbers ``` -### Arithmetic Operators +#### Arithmetic Operators The following are examples of all the arithmetic operators available in Python. ```{r, echo = FALSE} operators_table <- data.frame( - "Precedence" = c(1, 2, 3, 4), - "Operator" = c("`+` `-`", "`*` `**` `/`", "`//`", "`%`"), - "Description" = c("Addition, Subtraction", "Multiplication, Power, Division", "Floor Division (round down after division)", "Modulus (remainder after division)") + "Precedence" = c(1, 2, 3, 4, 5, 6, 7, 8), + "Operator" = c("`**`", "`%`", "`*` `/`", "`//`", "`+` `-`", "`~`", "`&`", "|"), + "Description" = c("Power", "Modulus (remainder after division)", "Multiplication, Division", "Floor Division (round down after division)", "Addition, Subtraction", "Logical NOT", "Logical AND", "Logical OR") ) knitr::kable(operators_table) ``` -### Strings +#### Strings Strings in Python are an ordered sequence of characters, and can be declared with either single or double quotes. @@ -448,7 +450,7 @@ print('Hello' + ' ' + 'World' * 4) print('Hello' + (' ' + 'World') * 4) ``` -### Boolean +#### Boolean Booleans represent either `True` or `False`. @@ -465,13 +467,16 @@ If a value has some sort of content, it is normally evaluated as true: ```{python boolean2, exercise = TRUE} bool("Hi") bool([]) +bool(0) +bool("") +bool(None) ``` -Note that the empty `list` in the second expression returned `False`. +Note that the empty `list`, `0`, `""`, and `None` all returned `False` as they don't have any content. -### Data Types and Type Conversion +#### Data Types and Type Conversion -The `type()` function can be used to query the type of a Python object, and any type conversion can be performed by using the appropriate function e.g. `int()` for integer, `str()` for string, and `float()` for a floating point number. +Dynamic typing is one of Python's core features that sets it apart from statically typed languages. In Python, variables are not bound to a specific type at declaration. Instead, the type is determined at runtime based on the assigned value. This means that a single variable can hold data of different types throughout its lifetime hence making Python a flexible and easy-to-use language for rapid development and prototyping. The `type()` function can be used to query the type of a Python object, and any type conversion can be performed by using the appropriate function e.g. `int()` for integer, `str()` for string, and `float()` for a floating point number. ```{python type-conversion, exercise = TRUE} myint = 12345 @@ -488,6 +493,10 @@ myfloat There are various data structures which are built into Python. Some of the main ones are: +- Sequence Types: list, tuple, range +- Mapping Type: dict +- Set Types: set, frozenset + #### Lists - Lists are ordered collections of items. @@ -542,18 +551,6 @@ my_set = {1, 2, 3, 4, 5} print(my_set) ``` -#### Strings - -- Strings are sequences of characters. -- They are immutable, meaning you cannot change the characters in a string once it's created. -- Strings support various operations and methods for text manipulation. - - -```{python stringexample, exercise = TRUE} -my_string = 'Hello, World!' -print(my_string) -``` - ## Functions & Libraries In Python, functions are a block of organised and reusable code which performs a specific task. From 813056d2037796afd02024bc211a9110b664151f Mon Sep 17 00:00:00 2001 From: Tina815 Date: Tue, 17 Mar 2026 17:39:26 +0000 Subject: [PATCH 18/44] modify contents in a few chapters --- intro.Rmd | 327 +++++++++++++++++++++++++++++++++--------------------- 1 file changed, 202 insertions(+), 125 deletions(-) diff --git a/intro.Rmd b/intro.Rmd index 93240bd..8d83119 100755 --- a/intro.Rmd +++ b/intro.Rmd @@ -401,9 +401,25 @@ The following are examples of all the arithmetic operators available in Python. ```{r, echo = FALSE} operators_table <- data.frame( - "Precedence" = c(1, 2, 3, 4, 5, 6, 7, 8), - "Operator" = c("`**`", "`%`", "`*` `/`", "`//`", "`+` `-`", "`~`", "`&`", "|"), - "Description" = c("Power", "Modulus (remainder after division)", "Multiplication, Division", "Floor Division (round down after division)", "Addition, Subtraction", "Logical NOT", "Logical AND", "Logical OR") + "Precedence" = c(1, 2, 3, 4, 5, 6, 7, 8, 9), + "Operator" = c("`**`", + "`%`", + "`*` `/`", + "`//`", + "`+` `-`", + "`>` `<` `==` `!= or ~=` `<=` `>=`", + "`! or ~`", + "`&`", + "|"), + "Description" = c("Power", + "Modulus (remainder after division)", + "Multiplication, Division", + "Floor Division (round down after division)", + "Addition, Subtraction", + "Comparison Operators (Greater than, Less than, Equal to, Not Equal to, Less than or equal to, Greater than or equal to)", + "Logical NOT", + "Logical AND", + "Logical OR") ) knitr::kable(operators_table) @@ -411,11 +427,13 @@ knitr::kable(operators_table) #### Strings -Strings in Python are an ordered sequence of characters, and can be declared with either single or double quotes. +Strings in Python are arrays of unicode characters. However, Python does not have a character data type, a single character is simply a string with a length of 1. Strings can be declared with either single or double quotes, and square brackets can be used to access elements of the string. -```{python strings1, eval = FALSE, echo = TRUE} -name = 'John' -surname = 'Doe' +```{python strings1, exercise = TRUE} +a = "Hello, World!" + +# Get the character at position 1 (the first character has the position 0) +print(a[1]) ``` Multiline strings can be declared with triple single and triple double quotes, but note that whitespace characters are recorded in the string e.g. for tabs and for newlines. @@ -442,7 +460,7 @@ nested_quotes print(nested_quotes) ``` -For strings, the plus `+` sign will concatenate two strings into one, and the asterisk `*` will repeat a string a set number of times. Have a look and click 'Run Code' below to see the output. +For strings, the plus `+` sign will concatenate two strings into one, and the asterisk `*` will repeat a string a set number of times. Have a look and click 'Run Code' below to see the output. ```{python string5, exercise = TRUE} print('Hello' + ' ' + 'World') @@ -450,6 +468,27 @@ print('Hello' + ' ' + 'World' * 4) print('Hello' + (' ' + 'World') * 4) ``` +
+ +Python has a set of built-in methods that you can use on strings, such as: + +```{r echo = FALSE} +string_method <- data.frame("Method" = c("capitalize()", "casefold()", "count()"), + "Description" = c("Converts the first character to upper case", + "Converts string into lower case", + "Returns the number of times a specified value occurs in a string")) + +knitr::kable(string_method) +``` + +```{python string6, exercise = TRUE} +txt = "i love apples, apple ARE my favorite fruit" + +txt.capitalize() +txt.casefold() +txt.count("apple") +``` + #### Boolean Booleans represent either `True` or `False`. @@ -551,204 +590,242 @@ my_set = {1, 2, 3, 4, 5} print(my_set) ``` -## Functions & Libraries - -In Python, functions are a block of organised and reusable code which performs a specific task. - -Functions can be called from anywhere within the script, and can be stored anywhere within the script - **however**, it is custom convention to store functions are the top, or near the top, of the script in order to enhance readability and maintenance of the code. +## Control Flow & Iteration -### Structure +As is the case in most other programming languages, control flow is where decisions are made, and iteration is where processes are repeated. -Functions are made up of the: +### Control Flow - If -* Defined keyword `def` -* Function name -* `()` parentheses which may include parameters. -* Function body +`if` is the most common comparison operator used in Python. +```{python if1, exercise=TRUE} +a = 5 +b = 100 -```{python function1, eval = FALSE, echo = TRUE} -def (): - function_body +if a == 5: + print("a is equal to 5") +if b > a: + print("b is greater than a") ``` -Example: +There are some further statements when using `if` that you should be familiar with: +- `elif` is short for *else if*. `elif` keyword is Python's way of saying "if the previous conditions were not true, then try this condition". It allows you to check multiple expressions for `True` and execute a block of code as soon as one of the conditions evaluates to `True`. -```{python function2, exercise=TRUE} -def greet(): - print("Hello!") -``` +- `else` keyword catches anything which isn't caught by the preceding conditions. It is executed if the preceding `if` and `elif` statements are evaluated to `False`. -When you run the above code, you will see that nothing is outputted - this is because the function has not been called. +```{python if2, exercise=TRUE} +a = 100 +b = 35 +if b > a: + print("b is greater than a") +elif a == b: + print("a and b are equal") +else: + print("a is greater than b") +``` -```{python function3, exercise=TRUE} -def greet(): - print("Hello!") +If you have only one statement to execute, you can put it on the same line as the `if` statement. -greet() +```{python if3, exercise=TRUE} +a = 8 +b = 3 +if a > b: print("a is greater than b") ``` -### Parameters and Arguments +### For loop -Parameters are variables which are listed inside the parentheses in the function definition. +For loops are used for iteration over a sequence (that is either a list, a tuple, a dictionary, a set, or a string). -They are placeholders are actual values which will be passed into the function when it is called. +There are multiple ways to use for loops. -The values passed into a function are called arguments. +#### Iterating over a list: +```{python forloop1, exercise=TRUE} +list_of_fruits = ["apple", "banana", "cherry"] -```{python function4, exercise=TRUE} -def greet(name): - print("Hello, " + name + "!") - -greet("Bob") +for fruits in list_of_fruits: + print(fruits) ``` -You can also pass through multiple arguments: +#### Using Enumerate: +You can also use `enumerate` to iterate over a sequence and get the index position of each item: -```{python function5, exercise=TRUE} -def add(a,b,c): - print(a + b + c) - -result = add(1,2,3) +```{python forloop2, exercise=TRUE} +list_of_fruits = ["apple", "banana", "cherry"] + +for index, fruits in enumerate(list_of_fruits): + print(index, fruits) ``` -### Return +#### Iterating over a string: -The return statement can optionally be used to return the data back to the caller. +Iterating over a string with print() can print each character in the string in order: -```{python function6, exercise=TRUE} -def add(a,b,c): - return a + b + c - -result = add(1,2,3) -print(result) +```{python forloop3, exercise=TRUE} +for char in "Python": + print(char) ``` -#### Python Library +#### Iterating over a range: -Python library is a collection of functions and methods that allows you to perform lots of actions without writing your own code. For example, “pandas” is a Python library for data manipulation and analysis, which is used a lot in this training guidance. +To loop through a set of code a specified number of times, we can use the `range()` function, +The `range()` function returns a sequence of numbers, starting from index 0 by default, and increments by 1 (by default), and ends at a specified number. -## Control Flow & Iteration{#comparisonoperators} +Note that `range(6)` is not the values of 0 to 6, but the values 0 to 5. -As is the case in most other programming languages, control flow is where decisions are made, and iteration is where processes are repeated. +```{python forloop4, exercise=TRUE} +for i in range(6): + print(i) +``` -### Comparison Operators +The `range()` function defaults to 0 as a starting value, however it is possible to specify the starting value by adding a parameter: `range(2, 6)`, which means values from 2 to 6 (but not including 6): -Here are the most commonly used comparison operators used in conditional statements in Python: +```{python forloop5, exercise=TRUE} +for i in range(2, 6): + print(i) +``` -```{r, echo = FALSE} -operators_table <- data.frame( - "Operator" = c("`>` `<`", "`==` `!=`", "`<=` `>=`","`and` `or`"), - "Description" = c("Greater than, Less than", "Equal to, Not Equal to", "Less than or equal to, Greater than or equal to", "And, Or") -) +The `range()` function defaults to increment the sequence by 1, however it is possible to specify the increment value by adding a third parameter: `range(2, 30, 3)`: -knitr::kable(operators_table) +```{python forloop6, exercise=TRUE} +for i in range(2, 30, 3): + print(i) ``` +#### The break() Statement -### Control Flow - If +With the `break` statement we can stop the loop before it has looped through all the items: -`if` is the most common comparison operator used in Python. +Exit the loop when x is "banana": -```{python if1, exercise=TRUE} -if 5 == 5: - print("5 is equal to 5") +```{python break1, exercise=TRUE} +fruits = ["apple", "banana", "cherry"] +for x in fruits: + print(x) + if x == "banana": + break +``` -if 5 == 4 or 5 == 5: - print("Either 5 is equal to 4, or 5 is equal to 5") +Exit the loop when x is "banana", but this time the break comes before the print: -if 6 <= 6: - print("6 is less than or equal to 6") +```{python break2, exercise=TRUE} +fruits = ["apple", "banana", "cherry"] +for x in fruits: + if x == "banana": + break + print(x) ``` -There are some further statements when using `if` that you should be familiar with: +It would not print "banana" as the loop has already been exit when x equals to "banana". -- `elif` is short for *else if* and is used for multiple `if` conditions -- `else` is executed if the preceding `if` and `elif` statements are false +#### The continue() Statement +With the `continue` statement we can stop the current iteration of the loop, and continue with the next: -```{python if2, exercise=TRUE} -def check_if_number_is_1_2_or_3(number): - if number == 1: - print("The number is 1") - elif number == 2: - print("The number is 2") - else: - print("The number is 3") - -check_if_number_is_1_2_or_3(3) +```{python continue, exercise=TRUE} +fruits = ["apple", "banana", "cherry"] +for x in fruits: + if x == "banana": + continue + print(x) ``` -### For loop - -For loops are used for iteration. +It would not print "banana" as the loop was stopped when x equals to "banana", and then continue with the next one "cherry". -There are multiple ways to use for loops. +#### Nested Loops -#### Iterating over a list: +```{python forloop7, exercise=TRUE} +adjective = ["red", "big", "tasty"] +fruits = ["apple", "banana", "cherry"] -```{python forloop1, exercise=TRUE} -list_of_fruits = ["apple","banana","cherry"] +for x in adjective: + for y in fruits: + print(x, y) -for fruits in list_of_fruits: - print(fruits) ``` -#### Using Enumerate: +## Functions & Libraries -You can also use `enumerate` to iterate over a sequence and get the index position of each item also: +In Python, functions are a block of organised and reusable code which performs a specific task. -```{python forloop2, exercise=TRUE} -list_of_fruits = ["apple","banana","cherry"] +Functions can be called from anywhere within the script, and can be stored anywhere within the script - **however**, it is custom convention to store functions at the top, or near the top, of the script in order to enhance readability and maintenance of the code. -for index, fruits in enumerate(list_of_fruits): - print(index,fruits) -``` +### Structure +Functions are made up of the: -#### Iterating over a string: +* Defined keyword `def` +* Function name +* `()` parentheses which may include parameters. +* Function body +```{python function1, eval = FALSE, echo = TRUE} +def (): + function_body -```{python forloop3, exercise=TRUE} -for char in "Python": - print(char) ``` -#### Iterating over a range: +Example: -`range` in Python determines the position of the value, rather than the value itself. +```{python function2, exercise=TRUE} +def greet(): + print("Hello!") +``` -Remember that positions in Python begin at position `0`. +When you run the above code, you will see that nothing is output - this is because the function has not been called. -```{python forloop4, exercise=TRUE} +```{python function3, exercise=TRUE} +def greet(): + print("Hello!") -for i in range(5): - print(i) +greet() +``` +### Parameters and Arguments + +Parameters are variables which are listed inside the parentheses in the function definition. They are placeholders for actual values which will be passed into the function when it is called. + +The values passed into a function are called arguments. + +```{python function4, exercise=TRUE} +def greet(name): + print("Hello, " + name + "!") + +greet("Bob") ``` -#### Nested Loops +You can also pass through multiple arguments: -```{python forloop5, exercise=TRUE} +```{python function5, exercise=TRUE} +def add(a, b, c): + print(a + b + c) + +result = add(1, 2, 3) +``` -adjective = ["red", "big", "tasty"] -fruits = ["apple", "banana", "cherry"] +### Return -for x in adjective: - for y in fruits: - print(x, y) +The return statement can optionally be used to return the data back to the caller. +```{python function6, exercise=TRUE} +def add(a, b, c): + return a + b + c + +result = add(1, 2, 3) +print(result) ``` +#### Python Library + +Python library is a collection of functions and methods that allows you to perform lots of actions without writing your own code. For example, “pandas” is a Python library for data manipulation and analysis, which is used a lot in this training guidance. -## Importing and Exporting Datasets +## File Handling The Python language can be used for data analysis. The first step in performing analysis is to access your dataframe (i.e. your dataset). This section will introduce you how to import and export datasets. @@ -1089,7 +1166,7 @@ If we specify neither the start nor the final value, the slice will include all ### Boolean Masks -We often need to select data by properties, instead of by position/index. For example we might want to select all rows in `borders` corresponding to the HospitalCode as `B120H`. We can achieve this using Python's [comparison operators](#comparisonoperators) to compare values. Whenever we compare two variables using a comparison operator, Python returns a `True` if the comparison is correct, and a `False` if it is incorrect. +We often need to select data by properties, instead of by position/index. For example we might want to select all rows in `borders` corresponding to the HospitalCode as `B120H`. We can achieve this using Python's comparison operators to compare values. Whenever we compare two variables using a comparison operator, Python returns a `True` if the comparison is correct, and a `False` if it is incorrect. For example, here are a few comparisons and their output: @@ -1298,7 +1375,7 @@ Another way to recode data which offers more flexibility is by using the `loc` a df.loc[df['column_name'] == existing_value, 'column_name'] = new_value ``` -This method uses the boolean [operator](#comparisonoperators) `==`, which means **equal to**. We can also apply other operators. +This method uses the boolean operator `==` which means **equal to**. We can also apply other operators. For example, in the case that you wish to find all the values which are less than `5` in a given column, and replace them with `Small number`, you would code the following: From 0697621b9a338e1911610e0b9ac140a8b5fbd0ce Mon Sep 17 00:00:00 2001 From: Tina815 Date: Fri, 20 Mar 2026 11:43:46 +0000 Subject: [PATCH 19/44] modify contents for control flow and foundation --- intro.Rmd | 94 ++++++++++++++++++++++++++++++++++++++++++++++--------- 1 file changed, 80 insertions(+), 14 deletions(-) diff --git a/intro.Rmd b/intro.Rmd index 8d83119..42ddb19 100755 --- a/intro.Rmd +++ b/intro.Rmd @@ -74,6 +74,7 @@ systems. - Learning Python opens up professional development opportunities. + ## IDE ### VS Code @@ -366,15 +367,26 @@ if 1 < 10: Indentation not only affords proper functionality, but it also enhances readability and comprehension for yourself, and future co-developers. -### Style +### Python Variables -**Naming** - variables and filenames should have meaningful names in *`snake_case`* format, preferring all lower case. +Variables are containers for storing data values. A variable is created the moment you first assign a value to it using `=`. -
-```{r echo=FALSE, fig.align='center', out.width="100%"} -knitr::include_graphics("images/r_coding_cases.png") +```{python assignvariable, exercise=TRUE} +x = 5 +y = "John" +print(x) +print(y) ``` -
+ +A variable can have a short name (like x and y) or a more descriptive name (age, carname, total_volume). + +Rules for Python variables: + +- A variable name must start with a letter or the underscore character +- A variable name cannot start with a number +- A variable name can only contain alpha-numeric characters and underscores (A-z, 0-9, and _ ) +- Variable names are case-sensitive (age, Age and AGE are three different variables) +- A variable name cannot be any of the Python keywords. ### Basic Data Types @@ -528,6 +540,7 @@ mystr myfloat ``` + ## Data Structures There are various data structures which are built into Python. Some of the main ones are: @@ -590,6 +603,7 @@ my_set = {1, 2, 3, 4, 5} print(my_set) ``` + ## Control Flow & Iteration As is the case in most other programming languages, control flow is where decisions are made, and iteration is where processes are repeated. @@ -635,13 +649,62 @@ b = 3 if a > b: print("a is greater than b") ``` -### For loop +### While Loop +With the `while` loop we can execute a set of statements as long as a condition is true. + +```{python whileloop1, exercise=TRUE} +i = 1 # define an indexing variable and set to initial value as 1 +while i < 6: + print(i) + i += 1 +``` + +#### The break() Statement + +With the `break` statement we can stop the loop even if the while condition is true: + +```{python whileloop2, exercise=TRUE} +i = 1 +while i < 6: + print(i) + if i == 3: + break + i += 1 +``` + +#### The continue() Statement + +With the `continue` statement we can stop the current iteration, and continue with the next: + +```{python whileloop3, exercise=TRUE} +i = 0 +while i < 6: + i += 1 + if i == 3: + continue + print(i) +``` + +#### The else() Statement + +With the `else` statement we can run a block of code once when the condition no longer is true: + +```{python whileloop4, exercise=TRUE} +i = 1 +while i < 6: + print(i) + i += 1 +else: + print("i is no longer less than 6") +``` + +### For Loop For loops are used for iteration over a sequence (that is either a list, a tuple, a dictionary, a set, or a string). There are multiple ways to use for loops. -#### Iterating over a list: +#### Iterating Over a List: ```{python forloop1, exercise=TRUE} list_of_fruits = ["apple", "banana", "cherry"] @@ -661,7 +724,7 @@ for index, fruits in enumerate(list_of_fruits): print(index, fruits) ``` -#### Iterating over a string: +#### Iterating Over a String: Iterating over a string with print() can print each character in the string in order: @@ -670,7 +733,7 @@ for char in "Python": print(char) ``` -#### Iterating over a range: +#### Iterating Over a Range: To loop through a set of code a specified number of times, we can use the `range()` function, @@ -740,16 +803,15 @@ It would not print "banana" as the loop was stopped when x equals to "banana", a #### Nested Loops ```{python forloop7, exercise=TRUE} - adjective = ["red", "big", "tasty"] fruits = ["apple", "banana", "cherry"] for x in adjective: for y in fruits: print(x, y) - ``` + ## Functions & Libraries In Python, functions are a block of organised and reusable code which performs a specific task. @@ -825,6 +887,7 @@ print(result) Python library is a collection of functions and methods that allows you to perform lots of actions without writing your own code. For example, “pandas” is a Python library for data manipulation and analysis, which is used a lot in this training guidance. + ## File Handling The Python language can be used for data analysis. The first step in performing analysis is to access your dataframe (i.e. your dataset). This section will introduce you how to import and export datasets. @@ -873,7 +936,7 @@ If you make any changes to borders and would like to save it as a new .csv file, borders.to_csv("file path and name") ``` -### Read Specific Columns +#### Read Specific Columns It is possible to omit certain columns from a dataframe when importing a file by using **usecols** command: @@ -895,6 +958,7 @@ borders3 = borders2[['URI', 'Specialty', 'HospitalCode']] borders3.head() ``` + ## Explore ### Mean/Median & Summary @@ -931,7 +995,6 @@ print(mean_value) grade_code() ``` - ### Frequencies & Crosstabs * Frequency: @@ -975,6 +1038,7 @@ pd.crosstab(borders["HospitalCode"], borders["Sex"], margins = True) grade_code() ``` + ## Wrangle – Part 1 For the next sections, we will focus on using the pandas module to manipulate data and data frames. @@ -1318,6 +1382,7 @@ df.drop('column_name', axis = 1, inplace = True) df.drop(['column_nameA', 'column_nameB'], axis = 1, inplace = True) ``` + ## Wrangle – Part 2 ### Manipulate Strings @@ -1500,6 +1565,7 @@ baby6 = pd.read_csv("data/Baby6.csv") baby5.merge(baby6, how = 'left', on = ['FAMILYID','DOB']) ``` + ## Help & Feedback #### Feedback From 292c4e69ca81a527649a1cbc776c4d72ec625847 Mon Sep 17 00:00:00 2001 From: Tina815 Date: Fri, 20 Mar 2026 12:26:26 +0000 Subject: [PATCH 20/44] make png file names all consistent with lowercase --- images/{command-mode.PNG => command-mode.png} | Bin images/{edit-mode.PNG => edit-mode.png} | Bin ...{markdown-example1.PNG => markdown-example1.png} | Bin ...{markdown-example2.PNG => markdown-example2.png} | Bin images/{markdown-menu.PNG => markdown-menu.png} | Bin intro.Rmd | 10 +++++----- 6 files changed, 5 insertions(+), 5 deletions(-) rename images/{command-mode.PNG => command-mode.png} (100%) rename images/{edit-mode.PNG => edit-mode.png} (100%) rename images/{markdown-example1.PNG => markdown-example1.png} (100%) rename images/{markdown-example2.PNG => markdown-example2.png} (100%) rename images/{markdown-menu.PNG => markdown-menu.png} (100%) diff --git a/images/command-mode.PNG b/images/command-mode.png similarity index 100% rename from images/command-mode.PNG rename to images/command-mode.png diff --git a/images/edit-mode.PNG b/images/edit-mode.png similarity index 100% rename from images/edit-mode.PNG rename to images/edit-mode.png diff --git a/images/markdown-example1.PNG b/images/markdown-example1.png similarity index 100% rename from images/markdown-example1.PNG rename to images/markdown-example1.png diff --git a/images/markdown-example2.PNG b/images/markdown-example2.png similarity index 100% rename from images/markdown-example2.PNG rename to images/markdown-example2.png diff --git a/images/markdown-menu.PNG b/images/markdown-menu.png similarity index 100% rename from images/markdown-menu.PNG rename to images/markdown-menu.png diff --git a/intro.Rmd b/intro.Rmd index 42ddb19..d83f126 100755 --- a/intro.Rmd +++ b/intro.Rmd @@ -260,7 +260,7 @@ Jupyter notebook is a modal editor which means that the keyboard does different - **Edit mode** - it is indicated by a green cell border and left sidebar, and a prompt showing in the editor area: ```{r editmode, fig.align='center', out.width="100%"} -knitr::include_graphics("images/edit-mode.PNG") +knitr::include_graphics("images/edit-mode.png") ``` When a cell is in edit mode, you can type things such as Python codes into the cell, like a normal text editor. Enter edit mode by pressing Enter or using the mouse to click on a cell’s editor area. @@ -268,7 +268,7 @@ When a cell is in edit mode, you can type things such as Python codes into the c - **Command mode** - Once you click somewhere else outside the cell or press “esc” on keyboard, the cell turns into Command mode. Command mode is indicated by a grey cell border and a blue sidebar: ```{r commandmode, fig.align='center', out.width="100%"} -knitr::include_graphics("images/command-mode.PNG") +knitr::include_graphics("images/command-mode.png") ``` When you are in command mode, you are able to edit the notebook as a whole, but not type into individual cells. Most importantly, in command mode, the keyboard is mapped to a set of shortcuts that let you perform notebook and cell actions efficiently. For example, if you are in command mode and you press C and V, you will copy and paste the current cell. @@ -280,7 +280,7 @@ A full list of useful shortcuts is available by going to "Help > Keyboard Shortc Markdown text cells support plain text, Markdown and HTML. It will be useful to create headings, text instructions etc using markdown to organise the notebook like a written document. A cell can be changed from code mode to markdown mode by going to the top menu bar "Cell > Cell Type > Markdown". Or select “Markdown” from the dropdown list: ```{r markdown, fig.align='center', out.width="100%"} -knitr::include_graphics("images/markdown-menu.PNG") +knitr::include_graphics("images/markdown-menu.png") ``` Or press M while in Command Mode and highlighting the cell. @@ -288,13 +288,13 @@ Or press M while in Command Mode and highlighting the cell. Here is an example of typing some text in a markdown cell. You can use hash key “#” to indicate the size of heading, followed by a space and the text. ```{r markdown-example1, fig.align='center', out.width="100%"} -knitr::include_graphics("images/markdown-example1.PNG") +knitr::include_graphics("images/markdown-example1.png") ``` Then press *Shift + Enter* to finish. ```{r markdown-example2, fig.align='center', out.width="100%"} -knitr::include_graphics("images/markdown-example2.PNG") +knitr::include_graphics("images/markdown-example2.png") ``` From ce5cfc973ff1b5f71062f6032c3ecba485a0c904 Mon Sep 17 00:00:00 2001 From: Tina815 Date: Tue, 21 Apr 2026 13:02:25 +0000 Subject: [PATCH 21/44] update the vs code image by adding numbers --- images/vs-code-overview.png | Bin 92416 -> 100406 bytes intro.Rmd | 12 ++++++------ 2 files changed, 6 insertions(+), 6 deletions(-) mode change 100755 => 100644 images/vs-code-overview.png diff --git a/images/vs-code-overview.png b/images/vs-code-overview.png old mode 100755 new mode 100644 index eacbffdd7a51ae86b42119e6e6ca6bf2385a4450..a8975f22956be826c98933c1b5d2d69688e7a15b GIT binary patch literal 100406 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

|=qN8YpTi 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 z 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 SUd=lCH%L`irR2%eKmHF$>rw{* diff --git a/intro.Rmd b/intro.Rmd index d83f126..1c39e06 100755 --- a/intro.Rmd +++ b/intro.Rmd @@ -98,12 +98,12 @@ knitr::include_graphics("images/vs-code.png") The layout of the VS Code interface can be divided into 6 different parts: -* **Activity Bar**: This is located on the far left side of the interface. This lets you access different options and switch between different views on the primary side bar. -* **Primary Side Bar**: This is located on the left side of the interface to the right of the activity bar. It contains different views like the Explorer, Search, and Source Control to assist you while working on your project. -* **Editor**: This is located in the center of the interface and is the main place to edit your files. You can open as many editors as you like side by side vertically and horizontally. -* **Panel**: This is located at the bottom of the interface below the editor. This contains output, debug information, errors and warnings, and an integrated terminal. To open the terminal the keyboard shortcut is `Ctrl` + `'`. -* **Command Palette**: This is located right at the top of the interface. The keyboard shortcut `Ctrl` + `Shift` + `P` brings up the Command Palette and provides access to commands. -* **Status Bar**: This is located right at the bottom of the interface and provides information about the open project. +1. **Activity Bar**: This is located on the far left side of the interface. This lets you access different options and switch between different views on the primary side bar. +2. **Primary Side Bar**: This is located on the left side of the interface to the right of the activity bar. It contains different views like the Explorer, Search, and Source Control to assist you while working on your project. +3. **Editor**: This is located in the center of the interface and is the main place to edit your files. You can open as many editors as you like side by side vertically and horizontally. +4. **Panel**: This is located at the bottom of the interface below the editor. This contains output, debug information, errors and warnings, and an integrated terminal. To open the terminal the keyboard shortcut is `Ctrl` + `'`. +5. **Command Palette**: This is located right at the top of the interface. The keyboard shortcut `Ctrl` + `Shift` + `P` brings up the Command Palette and provides access to commands. +6. **Status Bar**: This is located right at the bottom of the interface and provides information about the open project. ```{r vscodeoverview, fig.align='center', out.width="100%"} knitr::include_graphics("images/vs-code-overview.png") From 531e38165c84ce57c1992c64f9d0745e62b541dc Mon Sep 17 00:00:00 2001 From: Tina815 Date: Tue, 21 Apr 2026 15:54:39 +0000 Subject: [PATCH 22/44] fix various text --- intro.Rmd | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/intro.Rmd b/intro.Rmd index 1c39e06..2f8fa95 100755 --- a/intro.Rmd +++ b/intro.Rmd @@ -113,10 +113,10 @@ knitr::include_graphics("images/vs-code-overview.png") Once your session opens you can go ahead and open a folder by either clicking on the folder in the explorer pane and then "Open Folder". You can open a file using the keyboard shortcut (`Ctrl` + `O`). You can create a new file by pressing the "New File" button located to the right of your folder name. -```{r vscodefile, fig.align='center', out.width="60%"} +```{r vscodefile, fig.align='center', out.width="40%"} knitr::include_graphics("images/vs-code-file.png") ``` -The file path for your home directory (`~` in R Studio) is `/mnt/homes/your_username/`. The stats drive can be accessed the same as R Studio: '/conf/...'. +The file path for your home directory (`~` in R Studio) is `/mnt/homes/your_username/`. The stats drive can be accessed the same as R Studio: `/conf/...`.
#### Setting Up @@ -133,7 +133,7 @@ In order to use VS Code you first need to install extensions. Extensions are ess 3. Within this folder is a script called `install_extensions.sh` which will automate the installation process. It already contains the extensions you will need to get started but it can be modified depending on your needs. To execute this script enter `bash install_extensions.sh vscode base` in the terminal. -4. You will see Installation completed! in your terminal. This means everything has worked and the extensions should have been installed. Go to Extensions icon on Activity Bar and you should see a list of the extensions installed. +4. You will see *Installation completed!* in your terminal. This means everything has worked and the extensions should have been installed. Go to Extensions icon on Activity Bar and you should see a list of the extensions installed. ##### Environments @@ -142,11 +142,11 @@ You can use venv (similar to renv in R) to create environments (private package To create your first venv follow these instructions: -1. If you cloned vscode_prep, you should close vscode_prep ("File" then "Close Folder") and start from the main user path. Open the terminal and create a folder for your new project (e.g python_demo). Use the following command in your terminal `mkdir python_demo`. +1. If you cloned vscode_prep, you should close vscode_prep ("File" then "Close Folder") first and start from the main user path. Open the terminal and create a folder for your new project (e.g python_demo). Use the following command in your terminal `mkdir python_demo`. 2. Open this folder by clicking the explorer button on the left hand menu and then clicking on the open folder button. You should then be able to select the python_demo folder and click ok. -3. In order to create a venv within this folder enter `python -m venv .venv` into the terminal. This creates a venv using whichever interpreter Python currently points to on your system. If you wish to specify a folder outwith your current folder and want your environment to use a specific Python version use something like: `/opt/python/3.11.13/bin/python3 -m venv your_file_path/.venv`. This uses the Python 3.11.13 interpreter to create a virtual environment at your_file_path/.venv. +3. In order to create a venv within this folder enter `python -m venv .venv` into the terminal. This creates a venv using whichever interpreter Python currently points to on your system. If you wish to specify a folder outwith your current folder and want your environment to use a specific Python version use something like: `/opt/python/3.11.13/bin/python3 -m venv your_file_path/.venv`. This uses the Python 3.11.13 interpreter to create a virtual environment at `your_file_path/.venv`. 4. Once you have created your environment you will need to activate it. If your venv is in your current folder enter the following into the terminal `source .venv/bin/activate`. If your venv is outwith your current folder you will need to specify the file path like the following `source your_file_path/.venv/bin/activate`. @@ -158,8 +158,8 @@ knitr::include_graphics("images/vs-code-venv.png") 6. You will need to update your pip (Python package manager) which helps to download new packages: `pip install --upgrade pip wheel`. 7. You have 2 options to install required packages (once your Python environment is activated). -* Option 1:Best practice is to have a `requirements.txt` file in every Python project folder. This would contain all the required packages for your project. An example of a `requirements.txt` file can be found in the [VS Code Setup instruction](https://github.com/Public-Health-Scotland/vscode_prep). To execute your file enter the following into the terminal `pip install -r requirements.txt --prefer-binary`. -* Option 2: Installing one package at time using the command in terminal: `pip install pandas==2.3.3 --prefer-binary`. +* Option 1: Best practice is to have a `requirements.txt` file in every Python project folder. This would contain all the required packages for your project. An example of a `requirements.txt` file can be found in the [VS Code Setup instruction](https://github.com/Public-Health-Scotland/vscode_prep). To execute your file enter the following into the terminal `pip install -r requirements.txt --prefer-binary`. +* Option 2: Installing one package at a time using the command in terminal: `pip install pandas==2.3.3 --prefer-binary`. Note: If you don't activate your Python environment you will probably install your package in the main Python installation. @@ -181,22 +181,22 @@ Another way to run the whole script is to use the run Python file button at the If you wish to run snippets of your code or run it line by line you can do this using a Python Interactive Window. By pressing `Shift` + `Enter` on a line of code it should open an interactive window as shown below. You can also highlight sections of code and press `Shift` + `Enter`. This is very similar to running code in RStudio by pressing `Ctrl` + `Enter`. +When you run code interactively you have to make sure the kernel selected in the right hand corner of the interactive pane is the correct venv. + ```{r vscodeinteractive, fig.align='center',out.width="100%"} knitr::include_graphics("images/vs-code-interactive.png") ``` -When you run code interactively you have to make sure the kernel selected in the right hand corner of the interactive pane is the correct venv. +##### Jupyter Notebook in VS Code -##### Jupyter Notebooks in VS Code +You can also use Jupyter Notebook by creating a .ipynb file. Each cell can be executed individually using `Shift` + `Enter` or by pressing the run button. This allows you to create code or markdown snippets. A more detailed introduction of Jupyter Notebook is in the next section. -You can also use Jupyter Notebooks by creating a .ipynb file. Each cell can be executed individually using `Shift` + `Enter` or by pressing the run button. This allows you to create code or markdown snippets. +When using Jupyter notebooks you have to select a kernel in the top right hand corner of your notebook. You should select the venv you have created for your project. ```{r vscodenotebook, fig.align='center',out.width="100%"} knitr::include_graphics("images/vs-code-notebook.png") ``` -When using Jupyter notebooks you have to select a kernel in the top right hand corner of your notebook. You should select the venv you have created for your project. - ### Jupyter Notebook From a46abf55173a93a84db4dd2bba29182bc4303c18 Mon Sep 17 00:00:00 2001 From: Tina815 Date: Fri, 24 Apr 2026 13:29:22 +0000 Subject: [PATCH 23/44] update README.md for PWB info --- README.md | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/README.md b/README.md index 150ea55..980349d 100644 --- a/README.md +++ b/README.md @@ -20,3 +20,14 @@ checking and feedback. ``` r remotes::install_github("rstudio/gradethis") ``` + +# Running in Posit Workbench +- If PWB has been updated it means there are new Python versions. So you have to +check if your previously created pyenv is still there. Run this command in the +terminal tab: `ls -l ~/.virtualenvs` +- If you see pyenv folder, you have to delete it using this command: +`rm -rf ~/.virtualenvs/venv313` +- The previous pyenv gets obsolete because of a PWB update with new Python +versions. +- We will be able to run this project because it will create a new pyenv +(with the new Python version). From 810d7cbc72a7b4a9ee21d7b6481893076e862eb2 Mon Sep 17 00:00:00 2001 From: Tina815 Date: Mon, 27 Apr 2026 15:04:07 +0000 Subject: [PATCH 24/44] fix the code in readme --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 980349d..da196a4 100644 --- a/README.md +++ b/README.md @@ -26,7 +26,7 @@ remotes::install_github("rstudio/gradethis") check if your previously created pyenv is still there. Run this command in the terminal tab: `ls -l ~/.virtualenvs` - If you see pyenv folder, you have to delete it using this command: -`rm -rf ~/.virtualenvs/venv313` +`rm -rf ~/.virtualenvs/pyenv` - The previous pyenv gets obsolete because of a PWB update with new Python versions. - We will be able to run this project because it will create a new pyenv From 89d0ef0a689ad02e72bf75a9d38c084ffd6811ad Mon Sep 17 00:00:00 2001 From: Tina815 Date: Mon, 18 May 2026 15:36:24 +0000 Subject: [PATCH 25/44] sort value inplace argument --- intro.Rmd | 30 +++++++++++++++++++++++++++++- 1 file changed, 29 insertions(+), 1 deletion(-) diff --git a/intro.Rmd b/intro.Rmd index 2f8fa95..458dcc2 100755 --- a/intro.Rmd +++ b/intro.Rmd @@ -1084,6 +1084,7 @@ df = df.sort_values( where - `.sort_values()` is a DataFrame method. By default it will sort in ascending order. To sort in descending order you can add `ascending = False`: + ```{python sort-value-desc, eval = FALSE, echo = TRUE} df = df.sort_values( by = 'column_name', @@ -1092,12 +1093,39 @@ df = df.sort_values( ``` - `by` is a keyword that receives the label of the column to sort by. -Let's sort `borders` by `HospitalCode`: +There is another argument called `inplace` with default value as `False`. It +determines if the sorted value is saved in the output when there is no assignment. +It will save the sorted value if `inplace = True`, or the output is assigned to an object. + +Let's sort `borders` by `HospitalCode`. If `inplace` is set as its default `False` and there is no assignment of the output into an object, the sorted data would +not be saved. ```{python sort-value2, exercise = TRUE, exercise.setup = "pandas-setup"} +# The output would not be saved. borders.sort_values( by = 'HospitalCode' ) + +print(borders) +``` + +```{python sort-value3, exercise = TRUE, exercise.setup = "pandas-setup"} +# The output would be saved. +borders.sort_values( + by = 'HospitalCode', + inplace = True +) + +print(borders) +``` + +```{python sort-value4, exercise = TRUE, exercise.setup = "pandas-setup"} +# The output would be saved if assigning the output to another object. +borders1 = borders.sort_values( + by = 'HospitalCode' +) + +print(borders1, borders) ``` ### Selecting Specific Rows From 0496a9a7d5031ef64ad8849b683d0e3ec7073cd9 Mon Sep 17 00:00:00 2001 From: Tina815 Date: Wed, 27 May 2026 14:18:39 +0000 Subject: [PATCH 26/44] delete iloc contents --- intro.Rmd | 91 +++++++++++-------------------------------------------- 1 file changed, 18 insertions(+), 73 deletions(-) diff --git a/intro.Rmd b/intro.Rmd index 458dcc2..da80009 100755 --- a/intro.Rmd +++ b/intro.Rmd @@ -1130,7 +1130,13 @@ print(borders1, borders) ### Selecting Specific Rows -Sometimes, we are only interested in looking at certain rows and columns of a DataFrame. We can select sections of a DataFrame using two methods: `.loc[]` and `.iloc[]`. +Sometimes, we are only interested in looking at certain rows and columns of a DataFrame. We can select sections of a DataFrame using `.loc[]`. + +The `.loc[]` index works using the index labels: + +```{python loc, eval = FALSE, echo = TRUE} +df.loc[list_of_row_labels, list_of_column_labels] +``` We will explore how both of these work using a mini-DataFrame from `borders` data. @@ -1140,7 +1146,7 @@ mini_df = pd.read_csv("data/borders_inc_age.csv", usecols = ['URI', 'Main_Condit mini_df ``` -Before demonstrating we will sort the data by `Main_Condition`. This isn't necessary to use `.loc[]` or `.iloc[]`, but it will make the difference between them clearer. +Before demonstrating we will sort the data by `Main_Condition`. This isn't necessary to use `.loc[]`, but it will show how `.loc[]` works clearer. ```{python mini-df-sort, echo = FALSE} mini_df = pd.read_csv("data/borders_inc_age.csv", usecols = ['URI', 'Main_Condition']).head(4) @@ -1148,17 +1154,7 @@ mini_df = pd.read_csv("data/borders_inc_age.csv", usecols = ['URI', 'Main_Condit mini_df.sort_values(by = 'Main_Condition') ``` -Note that the row index is now out-of-order. This will be important later on. - -#### Using `.loc[]` - -The `.loc[]` index works using the index labels: - -```{python loc, eval = FALSE, echo = TRUE} -df.loc[list_of_row_labels, list_of_column_labels] -``` - -For example, run the following code to see which rows are selected: +Note that the row index is now out-of-order. Run the following code to see which rows are selected: ```{python mini-df-loc, exercise = TRUE, exercise.setup = "pandas-setup"} mini_df = pd.read_csv("data/borders_inc_age.csv", usecols = ['URI', 'Main_Condition']).head(4) @@ -1168,70 +1164,21 @@ mini_df_sort = mini_df.sort_values(by = 'Main_Condition') mini_df_sort.loc[[0, 2],['Main_Condition']] ``` -The first list (`[0, 2]`) instructs `.loc[]` to select the rows labelled `0` and `2` in order. The second list (`['Main_Condition']`) instructs `.loc[]` to select only the column labelled `Main_Condition`. - -#### Using `.iloc[]` - -The `.iloc[]` index works using the *position* of the rows and columns, instead of their labels: - -```{python iloc, eval = FALSE, echo = TRUE} -df.iloc[list_of_row_positions, list_of_column_positions] -``` - -where - -- both the row positions and column positions start at `0` -- rows are counted top to bottom -- columns are counted left to right - -For example, run the following code to see which rows are selected: - -```{python mini-df-iloc, exercise = TRUE, exercise.setup = "pandas-setup"} -mini_df = pd.read_csv("data/borders_inc_age.csv", usecols = ['URI', 'Main_Condition']).head(4) - -mini_df_sort = mini_df.sort_values(by = 'Main_Condition') - -mini_df_sort.iloc[[0, 2],[1]] -``` +The first list (`[0, 2]`) instructs `.loc[]` to select the rows **labelled** as `0` and `2` in order. The second list (`['Main_Condition']`) instructs `.loc[]` to select only the column labelled `Main_Condition`. -Here, the list (`[0, 2]`) instructs `.iloc[]` to select only the first row (position `0`) and the third row (position `2`). The column list `[1]` instructs `.iloc[]` to select the second column, which is the column labelled `Main_Condition`. +So note that `.loc[]` does the selection based on index labels. It selects the rows **labelled** as `0` and `2` instead of the actual first and third rows. ### Selecting Ranges of Rows -Instead of specifying lists of rows and columns with `.loc/.iloc`, we can specify a **slice**, which is like saying `select all rows from row A to row B`. - -#### Slices with `.iloc` - -A slice reproduces a consecutive list by specifying where to start and stop, using the syntax `start_position:stop_position`, where +Instead of specifying lists of rows and columns we can specify a **slice**, which is like saying `select all rows from row A to row B`. -- `start_position` is the first position to include -- `stop_position` is one position *beyond* the last position to include - -For example, to reproduce our list `[0, 1, 2, 3, 4]`, we would use the slice `0:5` to indicate: - -- start at position `0` -- stop before position `5` -- include all positions in-between (`1`, `2`, `3`, `4`) - -We want to select the first 4 rows and the `HospitalCode`, `Specialty`, and `ManagementofPatient` (second to fourth) columns from `borders` after sorting the data by `Main_Condition`. We will need two slices, one for the rows and one for the columns: - -- **rows**: we want to start at the first row (postion `0`) and end *before* the fifth row (position `4`). The slice is `0:4` and will include positions `0`, `1`, `2` and `3`. -- **columns**: we want to start at the second column (position `1`) and end *before* the fifth column (position `4`). The slice is `1:4` and will include positions `1`, `2` and `3`. - -```{python slice-iloc, exercise = TRUE, exercise.setup = "pandas-setup"} -borders = borders.sort_values(by = 'Main_Condition') -borders.iloc[0:4,1:4] -``` - -#### Slices with `.loc` - -Unlike `.iloc`, slices using `.loc` include the label after the `:` in the slice syntax: `start_label:stop_label`, which will include +Slices using `.loc` include the label after the `:` in the slice syntax: `start_label:stop_label`, which will include - the row/column labelled `start_label` - the row/column labelled `stop_label` - all rows/columns in between -Let's use `.loc` to select the same section of `borders`. This is how the data looks like after soring by `Main_Condition`: +Let's use `.loc` to select the same section of `borders`. This is how the data looks like after sorting by `Main_Condition`: ```{python slice-loc1, echo = FALSE} borders = borders.sort_values(by = 'Main_Condition') @@ -1240,7 +1187,7 @@ borders Again we will need two slices: -- **rows**: the first four rows start at the label `5018` and end at `23180`. The slice is `5018:23180` and will include rows labelled `5018`, `6671`, `3420` and `23180`. Note how the `stop_label` is included, unlike with `.iloc`. +- **rows**: the first four rows start at the label `5018` and end at `23180`. The slice is `5018:23180` and will include rows labelled `5018`, `6671`, `3420` and `23180`. Note how the `stop_label` is included. - **columns**: the first column to include is labelled `HospitalCode` and the last is `ManagementofPatient`. The slice is `'HospitalCode':'ManagementofPatient'` and will include columns labelled `HospitalCode`, `Specialty` and `ManagementofPatient`. ```{python slice-loc2, exercise = TRUE, exercise.setup = "pandas-setup"} @@ -1248,13 +1195,11 @@ borders = borders.sort_values(by = 'Main_Condition') borders.loc[5018:23180,'HospitalCode':'ManagementofPatient'] ``` -#### Open-Ended Slices - -If we don't want to specify a start value, the slice will start at the first position/label. For example, the `.iloc` slice `:3` would include rows at positions `0`, `1` and `2`. +### Open-Ended Slices -Similarly, if we don't specify an end value, the slice will end at the final position/label. For example, the `.loc` slice `'HospitalCode':` will include every column starting at `HospitalCode` through to the final column of the DataFrame. +If we don't want to specify a start value, the slice will start at the first label. Similarly, if we don't specify an end value, the slice will end at the final label. For example, the `.loc` slice `'HospitalCode':` will include every column starting at `HospitalCode` through to the final column of the DataFrame. -If we specify neither the start nor the final value, the slice will include all rows and columns. For example, the code `borders.iloc[0:2,:]` will include rows at positions `0` and `1` along with every column. +If we specify neither the start nor the final value, the slice will include all rows and columns. For example, the code `borders.loc[0:2,:]` will include rows labelled as `0`, `1` and `2`, along with every column. ### Boolean Masks From 3302f9692526f01758d68b4d99d6d51f09ac6d7f Mon Sep 17 00:00:00 2001 From: Tina815 Date: Wed, 27 May 2026 15:37:28 +0000 Subject: [PATCH 27/44] add query section --- intro.Rmd | 56 ++++++++++++++++++++++++++++++++++++++++++++++--------- 1 file changed, 47 insertions(+), 9 deletions(-) diff --git a/intro.Rmd b/intro.Rmd index da80009..fc2960c 100755 --- a/intro.Rmd +++ b/intro.Rmd @@ -1201,6 +1201,50 @@ If we don't want to specify a start value, the slice will start at the first lab If we specify neither the start nor the final value, the slice will include all rows and columns. For example, the code `borders.loc[0:2,:]` will include rows labelled as `0`, `1` and `2`, along with every column. +### Selecting Rows Using `query()` + +An easy way to filter rows in a DataFrame is to use `query()` in Pandas. Instead of juggling multiple `&` (and), `|` (or), and parentheses, you can just write your condition like plain English. The basic syntax is: + +```{python query1, eval = FALSE, echo = TRUE} +df.query('condition') +``` + +where + +- **`df`** is your Pandas DataFrame. +- **`query()`** is the method you’re calling. +- **'condition'** is a string where you define your filtering logic. + +For example we want to filter the `HospitalCode` is `B120H` for the first 10 rows +from `borders`. + +```{python query2, exercise = TRUE, exercise.setup = "pandas-setup"} +result = borders.head(10).query('HospitalCode == "B120H"') + +print(result) +``` + +Note that two `=` signs performs the comparison, and one `=` performs the assignment to the variable. + +You can also use logical operators (`and`, `or`, `not`) in query to filter with +multiple conditions. + +- Use `and` for **both** conditions to be true. +- Use `or` when **either** condition can be true. +- Use `not` to **exclude** specific conditions. + +For example we want to filter the `HospitalCode` is `B120H` and `Specialty` as `A1` +for the first 10 rows from `borders`. + +```{python query3, exercise = TRUE, exercise.setup = "pandas-setup"} +result = borders.head(10).query('HospitalCode == "B120H" and Specialty == "A1"') + +print(result) +``` + +Please note that in `query()`, you should always use `and`, `or`, and `not`, instead of +`&`, `|` and `~`. + ### Boolean Masks We often need to select data by properties, instead of by position/index. For example we might want to select all rows in `borders` corresponding to the HospitalCode as `B120H`. We can achieve this using Python's comparison operators to compare values. Whenever we compare two variables using a comparison operator, Python returns a `True` if the comparison is correct, and a `False` if it is incorrect. @@ -1235,8 +1279,6 @@ It can be helpful to assign a Boolean mask to a variable. For example let's assi is_hosp = (borders.head(10)['HospitalCode'] == 'B120H') ``` -Note that two `=` signs performs the comparison, and one `=` performs the assignment to the variable. - ### Filtering Rows with Booleans A Boolean mask tells us which rows have a certain property. What we usually want is to actually filter the DataFrame down to only those rows where Boolean mask is `True`. We can pass the mask to the DataFrame: @@ -1247,7 +1289,7 @@ is_hosp = (borders.head(10)['HospitalCode'] == 'B120H') borders.head(10)[is_hosp] ``` -### Combining Booleans with And +### Booleans with Logical Operators We may want to filter the rows where patients are from hospital `B120H` with certain specialty (e.g. `A1`). Under this case the two comparisons can be combined with `and` to test if both are simultaneously true. Pandas uses the symbol `&` for this. Let's perform the row selection by combining the comparisons for the first 10 rows from `borders`: @@ -1261,9 +1303,7 @@ borders.head(10)[is_hosp & is_spec] Note that if there are no rows match the conditions, filtering the DataFrame will produce a result with column labels in the header but no actual rows. -### Combining Booleans with Or - -In Python, `or` behaves the same way: it outputs `True` as long as **one of** the combined comparisons is `True`. Pandas uses the symbol `|` instead of `or`. If we use `|` for the example above, which rows will be selected? +In Python, `or` outputs `True` as long as **one of** the combined comparisons is `True`. Pandas uses the symbol `|` instead of `or`. If we use `|` for the example above, which rows will be selected? ```{python boolean-mask8, exercise = TRUE, exercise.setup = "pandas-setup"} is_hosp = (borders.head(10)['HospitalCode'] == 'B120H') #assign the first condition to a variable @@ -1275,8 +1315,6 @@ borders.head(10)[is_hosp | is_spec] We can see the rows where either hospital is `B120H` or specialty is `A1` are filtered this time, as long as one of the conditions is met. -### Inverting Booleans with Not - What if we want to select the rows where specialty is **not** `A1`? Pandas uses the symbol `~` for `not/non` to exclude the rows we don't want: ```{python boolean-mask9, exercise = TRUE, exercise.setup = "pandas-setup"} @@ -1287,7 +1325,7 @@ not_spec = ~is_spec #create a new Boolean mask to invert the pre-existing mask borders.head(10)[not_spec] ``` -You can see the rows with specialty `A1` are excluded. `~` simply swaps `True` and `False`. +You can see the rows with specialty `A1` are excluded. `~` simply swaps `True` and `False`. ### Add/Delete a Column From 8d882988c582a3852751e31d9e114fd28f9142e8 Mon Sep 17 00:00:00 2001 From: Tina815 Date: Fri, 29 May 2026 13:45:01 +0000 Subject: [PATCH 28/44] fix text for IDE section --- intro.Rmd | 27 +++++++++++++++++---------- 1 file changed, 17 insertions(+), 10 deletions(-) diff --git a/intro.Rmd b/intro.Rmd index fc2960c..2ffd818 100755 --- a/intro.Rmd +++ b/intro.Rmd @@ -77,6 +77,9 @@ systems. ## IDE +There are several environments where you can run Python code, such as "VS Code", "JupyterLab", "Jupyter Notebook". Here we will give an introduction on VS Code +and Jupyter Notebook. + ### VS Code Visual Studio Code is an open-source code editor that supports multiple programming languages including Python and R and is highly customisable with extensions. For the purposes of this course we will focus on Python. @@ -99,23 +102,29 @@ knitr::include_graphics("images/vs-code.png") The layout of the VS Code interface can be divided into 6 different parts: 1. **Activity Bar**: This is located on the far left side of the interface. This lets you access different options and switch between different views on the primary side bar. + 2. **Primary Side Bar**: This is located on the left side of the interface to the right of the activity bar. It contains different views like the Explorer, Search, and Source Control to assist you while working on your project. + 3. **Editor**: This is located in the center of the interface and is the main place to edit your files. You can open as many editors as you like side by side vertically and horizontally. -4. **Panel**: This is located at the bottom of the interface below the editor. This contains output, debug information, errors and warnings, and an integrated terminal. To open the terminal the keyboard shortcut is `Ctrl` + `'`. -5. **Command Palette**: This is located right at the top of the interface. The keyboard shortcut `Ctrl` + `Shift` + `P` brings up the Command Palette and provides access to commands. + +4. **Panel**: This is located at the bottom of the interface below the editor. This contains output, debug information, errors and warnings, and an integrated terminal. To open the terminal the keyboard shortcut is *Ctrl + '*. + +5. **Command Palette**: This is located right at the top of the interface. The keyboard shortcut *Ctrl + Shift + P* brings up the Command Palette and provides access to commands. + 6. **Status Bar**: This is located right at the bottom of the interface and provides information about the open project. ```{r vscodeoverview, fig.align='center', out.width="100%"} knitr::include_graphics("images/vs-code-overview.png") ``` -##### Opening files and folders +##### Opening Files and Folders -Once your session opens you can go ahead and open a folder by either clicking on the folder in the explorer pane and then "Open Folder". You can open a file using the keyboard shortcut (`Ctrl` + `O`). You can create a new file by pressing the "New File" button located to the right of your folder name. +Once your session opens you can go ahead and open a folder by either clicking on the folder in the explorer pane and then "Open Folder". You can open a file using the keyboard shortcut (*Ctrl + O*). You can create a new file by pressing the "New File" button located to the right of your folder name. ```{r vscodefile, fig.align='center', out.width="40%"} knitr::include_graphics("images/vs-code-file.png") ``` + The file path for your home directory (`~` in R Studio) is `/mnt/homes/your_username/`. The stats drive can be accessed the same as R Studio: `/conf/...`.
@@ -150,7 +159,7 @@ To create your first venv follow these instructions: 4. Once you have created your environment you will need to activate it. If your venv is in your current folder enter the following into the terminal `source .venv/bin/activate`. If your venv is outwith your current folder you will need to specify the file path like the following `source your_file_path/.venv/bin/activate`. -5. You can refresh your VS Code to make sure your venv has been detected. Press `Ctrl` + `Shift` + `P` and search Developer reload window. You should see .venv as part of the terminal line. If venv has not been detect you may need to press `Ctrl` + `Shift` + `P`, search "Python: Select Interpreter" and manually select your venv. +5. You can refresh your VS Code to make sure your venv has been detected. Press *Ctrl + Shift + P* and search Developer reload window. You should see .venv as part of the terminal line. If venv has not been detect you may need to press *Ctrl + Shift + P*, search "Python: Select Interpreter" and manually select your venv. ```{r vscodevenv, fig.align='center', out.width="100%"} knitr::include_graphics("images/vs-code-venv.png") ``` @@ -170,7 +179,7 @@ VS Code provides multiple ways to run code, with different approaches being more ##### Running an entire script -To execute the full script you can type the following into the terminal and press enter. The easiest way to open the terminal is the keyboard shortcut (`Ctrl` + `'`). +To execute the full script you can type the following into the terminal and press enter. The easiest way to open the terminal is the keyboard shortcut (*Ctrl + '*). ```{python terminal, eval = FALSE, echo = TRUE} python your_file_name.py ``` @@ -179,7 +188,7 @@ Another way to run the whole script is to use the run Python file button at the ##### Running code snippets interactively -If you wish to run snippets of your code or run it line by line you can do this using a Python Interactive Window. By pressing `Shift` + `Enter` on a line of code it should open an interactive window as shown below. You can also highlight sections of code and press `Shift` + `Enter`. This is very similar to running code in RStudio by pressing `Ctrl` + `Enter`. +If you wish to run snippets of your code or run it line by line you can do this using a Python Interactive Window. By pressing *Shift + Enter* on a line of code it should open an interactive window as shown below. You can also highlight sections of code and press *Shift + Enter*. This is very similar to running code in RStudio by pressing *Ctrl + Enter*. When you run code interactively you have to make sure the kernel selected in the right hand corner of the interactive pane is the correct venv. @@ -189,7 +198,7 @@ knitr::include_graphics("images/vs-code-interactive.png") ##### Jupyter Notebook in VS Code -You can also use Jupyter Notebook by creating a .ipynb file. Each cell can be executed individually using `Shift` + `Enter` or by pressing the run button. This allows you to create code or markdown snippets. A more detailed introduction of Jupyter Notebook is in the next section. +You can also use Jupyter Notebook by creating a .ipynb file. Each cell can be executed individually using *Shift + Enter* or by pressing the run button. This allows you to create code or markdown snippets. A more detailed introduction of Jupyter Notebook is in the next section. When using Jupyter notebooks you have to select a kernel in the top right hand corner of your notebook. You should select the venv you have created for your project. @@ -200,8 +209,6 @@ knitr::include_graphics("images/vs-code-notebook.png") ### Jupyter Notebook -There are several environments where you can run Python code, such as "JupyterLab", "Jupyter Notebook". - Jupyter Notebook is designed for the easy integration of text and Python programming. It provides a more interactive workflow for Python programming, analysis and reporting. Some of its key features are: - Code completion From b244f701523786eb7bc83df5c598cc38bdda8083 Mon Sep 17 00:00:00 2001 From: Tina815 Date: Mon, 1 Jun 2026 16:56:02 +0000 Subject: [PATCH 29/44] Fix contents in Foundation --- intro.Rmd | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/intro.Rmd b/intro.Rmd index 2ffd818..e4c0d16 100755 --- a/intro.Rmd +++ b/intro.Rmd @@ -173,11 +173,11 @@ knitr::include_graphics("images/vs-code-venv.png") Note: If you don't activate your Python environment you will probably install your package in the main Python installation. -#### Running code +#### Running Code VS Code provides multiple ways to run code, with different approaches being more suitable depending on your workflow and the type of task you are performing. -##### Running an entire script +##### Running an Entire Script To execute the full script you can type the following into the terminal and press enter. The easiest way to open the terminal is the keyboard shortcut (*Ctrl + '*). ```{python terminal, eval = FALSE, echo = TRUE} @@ -186,7 +186,7 @@ python your_file_name.py Another way to run the whole script is to use the run Python file button at the top of the editor. This is similar to using source to run a script in RStudio. -##### Running code snippets interactively +##### Running Code Snippets Interactively If you wish to run snippets of your code or run it line by line you can do this using a Python Interactive Window. By pressing *Shift + Enter* on a line of code it should open an interactive window as shown below. You can also highlight sections of code and press *Shift + Enter*. This is very similar to running code in RStudio by pressing *Ctrl + Enter*. @@ -350,21 +350,19 @@ There are a number of advantages to having Python scripts run this way. To name * It is easier to debug * It is clearer and more readable -However, there are a number of ways to run individual lines of code within a Python script, should that be preferred. In this course, we will touch upon `Jupyter Notebook` in the *IDE* section, where this can be accomplished. +There are also a number of ways to run individual lines of code within a Python script as described in the IDE section. ### Structure **Indentation** - where indentation in other programming languages are included as a style preference, indentation in Python is extremely important, as it indicates what blocks of code should be run. -Without proper indentations, your code will not run. Try to run the following code with improper indentation: +Without proper indentations, your code will not run. Try to run the following code with improper indentation and see what the syntax error will be shown: ```{python indentation1, exercise = TRUE} if 1 < 10: print("One is less than ten.") ``` -Note the syntax error which was shown: - Now run the code with the proper indentation: ```{python indentation2, exercise = TRUE} @@ -420,7 +418,6 @@ The following are examples of all the arithmetic operators available in Python. ```{r, echo = FALSE} operators_table <- data.frame( - "Precedence" = c(1, 2, 3, 4, 5, 6, 7, 8, 9), "Operator" = c("`**`", "`%`", "`*` `/`", @@ -446,7 +443,7 @@ knitr::kable(operators_table) #### Strings -Strings in Python are arrays of unicode characters. However, Python does not have a character data type, a single character is simply a string with a length of 1. Strings can be declared with either single or double quotes, and square brackets can be used to access elements of the string. +Strings in Python are arrays of unicode characters. However, Python does not have a character data type, a single character is simply a string with a length of 1. Strings can be declared with either single or double quotes, and square brackets `[]` can be used to access elements of the string. ```{python strings1, exercise = TRUE} a = "Hello, World!" @@ -468,6 +465,10 @@ multiline The `print()` function interprets these escape characters as expected. ```{python strings3, exercise = TRUE} +multiline = '''White space is +preserved +in multiline strings.''' + print(multiline) ``` @@ -479,7 +480,7 @@ nested_quotes print(nested_quotes) ``` -For strings, the plus `+` sign will concatenate two strings into one, and the asterisk `*` will repeat a string a set number of times. Have a look and click 'Run Code' below to see the output. +For strings, the plus `+` sign will concatenate two strings into one, and the asterisk `*` will repeat a string a set number of times. ```{python string5, exercise = TRUE} print('Hello' + ' ' + 'World') From e9219d082a61fbc327ad8444e6c8eb3678335a3d Mon Sep 17 00:00:00 2001 From: Tina815 Date: Thu, 4 Jun 2026 13:39:38 +0000 Subject: [PATCH 30/44] add code for running on lastest PWB --- intro.Rmd | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/intro.Rmd b/intro.Rmd index e4c0d16..b09270c 100755 --- a/intro.Rmd +++ b/intro.Rmd @@ -16,7 +16,7 @@ runtime: shiny_prerendered # See here for learnr package documentation: https://rstudio.github.io/learnr/ # Include packages here that are required throughout the training - +Sys.unsetenv("RETICULATE_PYTHON") # This line is needed to run on PWB. library(learnr) library(gradethis) library(reticulate) @@ -553,9 +553,9 @@ myfloat There are various data structures which are built into Python. Some of the main ones are: -- Sequence Types: list, tuple, range -- Mapping Type: dict -- Set Types: set, frozenset +- **Sequence Types:** list, tuple, range +- **Mapping Type:** dict +- **Set Types:** set, frozenset #### Lists From 14e70c7b6198e6c86f35b603354d66eb3874166c Mon Sep 17 00:00:00 2001 From: Tina815 Date: Thu, 4 Jun 2026 16:01:22 +0000 Subject: [PATCH 31/44] fix control flow content --- intro.Rmd | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/intro.Rmd b/intro.Rmd index b09270c..5ce3e3b 100755 --- a/intro.Rmd +++ b/intro.Rmd @@ -710,7 +710,7 @@ else: For loops are used for iteration over a sequence (that is either a list, a tuple, a dictionary, a set, or a string). -There are multiple ways to use for loops. +There are multiple ways to use `for` loops. #### Iterating Over a List: @@ -734,7 +734,7 @@ for index, fruits in enumerate(list_of_fruits): #### Iterating Over a String: -Iterating over a string with print() can print each character in the string in order: +Iterating over a string with `print()` can print each character in the string in order: ```{python forloop3, exercise=TRUE} for char in "Python": @@ -811,7 +811,7 @@ It would not print "banana" as the loop was stopped when x equals to "banana", a #### Nested Loops ```{python forloop7, exercise=TRUE} -adjective = ["red", "big", "tasty"] +adjective = ["small", "big", "tasty"] fruits = ["apple", "banana", "cherry"] for x in adjective: From 1ac75f8720d77395a4b6a961f96cf9c70bd9ebba Mon Sep 17 00:00:00 2001 From: Tina815 Date: Tue, 9 Jun 2026 15:13:15 +0000 Subject: [PATCH 32/44] fix contents for function and wrangling --- intro.Rmd | 121 +++++++++++++++--------------------------------------- 1 file changed, 34 insertions(+), 87 deletions(-) diff --git a/intro.Rmd b/intro.Rmd index 5ce3e3b..1843773 100755 --- a/intro.Rmd +++ b/intro.Rmd @@ -836,9 +836,8 @@ Functions are made up of the: * Function body ```{python function1, eval = FALSE, echo = TRUE} -def (): +def function_name(): function_body - ``` Example: @@ -864,10 +863,10 @@ Parameters are variables which are listed inside the parentheses in the function The values passed into a function are called arguments. ```{python function4, exercise=TRUE} -def greet(name): +def greet(name): # set the parameter as name print("Hello, " + name + "!") -greet("Bob") +greet("Bob") # argument as Bob ``` You can also pass through multiple arguments: @@ -891,7 +890,7 @@ result = add(1, 2, 3) print(result) ``` -#### Python Library +### Python Library Python library is a collection of functions and methods that allows you to perform lots of actions without writing your own code. For example, “pandas” is a Python library for data manipulation and analysis, which is used a lot in this training guidance. @@ -971,38 +970,20 @@ borders3.head() ### Mean/Median & Summary -* `mean()` and `median()` are passed arrays of values (usually from a data frame) to return the mean and median value. +* `mean()` and `median()` are passed arrays of values (usually from a dataframe) to return the mean and median value. * `describe()` returns all summary statistics based on a given array. For example, `df["column_name"].median()` will generate the `median` value of the values within the stated column. -In the exercise below, you have the borders data-set loaded as `borders`. See if you can get the mean value for `LengthOfStay`. Please store the mean value in a variable called `mean_value`, and print that variable. Use the hint button if you need some help. +In the exercise below, you have the borders dataset loaded as `borders`. See if you can get the mean value for `LengthOfStay`. Please store the mean value in a variable called `mean_value`, and print that variable. Use the hint button if you need some help. ```{python mean, exercise = TRUE, exercise.setup = "pandas-setup"} -borders -``` - -```{python mean-hint-1} -mean_value = borders["LengthOfStay"].mean() -``` - -```{python mean-hint-2} -mean_value = borders["LengthOfStay"].mean() - -print(mean_value) -``` - -```{python mean-solution} mean_value = borders["LengthOfStay"].mean() print(mean_value) ``` -```{python mean-check} -grade_code() -``` - ### Frequencies & Crosstabs * Frequency: @@ -1020,36 +1001,15 @@ pd.crosstab(df["column_nameA"], df["column_nameB"]) pd.crosstab(df["column_nameA"], df["column_nameB"], margins = True) ``` -Create a crosstab for `HospitalCode` and `Sex`, add column and row totals. Use the hint button if you need some help. +Create a crosstab for `HospitalCode` and `Sex`, add column and row totals: ```{python freq, exercise = TRUE, exercise.setup = "pandas-setup"} -borders -``` - -```{python freq-hint-1} -...pd.crosstab(...) -``` - -```{python freq-hint-2} -pd.crosstab(borders["HospitalCode"], borders["Sex"]...) -``` - -```{python freq-hint-3} pd.crosstab(borders["HospitalCode"], borders["Sex"], margins = True) ``` -```{python freq-solution} -pd.crosstab(borders["HospitalCode"], borders["Sex"], margins = True) -``` - -```{python freq-check} -grade_code() -``` - - ## Wrangle – Part 1 -For the next sections, we will focus on using the pandas module to manipulate data and data frames. +For the next sections, we will focus on using the pandas module to manipulate data and dataframes. ### Row Indexes @@ -1221,7 +1181,7 @@ where - **`df`** is your Pandas DataFrame. - **`query()`** is the method you’re calling. -- **'condition'** is a string where you define your filtering logic. +- **`'condition'`** is a string where you define your filtering logic. For example we want to filter the `HospitalCode` is `B120H` for the first 10 rows from `borders`. @@ -1299,7 +1259,7 @@ borders.head(10)[is_hosp] ### Booleans with Logical Operators -We may want to filter the rows where patients are from hospital `B120H` with certain specialty (e.g. `A1`). Under this case the two comparisons can be combined with `and` to test if both are simultaneously true. Pandas uses the symbol `&` for this. Let's perform the row selection by combining the comparisons for the first 10 rows from `borders`: +We may want to filter the rows where patients are from hospital `B120H` with certain specialty (e.g. `A1`). Similar to use `query()`, the two comparisons can be combined with `and` to test if both are simultaneously true. Pandas uses the symbol `&` for this. Let's perform the row selection by combining the comparisons for the first 10 rows from `borders`: ```{python boolean-mask7, exercise = TRUE, exercise.setup = "pandas-setup"} is_hosp = (borders.head(10)['HospitalCode'] == 'B120H') #assign the first condition to a variable @@ -1391,7 +1351,7 @@ borders_10 = borders.head(10) borders_10.drop(borders_10.columns[[0, 1]], axis = 1) ``` -Besides, if you want to delete the column without having to reassign `df` you can do: +Besides, if you want to delete the column without having to reassign `df` you can add `inplace = True` as mentioned before: ```{python delete-column4, eval = FALSE, echo = TRUE} # Delete a single column @@ -1414,12 +1374,12 @@ There are a number of ways to manipulate strings in Python. Here are a few metho df['column_name'] = df['column_name'].str.split('delimiter') ``` -For example, we would like to split the strings in the column `ManagementofPatient` at the value `a`. +For example, we would like to split the strings in the column `birthdate` at the value `/`. ```{python split_value_example, exercise = TRUE, exercise.setup = "pandas-setup"} -borders_data['ManagementofPatient'] = borders_data['ManagementofPatient'].str.split('a') +borders['birthdate'] = borders['birthdate'].str.split('/') -print(borders_data) +print(borders['birthdate']) ``` There are some other commonly used string methods: @@ -1440,12 +1400,10 @@ df['column_name'] = df['column_name'].str.lower() df['column_name'] = df['column_name'].str.replace('old_value','new_value') ``` -In the exercise below, read the borders_inc_age csv in, then replace all instances of `B120H` in the `HospitalCode` column with the phrase `BRILLIANT`. +For example, we want to replace all instances of `B120H` in the `HospitalCode` column with `MarkedHospital`. ```{python manipulate-string, exercise = TRUE, exercise.setup = "pandas-setup"} -borders = pd.read_csv("data/borders_inc_age.csv") - -borders['HospitalCode'] = borders['HospitalCode'].str.replace('B120H','BRILLIANT') +borders['HospitalCode'] = borders['HospitalCode'].str.replace('B120H','MarkedHospital') # View the result borders.head(10) @@ -1467,15 +1425,10 @@ For example, in the case that you wish to find all the values which are less tha df.loc[df['column_name'] < 5, 'column_name'] = 'Small number' ``` -As you can imagine, this methods affords a great level of versatility in data analysis. - -In the exercise below, read in the `borders_inc_age` csv file, and recode all instances of `B120H` in the `HospitalCode` column to `Recoded`. - +We can repeat the example of recoding all instances of `B120H` in the `HospitalCode` column to `MarkedHospital`. ```{python recode-exercise, exercise = TRUE, exercise.setup = "pandas-setup"} -borders = pd.read_csv("data/borders_inc_age.csv") - -borders.loc[borders['HospitalCode'] == 'B120H', 'HospitalCode'] = 'Recoded' +borders.loc[borders['HospitalCode'] == 'B120H', 'HospitalCode'] = 'MarkedHospital' # View the result borders.head(10) @@ -1489,18 +1442,16 @@ Sometimes we would like to rename specific columns in a data frame: df.rename(columns = {'old_column_name':'new_column_name'}) ``` -For example, the column `HospitalCode` in `borders_data` doesn't follow the style guide, let's rename it to `Hospital_Code`. +For example, let's rename `HospitalCode` to `Hospital_Code` in `borders`. ```{python rename-exercise, exercise = TRUE, exercise.setup = "pandas-setup"} -borders = pd.read_csv("data/borders_inc_age.csv") - borders = borders.rename(columns = {'HospitalCode':'Hospital_Code'}) # View the result borders.head(10) ``` -### Group By +### Group By and Aggregate The `groupby()` function in Pandas allows us to split a Dataframe into groups based on one or more keys, such as column values, and then perform operations on them, such as aggregations or transformations: @@ -1515,8 +1466,6 @@ borders = pd.read_csv("data/borders_inc_age.csv") borders.groupby('HospitalCode') ``` -### Aggregate Dataframe - After assigning `groupby()` function to a new variable, we can apply the aggregate `agg()` function to conduct operations on specific columns. ```{python aggregate1, eval = FALSE, echo = TRUE} @@ -1538,17 +1487,16 @@ grouped_variable.agg({'column1' : ['function1','function2','function3'], For example, We want to find the `mean`, `max`, `count` and `sum` of the `LengthOfStay` variables, grouped by `HospitalCode`. -First let's store the above `borders_data.groupby('HospitalCode')` into a new variable called `grouped_by_hospital_code`, and then use `agg()` to get the results. -```{python aggregate-example, eval = FALSE, echo = TRUE} -grouped_by_hospital_code.agg({'LengthOfStay': ['mean','max','count','sum']}) -``` +First let's store the above `borders.groupby('HospitalCode')` into a new variable called `group_by_hospital_code`, and then use `agg()` to get the results. -We could also more easily use the `describe()` function within the `agg()` function detailed above. +```{python aggregate-exercise1, exercise = TRUE, exercise.setup = "pandas-setup"} +group_by_hospital_code = borders.groupby('HospitalCode') +group_by_hospital_code.agg({'LengthOfStay': ['mean','max','count','sum']}) +``` -Give that a go: Read in the `borders_inc_age` csv file, then group by `HospitalCode`, storing that into a variable called `grouped_by_hospital_code`. Aggregate using the method above. Use the `describe()` function to find important values from the `LengthOfStay` column. +We could also more easily use the `describe()` function within the `agg()` to get more statistical results: -```{python aggregate-exercise, exercise = TRUE, exercise.setup = "pandas-setup"} -borders = pd.read_csv("data/borders_inc_age.csv") +```{python aggregate-exercise2, exercise = TRUE, exercise.setup = "pandas-setup"} group_by_hospital_code = borders.groupby('HospitalCode') group_by_hospital_code.agg({'LengthOfStay':'describe'}) ``` @@ -1559,25 +1507,24 @@ group_by_hospital_code.agg({'LengthOfStay':'describe'}) knitr::include_graphics("images/join_python.png") ``` -* `left` - taking all records from the "left", `data_frame_1`, and adding matched records from the "right", `data_frame_2`, introducing `NaN` where the "right", `data_2` had no matching records -* `right` - taking all records from the "right", `data_frame_2`, and adding matched records from the "left", `data_frame_1`, introducing `NaN` where the "left", `data_frame_1` had no matching records -* `inner` - producing only records where there were matches on both given data sets -* `full` - retaining all records from both data sets and introducing `na` on either one where there was no matching records +- **left** - taking all records from the "left", `data_frame_1`, and adding matched records from the "right", `data_frame_2`, introducing `NaN` where the "right", `data_2` had no matching records +- **right** - taking all records from the "right", `data_frame_2`, and adding matched records from the "left", `data_frame_1`, introducing `NaN` where the "left", `data_frame_1` had no matching records +- **inner** - producing only records where there were matches on both given data sets +- **full/outer** - retaining all records from both data sets and introducing `na` on either one where there was no matching records By default, the merge type will be `inner` unless stated otherwise. -You define the merge/join type by defining the `how = ''`. +You define the merge/join type by defining the `how = 'join_type'`. -You should further define what common columns/variables the data frames should merge `on` by defining the `on = ['column']` +You should further define what common columns/variables the DataFrames should merge `on` by defining the `on = ['column']`: ```{python merge, eval = FALSE, echo = TRUE} df1.merge(df2, how = 'join_type', on = ['column1' , 'column2']) ``` -2 new data-sets have been loaded, `baby5` and `baby6`, these have common variables `FAMILYID` and `DOB`. Using a `left` join, merge them together. +Two data-sets have been loaded, `baby5` and `baby6`, which have common variables `FAMILYID` and `DOB`. Using a `left` join, merge them together. ```{python merge-exercise, exercise = TRUE, exercise.setup = "pandas-setup"} -borders_data = pd.read_csv("data/borders_inc_age.csv") baby5 = pd.read_csv("data/Baby5.csv") baby6 = pd.read_csv("data/Baby6.csv") From 09cfa5caa29ad421ef8ea71ea59fbbede20d84ed Mon Sep 17 00:00:00 2001 From: Gatz FO Date: Wed, 10 Jun 2026 12:14:04 +0000 Subject: [PATCH 33/44] fixed env and dark --- css/style.css | 104 ++++++++++++++++++++++++++++--- images/phs-logo-white.svg | 38 ++++++++++++ images/phs-logo.png | Bin 17230 -> 0 bytes images/phs-logo.svg | 127 ++++++++++++++++++++++++++++++++++++++ intro.Rmd | 20 ++++-- 5 files changed, 273 insertions(+), 16 deletions(-) create mode 100644 images/phs-logo-white.svg delete mode 100644 images/phs-logo.png create mode 100644 images/phs-logo.svg diff --git a/css/style.css b/css/style.css index 72606c0..b965c52 100644 --- a/css/style.css +++ b/css/style.css @@ -1,16 +1,78 @@ @import url("https://fonts.googleapis.com/css?family=Open Sans"); @import url('https://fonts.googleapis.com/css2?family=Source+Code+Pro&display=swap'); -body, h1, h2, h3, h4, h5, h6, p, button { - font-family: 'Open Sans'; +@media (prefers-color-scheme: dark) { + :root { + --phs-logo: url("../images/phs-logo-white.svg"); + --phs-color-bg: #1a1a2e; + --phs-color-fg: #e8e8e8; + --phs-h: #80BCEA; + --phs-code-bg: #252542; + --phs-btn-primary: #252542; + --phs-btn-success: #252542; + } +} + +@media (prefers-color-scheme: light) { + :root { + --phs-logo: url("../images/phs-logo.svg"); + --phs-color-bg: #ffffff; + --phs-color-fg: #333333; + --phs-h: #433683; + --phs-code-bg: #ffffff; + --phs-btn-primary:#0097d7; + --phs-btn-success: #80ba27; + } +} + +.custom-navbar { + display: flex; + justify-content: flex-end; + align-items: center; + margin-bottom: 10px; +} + +.phs-logo { + background-image: var(--phs-logo); + background-size: contain; + background-repeat: no-repeat; + background-position: right center; + width: 300px; + height: 100px; +} + +.tutorial-exercise-code-editor { + background-color: var(--phs-code-bg) !important; + color: var(--phs-color-fg); +} + +pre, code { + background-color: var(--phs-code-bg) !important; + color: var(--phs-color-fg); +} + +.topicsList .topic .nav-link { + color: #808080; + font-weight: bold; +} + +.topicsList .topic.current { + background-color: var(--phs-color-fg); + color: var(--phs-color-bg) !important; } -h1, h2 { - color: #433683; +body { + background-color: var(--phs-color-bg); + color: var(--phs-color-fg); +} + +body, h1, h2, h3, h4, h5, h6, p, button { + font-family: 'Open Sans'; } -h3, h4, h5 { - color: #bd27b9; +h1, h2, h3, h4, h5 { + color: var(--phs-h); + font-weight: bold; } code { @@ -18,20 +80,42 @@ code { } th { - color: #433683; + color: var(--phs-h); } .panel-heading { - color: #bd27b9; + color: var(--phs-h); padding-bottom: 10px; } .btn-primary { - background-color: #0097d7; + background-color: var(--phs-btn-primary); + color: var(--phs-color-fg); + border-color: var(--phs-color-fg); } .btn-success { - background-color: #80ba27; + background-color: var(--phs-btn-success); + color: var(--phs-color-fg); + border-color: var(--phs-color-fg); +} + +.btn-default { + background-color: var(--phs-btn-success); + color: var(--phs-color-fg); + border-color: var(--phs-color-fg); +} + +.btn-default:hover { + background-color: var(--phs-code-bg); + color: var(--phs-color-fg); + border-color: var(--phs-color-fg); +} + +.btn:hover, .btn:focus, .btn.focus { + background-color: var(--phs-code-bg); + color: var(--phs-color-fg); + border-color: var(--phs-color-fg); } .tidyverse-logo { diff --git a/images/phs-logo-white.svg b/images/phs-logo-white.svg new file mode 100644 index 0000000..be5760b --- /dev/null +++ b/images/phs-logo-white.svg @@ -0,0 +1,38 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/images/phs-logo.png b/images/phs-logo.png deleted file mode 100644 index 6ffd92b5790f1eac84e23b16c231ff9ab7390bd2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17230 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 I*f8M#0#&wURR910 diff --git a/images/phs-logo.svg b/images/phs-logo.svg new file mode 100644 index 0000000..8b9161a --- /dev/null +++ b/images/phs-logo.svg @@ -0,0 +1,127 @@ + +image/svg+xml diff --git a/intro.Rmd b/intro.Rmd index 1843773..1f8a809 100755 --- a/intro.Rmd +++ b/intro.Rmd @@ -15,8 +15,12 @@ runtime: shiny_prerendered # See here for learnr package documentation: https://rstudio.github.io/learnr/ +# Unset forced Python (PWB) if present +if (nzchar(Sys.getenv("RETICULATE_PYTHON"))) { + Sys.unsetenv("RETICULATE_PYTHON") +} + # Include packages here that are required throughout the training -Sys.unsetenv("RETICULATE_PYTHON") # This line is needed to run on PWB. library(learnr) library(gradethis) library(reticulate) @@ -27,8 +31,12 @@ tutorial_options( exercise.checker = gradethis::grade_learnr ) -reticulate::virtualenv_create(envname = "pyenv") -reticulate::virtualenv_install("pyenv", packages = c("pandas==2.3.3")) +# Create environment only if it doesn’t exist +if (!reticulate::virtualenv_exists("pyenv")){ + reticulate::virtualenv_create(envname = "pyenv") + reticulate::virtualenv_install("pyenv", packages = c("pandas==2.3.3")) +} +# Activate pyenv virtual environment reticulate::use_virtualenv("pyenv", required = TRUE) ``` @@ -42,9 +50,9 @@ borders = pd.read_csv("data/borders_inc_age.csv") borders2 = pd.read_csv("data/borders_inc_age.csv", usecols = ['URI', 'HospitalCode', 'Specialty']) ``` -```{r phs-logo, echo=FALSE, fig.align='right', out.width="40%"} -knitr::include_graphics("images/phs-logo.png") -``` +

## Introduction From 0b7c789b39f6b593f6c0897f1926a66568a57c3d Mon Sep 17 00:00:00 2001 From: Tina815 Date: Wed, 10 Jun 2026 14:41:09 +0000 Subject: [PATCH 34/44] add contents for file handling --- intro.Rmd | 37 ++++++++++++++++++++++++++++--------- 1 file changed, 28 insertions(+), 9 deletions(-) diff --git a/intro.Rmd b/intro.Rmd index 1843773..76efa69 100755 --- a/intro.Rmd +++ b/intro.Rmd @@ -899,12 +899,13 @@ Python library is a collection of functions and methods that allows you to perfo The Python language can be used for data analysis. The first step in performing analysis is to access your dataframe (i.e. your dataset). This section will introduce you how to import and export datasets. -### Read and Save .csv Files +### Read and Save .csv/.xlsx Files -Various commonly used file formats can be read using Python, such as .csv and .xls files. You can import these files by using the “pandas” library. The general code is +Various commonly used file formats can be read using Python, such as .csv and .xlsx files. You can import these files by using the “pandas” library. The general code is -```{python csv-read, eval = FALSE, echo = TRUE} -dataset_name = pd.read_csv("filename.csv") +```{python file-read, eval = FALSE, echo = TRUE} +dataset_name = pd.read_csv("filepath/filename.csv") +dataset_name = pd.read_excel("filepath/filename.xlsx") ``` There are three pieces to this code: @@ -930,20 +931,38 @@ Have a look and click 'Run Code' below to see the output. ```{python csv-read-example, exercise = TRUE} # Import pandas library -import pandas as pd +import pandas as pd + # Read in the dataset -borders = pd.read_csv("data/borders_inc_age.csv") +borders = pd.read_csv("data/borders_inc_age.csv") + # Check the first few rows of the dataset. Default is 5 rows. borders.head() ``` If you make any changes to borders and would like to save it as a new .csv file, use the following command: -```{python csv-save, eval = FALSE, echo = TRUE} -borders.to_csv("file path and name") +```{python file-save, eval = FALSE, echo = TRUE} +borders.to_csv("filepath/filename.csv") +borders.to_excel("filepath/filename.xlsx") +``` + +### Read Web Files + +The libraries/functions used will vary depending on the structure of the data hosted on the web. This example uses a CSV hosted on [Open Data Platform](https://www.opendata.nhs.scot/) so the process in very similar to before. + +```{python web-read-example, exercise = TRUE} +# Import pandas library +import pandas as pd + +# Read in the dataset +hosp = pd.read_csv("https://www.opendata.nhs.scot/dataset/cbd1802e-0e04-4282-88eb-d7bdcfb120f0/resource/c698f450-eeed-41a0-88f7-c1e40a568acc/download/current_nhs_hospitals_in_scotland_010720.csv") + +# Check the first few rows of the dataset. Default is 5 rows. +hosp.head() ``` -#### Read Specific Columns +### Read Specific Columns It is possible to omit certain columns from a dataframe when importing a file by using **usecols** command: From e610caf058fcc1f947c831acb1c54fed1f2a6fc3 Mon Sep 17 00:00:00 2001 From: Tina815 Date: Fri, 12 Jun 2026 09:27:21 +0000 Subject: [PATCH 35/44] add contents for read web files --- intro.Rmd | 25 +++++++++++++++++++++++-- 1 file changed, 23 insertions(+), 2 deletions(-) diff --git a/intro.Rmd b/intro.Rmd index 76efa69..78914be 100755 --- a/intro.Rmd +++ b/intro.Rmd @@ -119,7 +119,7 @@ knitr::include_graphics("images/vs-code-overview.png") ##### Opening Files and Folders -Once your session opens you can go ahead and open a folder by either clicking on the folder in the explorer pane and then "Open Folder". You can open a file using the keyboard shortcut (*Ctrl + O*). You can create a new file by pressing the "New File" button located to the right of your folder name. +Once your session opens you can go ahead and open a folder by either clicking on the folder in the explorer pane and then "Open Folder". You can open a file using the keyboard shortcut *Ctrl + O*. You can create a new file by pressing the "New File" button located to the right of your folder name. ```{r vscodefile, fig.align='center', out.width="40%"} knitr::include_graphics("images/vs-code-file.png") @@ -179,7 +179,7 @@ VS Code provides multiple ways to run code, with different approaches being more ##### Running an Entire Script -To execute the full script you can type the following into the terminal and press enter. The easiest way to open the terminal is the keyboard shortcut (*Ctrl + '*). +To execute the full script you can type the following into the terminal and press enter. The easiest way to open the terminal is the keyboard shortcut *Ctrl + '*. ```{python terminal, eval = FALSE, echo = TRUE} python your_file_name.py ``` @@ -962,6 +962,27 @@ hosp = pd.read_csv("https://www.opendata.nhs.scot/dataset/cbd1802e-0e04-4282-88e hosp.head() ``` +### Read Databases (SMRA) + +There is a guidance on how to retrieve data from SMRA [here](https://github.com/Public-Health-Scotland/python_demo_databases) if you +clone the repository and follow the steps in README. + +The main code to get SMRA data are as follows: + +```{python smra_read, eval = FALSE, echo = TRUE} +# import class from python script +from my_db import MyOracleDB + +# create an object +my_oracle_object = MyOracleDB() +# open a connection +my_oracle_object.connect() +# print a retrieved datafraame +print(my_oracle_object.query_to_df("your sql query")) +# close connection +my_oracle_object.close() +``` + ### Read Specific Columns It is possible to omit certain columns from a dataframe when importing a file by using **usecols** command: From 04a72348aa8877a90b49e4287138acf0c0d7184b Mon Sep 17 00:00:00 2001 From: Tina815 Date: Fri, 12 Jun 2026 11:39:22 +0000 Subject: [PATCH 36/44] fix read specific columns section --- intro.Rmd | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/intro.Rmd b/intro.Rmd index 78914be..93f0f33 100755 --- a/intro.Rmd +++ b/intro.Rmd @@ -39,7 +39,7 @@ import pandas as pd borders = pd.read_csv("data/borders_inc_age.csv") -borders2 = pd.read_csv("data/borders_inc_age.csv", usecols = ['URI', 'HospitalCode', 'Specialty']) +borders_columns = pd.read_csv("data/borders_inc_age.csv", usecols = ['URI', 'HospitalCode', 'Specialty']) ``` ```{r phs-logo, echo=FALSE, fig.align='right', out.width="40%"} @@ -985,24 +985,24 @@ my_oracle_object.close() ### Read Specific Columns -It is possible to omit certain columns from a dataframe when importing a file by using **usecols** command: +It is possible to omit certain columns from a dataframe when importing a file by passing a list of columns to **usecols**: ```{python csv-read-columns1, exercise = TRUE, exercise.setup = "pandas-setup"} # Read in the dataset with specific columns -borders2 = pd.read_csv("data/borders_inc_age.csv", usecols = ['URI', 'HospitalCode', 'Specialty']) +borders_columns = pd.read_csv("data/borders_inc_age.csv", usecols = ['URI', 'HospitalCode', 'Specialty']) # Check the first few rows of the dataset. Default is 5 rows. -borders2.head() +borders_columns.head() ``` It is also possible to rearrange the columns within an imported dataframe. The columns in the example above can be rearranged using the following code: ```{python csv-read-columns2, exercise = TRUE, exercise.setup = "pandas-setup"} # Rearrange the columns by supplying multiple column names in a list using the inner square brackets. -borders3 = borders2[['URI', 'Specialty', 'HospitalCode']] +borders_rearrange = borders_columns[['URI', 'Specialty', 'HospitalCode']] # Check the first few rows of the dataset. Default is 5 rows. -borders3.head() +borders_rearrange.head() ``` From 4daecbfd75b7c2d06ee28ab1f529d22515e408d6 Mon Sep 17 00:00:00 2001 From: Tina815 Date: Fri, 12 Jun 2026 12:56:39 +0000 Subject: [PATCH 37/44] add links in help section --- intro.Rmd | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/intro.Rmd b/intro.Rmd index 93f0f33..04ab6b1 100755 --- a/intro.Rmd +++ b/intro.Rmd @@ -1574,7 +1574,17 @@ baby5.merge(baby6, how = 'left', on = ['FAMILYID','DOB']) ## Help & Feedback -#### Feedback +### Help + +- [PHS Data and Intelligence Forum - Python](https://teams.microsoft.com/l/channel/19%3Ade96dc64d9204809b76b068c71ba3543%40thread.tacv2/Python?groupId=ec4250f9-b70a-4f32-9372-a232ccb4f713&tenantId=10efe0bd-a030-4bca-809c-b5e6745e499a) + +- [PEP 8 Style Guide for Python](https://peps.python.org/pep-0008/) + +- [W3 Schools Python Tutorial](https://www.w3schools.com/python/default.asp) + +- [Codecademy Getting Started with Python for Data Science](https://www.codecademy.com/enrolled/courses/getting-started-with-python-for-data-science) + +### Feedback From d4b9c9df6e74dbb2aa74f93290201ff4f55d3097 Mon Sep 17 00:00:00 2001 From: Gatz FO Date: Tue, 16 Jun 2026 11:23:48 +0000 Subject: [PATCH 38/44] auto cleaning cache --- intro.Rmd | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/intro.Rmd b/intro.Rmd index 9b9c40a..6d7506e 100755 --- a/intro.Rmd +++ b/intro.Rmd @@ -25,6 +25,9 @@ library(learnr) library(gradethis) library(reticulate) +rmarkdown::shiny_prerendered_clean("intro.Rmd") +unlink("intro_cache", recursive = TRUE) + knitr::opts_chunk$set(echo = FALSE) tutorial_options( @@ -32,10 +35,8 @@ tutorial_options( ) # Create environment only if it doesn’t exist -if (!reticulate::virtualenv_exists("pyenv")){ - reticulate::virtualenv_create(envname = "pyenv") - reticulate::virtualenv_install("pyenv", packages = c("pandas==2.3.3")) -} +reticulate::virtualenv_create(envname = "pyenv") +reticulate::virtualenv_install("pyenv", packages = c("pandas==2.3.3")) # Activate pyenv virtual environment reticulate::use_virtualenv("pyenv", required = TRUE) ``` From c35726a8c6dd3fe9fc3acb0f29a53bcf29292701 Mon Sep 17 00:00:00 2001 From: Tina815 Date: Wed, 17 Jun 2026 14:55:24 +0000 Subject: [PATCH 39/44] delete gradethis and add help link --- intro.Rmd | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/intro.Rmd b/intro.Rmd index 6d7506e..22fc58b 100755 --- a/intro.Rmd +++ b/intro.Rmd @@ -22,7 +22,6 @@ if (nzchar(Sys.getenv("RETICULATE_PYTHON"))) { # Include packages here that are required throughout the training library(learnr) -library(gradethis) library(reticulate) rmarkdown::shiny_prerendered_clean("intro.Rmd") @@ -1587,6 +1586,8 @@ baby5.merge(baby6, how = 'left', on = ['FAMILYID','DOB']) - [PHS Data and Intelligence Forum - Python](https://teams.microsoft.com/l/channel/19%3Ade96dc64d9204809b76b068c71ba3543%40thread.tacv2/Python?groupId=ec4250f9-b70a-4f32-9372-a232ccb4f713&tenantId=10efe0bd-a030-4bca-809c-b5e6745e499a) +- [KIND Network Open Source Week: Introduction to Python](https://vimeo.com/1140086541) + - [PEP 8 Style Guide for Python](https://peps.python.org/pep-0008/) - [W3 Schools Python Tutorial](https://www.w3schools.com/python/default.asp) From cd79a5fb30d131480a6a8653a88878516d3349cf Mon Sep 17 00:00:00 2001 From: Tina815 Date: Wed, 17 Jun 2026 15:44:18 +0000 Subject: [PATCH 40/44] add comments in intro.Rmd and delete gradethis in readme --- README.md | 13 ++----------- intro.Rmd | 2 ++ 2 files changed, 4 insertions(+), 11 deletions(-) diff --git a/README.md b/README.md index da196a4..0d5245f 100644 --- a/README.md +++ b/README.md @@ -2,10 +2,8 @@ This is an interactive, online introduction to python training for employees in Public Health Scotland. -The R packages required to render this course are `learnr`, `reticulate`, -and `gradethis`. - -- `learnr` and `reticulate` can be installed from CRAN. `learnr` is required to +The R packages required to render this course are `learnr` and `reticulate`. +They can be installed from CRAN. `learnr` is required to build the shiny app, whilst `reticulate` is required for running embedded python sessions. @@ -14,13 +12,6 @@ install.packages("learnr") install.packages("reticulate") ``` -- `gradethis` can be installed from GitHub. It is required for specific code -checking and feedback. - -``` r -remotes::install_github("rstudio/gradethis") -``` - # Running in Posit Workbench - If PWB has been updated it means there are new Python versions. So you have to check if your previously created pyenv is still there. Run this command in the diff --git a/intro.Rmd b/intro.Rmd index 22fc58b..d68d9cb 100755 --- a/intro.Rmd +++ b/intro.Rmd @@ -24,7 +24,9 @@ if (nzchar(Sys.getenv("RETICULATE_PYTHON"))) { library(learnr) library(reticulate) +# Clear Prerendered Output rmarkdown::shiny_prerendered_clean("intro.Rmd") +# Clear Knitr Cache unlink("intro_cache", recursive = TRUE) knitr::opts_chunk$set(echo = FALSE) From 18a5901b32421502e313bb03f5618cd0a0f30d6e Mon Sep 17 00:00:00 2001 From: Tina815 Date: Tue, 23 Jun 2026 11:22:08 +0000 Subject: [PATCH 41/44] delete exercise checker and fix some wordings --- intro.Rmd | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/intro.Rmd b/intro.Rmd index d68d9cb..8dc9a9a 100755 --- a/intro.Rmd +++ b/intro.Rmd @@ -31,10 +31,6 @@ unlink("intro_cache", recursive = TRUE) knitr::opts_chunk$set(echo = FALSE) -tutorial_options( - exercise.checker = gradethis::grade_learnr -) - # Create environment only if it doesn’t exist reticulate::virtualenv_create(envname = "pyenv") reticulate::virtualenv_install("pyenv", packages = c("pandas==2.3.3")) @@ -1026,12 +1022,12 @@ borders_rearrange.head() For example, `df["column_name"].median()` will generate the `median` value of the values within the stated column. -In the exercise below, you have the borders dataset loaded as `borders`. See if you can get the mean value for `LengthOfStay`. Please store the mean value in a variable called `mean_value`, and print that variable. Use the hint button if you need some help. +In the example below, we would like to get the mean value for `LengthOfStay` from `borders`: ```{python mean, exercise = TRUE, exercise.setup = "pandas-setup"} -mean_value = borders["LengthOfStay"].mean() +mean_value = borders["LengthOfStay"].mean() # Store the value in a variable -print(mean_value) +print(mean_value) # Print out to see the result ``` ### Frequencies & Crosstabs @@ -1051,7 +1047,7 @@ pd.crosstab(df["column_nameA"], df["column_nameB"]) pd.crosstab(df["column_nameA"], df["column_nameB"], margins = True) ``` -Create a crosstab for `HospitalCode` and `Sex`, add column and row totals: +We would like to create a crosstab for `HospitalCode` and `Sex`, add column and row totals: ```{python freq, exercise = TRUE, exercise.setup = "pandas-setup"} pd.crosstab(borders["HospitalCode"], borders["Sex"], margins = True) From 6f591ee26dbb5dfbe1e19fce0b13701bf7bce977 Mon Sep 17 00:00:00 2001 From: Gatz FO Date: Tue, 23 Jun 2026 14:00:54 +0000 Subject: [PATCH 42/44] steps to use renv --- .Rprofile | 1 + .gitignore | 9 +- README.md | 41 +- intro.Rmd | 2 +- renv.lock | 1908 ++++++++++++++++++++++++++++++++++++++++++++ renv/.gitignore | 7 + renv/activate.R | 1438 +++++++++++++++++++++++++++++++++ renv/settings.json | 21 + requirements.txt | 1 + 9 files changed, 3421 insertions(+), 7 deletions(-) create mode 100644 .Rprofile create mode 100644 renv.lock create mode 100644 renv/.gitignore create mode 100644 renv/activate.R create mode 100644 renv/settings.json create mode 100644 requirements.txt diff --git a/.Rprofile b/.Rprofile new file mode 100644 index 0000000..81b960f --- /dev/null +++ b/.Rprofile @@ -0,0 +1 @@ +source("renv/activate.R") diff --git a/.gitignore b/.gitignore index d1902b1..9a99413 100644 --- a/.gitignore +++ b/.gitignore @@ -7,4 +7,11 @@ rsconnect/** .DS_Store -*.html \ No newline at end of file +*.html + +# posit publisher deployment folder +.posit/ + +# renv +renv/library/ +renv/staging/ diff --git a/README.md b/README.md index 0d5245f..8c6a894 100644 --- a/README.md +++ b/README.md @@ -2,17 +2,44 @@ This is an interactive, online introduction to python training for employees in Public Health Scotland. -The R packages required to render this course are `learnr` and `reticulate`. -They can be installed from CRAN. `learnr` is required to -build the shiny app, whilst `reticulate` is required for running embedded python -sessions. +## Running in Posit Workbench +This project has a renv (R environment) and you can recreate the needed packages following these steps: +1. Install renv in your current R session: +``` r +install.packages("renv") +``` +2. Restart your R session +3. Run this command in R console: +``` r +renv::restore() +``` +4. All the required packages will be installed. +5. If the restore process fails you can install required R packages running these lines of code in your R console: ``` r install.packages("learnr") install.packages("reticulate") ``` -# Running in Posit Workbench +### R required packages + + +| Package | Description | +|---------|---------| +| learnr | It is required to build the shiny app | +| reticulate | It is required for running embedded python sessions | + +### Python required packages + +The required Python are available in requirements.txt file. No need to install since reticulate R package manages the required virtual environment installation. + +| Package | Description | +|---------|---------| +| pandas | It is required to read files (e.g. CSV) and wrangle its content | + + +### Troubleshooting + - If PWB has been updated it means there are new Python versions. So you have to check if your previously created pyenv is still there. Run this command in the terminal tab: `ls -l ~/.virtualenvs` @@ -22,3 +49,7 @@ terminal tab: `ls -l ~/.virtualenvs` versions. - We will be able to run this project because it will create a new pyenv (with the new Python version). + +## Deployment + +This project can be deployed in Posit connect. You will need an API token and the URL if it has already been installed. diff --git a/intro.Rmd b/intro.Rmd index 8dc9a9a..539b097 100755 --- a/intro.Rmd +++ b/intro.Rmd @@ -33,7 +33,7 @@ knitr::opts_chunk$set(echo = FALSE) # Create environment only if it doesn’t exist reticulate::virtualenv_create(envname = "pyenv") -reticulate::virtualenv_install("pyenv", packages = c("pandas==2.3.3")) +reticulate::virtualenv_install("pyenv", requirements = "requirements.txt") # Activate pyenv virtual environment reticulate::use_virtualenv("pyenv", required = TRUE) ``` diff --git a/renv.lock b/renv.lock new file mode 100644 index 0000000..9228f9b --- /dev/null +++ b/renv.lock @@ -0,0 +1,1908 @@ +{ + "R": { + "Version": "4.5.1", + "Repositories": [ + { + "Name": "CRAN", + "URL": "https://ppm-prod.publichealthscotland.org/cran/latest" + }, + { + "Name": "PHS GitHub", + "URL": "https://ppm-prod.publichealthscotland.org/phs-github/latest" + } + ] + }, + "Packages": { + "Matrix": { + "Package": "Matrix", + "Version": "1.7-3", + "Source": "Repository", + "VersionNote": "do also bump src/version.h, inst/include/Matrix/version.h", + "Date": "2025-03-05", + "Priority": "recommended", + "Title": "Sparse and Dense Matrix Classes and Methods", + "Description": "A rich hierarchy of sparse and dense matrix classes, including general, symmetric, triangular, and diagonal matrices with numeric, logical, or pattern entries. Efficient methods for operating on such matrices, often wrapping the 'BLAS', 'LAPACK', and 'SuiteSparse' libraries.", + "License": "GPL (>= 2) | file LICENCE", + "URL": "https://Matrix.R-forge.R-project.org", + "BugReports": "https://R-forge.R-project.org/tracker/?atid=294&group_id=61", + "Contact": "Matrix-authors@R-project.org", + "Authors@R": "c(person(\"Douglas\", \"Bates\", role = \"aut\", comment = c(ORCID = \"0000-0001-8316-9503\")), person(\"Martin\", \"Maechler\", role = c(\"aut\", \"cre\"), email = \"mmaechler+Matrix@gmail.com\", comment = c(ORCID = \"0000-0002-8685-9910\")), person(\"Mikael\", \"Jagan\", role = \"aut\", comment = c(ORCID = \"0000-0002-3542-2938\")), person(\"Timothy A.\", \"Davis\", role = \"ctb\", comment = c(ORCID = \"0000-0001-7614-6899\", \"SuiteSparse libraries\", \"collaborators listed in dir(system.file(\\\"doc\\\", \\\"SuiteSparse\\\", package=\\\"Matrix\\\"), pattern=\\\"License\\\", full.names=TRUE, recursive=TRUE)\")), person(\"George\", \"Karypis\", role = \"ctb\", comment = c(ORCID = \"0000-0003-2753-1437\", \"METIS library\", \"Copyright: Regents of the University of Minnesota\")), person(\"Jason\", \"Riedy\", role = \"ctb\", comment = c(ORCID = \"0000-0002-4345-4200\", \"GNU Octave's condest() and onenormest()\", \"Copyright: Regents of the University of California\")), person(\"Jens\", \"Oehlschlägel\", role = \"ctb\", comment = \"initial nearPD()\"), person(\"R Core Team\", role = \"ctb\", comment = c(ROR = \"02zz1nj61\", \"base R's matrix implementation\")))", + "Depends": [ + "R (>= 4.4)", + "methods" + ], + "Imports": [ + "grDevices", + "graphics", + "grid", + "lattice", + "stats", + "utils" + ], + "Suggests": [ + "MASS", + "datasets", + "sfsmisc", + "tools" + ], + "Enhances": [ + "SparseM", + "graph" + ], + "LazyData": "no", + "LazyDataNote": "not possible, since we use data/*.R and our S4 classes", + "BuildResaveData": "no", + "Encoding": "UTF-8", + "NeedsCompilation": "yes", + "Author": "Douglas Bates [aut] (), Martin Maechler [aut, cre] (), Mikael Jagan [aut] (), Timothy A. Davis [ctb] (, SuiteSparse libraries, collaborators listed in dir(system.file(\"doc\", \"SuiteSparse\", package=\"Matrix\"), pattern=\"License\", full.names=TRUE, recursive=TRUE)), George Karypis [ctb] (, METIS library, Copyright: Regents of the University of Minnesota), Jason Riedy [ctb] (, GNU Octave's condest() and onenormest(), Copyright: Regents of the University of California), Jens Oehlschlägel [ctb] (initial nearPD()), R Core Team [ctb] (02zz1nj61, base R's matrix implementation)", + "Maintainer": "Martin Maechler ", + "Repository": "CRAN" + }, + "R6": { + "Package": "R6", + "Version": "2.6.1", + "Source": "Repository", + "Title": "Encapsulated Classes with Reference Semantics", + "Authors@R": "c( person(\"Winston\", \"Chang\", , \"winston@posit.co\", role = c(\"aut\", \"cre\")), person(\"Posit Software, PBC\", role = c(\"cph\", \"fnd\")) )", + "Description": "Creates classes with reference semantics, similar to R's built-in reference classes. Compared to reference classes, R6 classes are simpler and lighter-weight, and they are not built on S4 classes so they do not require the methods package. These classes allow public and private members, and they support inheritance, even when the classes are defined in different packages.", + "License": "MIT + file LICENSE", + "URL": "https://r6.r-lib.org, https://github.com/r-lib/R6", + "BugReports": "https://github.com/r-lib/R6/issues", + "Depends": [ + "R (>= 3.6)" + ], + "Suggests": [ + "lobstr", + "testthat (>= 3.0.0)" + ], + "Config/Needs/website": "tidyverse/tidytemplate, ggplot2, microbenchmark, scales", + "Config/testthat/edition": "3", + "Encoding": "UTF-8", + "RoxygenNote": "7.3.2", + "NeedsCompilation": "no", + "Author": "Winston Chang [aut, cre], Posit Software, PBC [cph, fnd]", + "Maintainer": "Winston Chang ", + "Repository": "CRAN" + }, + "Rcpp": { + "Package": "Rcpp", + "Version": "1.1.1-1.1", + "Source": "Repository", + "Title": "Seamless R and C++ Integration", + "Date": "2026-04-19", + "Authors@R": "c(person(\"Dirk\", \"Eddelbuettel\", role = c(\"aut\", \"cre\"), email = \"edd@debian.org\", comment = c(ORCID = \"0000-0001-6419-907X\")), person(\"Romain\", \"Francois\", role = \"aut\", comment = c(ORCID = \"0000-0002-2444-4226\")), person(\"JJ\", \"Allaire\", role = \"aut\", comment = c(ORCID = \"0000-0003-0174-9868\")), person(\"Kevin\", \"Ushey\", role = \"aut\", comment = c(ORCID = \"0000-0003-2880-7407\")), person(\"Qiang\", \"Kou\", role = \"aut\", comment = c(ORCID = \"0000-0001-6786-5453\")), person(\"Nathan\", \"Russell\", role = \"aut\"), person(\"Iñaki\", \"Ucar\", role = \"aut\", comment = c(ORCID = \"0000-0001-6403-5550\")), person(\"Doug\", \"Bates\", role = \"aut\", comment = c(ORCID = \"0000-0001-8316-9503\")), person(\"John\", \"Chambers\", role = \"aut\"))", + "Description": "The 'Rcpp' package provides R functions as well as C++ classes which offer a seamless integration of R and C++. Many R data types and objects can be mapped back and forth to C++ equivalents which facilitates both writing of new code as well as easier integration of third-party libraries. Documentation about 'Rcpp' is provided by several vignettes included in this package, via the 'Rcpp Gallery' site at , the paper by Eddelbuettel and Francois (2011, ), the book by Eddelbuettel (2013, ) and the paper by Eddelbuettel and Balamuta (2018, ); see 'citation(\"Rcpp\")' for details.", + "Depends": [ + "R (>= 3.5.0)" + ], + "Imports": [ + "methods", + "utils" + ], + "Suggests": [ + "tinytest", + "inline", + "rbenchmark", + "pkgKitten (>= 0.1.2)" + ], + "URL": "https://www.rcpp.org, https://dirk.eddelbuettel.com/code/rcpp.html, https://github.com/RcppCore/Rcpp", + "License": "GPL (>= 2)", + "BugReports": "https://github.com/RcppCore/Rcpp/issues", + "MailingList": "rcpp-devel@lists.r-forge.r-project.org", + "RoxygenNote": "6.1.1", + "Encoding": "UTF-8", + "VignetteBuilder": "Rcpp", + "NeedsCompilation": "yes", + "Author": "Dirk Eddelbuettel [aut, cre] (ORCID: ), Romain Francois [aut] (ORCID: ), JJ Allaire [aut] (ORCID: ), Kevin Ushey [aut] (ORCID: ), Qiang Kou [aut] (ORCID: ), Nathan Russell [aut], Iñaki Ucar [aut] (ORCID: ), Doug Bates [aut] (ORCID: ), John Chambers [aut]", + "Maintainer": "Dirk Eddelbuettel ", + "Repository": "CRAN" + }, + "RcppTOML": { + "Package": "RcppTOML", + "Version": "0.2.3", + "Source": "Repository", + "Type": "Package", + "Title": "'Rcpp' Bindings to Parser for \"Tom's Obvious Markup Language\"", + "Date": "2025-03-08", + "Authors@R": "c(person(\"Dirk\", \"Eddelbuettel\", role = c(\"aut\", \"cre\"), email = \"edd@debian.org\", comment = c(ORCID = \"0000-0001-6419-907X\")), person(\"Mark\", \"Gillard\", role = \"aut\", comment = \"Author of 'toml++' header library\"))", + "Description": "The configuration format defined by 'TOML' (which expands to \"Tom's Obvious Markup Language\") specifies an excellent format (described at ) suitable for both human editing as well as the common uses of a machine-readable format. This package uses 'Rcpp' to connect to the 'toml++' parser written by Mark Gillard to R.", + "SystemRequirements": "A C++17 compiler", + "BugReports": "https://github.com/eddelbuettel/rcpptoml/issues", + "URL": "http://dirk.eddelbuettel.com/code/rcpp.toml.html", + "Imports": [ + "Rcpp (>= 1.0.8)" + ], + "Depends": [ + "R (>= 3.3.0)" + ], + "LinkingTo": [ + "Rcpp" + ], + "Suggests": [ + "tinytest" + ], + "License": "GPL (>= 2)", + "NeedsCompilation": "yes", + "Author": "Dirk Eddelbuettel [aut, cre] (), Mark Gillard [aut] (Author of 'toml++' header library)", + "Maintainer": "Dirk Eddelbuettel ", + "Repository": "CRAN" + }, + "backports": { + "Package": "backports", + "Version": "1.5.1", + "Source": "Repository", + "Type": "Package", + "Title": "Reimplementations of Functions Introduced Since R-3.0.0", + "Authors@R": "c( person(\"Michel\", \"Lang\", NULL, \"michellang@gmail.com\", role = c(\"cre\", \"aut\"), comment = c(ORCID = \"0000-0001-9754-0393\")), person(\"Duncan\", \"Murdoch\", NULL, \"murdoch.duncan@gmail.com\", role = c(\"aut\")), person(\"R Core Team\", role = \"aut\"))", + "Maintainer": "Michel Lang ", + "Description": "Functions introduced or changed since R v3.0.0 are re-implemented in this package. The backports are conditionally exported in order to let R resolve the function name to either the implemented backport, or the respective base version, if available. Package developers can make use of new functions or arguments by selectively importing specific backports to support older installations.", + "URL": "https://github.com/r-lib/backports", + "BugReports": "https://github.com/r-lib/backports/issues", + "License": "GPL-2 | GPL-3", + "NeedsCompilation": "yes", + "ByteCompile": "yes", + "Depends": [ + "R (>= 3.0.0)" + ], + "Encoding": "UTF-8", + "RoxygenNote": "7.3.3", + "Author": "Michel Lang [cre, aut] (ORCID: ), Duncan Murdoch [aut], R Core Team [aut]", + "Repository": "CRAN" + }, + "base64enc": { + "Package": "base64enc", + "Version": "0.1-6", + "Source": "Repository", + "Title": "Tools for 'base64' Encoding", + "Author": "Simon Urbanek [aut, cre, cph] (https://urbanek.nz, ORCID: )", + "Authors@R": "person(\"Simon\", \"Urbanek\", role=c(\"aut\",\"cre\",\"cph\"), email=\"Simon.Urbanek@r-project.org\", comment=c(\"https://urbanek.nz\", ORCID=\"0000-0003-2297-1732\"))", + "Maintainer": "Simon Urbanek ", + "Depends": [ + "R (>= 2.9.0)" + ], + "Enhances": [ + "png" + ], + "Description": "Tools for handling 'base64' encoding. It is more flexible than the orphaned 'base64' package.", + "License": "GPL-2 | GPL-3", + "URL": "https://www.rforge.net/base64enc", + "BugReports": "https://github.com/s-u/base64enc/issues", + "NeedsCompilation": "yes", + "Repository": "CRAN", + "Encoding": "UTF-8" + }, + "bslib": { + "Package": "bslib", + "Version": "0.11.0", + "Source": "Repository", + "Title": "Custom 'Bootstrap' 'Sass' Themes for 'shiny' and 'rmarkdown'", + "Authors@R": "c( person(\"Carson\", \"Sievert\", , \"carson@posit.co\", role = c(\"aut\", \"cre\"), comment = c(ORCID = \"0000-0002-4958-2844\")), person(\"Joe\", \"Cheng\", , \"joe@posit.co\", role = \"aut\"), person(\"Garrick\", \"Aden-Buie\", , \"garrick@posit.co\", role = \"aut\", comment = c(ORCID = \"0000-0002-7111-0077\")), person(\"Posit Software, PBC\", role = c(\"cph\", \"fnd\")), person(, \"Bootstrap contributors\", role = \"ctb\", comment = \"Bootstrap library\"), person(, \"Twitter, Inc\", role = \"cph\", comment = \"Bootstrap library\"), person(\"Javi\", \"Aguilar\", role = c(\"ctb\", \"cph\"), comment = \"Bootstrap colorpicker library\"), person(\"Thomas\", \"Park\", role = c(\"ctb\", \"cph\"), comment = \"Bootswatch library\"), person(, \"PayPal\", role = c(\"ctb\", \"cph\"), comment = \"Bootstrap accessibility plugin\") )", + "Description": "Simplifies custom 'CSS' styling of both 'shiny' and 'rmarkdown' via 'Bootstrap' 'Sass'. Supports 'Bootstrap' 3, 4 and 5 as well as their various 'Bootswatch' themes. An interactive widget is also provided for previewing themes in real time.", + "License": "MIT + file LICENSE", + "URL": "https://rstudio.github.io/bslib/, https://github.com/rstudio/bslib", + "BugReports": "https://github.com/rstudio/bslib/issues", + "Depends": [ + "R (>= 2.10)" + ], + "Imports": [ + "base64enc", + "cachem", + "fastmap (>= 1.1.1)", + "grDevices", + "htmltools (>= 0.5.8)", + "jquerylib (>= 0.1.3)", + "jsonlite", + "lifecycle", + "memoise (>= 2.0.1)", + "mime", + "rlang", + "sass (>= 0.4.9)" + ], + "Suggests": [ + "brand.yml", + "bsicons", + "curl", + "fontawesome", + "future", + "ggplot2", + "knitr", + "lattice", + "magrittr", + "rappdirs", + "rmarkdown (>= 2.7)", + "shiny (>= 1.11.1.9000)", + "testthat", + "thematic", + "tools", + "utils", + "withr", + "yaml" + ], + "Config/Needs/deploy": "BH, chiflights22, colourpicker, commonmark, cpp11, cpsievert/chiflights22, cpsievert/histoslider, dplyr, DT, ggplot2, ggridges, gt, hexbin, histoslider, htmlwidgets, lattice, leaflet, lubridate, markdown, modelr, plotly, reactable, reshape2, rprojroot, rsconnect, rstudio/shiny, scales, styler, tibble", + "Config/Needs/routine": "chromote, desc, renv", + "Config/Needs/website": "brio, crosstalk, dplyr, DT, ggplot2, glue, htmlwidgets, leaflet, lorem, palmerpenguins, plotly, purrr, rprojroot, rstudio/htmltools, scales, stringr, tidyr, webshot2", + "Config/roxygen2/version": "8.0.0", + "Config/testthat/edition": "3", + "Config/testthat/parallel": "true", + "Config/testthat/start-first": "zzzz-bs-sass, fonts, zzz-precompile, theme-*, rmd-*", + "Encoding": "UTF-8", + "Collate": "'accordion.R' 'breakpoints.R' 'bs-current-theme.R' 'bs-dependencies.R' 'bs-global.R' 'bs-remove.R' 'bs-theme-layers.R' 'bs-theme-preset-bootswatch.R' 'bs-theme-preset-brand.R' 'bs-theme-preset-builtin.R' 'bs-theme-preset.R' 'utils.R' 'bs-theme-preview.R' 'bs-theme-update.R' 'bs-theme.R' 'bslib-package.R' 'buttons.R' 'card.R' 'deprecated.R' 'files.R' 'fill.R' 'imports.R' 'input-code-editor.R' 'input-dark-mode.R' 'input-submit.R' 'input-switch.R' 'layout.R' 'nav-items.R' 'nav-update.R' 'navbar_options.R' 'navs-legacy.R' 'navs.R' 'onLoad.R' 'page.R' 'popover.R' 'precompiled.R' 'print.R' 'shiny-devmode.R' 'sidebar.R' 'staticimports.R' 'toast.R' 'toolbar.R' 'tooltip.R' 'utils-deps.R' 'utils-shiny.R' 'utils-tags.R' 'value-box.R' 'version-default.R' 'versions.R'", + "NeedsCompilation": "no", + "Author": "Carson Sievert [aut, cre] (ORCID: ), Joe Cheng [aut], Garrick Aden-Buie [aut] (ORCID: ), Posit Software, PBC [cph, fnd], Bootstrap contributors [ctb] (Bootstrap library), Twitter, Inc [cph] (Bootstrap library), Javi Aguilar [ctb, cph] (Bootstrap colorpicker library), Thomas Park [ctb, cph] (Bootswatch library), PayPal [ctb, cph] (Bootstrap accessibility plugin)", + "Maintainer": "Carson Sievert ", + "Repository": "CRAN" + }, + "cachem": { + "Package": "cachem", + "Version": "1.1.0", + "Source": "Repository", + "Title": "Cache R Objects with Automatic Pruning", + "Description": "Key-value stores with automatic pruning. Caches can limit either their total size or the age of the oldest object (or both), automatically pruning objects to maintain the constraints.", + "Authors@R": "c( person(\"Winston\", \"Chang\", , \"winston@posit.co\", c(\"aut\", \"cre\")), person(family = \"Posit Software, PBC\", role = c(\"cph\", \"fnd\")))", + "License": "MIT + file LICENSE", + "Encoding": "UTF-8", + "ByteCompile": "true", + "URL": "https://cachem.r-lib.org/, https://github.com/r-lib/cachem", + "Imports": [ + "rlang", + "fastmap (>= 1.2.0)" + ], + "Suggests": [ + "testthat" + ], + "RoxygenNote": "7.2.3", + "Config/Needs/routine": "lobstr", + "Config/Needs/website": "pkgdown", + "NeedsCompilation": "yes", + "Author": "Winston Chang [aut, cre], Posit Software, PBC [cph, fnd]", + "Maintainer": "Winston Chang ", + "Repository": "CRAN" + }, + "checkmate": { + "Package": "checkmate", + "Version": "2.3.4", + "Source": "Repository", + "Type": "Package", + "Title": "Fast and Versatile Argument Checks", + "Description": "Tests and assertions to perform frequent argument checks. A substantial part of the package was written in C to minimize any worries about execution time overhead.", + "Authors@R": "c( person(\"Michel\", \"Lang\", NULL, \"michellang@gmail.com\", role = c(\"cre\", \"aut\"), comment = c(ORCID = \"0000-0001-9754-0393\")), person(\"Bernd\", \"Bischl\", NULL, \"bernd_bischl@gmx.net\", role = \"ctb\"), person(\"Dénes\", \"Tóth\", NULL, \"toth.denes@kogentum.hu\", role = \"ctb\", comment = c(ORCID = \"0000-0003-4262-3217\")) )", + "URL": "https://mllg.github.io/checkmate/, https://github.com/mllg/checkmate", + "URLNote": "https://github.com/mllg/checkmate", + "BugReports": "https://github.com/mllg/checkmate/issues", + "NeedsCompilation": "yes", + "ByteCompile": "yes", + "Encoding": "UTF-8", + "Depends": [ + "R (>= 3.0.0)" + ], + "Imports": [ + "backports (>= 1.1.0)", + "utils" + ], + "Suggests": [ + "R6", + "fastmatch", + "data.table (>= 1.9.8)", + "devtools", + "ggplot2", + "knitr", + "magrittr", + "microbenchmark", + "rmarkdown", + "testthat (>= 3.0.4)", + "tinytest (>= 1.1.0)", + "tibble" + ], + "License": "BSD_3_clause + file LICENSE", + "VignetteBuilder": "knitr", + "RoxygenNote": "7.3.3", + "Collate": "'AssertCollection.R' 'allMissing.R' 'anyInfinite.R' 'anyMissing.R' 'anyNaN.R' 'asInteger.R' 'assert.R' 'helper.R' 'makeExpectation.R' 'makeTest.R' 'makeAssertion.R' 'checkAccess.R' 'checkArray.R' 'checkAtomic.R' 'checkAtomicVector.R' 'checkCharacter.R' 'checkChoice.R' 'checkClass.R' 'checkComplex.R' 'checkCount.R' 'checkDataFrame.R' 'checkDataTable.R' 'checkDate.R' 'checkDirectoryExists.R' 'checkDisjunct.R' 'checkDouble.R' 'checkEnvironment.R' 'checkFALSE.R' 'checkFactor.R' 'checkFileExists.R' 'checkFlag.R' 'checkFormula.R' 'checkFunction.R' 'checkInt.R' 'checkInteger.R' 'checkIntegerish.R' 'checkList.R' 'checkLogical.R' 'checkMatrix.R' 'checkMultiClass.R' 'checkNamed.R' 'checkNames.R' 'checkNull.R' 'checkNumber.R' 'checkNumeric.R' 'checkOS.R' 'checkPOSIXct.R' 'checkPathForOutput.R' 'checkPermutation.R' 'checkR6.R' 'checkRaw.R' 'checkScalar.R' 'checkScalarNA.R' 'checkSetEqual.R' 'checkString.R' 'checkSubset.R' 'checkTRUE.R' 'checkTibble.R' 'checkVector.R' 'coalesce.R' 'isIntegerish.R' 'matchArg.R' 'qassert.R' 'qassertr.R' 'vname.R' 'wfwl.R' 'zzz.R'", + "Author": "Michel Lang [cre, aut] (ORCID: ), Bernd Bischl [ctb], Dénes Tóth [ctb] (ORCID: )", + "Maintainer": "Michel Lang ", + "Repository": "CRAN" + }, + "cli": { + "Package": "cli", + "Version": "3.6.6", + "Source": "Repository", + "Title": "Helpers for Developing Command Line Interfaces", + "Authors@R": "c( person(\"Gábor\", \"Csárdi\", , \"gabor@posit.co\", role = c(\"aut\", \"cre\")), person(\"Hadley\", \"Wickham\", role = \"ctb\"), person(\"Kirill\", \"Müller\", role = \"ctb\"), person(\"Salim\", \"Brüggemann\", , \"salim-b@pm.me\", role = \"ctb\", comment = c(ORCID = \"0000-0002-5329-5987\")), person(\"Posit Software, PBC\", role = c(\"cph\", \"fnd\"), comment = c(ROR = \"03wc8by49\")) )", + "Description": "A suite of tools to build attractive command line interfaces ('CLIs'), from semantic elements: headings, lists, alerts, paragraphs, etc. Supports custom themes via a 'CSS'-like language. It also contains a number of lower level 'CLI' elements: rules, boxes, trees, and 'Unicode' symbols with 'ASCII' alternatives. It support ANSI colors and text styles as well.", + "License": "MIT + file LICENSE", + "URL": "https://cli.r-lib.org, https://github.com/r-lib/cli", + "BugReports": "https://github.com/r-lib/cli/issues", + "Depends": [ + "R (>= 3.4)" + ], + "Imports": [ + "utils" + ], + "Suggests": [ + "callr", + "covr", + "crayon", + "digest", + "glue (>= 1.6.0)", + "grDevices", + "htmltools", + "htmlwidgets", + "knitr", + "methods", + "processx", + "ps (>= 1.3.4.9000)", + "rlang (>= 1.0.2.9003)", + "rmarkdown", + "rprojroot", + "rstudioapi", + "testthat (>= 3.2.0)", + "tibble", + "whoami", + "withr" + ], + "Config/Needs/website": "r-lib/asciicast, bench, brio, cpp11, decor, desc, fansi, prettyunits, sessioninfo, tidyverse/tidytemplate, usethis, vctrs", + "Config/testthat/edition": "3", + "Config/usethis/last-upkeep": "2025-04-25", + "Encoding": "UTF-8", + "RoxygenNote": "7.3.2.9000", + "NeedsCompilation": "yes", + "Author": "Gábor Csárdi [aut, cre], Hadley Wickham [ctb], Kirill Müller [ctb], Salim Brüggemann [ctb] (ORCID: ), Posit Software, PBC [cph, fnd] (ROR: )", + "Maintainer": "Gábor Csárdi ", + "Repository": "CRAN" + }, + "commonmark": { + "Package": "commonmark", + "Version": "2.0.0", + "Source": "Repository", + "Type": "Package", + "Title": "High Performance CommonMark and Github Markdown Rendering in R", + "Authors@R": "c( person(\"Jeroen\", \"Ooms\", ,\"jeroenooms@gmail.com\", role = c(\"aut\", \"cre\"), comment = c(ORCID = \"0000-0002-4035-0289\")), person(\"John MacFarlane\", role = \"cph\", comment = \"Author of cmark\"))", + "Description": "The CommonMark specification defines a rationalized version of markdown syntax. This package uses the 'cmark' reference implementation for converting markdown text into various formats including html, latex and groff man. In addition it exposes the markdown parse tree in xml format. Also includes opt-in support for GFM extensions including tables, autolinks, and strikethrough text.", + "License": "BSD_2_clause + file LICENSE", + "URL": "https://docs.ropensci.org/commonmark/ https://ropensci.r-universe.dev/commonmark", + "BugReports": "https://github.com/r-lib/commonmark/issues", + "Suggests": [ + "curl", + "testthat", + "xml2" + ], + "RoxygenNote": "7.3.2", + "Language": "en-US", + "Encoding": "UTF-8", + "NeedsCompilation": "yes", + "Author": "Jeroen Ooms [aut, cre] (ORCID: ), John MacFarlane [cph] (Author of cmark)", + "Maintainer": "Jeroen Ooms ", + "Repository": "CRAN" + }, + "digest": { + "Package": "digest", + "Version": "0.6.39", + "Source": "Repository", + "Authors@R": "c(person(\"Dirk\", \"Eddelbuettel\", role = c(\"aut\", \"cre\"), email = \"edd@debian.org\", comment = c(ORCID = \"0000-0001-6419-907X\")), person(\"Antoine\", \"Lucas\", role=\"ctb\", comment = c(ORCID = \"0000-0002-8059-9767\")), person(\"Jarek\", \"Tuszynski\", role=\"ctb\"), person(\"Henrik\", \"Bengtsson\", role=\"ctb\", comment = c(ORCID = \"0000-0002-7579-5165\")), person(\"Simon\", \"Urbanek\", role=\"ctb\", comment = c(ORCID = \"0000-0003-2297-1732\")), person(\"Mario\", \"Frasca\", role=\"ctb\"), person(\"Bryan\", \"Lewis\", role=\"ctb\"), person(\"Murray\", \"Stokely\", role=\"ctb\"), person(\"Hannes\", \"Muehleisen\", role=\"ctb\", comment = c(ORCID = \"0000-0001-8552-0029\")), person(\"Duncan\", \"Murdoch\", role=\"ctb\"), person(\"Jim\", \"Hester\", role=\"ctb\", comment = c(ORCID = \"0000-0002-2739-7082\")), person(\"Wush\", \"Wu\", role=\"ctb\", comment = c(ORCID = \"0000-0001-5180-0567\")), person(\"Qiang\", \"Kou\", role=\"ctb\", comment = c(ORCID = \"0000-0001-6786-5453\")), person(\"Thierry\", \"Onkelinx\", role=\"ctb\", comment = c(ORCID = \"0000-0001-8804-4216\")), person(\"Michel\", \"Lang\", role=\"ctb\", comment = c(ORCID = \"0000-0001-9754-0393\")), person(\"Viliam\", \"Simko\", role=\"ctb\"), person(\"Kurt\", \"Hornik\", role=\"ctb\", comment = c(ORCID = \"0000-0003-4198-9911\")), person(\"Radford\", \"Neal\", role=\"ctb\", comment = c(ORCID = \"0000-0002-2473-3407\")), person(\"Kendon\", \"Bell\", role=\"ctb\", comment = c(ORCID = \"0000-0002-9093-8312\")), person(\"Matthew\", \"de Queljoe\", role=\"ctb\"), person(\"Dmitry\", \"Selivanov\", role=\"ctb\", comment = c(ORCID = \"0000-0003-0492-6647\")), person(\"Ion\", \"Suruceanu\", role=\"ctb\", comment = c(ORCID = \"0009-0005-6446-4909\")), person(\"Bill\", \"Denney\", role=\"ctb\", comment = c(ORCID = \"0000-0002-5759-428X\")), person(\"Dirk\", \"Schumacher\", role=\"ctb\"), person(\"András\", \"Svraka\", role=\"ctb\", comment = c(ORCID = \"0009-0008-8480-1329\")), person(\"Sergey\", \"Fedorov\", role=\"ctb\", comment = c(ORCID = \"0000-0002-5970-7233\")), person(\"Will\", \"Landau\", role=\"ctb\", comment = c(ORCID = \"0000-0003-1878-3253\")), person(\"Floris\", \"Vanderhaeghe\", role=\"ctb\", comment = c(ORCID = \"0000-0002-6378-6229\")), person(\"Kevin\", \"Tappe\", role=\"ctb\"), person(\"Harris\", \"McGehee\", role=\"ctb\"), person(\"Tim\", \"Mastny\", role=\"ctb\"), person(\"Aaron\", \"Peikert\", role=\"ctb\", comment = c(ORCID = \"0000-0001-7813-818X\")), person(\"Mark\", \"van der Loo\", role=\"ctb\", comment = c(ORCID = \"0000-0002-9807-4686\")), person(\"Chris\", \"Muir\", role=\"ctb\", comment = c(ORCID = \"0000-0003-2555-3878\")), person(\"Moritz\", \"Beller\", role=\"ctb\", comment = c(ORCID = \"0000-0003-4852-0526\")), person(\"Sebastian\", \"Campbell\", role=\"ctb\", comment = c(ORCID = \"0009-0000-5948-4503\")), person(\"Winston\", \"Chang\", role=\"ctb\", comment = c(ORCID = \"0000-0002-1576-2126\")), person(\"Dean\", \"Attali\", role=\"ctb\", comment = c(ORCID = \"0000-0002-5645-3493\")), person(\"Michael\", \"Chirico\", role=\"ctb\", comment = c(ORCID = \"0000-0003-0787-087X\")), person(\"Kevin\", \"Ushey\", role=\"ctb\", comment = c(ORCID = \"0000-0003-2880-7407\")), person(\"Carl\", \"Pearson\", role=\"ctb\", comment = c(ORCID = \"0000-0003-0701-7860\")))", + "Date": "2025-11-19", + "Title": "Create Compact Hash Digests of R Objects", + "Description": "Implementation of a function 'digest()' for the creation of hash digests of arbitrary R objects (using the 'md5', 'sha-1', 'sha-256', 'crc32', 'xxhash', 'murmurhash', 'spookyhash', 'blake3', 'crc32c', 'xxh3_64', and 'xxh3_128' algorithms) permitting easy comparison of R language objects, as well as functions such as 'hmac()' to create hash-based message authentication code. Please note that this package is not meant to be deployed for cryptographic purposes for which more comprehensive (and widely tested) libraries such as 'OpenSSL' should be used.", + "URL": "https://github.com/eddelbuettel/digest, https://eddelbuettel.github.io/digest/, https://dirk.eddelbuettel.com/code/digest.html", + "BugReports": "https://github.com/eddelbuettel/digest/issues", + "Depends": [ + "R (>= 3.3.0)" + ], + "Imports": [ + "utils" + ], + "License": "GPL (>= 2)", + "Suggests": [ + "tinytest", + "simplermarkdown", + "rbenchmark" + ], + "VignetteBuilder": "simplermarkdown", + "Encoding": "UTF-8", + "NeedsCompilation": "yes", + "Author": "Dirk Eddelbuettel [aut, cre] (ORCID: ), Antoine Lucas [ctb] (ORCID: ), Jarek Tuszynski [ctb], Henrik Bengtsson [ctb] (ORCID: ), Simon Urbanek [ctb] (ORCID: ), Mario Frasca [ctb], Bryan Lewis [ctb], Murray Stokely [ctb], Hannes Muehleisen [ctb] (ORCID: ), Duncan Murdoch [ctb], Jim Hester [ctb] (ORCID: ), Wush Wu [ctb] (ORCID: ), Qiang Kou [ctb] (ORCID: ), Thierry Onkelinx [ctb] (ORCID: ), Michel Lang [ctb] (ORCID: ), Viliam Simko [ctb], Kurt Hornik [ctb] (ORCID: ), Radford Neal [ctb] (ORCID: ), Kendon Bell [ctb] (ORCID: ), Matthew de Queljoe [ctb], Dmitry Selivanov [ctb] (ORCID: ), Ion Suruceanu [ctb] (ORCID: ), Bill Denney [ctb] (ORCID: ), Dirk Schumacher [ctb], András Svraka [ctb] (ORCID: ), Sergey Fedorov [ctb] (ORCID: ), Will Landau [ctb] (ORCID: ), Floris Vanderhaeghe [ctb] (ORCID: ), Kevin Tappe [ctb], Harris McGehee [ctb], Tim Mastny [ctb], Aaron Peikert [ctb] (ORCID: ), Mark van der Loo [ctb] (ORCID: ), Chris Muir [ctb] (ORCID: ), Moritz Beller [ctb] (ORCID: ), Sebastian Campbell [ctb] (ORCID: ), Winston Chang [ctb] (ORCID: ), Dean Attali [ctb] (ORCID: ), Michael Chirico [ctb] (ORCID: ), Kevin Ushey [ctb] (ORCID: ), Carl Pearson [ctb] (ORCID: )", + "Maintainer": "Dirk Eddelbuettel ", + "Repository": "CRAN" + }, + "evaluate": { + "Package": "evaluate", + "Version": "1.0.5", + "Source": "Repository", + "Type": "Package", + "Title": "Parsing and Evaluation Tools that Provide More Details than the Default", + "Authors@R": "c( person(\"Hadley\", \"Wickham\", , \"hadley@posit.co\", role = c(\"aut\", \"cre\")), person(\"Yihui\", \"Xie\", role = \"aut\", comment = c(ORCID = \"0000-0003-0645-5666\")), person(\"Michael\", \"Lawrence\", role = \"ctb\"), person(\"Thomas\", \"Kluyver\", role = \"ctb\"), person(\"Jeroen\", \"Ooms\", role = \"ctb\"), person(\"Barret\", \"Schloerke\", role = \"ctb\"), person(\"Adam\", \"Ryczkowski\", role = \"ctb\"), person(\"Hiroaki\", \"Yutani\", role = \"ctb\"), person(\"Michel\", \"Lang\", role = \"ctb\"), person(\"Karolis\", \"Koncevičius\", role = \"ctb\"), person(\"Posit Software, PBC\", role = c(\"cph\", \"fnd\")) )", + "Description": "Parsing and evaluation tools that make it easy to recreate the command line behaviour of R.", + "License": "MIT + file LICENSE", + "URL": "https://evaluate.r-lib.org/, https://github.com/r-lib/evaluate", + "BugReports": "https://github.com/r-lib/evaluate/issues", + "Depends": [ + "R (>= 3.6.0)" + ], + "Suggests": [ + "callr", + "covr", + "ggplot2 (>= 3.3.6)", + "lattice", + "methods", + "pkgload", + "ragg (>= 1.4.0)", + "rlang (>= 1.1.5)", + "knitr", + "testthat (>= 3.0.0)", + "withr" + ], + "Config/Needs/website": "tidyverse/tidytemplate", + "Config/testthat/edition": "3", + "Encoding": "UTF-8", + "RoxygenNote": "7.3.2", + "NeedsCompilation": "no", + "Author": "Hadley Wickham [aut, cre], Yihui Xie [aut] (ORCID: ), Michael Lawrence [ctb], Thomas Kluyver [ctb], Jeroen Ooms [ctb], Barret Schloerke [ctb], Adam Ryczkowski [ctb], Hiroaki Yutani [ctb], Michel Lang [ctb], Karolis Koncevičius [ctb], Posit Software, PBC [cph, fnd]", + "Maintainer": "Hadley Wickham ", + "Repository": "CRAN" + }, + "fastmap": { + "Package": "fastmap", + "Version": "1.2.0", + "Source": "Repository", + "Title": "Fast Data Structures", + "Authors@R": "c( person(\"Winston\", \"Chang\", email = \"winston@posit.co\", role = c(\"aut\", \"cre\")), person(given = \"Posit Software, PBC\", role = c(\"cph\", \"fnd\")), person(given = \"Tessil\", role = \"cph\", comment = \"hopscotch_map library\") )", + "Description": "Fast implementation of data structures, including a key-value store, stack, and queue. Environments are commonly used as key-value stores in R, but every time a new key is used, it is added to R's global symbol table, causing a small amount of memory leakage. This can be problematic in cases where many different keys are used. Fastmap avoids this memory leak issue by implementing the map using data structures in C++.", + "License": "MIT + file LICENSE", + "Encoding": "UTF-8", + "RoxygenNote": "7.2.3", + "Suggests": [ + "testthat (>= 2.1.1)" + ], + "URL": "https://r-lib.github.io/fastmap/, https://github.com/r-lib/fastmap", + "BugReports": "https://github.com/r-lib/fastmap/issues", + "NeedsCompilation": "yes", + "Author": "Winston Chang [aut, cre], Posit Software, PBC [cph, fnd], Tessil [cph] (hopscotch_map library)", + "Maintainer": "Winston Chang ", + "Repository": "CRAN" + }, + "fontawesome": { + "Package": "fontawesome", + "Version": "0.5.3", + "Source": "Repository", + "Type": "Package", + "Title": "Easily Work with 'Font Awesome' Icons", + "Description": "Easily and flexibly insert 'Font Awesome' icons into 'R Markdown' documents and 'Shiny' apps. These icons can be inserted into HTML content through inline 'SVG' tags or 'i' tags. There is also a utility function for exporting 'Font Awesome' icons as 'PNG' images for those situations where raster graphics are needed.", + "Authors@R": "c( person(\"Richard\", \"Iannone\", , \"rich@posit.co\", c(\"aut\", \"cre\"), comment = c(ORCID = \"0000-0003-3925-190X\")), person(\"Christophe\", \"Dervieux\", , \"cderv@posit.co\", role = \"ctb\", comment = c(ORCID = \"0000-0003-4474-2498\")), person(\"Winston\", \"Chang\", , \"winston@posit.co\", role = \"ctb\"), person(\"Dave\", \"Gandy\", role = c(\"ctb\", \"cph\"), comment = \"Font-Awesome font\"), person(\"Posit Software, PBC\", role = c(\"cph\", \"fnd\")) )", + "License": "MIT + file LICENSE", + "URL": "https://github.com/rstudio/fontawesome, https://rstudio.github.io/fontawesome/", + "BugReports": "https://github.com/rstudio/fontawesome/issues", + "Encoding": "UTF-8", + "ByteCompile": "true", + "RoxygenNote": "7.3.2", + "Depends": [ + "R (>= 3.3.0)" + ], + "Imports": [ + "rlang (>= 1.0.6)", + "htmltools (>= 0.5.1.1)" + ], + "Suggests": [ + "covr", + "dplyr (>= 1.0.8)", + "gt (>= 0.9.0)", + "knitr (>= 1.31)", + "testthat (>= 3.0.0)", + "rsvg" + ], + "Config/testthat/edition": "3", + "NeedsCompilation": "no", + "Author": "Richard Iannone [aut, cre] (), Christophe Dervieux [ctb] (), Winston Chang [ctb], Dave Gandy [ctb, cph] (Font-Awesome font), Posit Software, PBC [cph, fnd]", + "Maintainer": "Richard Iannone ", + "Repository": "CRAN" + }, + "fs": { + "Package": "fs", + "Version": "1.6.7", + "Source": "Repository", + "Title": "Cross-Platform File System Operations Based on 'libuv'", + "Authors@R": "c( person(\"Jim\", \"Hester\", role = \"aut\"), person(\"Hadley\", \"Wickham\", role = \"aut\"), person(\"Gábor\", \"Csárdi\", role = \"aut\"), person(\"Jeroen\", \"Ooms\", , \"jeroenooms@gmail.com\", role = \"cre\"), person(\"libuv project contributors\", role = \"cph\", comment = \"libuv library\"), person(\"Joyent, Inc. and other Node contributors\", role = \"cph\", comment = \"libuv library\"), person(\"Posit Software, PBC\", role = c(\"cph\", \"fnd\"), comment = c(ROR = \"03wc8by49\")) )", + "Description": "A cross-platform interface to file system operations, built on top of the 'libuv' C library.", + "License": "MIT + file LICENSE", + "URL": "https://fs.r-lib.org, https://github.com/r-lib/fs", + "BugReports": "https://github.com/r-lib/fs/issues", + "Depends": [ + "R (>= 4.1)" + ], + "Imports": [ + "methods" + ], + "Suggests": [ + "covr", + "crayon", + "knitr", + "pillar (>= 1.0.0)", + "rmarkdown", + "spelling", + "testthat (>= 3.0.0)", + "tibble (>= 1.1.0)", + "vctrs (>= 0.3.0)", + "withr" + ], + "VignetteBuilder": "knitr", + "ByteCompile": "true", + "Config/Needs/website": "tidyverse/tidytemplate", + "Config/testthat/edition": "3", + "Config/usethis/last-upkeep": "2025-04-23", + "Copyright": "file COPYRIGHTS", + "Encoding": "UTF-8", + "Language": "en-US", + "RoxygenNote": "7.3.3", + "SystemRequirements": "GNU make", + "NeedsCompilation": "yes", + "Author": "Jim Hester [aut], Hadley Wickham [aut], Gábor Csárdi [aut], Jeroen Ooms [cre], libuv project contributors [cph] (libuv library), Joyent, Inc. and other Node contributors [cph] (libuv library), Posit Software, PBC [cph, fnd] (ROR: )", + "Maintainer": "Jeroen Ooms ", + "Repository": "RSPM" + }, + "glue": { + "Package": "glue", + "Version": "1.8.1", + "Source": "Repository", + "Title": "Interpreted String Literals", + "Authors@R": "c( person(\"Jim\", \"Hester\", role = \"aut\", comment = c(ORCID = \"0000-0002-2739-7082\")), person(\"Jennifer\", \"Bryan\", , \"jenny@posit.co\", role = c(\"aut\", \"cre\"), comment = c(ORCID = \"0000-0002-6983-2759\")), person(\"Posit Software, PBC\", role = c(\"cph\", \"fnd\"), comment = c(ROR = \"03wc8by49\")) )", + "Description": "An implementation of interpreted string literals, inspired by Python's Literal String Interpolation and Docstrings and Julia's Triple-Quoted String Literals .", + "License": "MIT + file LICENSE", + "URL": "https://glue.tidyverse.org/, https://github.com/tidyverse/glue", + "BugReports": "https://github.com/tidyverse/glue/issues", + "Depends": [ + "R (>= 4.1)" + ], + "Imports": [ + "methods" + ], + "Suggests": [ + "crayon", + "DBI (>= 1.2.0)", + "dplyr", + "knitr", + "rlang", + "rmarkdown", + "RSQLite", + "testthat (>= 3.2.0)", + "vctrs (>= 0.3.0)", + "waldo (>= 0.5.3)", + "withr" + ], + "VignetteBuilder": "knitr", + "ByteCompile": "true", + "Config/Needs/website": "bench, forcats, ggbeeswarm, ggplot2, R.utils, rprintf, tidyr, tidyverse/tidytemplate", + "Config/testthat/edition": "3", + "Config/usethis/last-upkeep": "2026-04-16", + "Encoding": "UTF-8", + "RoxygenNote": "7.3.3", + "NeedsCompilation": "yes", + "Author": "Jim Hester [aut] (ORCID: ), Jennifer Bryan [aut, cre] (ORCID: ), Posit Software, PBC [cph, fnd] (ROR: )", + "Maintainer": "Jennifer Bryan ", + "Repository": "RSPM" + }, + "here": { + "Package": "here", + "Version": "1.0.2", + "Source": "Repository", + "Title": "A Simpler Way to Find Your Files", + "Date": "2025-09-06", + "Authors@R": "c(person(given = \"Kirill\", family = \"M\\u00fcller\", role = c(\"aut\", \"cre\"), email = \"kirill@cynkra.com\", comment = c(ORCID = \"0000-0002-1416-3412\")), person(given = \"Jennifer\", family = \"Bryan\", role = \"ctb\", email = \"jenny@rstudio.com\", comment = c(ORCID = \"0000-0002-6983-2759\")))", + "Description": "Constructs paths to your project's files. Declare the relative path of a file within your project with 'i_am()'. Use the 'here()' function as a drop-in replacement for 'file.path()', it will always locate the files relative to your project root.", + "License": "MIT + file LICENSE", + "URL": "https://here.r-lib.org/, https://github.com/r-lib/here", + "BugReports": "https://github.com/r-lib/here/issues", + "Imports": [ + "rprojroot (>= 2.1.0)" + ], + "Suggests": [ + "conflicted", + "covr", + "fs", + "knitr", + "palmerpenguins", + "plyr", + "readr", + "rlang", + "rmarkdown", + "testthat", + "uuid", + "withr" + ], + "VignetteBuilder": "knitr", + "Encoding": "UTF-8", + "RoxygenNote": "7.3.3.9000", + "Config/testthat/edition": "3", + "Config/Needs/website": "tidyverse/tidytemplate", + "NeedsCompilation": "no", + "Author": "Kirill Müller [aut, cre] (ORCID: ), Jennifer Bryan [ctb] (ORCID: )", + "Maintainer": "Kirill Müller ", + "Repository": "CRAN" + }, + "highr": { + "Package": "highr", + "Version": "0.12", + "Source": "Repository", + "Type": "Package", + "Title": "Syntax Highlighting for R Source Code", + "Authors@R": "c( person(\"Yihui\", \"Xie\", role = c(\"aut\", \"cre\"), email = \"xie@yihui.name\", comment = c(ORCID = \"0000-0003-0645-5666\")), person(\"Yixuan\", \"Qiu\", role = \"aut\"), person(\"Christopher\", \"Gandrud\", role = \"ctb\"), person(\"Qiang\", \"Li\", role = \"ctb\") )", + "Description": "Provides syntax highlighting for R source code. Currently it supports LaTeX and HTML output. Source code of other languages is supported via Andre Simon's highlight package ().", + "Depends": [ + "R (>= 3.3.0)" + ], + "Imports": [ + "xfun (>= 0.18)" + ], + "Suggests": [ + "knitr", + "markdown", + "testit" + ], + "License": "GPL", + "URL": "https://github.com/yihui/highr", + "BugReports": "https://github.com/yihui/highr/issues", + "VignetteBuilder": "knitr", + "Encoding": "UTF-8", + "RoxygenNote": "7.3.3", + "NeedsCompilation": "no", + "Author": "Yihui Xie [aut, cre] (ORCID: ), Yixuan Qiu [aut], Christopher Gandrud [ctb], Qiang Li [ctb]", + "Maintainer": "Yihui Xie ", + "Repository": "CRAN" + }, + "htmltools": { + "Package": "htmltools", + "Version": "0.5.9", + "Source": "Repository", + "Type": "Package", + "Title": "Tools for HTML", + "Authors@R": "c( person(\"Joe\", \"Cheng\", , \"joe@posit.co\", role = \"aut\"), person(\"Carson\", \"Sievert\", , \"carson@posit.co\", role = c(\"aut\", \"cre\"), comment = c(ORCID = \"0000-0002-4958-2844\")), person(\"Barret\", \"Schloerke\", , \"barret@posit.co\", role = \"aut\", comment = c(ORCID = \"0000-0001-9986-114X\")), person(\"Winston\", \"Chang\", , \"winston@posit.co\", role = \"aut\", comment = c(ORCID = \"0000-0002-1576-2126\")), person(\"Yihui\", \"Xie\", , \"yihui@posit.co\", role = \"aut\"), person(\"Jeff\", \"Allen\", role = \"aut\"), person(\"Posit Software, PBC\", role = c(\"cph\", \"fnd\")) )", + "Description": "Tools for HTML generation and output.", + "License": "GPL (>= 2)", + "URL": "https://github.com/rstudio/htmltools, https://rstudio.github.io/htmltools/", + "BugReports": "https://github.com/rstudio/htmltools/issues", + "Depends": [ + "R (>= 2.14.1)" + ], + "Imports": [ + "base64enc", + "digest", + "fastmap (>= 1.1.0)", + "grDevices", + "rlang (>= 1.0.0)", + "utils" + ], + "Suggests": [ + "Cairo", + "markdown", + "ragg", + "shiny", + "testthat", + "withr" + ], + "Enhances": [ + "knitr" + ], + "Config/Needs/check": "knitr", + "Config/Needs/website": "rstudio/quillt, bench", + "Encoding": "UTF-8", + "RoxygenNote": "7.3.3", + "Collate": "'colors.R' 'fill.R' 'html_dependency.R' 'html_escape.R' 'html_print.R' 'htmltools-package.R' 'images.R' 'known_tags.R' 'selector.R' 'staticimports.R' 'tag_query.R' 'utils.R' 'tags.R' 'template.R'", + "NeedsCompilation": "yes", + "Author": "Joe Cheng [aut], Carson Sievert [aut, cre] (ORCID: ), Barret Schloerke [aut] (ORCID: ), Winston Chang [aut] (ORCID: ), Yihui Xie [aut], Jeff Allen [aut], Posit Software, PBC [cph, fnd]", + "Maintainer": "Carson Sievert ", + "Repository": "CRAN" + }, + "htmlwidgets": { + "Package": "htmlwidgets", + "Version": "1.6.4", + "Source": "Repository", + "Type": "Package", + "Title": "HTML Widgets for R", + "Authors@R": "c( person(\"Ramnath\", \"Vaidyanathan\", role = c(\"aut\", \"cph\")), person(\"Yihui\", \"Xie\", role = \"aut\"), person(\"JJ\", \"Allaire\", role = \"aut\"), person(\"Joe\", \"Cheng\", , \"joe@posit.co\", role = \"aut\"), person(\"Carson\", \"Sievert\", , \"carson@posit.co\", role = c(\"aut\", \"cre\"), comment = c(ORCID = \"0000-0002-4958-2844\")), person(\"Kenton\", \"Russell\", role = c(\"aut\", \"cph\")), person(\"Ellis\", \"Hughes\", role = \"ctb\"), person(\"Posit Software, PBC\", role = c(\"cph\", \"fnd\")) )", + "Description": "A framework for creating HTML widgets that render in various contexts including the R console, 'R Markdown' documents, and 'Shiny' web applications.", + "License": "MIT + file LICENSE", + "URL": "https://github.com/ramnathv/htmlwidgets", + "BugReports": "https://github.com/ramnathv/htmlwidgets/issues", + "Imports": [ + "grDevices", + "htmltools (>= 0.5.7)", + "jsonlite (>= 0.9.16)", + "knitr (>= 1.8)", + "rmarkdown", + "yaml" + ], + "Suggests": [ + "testthat" + ], + "Enhances": [ + "shiny (>= 1.1)" + ], + "VignetteBuilder": "knitr", + "Encoding": "UTF-8", + "RoxygenNote": "7.2.3", + "NeedsCompilation": "no", + "Author": "Ramnath Vaidyanathan [aut, cph], Yihui Xie [aut], JJ Allaire [aut], Joe Cheng [aut], Carson Sievert [aut, cre] (), Kenton Russell [aut, cph], Ellis Hughes [ctb], Posit Software, PBC [cph, fnd]", + "Maintainer": "Carson Sievert ", + "Repository": "CRAN" + }, + "httpuv": { + "Package": "httpuv", + "Version": "1.6.17", + "Source": "Repository", + "Type": "Package", + "Title": "HTTP and WebSocket Server Library", + "Authors@R": "c( person(\"Joe\", \"Cheng\", , \"joe@posit.co\", role = \"aut\"), person(\"Winston\", \"Chang\", , \"winston@posit.co\", role = c(\"aut\", \"cre\")), person(\"Posit, PBC\", role = c(\"cph\", \"fnd\"), comment = c(ROR = \"03wc8by49\")), person(\"Hector\", \"Corrada Bravo\", role = \"ctb\"), person(\"Jeroen\", \"Ooms\", role = \"ctb\"), person(\"Andrzej\", \"Krzemienski\", role = \"cph\", comment = \"optional.hpp\"), person(\"libuv project contributors\", role = \"cph\", comment = \"libuv library, see src/libuv/AUTHORS file\"), person(\"Joyent, Inc. and other Node contributors\", role = \"cph\", comment = \"libuv library, see src/libuv/AUTHORS file; and http-parser library, see src/http-parser/AUTHORS file\"), person(\"Niels\", \"Provos\", role = \"cph\", comment = \"libuv subcomponent: tree.h\"), person(\"Internet Systems Consortium, Inc.\", role = \"cph\", comment = \"libuv subcomponent: inet_pton and inet_ntop, contained in src/libuv/src/inet.c\"), person(\"Alexander\", \"Chemeris\", role = \"cph\", comment = \"libuv subcomponent: stdint-msvc2008.h (from msinttypes)\"), person(\"Google, Inc.\", role = \"cph\", comment = \"libuv subcomponent: pthread-fixes.c\"), person(\"Sony Mobile Communcations AB\", role = \"cph\", comment = \"libuv subcomponent: pthread-fixes.c\"), person(\"Berkeley Software Design Inc.\", role = \"cph\", comment = \"libuv subcomponent: android-ifaddrs.h, android-ifaddrs.c\"), person(\"Kenneth\", \"MacKay\", role = \"cph\", comment = \"libuv subcomponent: android-ifaddrs.h, android-ifaddrs.c\"), person(\"Emergya (Cloud4all, FP7/2007-2013, grant agreement no 289016)\", role = \"cph\", comment = \"libuv subcomponent: android-ifaddrs.h, android-ifaddrs.c\"), person(\"Steve\", \"Reid\", role = \"aut\", comment = \"SHA-1 implementation\"), person(\"James\", \"Brown\", role = \"aut\", comment = \"SHA-1 implementation\"), person(\"Bob\", \"Trower\", role = \"aut\", comment = \"base64 implementation\"), person(\"Alexander\", \"Peslyak\", role = \"aut\", comment = \"MD5 implementation\"), person(\"Trantor Standard Systems\", role = \"cph\", comment = \"base64 implementation\"), person(\"Igor\", \"Sysoev\", role = \"cph\", comment = \"http-parser\") )", + "Description": "Provides low-level socket and protocol support for handling HTTP and WebSocket requests directly from within R. It is primarily intended as a building block for other packages, rather than making it particularly easy to create complete web applications using httpuv alone. httpuv is built on top of the libuv and http-parser C libraries, both of which were developed by Joyent, Inc. (See LICENSE file for libuv and http-parser license information.)", + "License": "GPL (>= 2) | file LICENSE", + "URL": "https://rstudio.github.io/httpuv/, https://github.com/rstudio/httpuv", + "BugReports": "https://github.com/rstudio/httpuv/issues", + "Depends": [ + "R (>= 2.15.1)" + ], + "Imports": [ + "later (>= 0.8.0)", + "promises", + "R6", + "Rcpp (>= 1.0.7)", + "utils" + ], + "Suggests": [ + "callr", + "curl", + "jsonlite", + "testthat (>= 3.0.0)", + "websocket" + ], + "LinkingTo": [ + "later", + "Rcpp" + ], + "Config/Needs/website": "tidyverse/tidytemplate", + "Config/testthat/edition": "3", + "Config/usethis/last-upkeep": "2025-07-01", + "Encoding": "UTF-8", + "RoxygenNote": "7.3.3", + "SystemRequirements": "GNU make, zlib", + "Collate": "'RcppExports.R' 'httpuv-package.R' 'httpuv.R' 'random_port.R' 'server.R' 'staticServer.R' 'static_paths.R' 'utils.R'", + "NeedsCompilation": "yes", + "Author": "Joe Cheng [aut], Winston Chang [aut, cre], Posit, PBC [cph, fnd] (ROR: ), Hector Corrada Bravo [ctb], Jeroen Ooms [ctb], Andrzej Krzemienski [cph] (optional.hpp), libuv project contributors [cph] (libuv library, see src/libuv/AUTHORS file), Joyent, Inc. and other Node contributors [cph] (libuv library, see src/libuv/AUTHORS file; and http-parser library, see src/http-parser/AUTHORS file), Niels Provos [cph] (libuv subcomponent: tree.h), Internet Systems Consortium, Inc. [cph] (libuv subcomponent: inet_pton and inet_ntop, contained in src/libuv/src/inet.c), Alexander Chemeris [cph] (libuv subcomponent: stdint-msvc2008.h (from msinttypes)), Google, Inc. [cph] (libuv subcomponent: pthread-fixes.c), Sony Mobile Communcations AB [cph] (libuv subcomponent: pthread-fixes.c), Berkeley Software Design Inc. [cph] (libuv subcomponent: android-ifaddrs.h, android-ifaddrs.c), Kenneth MacKay [cph] (libuv subcomponent: android-ifaddrs.h, android-ifaddrs.c), Emergya (Cloud4all, FP7/2007-2013, grant agreement no 289016) [cph] (libuv subcomponent: android-ifaddrs.h, android-ifaddrs.c), Steve Reid [aut] (SHA-1 implementation), James Brown [aut] (SHA-1 implementation), Bob Trower [aut] (base64 implementation), Alexander Peslyak [aut] (MD5 implementation), Trantor Standard Systems [cph] (base64 implementation), Igor Sysoev [cph] (http-parser)", + "Maintainer": "Winston Chang ", + "Repository": "CRAN" + }, + "jquerylib": { + "Package": "jquerylib", + "Version": "0.1.4", + "Source": "Repository", + "Title": "Obtain 'jQuery' as an HTML Dependency Object", + "Authors@R": "c( person(\"Carson\", \"Sievert\", role = c(\"aut\", \"cre\"), email = \"carson@rstudio.com\", comment = c(ORCID = \"0000-0002-4958-2844\")), person(\"Joe\", \"Cheng\", role = \"aut\", email = \"joe@rstudio.com\"), person(family = \"RStudio\", role = \"cph\"), person(family = \"jQuery Foundation\", role = \"cph\", comment = \"jQuery library and jQuery UI library\"), person(family = \"jQuery contributors\", role = c(\"ctb\", \"cph\"), comment = \"jQuery library; authors listed in inst/lib/jquery-AUTHORS.txt\") )", + "Description": "Obtain any major version of 'jQuery' () and use it in any webpage generated by 'htmltools' (e.g. 'shiny', 'htmlwidgets', and 'rmarkdown'). Most R users don't need to use this package directly, but other R packages (e.g. 'shiny', 'rmarkdown', etc.) depend on this package to avoid bundling redundant copies of 'jQuery'.", + "License": "MIT + file LICENSE", + "Encoding": "UTF-8", + "Config/testthat/edition": "3", + "RoxygenNote": "7.0.2", + "Imports": [ + "htmltools" + ], + "Suggests": [ + "testthat" + ], + "NeedsCompilation": "no", + "Author": "Carson Sievert [aut, cre] (), Joe Cheng [aut], RStudio [cph], jQuery Foundation [cph] (jQuery library and jQuery UI library), jQuery contributors [ctb, cph] (jQuery library; authors listed in inst/lib/jquery-AUTHORS.txt)", + "Maintainer": "Carson Sievert ", + "Repository": "CRAN" + }, + "jsonlite": { + "Package": "jsonlite", + "Version": "2.0.0", + "Source": "Repository", + "Title": "A Simple and Robust JSON Parser and Generator for R", + "License": "MIT + file LICENSE", + "Depends": [ + "methods" + ], + "Authors@R": "c( person(\"Jeroen\", \"Ooms\", role = c(\"aut\", \"cre\"), email = \"jeroenooms@gmail.com\", comment = c(ORCID = \"0000-0002-4035-0289\")), person(\"Duncan\", \"Temple Lang\", role = \"ctb\"), person(\"Lloyd\", \"Hilaiel\", role = \"cph\", comment=\"author of bundled libyajl\"))", + "URL": "https://jeroen.r-universe.dev/jsonlite https://arxiv.org/abs/1403.2805", + "BugReports": "https://github.com/jeroen/jsonlite/issues", + "Maintainer": "Jeroen Ooms ", + "VignetteBuilder": "knitr, R.rsp", + "Description": "A reasonably fast JSON parser and generator, optimized for statistical data and the web. Offers simple, flexible tools for working with JSON in R, and is particularly powerful for building pipelines and interacting with a web API. The implementation is based on the mapping described in the vignette (Ooms, 2014). In addition to converting JSON data from/to R objects, 'jsonlite' contains functions to stream, validate, and prettify JSON data. The unit tests included with the package verify that all edge cases are encoded and decoded consistently for use with dynamic data in systems and applications.", + "Suggests": [ + "httr", + "vctrs", + "testthat", + "knitr", + "rmarkdown", + "R.rsp", + "sf" + ], + "RoxygenNote": "7.3.2", + "Encoding": "UTF-8", + "NeedsCompilation": "yes", + "Author": "Jeroen Ooms [aut, cre] (), Duncan Temple Lang [ctb], Lloyd Hilaiel [cph] (author of bundled libyajl)", + "Repository": "https://ppm-prod.publichealthscotland.org/cran/latest" + }, + "knitr": { + "Package": "knitr", + "Version": "1.51", + "Source": "Repository", + "Type": "Package", + "Title": "A General-Purpose Package for Dynamic Report Generation in R", + "Authors@R": "c( person(\"Yihui\", \"Xie\", role = c(\"aut\", \"cre\"), email = \"xie@yihui.name\", comment = c(ORCID = \"0000-0003-0645-5666\", URL = \"https://yihui.org\")), person(\"Abhraneel\", \"Sarma\", role = \"ctb\"), person(\"Adam\", \"Vogt\", role = \"ctb\"), person(\"Alastair\", \"Andrew\", role = \"ctb\"), person(\"Alex\", \"Zvoleff\", role = \"ctb\"), person(\"Amar\", \"Al-Zubaidi\", role = \"ctb\"), person(\"Andre\", \"Simon\", role = \"ctb\", comment = \"the CSS files under inst/themes/ were derived from the Highlight package http://www.andre-simon.de\"), person(\"Aron\", \"Atkins\", role = \"ctb\"), person(\"Aaron\", \"Wolen\", role = \"ctb\"), person(\"Ashley\", \"Manton\", role = \"ctb\"), person(\"Atsushi\", \"Yasumoto\", role = \"ctb\", comment = c(ORCID = \"0000-0002-8335-495X\")), person(\"Ben\", \"Baumer\", role = \"ctb\"), person(\"Brian\", \"Diggs\", role = \"ctb\"), person(\"Brian\", \"Zhang\", role = \"ctb\"), person(\"Bulat\", \"Yapparov\", role = \"ctb\"), person(\"Cassio\", \"Pereira\", role = \"ctb\"), person(\"Christophe\", \"Dervieux\", role = \"ctb\"), person(\"David\", \"Hall\", role = \"ctb\"), person(\"David\", \"Hugh-Jones\", role = \"ctb\"), person(\"David\", \"Robinson\", role = \"ctb\"), person(\"Doug\", \"Hemken\", role = \"ctb\"), person(\"Duncan\", \"Murdoch\", role = \"ctb\"), person(\"Elio\", \"Campitelli\", role = \"ctb\"), person(\"Ellis\", \"Hughes\", role = \"ctb\"), person(\"Emily\", \"Riederer\", role = \"ctb\"), person(\"Fabian\", \"Hirschmann\", role = \"ctb\"), person(\"Fitch\", \"Simeon\", role = \"ctb\"), person(\"Forest\", \"Fang\", role = \"ctb\"), person(c(\"Frank\", \"E\", \"Harrell\", \"Jr\"), role = \"ctb\", comment = \"the Sweavel package at inst/misc/Sweavel.sty\"), person(\"Garrick\", \"Aden-Buie\", role = \"ctb\"), person(\"Gregoire\", \"Detrez\", role = \"ctb\"), person(\"Hadley\", \"Wickham\", role = \"ctb\"), person(\"Hao\", \"Zhu\", role = \"ctb\"), person(\"Heewon\", \"Jeon\", role = \"ctb\"), person(\"Henrik\", \"Bengtsson\", role = \"ctb\"), person(\"Hiroaki\", \"Yutani\", role = \"ctb\"), person(\"Ian\", \"Lyttle\", role = \"ctb\"), person(\"Hodges\", \"Daniel\", role = \"ctb\"), person(\"Jacob\", \"Bien\", role = \"ctb\"), person(\"Jake\", \"Burkhead\", role = \"ctb\"), person(\"James\", \"Manton\", role = \"ctb\"), person(\"Jared\", \"Lander\", role = \"ctb\"), person(\"Jason\", \"Punyon\", role = \"ctb\"), person(\"Javier\", \"Luraschi\", role = \"ctb\"), person(\"Jeff\", \"Arnold\", role = \"ctb\"), person(\"Jenny\", \"Bryan\", role = \"ctb\"), person(\"Jeremy\", \"Ashkenas\", role = c(\"ctb\", \"cph\"), comment = \"the CSS file at inst/misc/docco-classic.css\"), person(\"Jeremy\", \"Stephens\", role = \"ctb\"), person(\"Jim\", \"Hester\", role = \"ctb\"), person(\"Joe\", \"Cheng\", role = \"ctb\"), person(\"Johannes\", \"Ranke\", role = \"ctb\"), person(\"John\", \"Honaker\", role = \"ctb\"), person(\"John\", \"Muschelli\", role = \"ctb\"), person(\"Jonathan\", \"Keane\", role = \"ctb\"), person(\"JJ\", \"Allaire\", role = \"ctb\"), person(\"Johan\", \"Toloe\", role = \"ctb\"), person(\"Jonathan\", \"Sidi\", role = \"ctb\"), person(\"Joseph\", \"Larmarange\", role = \"ctb\"), person(\"Julien\", \"Barnier\", role = \"ctb\"), person(\"Kaiyin\", \"Zhong\", role = \"ctb\"), person(\"Kamil\", \"Slowikowski\", role = \"ctb\"), person(\"Karl\", \"Forner\", role = \"ctb\"), person(c(\"Kevin\", \"K.\"), \"Smith\", role = \"ctb\"), person(\"Kirill\", \"Mueller\", role = \"ctb\"), person(\"Kohske\", \"Takahashi\", role = \"ctb\"), person(\"Lorenz\", \"Walthert\", role = \"ctb\"), person(\"Lucas\", \"Gallindo\", role = \"ctb\"), person(\"Marius\", \"Hofert\", role = \"ctb\"), person(\"Martin\", \"Modrák\", role = \"ctb\"), person(\"Michael\", \"Chirico\", role = \"ctb\"), person(\"Michael\", \"Friendly\", role = \"ctb\"), person(\"Michal\", \"Bojanowski\", role = \"ctb\"), person(\"Michel\", \"Kuhlmann\", role = \"ctb\"), person(\"Miller\", \"Patrick\", role = \"ctb\"), person(\"Nacho\", \"Caballero\", role = \"ctb\"), person(\"Nick\", \"Salkowski\", role = \"ctb\"), person(\"Niels Richard\", \"Hansen\", role = \"ctb\"), person(\"Noam\", \"Ross\", role = \"ctb\"), person(\"Obada\", \"Mahdi\", role = \"ctb\"), person(\"Pavel N.\", \"Krivitsky\", role = \"ctb\", comment=c(ORCID = \"0000-0002-9101-3362\")), person(\"Pedro\", \"Faria\", role = \"ctb\"), person(\"Qiang\", \"Li\", role = \"ctb\"), person(\"Ramnath\", \"Vaidyanathan\", role = \"ctb\"), person(\"Richard\", \"Cotton\", role = \"ctb\"), person(\"Robert\", \"Krzyzanowski\", role = \"ctb\"), person(\"Rodrigo\", \"Copetti\", role = \"ctb\"), person(\"Romain\", \"Francois\", role = \"ctb\"), person(\"Ruaridh\", \"Williamson\", role = \"ctb\"), person(\"Sagiru\", \"Mati\", role = \"ctb\", comment = c(ORCID = \"0000-0003-1413-3974\")), person(\"Scott\", \"Kostyshak\", role = \"ctb\"), person(\"Sebastian\", \"Meyer\", role = \"ctb\"), person(\"Sietse\", \"Brouwer\", role = \"ctb\"), person(c(\"Simon\", \"de\"), \"Bernard\", role = \"ctb\"), person(\"Sylvain\", \"Rousseau\", role = \"ctb\"), person(\"Taiyun\", \"Wei\", role = \"ctb\"), person(\"Thibaut\", \"Assus\", role = \"ctb\"), person(\"Thibaut\", \"Lamadon\", role = \"ctb\"), person(\"Thomas\", \"Leeper\", role = \"ctb\"), person(\"Tim\", \"Mastny\", role = \"ctb\"), person(\"Tom\", \"Torsney-Weir\", role = \"ctb\"), person(\"Trevor\", \"Davis\", role = \"ctb\"), person(\"Viktoras\", \"Veitas\", role = \"ctb\"), person(\"Weicheng\", \"Zhu\", role = \"ctb\"), person(\"Wush\", \"Wu\", role = \"ctb\"), person(\"Zachary\", \"Foster\", role = \"ctb\"), person(\"Zhian N.\", \"Kamvar\", role = \"ctb\", comment = c(ORCID = \"0000-0003-1458-7108\")), person(given = \"Posit Software, PBC\", role = c(\"cph\", \"fnd\")) )", + "Description": "Provides a general-purpose tool for dynamic report generation in R using Literate Programming techniques.", + "Depends": [ + "R (>= 3.6.0)" + ], + "Imports": [ + "evaluate (>= 0.15)", + "highr (>= 0.11)", + "methods", + "tools", + "xfun (>= 0.52)", + "yaml (>= 2.1.19)" + ], + "Suggests": [ + "bslib", + "DBI (>= 0.4-1)", + "digest", + "formatR", + "gifski", + "gridSVG", + "htmlwidgets (>= 0.7)", + "jpeg", + "JuliaCall (>= 0.11.1)", + "magick", + "litedown", + "markdown (>= 1.3)", + "otel", + "otelsdk", + "png", + "ragg", + "reticulate (>= 1.4)", + "rgl (>= 0.95.1201)", + "rlang", + "rmarkdown", + "sass", + "showtext", + "styler (>= 1.2.0)", + "targets (>= 0.6.0)", + "testit", + "tibble", + "tikzDevice (>= 0.10)", + "tinytex (>= 0.56)", + "webshot", + "rstudioapi", + "svglite" + ], + "License": "GPL", + "URL": "https://yihui.org/knitr/", + "BugReports": "https://github.com/yihui/knitr/issues", + "Encoding": "UTF-8", + "VignetteBuilder": "litedown, knitr", + "SystemRequirements": "Package vignettes based on R Markdown v2 or reStructuredText require Pandoc (http://pandoc.org). The function rst2pdf() requires rst2pdf (https://github.com/rst2pdf/rst2pdf).", + "Collate": "'block.R' 'cache.R' 'citation.R' 'hooks-html.R' 'plot.R' 'utils.R' 'defaults.R' 'concordance.R' 'engine.R' 'highlight.R' 'themes.R' 'header.R' 'hooks-asciidoc.R' 'hooks-chunk.R' 'hooks-extra.R' 'hooks-latex.R' 'hooks-md.R' 'hooks-rst.R' 'hooks-textile.R' 'hooks.R' 'otel.R' 'output.R' 'package.R' 'pandoc.R' 'params.R' 'parser.R' 'pattern.R' 'rocco.R' 'spin.R' 'table.R' 'template.R' 'utils-conversion.R' 'utils-rd2html.R' 'utils-string.R' 'utils-sweave.R' 'utils-upload.R' 'utils-vignettes.R' 'zzz.R'", + "RoxygenNote": "7.3.3", + "NeedsCompilation": "no", + "Author": "Yihui Xie [aut, cre] (ORCID: , URL: https://yihui.org), Abhraneel Sarma [ctb], Adam Vogt [ctb], Alastair Andrew [ctb], Alex Zvoleff [ctb], Amar Al-Zubaidi [ctb], Andre Simon [ctb] (the CSS files under inst/themes/ were derived from the Highlight package http://www.andre-simon.de), Aron Atkins [ctb], Aaron Wolen [ctb], Ashley Manton [ctb], Atsushi Yasumoto [ctb] (ORCID: ), Ben Baumer [ctb], Brian Diggs [ctb], Brian Zhang [ctb], Bulat Yapparov [ctb], Cassio Pereira [ctb], Christophe Dervieux [ctb], David Hall [ctb], David Hugh-Jones [ctb], David Robinson [ctb], Doug Hemken [ctb], Duncan Murdoch [ctb], Elio Campitelli [ctb], Ellis Hughes [ctb], Emily Riederer [ctb], Fabian Hirschmann [ctb], Fitch Simeon [ctb], Forest Fang [ctb], Frank E Harrell Jr [ctb] (the Sweavel package at inst/misc/Sweavel.sty), Garrick Aden-Buie [ctb], Gregoire Detrez [ctb], Hadley Wickham [ctb], Hao Zhu [ctb], Heewon Jeon [ctb], Henrik Bengtsson [ctb], Hiroaki Yutani [ctb], Ian Lyttle [ctb], Hodges Daniel [ctb], Jacob Bien [ctb], Jake Burkhead [ctb], James Manton [ctb], Jared Lander [ctb], Jason Punyon [ctb], Javier Luraschi [ctb], Jeff Arnold [ctb], Jenny Bryan [ctb], Jeremy Ashkenas [ctb, cph] (the CSS file at inst/misc/docco-classic.css), Jeremy Stephens [ctb], Jim Hester [ctb], Joe Cheng [ctb], Johannes Ranke [ctb], John Honaker [ctb], John Muschelli [ctb], Jonathan Keane [ctb], JJ Allaire [ctb], Johan Toloe [ctb], Jonathan Sidi [ctb], Joseph Larmarange [ctb], Julien Barnier [ctb], Kaiyin Zhong [ctb], Kamil Slowikowski [ctb], Karl Forner [ctb], Kevin K. Smith [ctb], Kirill Mueller [ctb], Kohske Takahashi [ctb], Lorenz Walthert [ctb], Lucas Gallindo [ctb], Marius Hofert [ctb], Martin Modrák [ctb], Michael Chirico [ctb], Michael Friendly [ctb], Michal Bojanowski [ctb], Michel Kuhlmann [ctb], Miller Patrick [ctb], Nacho Caballero [ctb], Nick Salkowski [ctb], Niels Richard Hansen [ctb], Noam Ross [ctb], Obada Mahdi [ctb], Pavel N. Krivitsky [ctb] (ORCID: ), Pedro Faria [ctb], Qiang Li [ctb], Ramnath Vaidyanathan [ctb], Richard Cotton [ctb], Robert Krzyzanowski [ctb], Rodrigo Copetti [ctb], Romain Francois [ctb], Ruaridh Williamson [ctb], Sagiru Mati [ctb] (ORCID: ), Scott Kostyshak [ctb], Sebastian Meyer [ctb], Sietse Brouwer [ctb], Simon de Bernard [ctb], Sylvain Rousseau [ctb], Taiyun Wei [ctb], Thibaut Assus [ctb], Thibaut Lamadon [ctb], Thomas Leeper [ctb], Tim Mastny [ctb], Tom Torsney-Weir [ctb], Trevor Davis [ctb], Viktoras Veitas [ctb], Weicheng Zhu [ctb], Wush Wu [ctb], Zachary Foster [ctb], Zhian N. Kamvar [ctb] (ORCID: ), Posit Software, PBC [cph, fnd]", + "Maintainer": "Yihui Xie ", + "Repository": "CRAN" + }, + "later": { + "Package": "later", + "Version": "1.4.6", + "Source": "Repository", + "Type": "Package", + "Title": "Utilities for Scheduling Functions to Execute Later with Event Loops", + "Authors@R": "c( person(\"Winston\", \"Chang\", , \"winston@posit.co\", role = \"aut\", comment = c(ORCID = \"0000-0002-1576-2126\")), person(\"Joe\", \"Cheng\", , \"joe@posit.co\", role = \"aut\"), person(\"Charlie\", \"Gao\", , \"charlie.gao@posit.co\", role = c(\"aut\", \"cre\"), comment = c(ORCID = \"0000-0002-0750-061X\")), person(\"Posit Software, PBC\", role = c(\"cph\", \"fnd\"), comment = c(ROR = \"03wc8by49\")), person(\"Marcus\", \"Geelnard\", role = c(\"ctb\", \"cph\"), comment = \"TinyCThread library, https://tinycthread.github.io/\"), person(\"Evan\", \"Nemerson\", role = c(\"ctb\", \"cph\"), comment = \"TinyCThread library, https://tinycthread.github.io/\") )", + "Description": "Executes arbitrary R or C functions some time after the current time, after the R execution stack has emptied. The functions are scheduled in an event loop.", + "License": "MIT + file LICENSE", + "URL": "https://later.r-lib.org, https://github.com/r-lib/later", + "BugReports": "https://github.com/r-lib/later/issues", + "Depends": [ + "R (>= 3.5)" + ], + "Imports": [ + "Rcpp (>= 1.0.10)", + "rlang" + ], + "Suggests": [ + "knitr", + "nanonext", + "promises", + "rmarkdown", + "testthat (>= 3.0.0)" + ], + "LinkingTo": [ + "Rcpp" + ], + "VignetteBuilder": "knitr", + "Config/build/compilation-database": "true", + "Config/Needs/website": "tidyverse/tidytemplate", + "Config/testthat/edition": "3", + "Config/usethis/last-upkeep": "2025-07-18", + "Encoding": "UTF-8", + "RoxygenNote": "7.3.3", + "NeedsCompilation": "yes", + "Author": "Winston Chang [aut] (ORCID: ), Joe Cheng [aut], Charlie Gao [aut, cre] (ORCID: ), Posit Software, PBC [cph, fnd] (ROR: ), Marcus Geelnard [ctb, cph] (TinyCThread library, https://tinycthread.github.io/), Evan Nemerson [ctb, cph] (TinyCThread library, https://tinycthread.github.io/)", + "Maintainer": "Charlie Gao ", + "Repository": "RSPM" + }, + "lattice": { + "Package": "lattice", + "Version": "0.22-7", + "Source": "Repository", + "Date": "2025-03-31", + "Priority": "recommended", + "Title": "Trellis Graphics for R", + "Authors@R": "c(person(\"Deepayan\", \"Sarkar\", role = c(\"aut\", \"cre\"), email = \"deepayan.sarkar@r-project.org\", comment = c(ORCID = \"0000-0003-4107-1553\")), person(\"Felix\", \"Andrews\", role = \"ctb\"), person(\"Kevin\", \"Wright\", role = \"ctb\", comment = \"documentation\"), person(\"Neil\", \"Klepeis\", role = \"ctb\"), person(\"Johan\", \"Larsson\", role = \"ctb\", comment = \"miscellaneous improvements\"), person(\"Zhijian (Jason)\", \"Wen\", role = \"cph\", comment = \"filled contour code\"), person(\"Paul\", \"Murrell\", role = \"ctb\", email = \"paul@stat.auckland.ac.nz\"), person(\"Stefan\", \"Eng\", role = \"ctb\", comment = \"violin plot improvements\"), person(\"Achim\", \"Zeileis\", role = \"ctb\", comment = \"modern colors\"), person(\"Alexandre\", \"Courtiol\", role = \"ctb\", comment = \"generics for larrows, lpolygon, lrect and lsegments\") )", + "Description": "A powerful and elegant high-level data visualization system inspired by Trellis graphics, with an emphasis on multivariate data. Lattice is sufficient for typical graphics needs, and is also flexible enough to handle most nonstandard requirements. See ?Lattice for an introduction.", + "Depends": [ + "R (>= 4.0.0)" + ], + "Suggests": [ + "KernSmooth", + "MASS", + "latticeExtra", + "colorspace" + ], + "Imports": [ + "grid", + "grDevices", + "graphics", + "stats", + "utils" + ], + "Enhances": [ + "chron", + "zoo" + ], + "LazyLoad": "yes", + "LazyData": "yes", + "License": "GPL (>= 2)", + "URL": "https://lattice.r-forge.r-project.org/", + "BugReports": "https://github.com/deepayan/lattice/issues", + "NeedsCompilation": "yes", + "Author": "Deepayan Sarkar [aut, cre] (), Felix Andrews [ctb], Kevin Wright [ctb] (documentation), Neil Klepeis [ctb], Johan Larsson [ctb] (miscellaneous improvements), Zhijian (Jason) Wen [cph] (filled contour code), Paul Murrell [ctb], Stefan Eng [ctb] (violin plot improvements), Achim Zeileis [ctb] (modern colors), Alexandre Courtiol [ctb] (generics for larrows, lpolygon, lrect and lsegments)", + "Maintainer": "Deepayan Sarkar ", + "Repository": "CRAN" + }, + "learnr": { + "Package": "learnr", + "Version": "0.11.6", + "Source": "Repository", + "Type": "Package", + "Title": "Interactive Tutorials for R", + "Authors@R": "c( person(\"Garrick\", \"Aden-Buie\", , \"garrick@posit.co\", role = c(\"aut\", \"cre\"), comment = c(ORCID = \"0000-0002-7111-0077\")), person(\"Barret\", \"Schloerke\", , \"barret@posit.co\", role = \"aut\", comment = c(ORCID = \"0000-0001-9986-114X\")), person(\"JJ\", \"Allaire\", , \"jj@posit.co\", role = c(\"aut\", \"ccp\")), person(\"Alexander\", \"Rossell Hayes\", , \"alex.rossellhayes@posit.co\", role = \"aut\", comment = c(ORCID = \"0000-0001-9412-0457\")), person(\"Nischal\", \"Shrestha\", , \"nischal@posit.co\", role = \"ctb\", comment = c(ORCID = \"0000-0003-3321-1712\")), person(\"Angela\", \"Li\", , \"angelali921@gmail.com\", role = \"ctb\", comment = \"vignette\"), person(\"Posit, PBC\", role = c(\"cph\", \"fnd\")), person(, \"Ajax.org B.V.\", role = c(\"ctb\", \"cph\"), comment = \"Ace library\"), person(\"Zeno\", \"Rocha\", role = c(\"ctb\", \"cph\"), comment = \"clipboard.js library\"), person(\"Nick\", \"Payne\", role = c(\"ctb\", \"cph\"), comment = \"Bootbox library\"), person(\"Jake\", \"Archibald\", role = c(\"ctb\", \"cph\"), comment = \"idb-keyval library\"), person(\"i18next authors\", role = c(\"ctb\", \"cph\"), comment = \"i18next library\") )", + "Description": "Create interactive tutorials using R Markdown. Use a combination of narrative, figures, videos, exercises, and quizzes to create self-paced tutorials for learning about R and R packages.", + "License": "Apache License (>= 2.0)", + "URL": "https://rstudio.github.io/learnr/, https://github.com/rstudio/learnr", + "BugReports": "https://github.com/rstudio/learnr/issues", + "Imports": [ + "checkmate", + "digest", + "evaluate", + "htmltools (>= 0.3.5)", + "htmlwidgets", + "jsonlite", + "knitr (>= 1.31)", + "lifecycle", + "markdown (>= 1.3)", + "parallel", + "promises", + "rappdirs", + "renv (>= 0.8.0)", + "rlang (>= 1.0.0)", + "rmarkdown (>= 1.12.0)", + "rprojroot", + "shiny (>= 1.0)", + "stats", + "utils", + "withr" + ], + "Suggests": [ + "bslib", + "callr", + "curl", + "DBI (>= 0.4-1)", + "httpuv", + "later", + "reticulate", + "RSQLite", + "rstudioapi (>= 0.11)", + "shinytest2", + "sortable", + "testthat (>= 3.0.3)" + ], + "VignetteBuilder": "knitr", + "Config/Needs/connect": "rsconnect", + "Config/Needs/coverage": "covr", + "Config/Needs/website": "pkgdown, tidyverse/tidytemplate", + "Encoding": "UTF-8", + "RoxygenNote": "7.3.3", + "SystemRequirements": "pandoc (>= 1.14) - http://pandoc.org", + "NeedsCompilation": "no", + "Author": "Garrick Aden-Buie [aut, cre] (ORCID: ), Barret Schloerke [aut] (ORCID: ), JJ Allaire [aut, ccp], Alexander Rossell Hayes [aut] (ORCID: ), Nischal Shrestha [ctb] (ORCID: ), Angela Li [ctb] (vignette), Posit, PBC [cph, fnd], Ajax.org B.V. [ctb, cph] (Ace library), Zeno Rocha [ctb, cph] (clipboard.js library), Nick Payne [ctb, cph] (Bootbox library), Jake Archibald [ctb, cph] (idb-keyval library), i18next authors [ctb, cph] (i18next library)", + "Maintainer": "Garrick Aden-Buie ", + "Repository": "CRAN" + }, + "lifecycle": { + "Package": "lifecycle", + "Version": "1.0.5", + "Source": "Repository", + "Title": "Manage the Life Cycle of your Package Functions", + "Authors@R": "c( person(\"Lionel\", \"Henry\", , \"lionel@posit.co\", role = c(\"aut\", \"cre\")), person(\"Hadley\", \"Wickham\", , \"hadley@posit.co\", role = \"aut\", comment = c(ORCID = \"0000-0003-4757-117X\")), person(\"Posit Software, PBC\", role = c(\"cph\", \"fnd\")) )", + "Description": "Manage the life cycle of your exported functions with shared conventions, documentation badges, and user-friendly deprecation warnings.", + "License": "MIT + file LICENSE", + "URL": "https://lifecycle.r-lib.org/, https://github.com/r-lib/lifecycle", + "BugReports": "https://github.com/r-lib/lifecycle/issues", + "Depends": [ + "R (>= 3.6)" + ], + "Imports": [ + "cli (>= 3.4.0)", + "rlang (>= 1.1.0)" + ], + "Suggests": [ + "covr", + "knitr", + "lintr (>= 3.1.0)", + "rmarkdown", + "testthat (>= 3.0.1)", + "tibble", + "tidyverse", + "tools", + "vctrs", + "withr", + "xml2" + ], + "VignetteBuilder": "knitr", + "Config/Needs/website": "tidyverse/tidytemplate, usethis", + "Config/testthat/edition": "3", + "Encoding": "UTF-8", + "RoxygenNote": "7.3.3", + "NeedsCompilation": "no", + "Author": "Lionel Henry [aut, cre], Hadley Wickham [aut] (ORCID: ), Posit Software, PBC [cph, fnd]", + "Maintainer": "Lionel Henry ", + "Repository": "CRAN" + }, + "litedown": { + "Package": "litedown", + "Version": "0.9", + "Source": "Repository", + "Type": "Package", + "Title": "A Lightweight Version of R Markdown", + "Authors@R": "c( person(\"Yihui\", \"Xie\", role = c(\"aut\", \"cre\"), email = \"xie@yihui.name\", comment = c(ORCID = \"0000-0003-0645-5666\", URL = \"https://yihui.org\")), person(\"Tim\", \"Taylor\", role = \"ctb\", comment = c(ORCID = \"0000-0002-8587-7113\")), person() )", + "Description": "Render R Markdown to Markdown (without using 'knitr'), and Markdown to lightweight HTML or 'LaTeX' documents with the 'commonmark' package (instead of 'Pandoc'). Some missing Markdown features in 'commonmark' are also supported, such as raw HTML or 'LaTeX' blocks, 'LaTeX' math, superscripts, subscripts, footnotes, element attributes, and appendices, but not all 'Pandoc' Markdown features are (or will be) supported. With additional JavaScript and CSS, you can also create HTML slides and articles. This package can be viewed as a trimmed-down version of R Markdown and 'knitr'. It does not aim at rich Markdown features or a large variety of output formats (the primary formats are HTML and 'LaTeX'). Book and website projects of multiple input documents are also supported.", + "Depends": [ + "R (>= 3.2.0)" + ], + "Imports": [ + "utils", + "commonmark (>= 2.0.0)", + "xfun (>= 0.55)" + ], + "Suggests": [ + "rbibutils", + "rstudioapi", + "tinytex" + ], + "License": "MIT + file LICENSE", + "URL": "https://github.com/yihui/litedown", + "BugReports": "https://github.com/yihui/litedown/issues", + "VignetteBuilder": "litedown", + "RoxygenNote": "7.3.3", + "Encoding": "UTF-8", + "NeedsCompilation": "no", + "Author": "Yihui Xie [aut, cre] (ORCID: , URL: https://yihui.org), Tim Taylor [ctb] (ORCID: )", + "Maintainer": "Yihui Xie ", + "Repository": "CRAN" + }, + "magrittr": { + "Package": "magrittr", + "Version": "2.0.5", + "Source": "Repository", + "Type": "Package", + "Title": "A Forward-Pipe Operator for R", + "Authors@R": "c( person(\"Stefan Milton\", \"Bache\", , \"stefan@stefanbache.dk\", role = c(\"aut\", \"cph\"), comment = \"Original author and creator of magrittr\"), person(\"Hadley\", \"Wickham\", , \"hadley@posit.co\", role = \"aut\"), person(\"Lionel\", \"Henry\", , \"lionel@posit.co\", role = \"cre\"), person(\"Posit Software, PBC\", role = c(\"cph\", \"fnd\"), comment = c(ROR = \"03wc8by49\")) )", + "Description": "Provides a mechanism for chaining commands with a new forward-pipe operator, %>%. This operator will forward a value, or the result of an expression, into the next function call/expression. There is flexible support for the type of right-hand side expressions. For more information, see package vignette. To quote Rene Magritte, \"Ceci n'est pas un pipe.\"", + "License": "MIT + file LICENSE", + "URL": "https://magrittr.tidyverse.org, https://github.com/tidyverse/magrittr", + "BugReports": "https://github.com/tidyverse/magrittr/issues", + "Depends": [ + "R (>= 3.4.0)" + ], + "Suggests": [ + "covr", + "knitr", + "rlang", + "rmarkdown", + "testthat" + ], + "VignetteBuilder": "knitr", + "ByteCompile": "Yes", + "Config/Needs/website": "tidyverse/tidytemplate", + "Encoding": "UTF-8", + "RoxygenNote": "7.3.3", + "NeedsCompilation": "yes", + "Author": "Stefan Milton Bache [aut, cph] (Original author and creator of magrittr), Hadley Wickham [aut], Lionel Henry [cre], Posit Software, PBC [cph, fnd] (ROR: )", + "Maintainer": "Lionel Henry ", + "Repository": "CRAN" + }, + "markdown": { + "Package": "markdown", + "Version": "2.0", + "Source": "Repository", + "Type": "Package", + "Title": "Render Markdown with 'commonmark'", + "Authors@R": "c( person(\"Yihui\", \"Xie\", role = c(\"aut\", \"cre\"), email = \"xie@yihui.name\", comment = c(ORCID = \"0000-0003-0645-5666\")), person(\"JJ\", \"Allaire\", role = \"aut\"), person(\"Jeffrey\", \"Horner\", role = \"aut\"), person(\"Henrik\", \"Bengtsson\", role = \"ctb\"), person(\"Jim\", \"Hester\", role = \"ctb\"), person(\"Yixuan\", \"Qiu\", role = \"ctb\"), person(\"Kohske\", \"Takahashi\", role = \"ctb\"), person(\"Adam\", \"November\", role = \"ctb\"), person(\"Nacho\", \"Caballero\", role = \"ctb\"), person(\"Jeroen\", \"Ooms\", role = \"ctb\"), person(\"Thomas\", \"Leeper\", role = \"ctb\"), person(\"Joe\", \"Cheng\", role = \"ctb\"), person(\"Andrzej\", \"Oles\", role = \"ctb\"), person(given = \"Posit Software, PBC\", role = c(\"cph\", \"fnd\")) )", + "Description": "Render Markdown to full and lightweight HTML/LaTeX documents with the 'commonmark' package. This package has been superseded by 'litedown'.", + "Depends": [ + "R (>= 2.11.1)" + ], + "Imports": [ + "utils", + "xfun", + "litedown (>= 0.6)" + ], + "Suggests": [ + "knitr", + "rmarkdown (>= 2.18)", + "yaml", + "RCurl" + ], + "License": "MIT + file LICENSE", + "URL": "https://github.com/rstudio/markdown", + "BugReports": "https://github.com/rstudio/markdown/issues", + "RoxygenNote": "7.3.2", + "Encoding": "UTF-8", + "NeedsCompilation": "no", + "Author": "Yihui Xie [aut, cre] (), JJ Allaire [aut], Jeffrey Horner [aut], Henrik Bengtsson [ctb], Jim Hester [ctb], Yixuan Qiu [ctb], Kohske Takahashi [ctb], Adam November [ctb], Nacho Caballero [ctb], Jeroen Ooms [ctb], Thomas Leeper [ctb], Joe Cheng [ctb], Andrzej Oles [ctb], Posit Software, PBC [cph, fnd]", + "Maintainer": "Yihui Xie ", + "Repository": "CRAN" + }, + "memoise": { + "Package": "memoise", + "Version": "2.0.1", + "Source": "Repository", + "Title": "'Memoisation' of Functions", + "Authors@R": "c(person(given = \"Hadley\", family = \"Wickham\", role = \"aut\", email = \"hadley@rstudio.com\"), person(given = \"Jim\", family = \"Hester\", role = \"aut\"), person(given = \"Winston\", family = \"Chang\", role = c(\"aut\", \"cre\"), email = \"winston@rstudio.com\"), person(given = \"Kirill\", family = \"Müller\", role = \"aut\", email = \"krlmlr+r@mailbox.org\"), person(given = \"Daniel\", family = \"Cook\", role = \"aut\", email = \"danielecook@gmail.com\"), person(given = \"Mark\", family = \"Edmondson\", role = \"ctb\", email = \"r@sunholo.com\"))", + "Description": "Cache the results of a function so that when you call it again with the same arguments it returns the previously computed value.", + "License": "MIT + file LICENSE", + "URL": "https://memoise.r-lib.org, https://github.com/r-lib/memoise", + "BugReports": "https://github.com/r-lib/memoise/issues", + "Imports": [ + "rlang (>= 0.4.10)", + "cachem" + ], + "Suggests": [ + "digest", + "aws.s3", + "covr", + "googleAuthR", + "googleCloudStorageR", + "httr", + "testthat" + ], + "Encoding": "UTF-8", + "RoxygenNote": "7.1.2", + "NeedsCompilation": "no", + "Author": "Hadley Wickham [aut], Jim Hester [aut], Winston Chang [aut, cre], Kirill Müller [aut], Daniel Cook [aut], Mark Edmondson [ctb]", + "Maintainer": "Winston Chang ", + "Repository": "CRAN" + }, + "mime": { + "Package": "mime", + "Version": "0.13", + "Source": "Repository", + "Type": "Package", + "Title": "Map Filenames to MIME Types", + "Authors@R": "c( person(\"Yihui\", \"Xie\", role = c(\"aut\", \"cre\"), email = \"xie@yihui.name\", comment = c(ORCID = \"0000-0003-0645-5666\", URL = \"https://yihui.org\")), person(\"Jeffrey\", \"Horner\", role = \"ctb\"), person(\"Beilei\", \"Bian\", role = \"ctb\") )", + "Description": "Guesses the MIME type from a filename extension using the data derived from /etc/mime.types in UNIX-type systems.", + "Imports": [ + "tools" + ], + "License": "GPL", + "URL": "https://github.com/yihui/mime", + "BugReports": "https://github.com/yihui/mime/issues", + "RoxygenNote": "7.3.2", + "Encoding": "UTF-8", + "NeedsCompilation": "yes", + "Author": "Yihui Xie [aut, cre] (, https://yihui.org), Jeffrey Horner [ctb], Beilei Bian [ctb]", + "Maintainer": "Yihui Xie ", + "Repository": "CRAN" + }, + "otel": { + "Package": "otel", + "Version": "0.2.0", + "Source": "Repository", + "Title": "OpenTelemetry R API", + "Authors@R": "person(\"Gábor\", \"Csárdi\", , \"csardi.gabor@gmail.com\", role = c(\"aut\", \"cre\"))", + "Description": "High-quality, ubiquitous, and portable telemetry to enable effective observability. OpenTelemetry is a collection of tools, APIs, and SDKs used to instrument, generate, collect, and export telemetry data (metrics, logs, and traces) for analysis in order to understand your software's performance and behavior. This package implements the OpenTelemetry API: . Use this package as a dependency if you want to instrument your R package for OpenTelemetry.", + "License": "MIT + file LICENSE", + "Encoding": "UTF-8", + "RoxygenNote": "7.3.2.9000", + "Depends": [ + "R (>= 3.6.0)" + ], + "Suggests": [ + "callr", + "cli", + "glue", + "jsonlite", + "otelsdk", + "processx", + "shiny", + "spelling", + "testthat (>= 3.0.0)", + "utils", + "withr" + ], + "Config/Needs/website": "tidyverse/tidytemplate", + "Config/testthat/edition": "3", + "URL": "https://otel.r-lib.org, https://github.com/r-lib/otel", + "Additional_repositories": "https://github.com/r-lib/otelsdk/releases/download/devel", + "BugReports": "https://github.com/r-lib/otel/issues", + "NeedsCompilation": "no", + "Author": "Gábor Csárdi [aut, cre]", + "Maintainer": "Gábor Csárdi ", + "Repository": "CRAN" + }, + "png": { + "Package": "png", + "Version": "0.1-8", + "Source": "Repository", + "Title": "Read and write PNG images", + "Author": "Simon Urbanek ", + "Maintainer": "Simon Urbanek ", + "Depends": [ + "R (>= 2.9.0)" + ], + "Description": "This package provides an easy and simple way to read, write and display bitmap images stored in the PNG format. It can read and write both files and in-memory raw vectors.", + "License": "GPL-2 | GPL-3", + "SystemRequirements": "libpng", + "URL": "http://www.rforge.net/png/", + "NeedsCompilation": "yes", + "Repository": "RSPM", + "Encoding": "UTF-8" + }, + "promises": { + "Package": "promises", + "Version": "1.5.0", + "Source": "Repository", + "Type": "Package", + "Title": "Abstractions for Promise-Based Asynchronous Programming", + "Authors@R": "c( person(\"Joe\", \"Cheng\", , \"joe@posit.co\", role = \"aut\"), person(\"Barret\", \"Schloerke\", , \"barret@posit.co\", role = c(\"aut\", \"cre\"), comment = c(ORCID = \"0000-0001-9986-114X\")), person(\"Winston\", \"Chang\", , \"winston@posit.co\", role = \"aut\", comment = c(ORCID = \"0000-0002-1576-2126\")), person(\"Charlie\", \"Gao\", , \"charlie.gao@posit.co\", role = \"aut\", comment = c(ORCID = \"0000-0002-0750-061X\")), person(\"Posit Software, PBC\", role = c(\"cph\", \"fnd\"), comment = c(ROR = \"03wc8by49\")) )", + "Description": "Provides fundamental abstractions for doing asynchronous programming in R using promises. Asynchronous programming is useful for allowing a single R process to orchestrate multiple tasks in the background while also attending to something else. Semantics are similar to 'JavaScript' promises, but with a syntax that is idiomatic R.", + "License": "MIT + file LICENSE", + "URL": "https://rstudio.github.io/promises/, https://github.com/rstudio/promises", + "BugReports": "https://github.com/rstudio/promises/issues", + "Depends": [ + "R (>= 4.1.0)" + ], + "Imports": [ + "fastmap (>= 1.1.0)", + "later", + "lifecycle", + "magrittr (>= 1.5)", + "otel (>= 0.2.0)", + "R6", + "rlang" + ], + "Suggests": [ + "future (>= 1.21.0)", + "knitr", + "mirai", + "otelsdk (>= 0.2.0)", + "purrr", + "Rcpp", + "rmarkdown", + "spelling", + "testthat (>= 3.0.0)", + "vembedr" + ], + "VignetteBuilder": "knitr", + "Config/Needs/website": "rsconnect, tidyverse/tidytemplate", + "Config/testthat/edition": "3", + "Config/usethis/last-upkeep": "2025-05-27", + "Encoding": "UTF-8", + "Language": "en-US", + "RoxygenNote": "7.3.3", + "NeedsCompilation": "no", + "Author": "Joe Cheng [aut], Barret Schloerke [aut, cre] (ORCID: ), Winston Chang [aut] (ORCID: ), Charlie Gao [aut] (ORCID: ), Posit Software, PBC [cph, fnd] (ROR: )", + "Maintainer": "Barret Schloerke ", + "Repository": "CRAN" + }, + "rappdirs": { + "Package": "rappdirs", + "Version": "0.3.4", + "Source": "Repository", + "Type": "Package", + "Title": "Application Directories: Determine Where to Save Data, Caches, and Logs", + "Authors@R": "c( person(\"Hadley\", \"Wickham\", , \"hadley@posit.co\", role = c(\"trl\", \"cre\", \"cph\")), person(\"Sridhar\", \"Ratnakumar\", role = \"aut\"), person(\"Trent\", \"Mick\", role = \"aut\"), person(\"ActiveState\", role = \"cph\", comment = \"R/appdir.r, R/cache.r, R/data.r, R/log.r translated from appdirs\"), person(\"Eddy\", \"Petrisor\", role = \"ctb\"), person(\"Trevor\", \"Davis\", role = c(\"trl\", \"aut\"), comment = c(ORCID = \"0000-0001-6341-4639\")), person(\"Gabor\", \"Csardi\", role = \"ctb\"), person(\"Gregory\", \"Jefferis\", role = \"ctb\"), person(\"Posit Software, PBC\", role = c(\"cph\", \"fnd\"), comment = c(ROR = \"03wc8by49\")) )", + "Description": "An easy way to determine which directories on the users computer you should use to save data, caches and logs. A port of Python's 'Appdirs' () to R.", + "License": "MIT + file LICENSE", + "URL": "https://rappdirs.r-lib.org, https://github.com/r-lib/rappdirs", + "BugReports": "https://github.com/r-lib/rappdirs/issues", + "Depends": [ + "R (>= 4.1)" + ], + "Suggests": [ + "covr", + "roxygen2", + "testthat (>= 3.2.0)", + "withr" + ], + "Config/Needs/website": "tidyverse/tidytemplate", + "Config/testthat/edition": "3", + "Config/usethis/last-upkeep": "2025-05-05", + "Copyright": "Original python appdirs module copyright (c) 2010 ActiveState Software Inc. R port copyright Hadley Wickham, Posit, PBC. See file LICENSE for details.", + "Encoding": "UTF-8", + "RoxygenNote": "7.3.3", + "NeedsCompilation": "yes", + "Author": "Hadley Wickham [trl, cre, cph], Sridhar Ratnakumar [aut], Trent Mick [aut], ActiveState [cph] (R/appdir.r, R/cache.r, R/data.r, R/log.r translated from appdirs), Eddy Petrisor [ctb], Trevor Davis [trl, aut] (ORCID: ), Gabor Csardi [ctb], Gregory Jefferis [ctb], Posit Software, PBC [cph, fnd] (ROR: )", + "Maintainer": "Hadley Wickham ", + "Repository": "CRAN" + }, + "renv": { + "Package": "renv", + "Version": "1.2.3", + "Source": "Repository", + "Type": "Package", + "Title": "Project Environments", + "Authors@R": "c( person(\"Kevin\", \"Ushey\", role = c(\"aut\", \"cre\"), email = \"kevin@rstudio.com\", comment = c(ORCID = \"0000-0003-2880-7407\")), person(\"Hadley\", \"Wickham\", role = c(\"aut\"), email = \"hadley@rstudio.com\", comment = c(ORCID = \"0000-0003-4757-117X\")), person(\"Posit Software, PBC\", role = c(\"cph\", \"fnd\")) )", + "Description": "A dependency management toolkit for R. Using 'renv', you can create and manage project-local R libraries, save the state of these libraries to a 'lockfile', and later restore your library as required. Together, these tools can help make your projects more isolated, portable, and reproducible.", + "License": "MIT + file LICENSE", + "URL": "https://rstudio.github.io/renv/, https://github.com/rstudio/renv", + "BugReports": "https://github.com/rstudio/renv/issues", + "Imports": [ + "utils" + ], + "Suggests": [ + "BiocManager", + "cli", + "compiler", + "covr", + "cpp11", + "curl", + "devtools", + "generics", + "gitcreds", + "jsonlite", + "jsonvalidate", + "knitr", + "miniUI", + "modules", + "packrat", + "pak", + "R6", + "remotes", + "reticulate", + "rmarkdown", + "rstudioapi", + "shiny", + "testthat", + "uuid", + "waldo", + "yaml", + "webfakes" + ], + "Encoding": "UTF-8", + "RoxygenNote": "7.3.3", + "VignetteBuilder": "knitr", + "Config/Needs/website": "tidyverse/tidytemplate", + "Config/testthat/edition": "3", + "Config/testthat/parallel": "true", + "Config/testthat/start-first": "bioconductor,python,install,restore,snapshot,retrieve,remotes", + "NeedsCompilation": "no", + "Author": "Kevin Ushey [aut, cre] (ORCID: ), Hadley Wickham [aut] (ORCID: ), Posit Software, PBC [cph, fnd]", + "Maintainer": "Kevin Ushey ", + "Repository": "RSPM" + }, + "reticulate": { + "Package": "reticulate", + "Version": "1.46.0", + "Source": "Repository", + "Type": "Package", + "Title": "Interface to 'Python'", + "Authors@R": "c( person(\"Tomasz\", \"Kalinowski\", role = c(\"ctb\", \"cre\"), email = \"tomasz@posit.co\"), person(\"Kevin\", \"Ushey\", role = c(\"aut\"), email = \"kevin@posit.co\"), person(\"JJ\", \"Allaire\", role = c(\"aut\"), email = \"jj@posit.co\"), person(\"RStudio\", role = c(\"cph\", \"fnd\")), person(\"Yuan\", \"Tang\", role = c(\"aut\", \"cph\"), email = \"terrytangyuan@gmail.com\", comment = c(ORCID = \"0000-0001-5243-233X\")), person(\"Dirk\", \"Eddelbuettel\", role = c(\"ctb\", \"cph\"), email = \"edd@debian.org\"), person(\"Bryan\", \"Lewis\", role = c(\"ctb\", \"cph\"), email = \"blewis@illposed.net\"), person(\"Sigrid\", \"Keydana\", role = c(\"ctb\"), email = \"sigrid@posit.co\"), person(\"Ryan\", \"Hafen\", role = c(\"ctb\", \"cph\"), email = \"rhafen@gmail.com\"), person(\"Marcus\", \"Geelnard\", role = c(\"ctb\", \"cph\"), comment = \"TinyThread library, http://tinythreadpp.bitsnbites.eu/\") )", + "Description": "Interface to 'Python' modules, classes, and functions. When calling into 'Python', R data types are automatically converted to their equivalent 'Python' types. When values are returned from 'Python' to R they are converted back to R types. Compatible with all versions of 'Python' >= 2.7.", + "License": "Apache License 2.0", + "URL": "https://rstudio.github.io/reticulate/, https://github.com/rstudio/reticulate", + "BugReports": "https://github.com/rstudio/reticulate/issues", + "SystemRequirements": "Python (>= 2.7.0)", + "Encoding": "UTF-8", + "Depends": [ + "R (>= 3.5)" + ], + "Imports": [ + "Matrix", + "Rcpp (>= 1.0.7)", + "RcppTOML", + "graphics", + "here", + "jsonlite", + "methods", + "png", + "rappdirs", + "utils", + "rlang", + "withr" + ], + "Suggests": [ + "callr", + "knitr", + "glue", + "cli", + "rmarkdown", + "pillar", + "testthat" + ], + "LinkingTo": [ + "Rcpp" + ], + "RoxygenNote": "7.3.3", + "VignetteBuilder": "knitr", + "Config/build/compilation-database": "true", + "NeedsCompilation": "yes", + "Author": "Tomasz Kalinowski [ctb, cre], Kevin Ushey [aut], JJ Allaire [aut], RStudio [cph, fnd], Yuan Tang [aut, cph] (ORCID: ), Dirk Eddelbuettel [ctb, cph], Bryan Lewis [ctb, cph], Sigrid Keydana [ctb], Ryan Hafen [ctb, cph], Marcus Geelnard [ctb, cph] (TinyThread library, http://tinythreadpp.bitsnbites.eu/)", + "Maintainer": "Tomasz Kalinowski ", + "Repository": "CRAN" + }, + "rlang": { + "Package": "rlang", + "Version": "1.2.0", + "Source": "Repository", + "Title": "Functions for Base Types and Core R and 'Tidyverse' Features", + "Description": "A toolbox for working with base types, core R features like the condition system, and core 'Tidyverse' features like tidy evaluation.", + "Authors@R": "c( person(\"Lionel\", \"Henry\", ,\"lionel@posit.co\", c(\"aut\", \"cre\")), person(\"Hadley\", \"Wickham\", ,\"hadley@posit.co\", \"aut\"), person(given = \"mikefc\", email = \"mikefc@coolbutuseless.com\", role = \"cph\", comment = \"Hash implementation based on Mike's xxhashlite\"), person(given = \"Yann\", family = \"Collet\", role = \"cph\", comment = \"Author of the embedded xxHash library\"), person(given = \"Posit, PBC\", role = c(\"cph\", \"fnd\")) )", + "License": "MIT + file LICENSE", + "ByteCompile": "true", + "Biarch": "true", + "Depends": [ + "R (>= 4.0.0)" + ], + "Imports": [ + "utils" + ], + "Suggests": [ + "cli (>= 3.1.0)", + "covr", + "crayon", + "desc", + "fs", + "glue", + "knitr", + "magrittr", + "methods", + "pillar", + "pkgload", + "rmarkdown", + "stats", + "testthat (>= 3.3.2)", + "tibble", + "usethis", + "vctrs (>= 0.2.3)", + "withr" + ], + "Enhances": [ + "winch" + ], + "Encoding": "UTF-8", + "RoxygenNote": "7.3.3", + "URL": "https://rlang.r-lib.org, https://github.com/r-lib/rlang", + "BugReports": "https://github.com/r-lib/rlang/issues", + "Config/build/compilation-database": "true", + "Config/testthat/edition": "3", + "Config/Needs/website": "dplyr, tidyverse/tidytemplate", + "NeedsCompilation": "yes", + "Author": "Lionel Henry [aut, cre], Hadley Wickham [aut], mikefc [cph] (Hash implementation based on Mike's xxhashlite), Yann Collet [cph] (Author of the embedded xxHash library), Posit, PBC [cph, fnd]", + "Maintainer": "Lionel Henry ", + "Repository": "CRAN" + }, + "rmarkdown": { + "Package": "rmarkdown", + "Version": "2.31", + "Source": "Repository", + "Type": "Package", + "Title": "Dynamic Documents for R", + "Authors@R": "c( person(\"JJ\", \"Allaire\", , \"jj@posit.co\", role = \"aut\"), person(\"Yihui\", \"Xie\", , \"xie@yihui.name\", role = c(\"aut\", \"cre\"), comment = c(ORCID = \"0000-0003-0645-5666\")), person(\"Christophe\", \"Dervieux\", , \"cderv@posit.co\", role = \"aut\", comment = c(ORCID = \"0000-0003-4474-2498\")), person(\"Jonathan\", \"McPherson\", , \"jonathan@posit.co\", role = \"aut\"), person(\"Javier\", \"Luraschi\", role = \"aut\"), person(\"Kevin\", \"Ushey\", , \"kevin@posit.co\", role = \"aut\"), person(\"Aron\", \"Atkins\", , \"aron@posit.co\", role = \"aut\"), person(\"Hadley\", \"Wickham\", , \"hadley@posit.co\", role = \"aut\"), person(\"Joe\", \"Cheng\", , \"joe@posit.co\", role = \"aut\"), person(\"Winston\", \"Chang\", , \"winston@posit.co\", role = \"aut\"), person(\"Richard\", \"Iannone\", , \"rich@posit.co\", role = \"aut\", comment = c(ORCID = \"0000-0003-3925-190X\")), person(\"Andrew\", \"Dunning\", role = \"ctb\", comment = c(ORCID = \"0000-0003-0464-5036\")), person(\"Atsushi\", \"Yasumoto\", role = c(\"ctb\", \"cph\"), comment = c(ORCID = \"0000-0002-8335-495X\", cph = \"Number sections Lua filter\")), person(\"Barret\", \"Schloerke\", role = \"ctb\"), person(\"Carson\", \"Sievert\", role = \"ctb\", comment = c(ORCID = \"0000-0002-4958-2844\")), person(\"Devon\", \"Ryan\", , \"dpryan79@gmail.com\", role = \"ctb\", comment = c(ORCID = \"0000-0002-8549-0971\")), person(\"Frederik\", \"Aust\", , \"frederik.aust@uni-koeln.de\", role = \"ctb\", comment = c(ORCID = \"0000-0003-4900-788X\")), person(\"Jeff\", \"Allen\", , \"jeff@posit.co\", role = \"ctb\"), person(\"JooYoung\", \"Seo\", role = \"ctb\", comment = c(ORCID = \"0000-0002-4064-6012\")), person(\"Malcolm\", \"Barrett\", role = \"ctb\"), person(\"Rob\", \"Hyndman\", , \"Rob.Hyndman@monash.edu\", role = \"ctb\"), person(\"Romain\", \"Lesur\", role = \"ctb\"), person(\"Roy\", \"Storey\", role = \"ctb\"), person(\"Ruben\", \"Arslan\", , \"ruben.arslan@uni-goettingen.de\", role = \"ctb\"), person(\"Sergio\", \"Oller\", role = \"ctb\"), person(given = \"Posit Software, PBC\", role = c(\"cph\", \"fnd\")), person(, \"jQuery UI contributors\", role = c(\"ctb\", \"cph\"), comment = \"jQuery UI library; authors listed in inst/rmd/h/jqueryui/AUTHORS.txt\"), person(\"Mark\", \"Otto\", role = \"ctb\", comment = \"Bootstrap library\"), person(\"Jacob\", \"Thornton\", role = \"ctb\", comment = \"Bootstrap library\"), person(, \"Bootstrap contributors\", role = \"ctb\", comment = \"Bootstrap library\"), person(, \"Twitter, Inc\", role = \"cph\", comment = \"Bootstrap library\"), person(\"Alexander\", \"Farkas\", role = c(\"ctb\", \"cph\"), comment = \"html5shiv library\"), person(\"Scott\", \"Jehl\", role = c(\"ctb\", \"cph\"), comment = \"Respond.js library\"), person(\"Ivan\", \"Sagalaev\", role = c(\"ctb\", \"cph\"), comment = \"highlight.js library\"), person(\"Greg\", \"Franko\", role = c(\"ctb\", \"cph\"), comment = \"tocify library\"), person(\"John\", \"MacFarlane\", role = c(\"ctb\", \"cph\"), comment = \"Pandoc templates\"), person(, \"Google, Inc.\", role = c(\"ctb\", \"cph\"), comment = \"ioslides library\"), person(\"Dave\", \"Raggett\", role = \"ctb\", comment = \"slidy library\"), person(, \"W3C\", role = \"cph\", comment = \"slidy library\"), person(\"Dave\", \"Gandy\", role = c(\"ctb\", \"cph\"), comment = \"Font-Awesome\"), person(\"Ben\", \"Sperry\", role = \"ctb\", comment = \"Ionicons\"), person(, \"Drifty\", role = \"cph\", comment = \"Ionicons\"), person(\"Aidan\", \"Lister\", role = c(\"ctb\", \"cph\"), comment = \"jQuery StickyTabs\"), person(\"Benct Philip\", \"Jonsson\", role = c(\"ctb\", \"cph\"), comment = \"pagebreak Lua filter\"), person(\"Albert\", \"Krewinkel\", role = c(\"ctb\", \"cph\"), comment = \"pagebreak Lua filter\") )", + "Description": "Convert R Markdown documents into a variety of formats.", + "License": "GPL-3", + "URL": "https://github.com/rstudio/rmarkdown, https://pkgs.rstudio.com/rmarkdown/", + "BugReports": "https://github.com/rstudio/rmarkdown/issues", + "Depends": [ + "R (>= 3.0)" + ], + "Imports": [ + "bslib (>= 0.2.5.1)", + "evaluate (>= 0.13)", + "fontawesome (>= 0.5.0)", + "htmltools (>= 0.5.1)", + "jquerylib", + "jsonlite", + "knitr (>= 1.43)", + "methods", + "tinytex (>= 0.31)", + "tools", + "utils", + "xfun (>= 0.36)", + "yaml (>= 2.1.19)" + ], + "Suggests": [ + "digest", + "dygraphs", + "fs", + "rsconnect", + "downlit (>= 0.4.0)", + "katex (>= 1.4.0)", + "sass (>= 0.4.0)", + "shiny (>= 1.6.0)", + "testthat (>= 3.0.3)", + "tibble", + "vctrs", + "cleanrmd", + "withr (>= 2.4.2)", + "xml2" + ], + "VignetteBuilder": "knitr", + "Config/Needs/website": "rstudio/quillt, pkgdown", + "Config/testthat/edition": "3", + "Encoding": "UTF-8", + "RoxygenNote": "7.3.3", + "SystemRequirements": "pandoc (>= 1.14) - http://pandoc.org", + "NeedsCompilation": "no", + "Author": "JJ Allaire [aut], Yihui Xie [aut, cre] (ORCID: ), Christophe Dervieux [aut] (ORCID: ), Jonathan McPherson [aut], Javier Luraschi [aut], Kevin Ushey [aut], Aron Atkins [aut], Hadley Wickham [aut], Joe Cheng [aut], Winston Chang [aut], Richard Iannone [aut] (ORCID: ), Andrew Dunning [ctb] (ORCID: ), Atsushi Yasumoto [ctb, cph] (ORCID: , cph: Number sections Lua filter), Barret Schloerke [ctb], Carson Sievert [ctb] (ORCID: ), Devon Ryan [ctb] (ORCID: ), Frederik Aust [ctb] (ORCID: ), Jeff Allen [ctb], JooYoung Seo [ctb] (ORCID: ), Malcolm Barrett [ctb], Rob Hyndman [ctb], Romain Lesur [ctb], Roy Storey [ctb], Ruben Arslan [ctb], Sergio Oller [ctb], Posit Software, PBC [cph, fnd], jQuery UI contributors [ctb, cph] (jQuery UI library; authors listed in inst/rmd/h/jqueryui/AUTHORS.txt), Mark Otto [ctb] (Bootstrap library), Jacob Thornton [ctb] (Bootstrap library), Bootstrap contributors [ctb] (Bootstrap library), Twitter, Inc [cph] (Bootstrap library), Alexander Farkas [ctb, cph] (html5shiv library), Scott Jehl [ctb, cph] (Respond.js library), Ivan Sagalaev [ctb, cph] (highlight.js library), Greg Franko [ctb, cph] (tocify library), John MacFarlane [ctb, cph] (Pandoc templates), Google, Inc. [ctb, cph] (ioslides library), Dave Raggett [ctb] (slidy library), W3C [cph] (slidy library), Dave Gandy [ctb, cph] (Font-Awesome), Ben Sperry [ctb] (Ionicons), Drifty [cph] (Ionicons), Aidan Lister [ctb, cph] (jQuery StickyTabs), Benct Philip Jonsson [ctb, cph] (pagebreak Lua filter), Albert Krewinkel [ctb, cph] (pagebreak Lua filter)", + "Maintainer": "Yihui Xie ", + "Repository": "CRAN" + }, + "rprojroot": { + "Package": "rprojroot", + "Version": "2.1.1", + "Source": "Repository", + "Title": "Finding Files in Project Subdirectories", + "Authors@R": "person(given = \"Kirill\", family = \"M\\u00fcller\", role = c(\"aut\", \"cre\"), email = \"kirill@cynkra.com\", comment = c(ORCID = \"0000-0002-1416-3412\"))", + "Description": "Robust, reliable and flexible paths to files below a project root. The 'root' of a project is defined as a directory that matches a certain criterion, e.g., it contains a certain regular file.", + "License": "MIT + file LICENSE", + "URL": "https://rprojroot.r-lib.org/, https://github.com/r-lib/rprojroot", + "BugReports": "https://github.com/r-lib/rprojroot/issues", + "Depends": [ + "R (>= 3.0.0)" + ], + "Suggests": [ + "covr", + "knitr", + "lifecycle", + "rlang", + "rmarkdown", + "testthat (>= 3.2.0)", + "withr" + ], + "VignetteBuilder": "knitr", + "Config/testthat/edition": "3", + "Encoding": "UTF-8", + "RoxygenNote": "7.3.2.9000", + "Config/autostyle/scope": "line_breaks", + "Config/autostyle/strict": "true", + "Config/Needs/website": "tidyverse/tidytemplate", + "NeedsCompilation": "no", + "Author": "Kirill Müller [aut, cre] (ORCID: )", + "Maintainer": "Kirill Müller ", + "Repository": "CRAN" + }, + "sass": { + "Package": "sass", + "Version": "0.4.10", + "Source": "Repository", + "Type": "Package", + "Title": "Syntactically Awesome Style Sheets ('Sass')", + "Description": "An 'SCSS' compiler, powered by the 'LibSass' library. With this, R developers can use variables, inheritance, and functions to generate dynamic style sheets. The package uses the 'Sass CSS' extension language, which is stable, powerful, and CSS compatible.", + "Authors@R": "c( person(\"Joe\", \"Cheng\", , \"joe@rstudio.com\", \"aut\"), person(\"Timothy\", \"Mastny\", , \"tim.mastny@gmail.com\", \"aut\"), person(\"Richard\", \"Iannone\", , \"rich@rstudio.com\", \"aut\", comment = c(ORCID = \"0000-0003-3925-190X\")), person(\"Barret\", \"Schloerke\", , \"barret@rstudio.com\", \"aut\", comment = c(ORCID = \"0000-0001-9986-114X\")), person(\"Carson\", \"Sievert\", , \"carson@rstudio.com\", c(\"aut\", \"cre\"), comment = c(ORCID = \"0000-0002-4958-2844\")), person(\"Christophe\", \"Dervieux\", , \"cderv@rstudio.com\", c(\"ctb\"), comment = c(ORCID = \"0000-0003-4474-2498\")), person(family = \"RStudio\", role = c(\"cph\", \"fnd\")), person(family = \"Sass Open Source Foundation\", role = c(\"ctb\", \"cph\"), comment = \"LibSass library\"), person(\"Greter\", \"Marcel\", role = c(\"ctb\", \"cph\"), comment = \"LibSass library\"), person(\"Mifsud\", \"Michael\", role = c(\"ctb\", \"cph\"), comment = \"LibSass library\"), person(\"Hampton\", \"Catlin\", role = c(\"ctb\", \"cph\"), comment = \"LibSass library\"), person(\"Natalie\", \"Weizenbaum\", role = c(\"ctb\", \"cph\"), comment = \"LibSass library\"), person(\"Chris\", \"Eppstein\", role = c(\"ctb\", \"cph\"), comment = \"LibSass library\"), person(\"Adams\", \"Joseph\", role = c(\"ctb\", \"cph\"), comment = \"json.cpp\"), person(\"Trifunovic\", \"Nemanja\", role = c(\"ctb\", \"cph\"), comment = \"utf8.h\") )", + "License": "MIT + file LICENSE", + "URL": "https://rstudio.github.io/sass/, https://github.com/rstudio/sass", + "BugReports": "https://github.com/rstudio/sass/issues", + "Encoding": "UTF-8", + "RoxygenNote": "7.3.2", + "SystemRequirements": "GNU make", + "Imports": [ + "fs (>= 1.2.4)", + "rlang (>= 0.4.10)", + "htmltools (>= 0.5.1)", + "R6", + "rappdirs" + ], + "Suggests": [ + "testthat", + "knitr", + "rmarkdown", + "withr", + "shiny", + "curl" + ], + "VignetteBuilder": "knitr", + "Config/testthat/edition": "3", + "NeedsCompilation": "yes", + "Author": "Joe Cheng [aut], Timothy Mastny [aut], Richard Iannone [aut] (), Barret Schloerke [aut] (), Carson Sievert [aut, cre] (), Christophe Dervieux [ctb] (), RStudio [cph, fnd], Sass Open Source Foundation [ctb, cph] (LibSass library), Greter Marcel [ctb, cph] (LibSass library), Mifsud Michael [ctb, cph] (LibSass library), Hampton Catlin [ctb, cph] (LibSass library), Natalie Weizenbaum [ctb, cph] (LibSass library), Chris Eppstein [ctb, cph] (LibSass library), Adams Joseph [ctb, cph] (json.cpp), Trifunovic Nemanja [ctb, cph] (utf8.h)", + "Maintainer": "Carson Sievert ", + "Repository": "CRAN" + }, + "shiny": { + "Package": "shiny", + "Version": "1.13.0", + "Source": "Repository", + "Type": "Package", + "Title": "Web Application Framework for R", + "Authors@R": "c( person(\"Winston\", \"Chang\", , \"winston@posit.co\", role = \"aut\", comment = c(ORCID = \"0000-0002-1576-2126\")), person(\"Joe\", \"Cheng\", , \"joe@posit.co\", role = \"aut\"), person(\"JJ\", \"Allaire\", , \"jj@posit.co\", role = \"aut\"), person(\"Carson\", \"Sievert\", , \"carson@posit.co\", role = c(\"aut\", \"cre\"), comment = c(ORCID = \"0000-0002-4958-2844\")), person(\"Barret\", \"Schloerke\", , \"barret@posit.co\", role = \"aut\", comment = c(ORCID = \"0000-0001-9986-114X\")), person(\"Garrick\", \"Aden-Buie\", , \"garrick@adenbuie.com\", role = \"aut\", comment = c(ORCID = \"0000-0002-7111-0077\")), person(\"Yihui\", \"Xie\", , \"yihui@posit.co\", role = \"aut\"), person(\"Jeff\", \"Allen\", role = \"aut\"), person(\"Jonathan\", \"McPherson\", , \"jonathan@posit.co\", role = \"aut\"), person(\"Alan\", \"Dipert\", role = \"aut\"), person(\"Barbara\", \"Borges\", role = \"aut\"), person(\"Posit Software, PBC\", role = c(\"cph\", \"fnd\"), comment = c(ROR = \"03wc8by49\")), person(, \"jQuery Foundation\", role = \"cph\", comment = \"jQuery library and jQuery UI library\"), person(, \"jQuery contributors\", role = c(\"ctb\", \"cph\"), comment = \"jQuery library; authors listed in inst/www/shared/jquery-AUTHORS.txt\"), person(, \"jQuery UI contributors\", role = c(\"ctb\", \"cph\"), comment = \"jQuery UI library; authors listed in inst/www/shared/jqueryui/AUTHORS.txt\"), person(\"Mark\", \"Otto\", role = \"ctb\", comment = \"Bootstrap library\"), person(\"Jacob\", \"Thornton\", role = \"ctb\", comment = \"Bootstrap library\"), person(, \"Bootstrap contributors\", role = \"ctb\", comment = \"Bootstrap library\"), person(, \"Twitter, Inc\", role = \"cph\", comment = \"Bootstrap library\"), person(\"Prem Nawaz\", \"Khan\", role = \"ctb\", comment = \"Bootstrap accessibility plugin\"), person(\"Victor\", \"Tsaran\", role = \"ctb\", comment = \"Bootstrap accessibility plugin\"), person(\"Dennis\", \"Lembree\", role = \"ctb\", comment = \"Bootstrap accessibility plugin\"), person(\"Srinivasu\", \"Chakravarthula\", role = \"ctb\", comment = \"Bootstrap accessibility plugin\"), person(\"Cathy\", \"O'Connor\", role = \"ctb\", comment = \"Bootstrap accessibility plugin\"), person(, \"PayPal, Inc\", role = \"cph\", comment = \"Bootstrap accessibility plugin\"), person(\"Stefan\", \"Petre\", role = c(\"ctb\", \"cph\"), comment = \"Bootstrap-datepicker library\"), person(\"Andrew\", \"Rowls\", role = c(\"ctb\", \"cph\"), comment = \"Bootstrap-datepicker library\"), person(\"Brian\", \"Reavis\", role = c(\"ctb\", \"cph\"), comment = \"selectize.js library\"), person(\"Salmen\", \"Bejaoui\", role = c(\"ctb\", \"cph\"), comment = \"selectize-plugin-a11y library\"), person(\"Denis\", \"Ineshin\", role = c(\"ctb\", \"cph\"), comment = \"ion.rangeSlider library\"), person(\"Sami\", \"Samhuri\", role = c(\"ctb\", \"cph\"), comment = \"Javascript strftime library\"), person(, \"SpryMedia Limited\", role = c(\"ctb\", \"cph\"), comment = \"DataTables library\"), person(\"Ivan\", \"Sagalaev\", role = c(\"ctb\", \"cph\"), comment = \"highlight.js library\"), person(\"R Core Team\", role = c(\"ctb\", \"cph\"), comment = \"tar implementation from R\") )", + "Description": "Makes it incredibly easy to build interactive web applications with R. Automatic \"reactive\" binding between inputs and outputs and extensive prebuilt widgets make it possible to build beautiful, responsive, and powerful applications with minimal effort.", + "License": "MIT + file LICENSE", + "URL": "https://shiny.posit.co/, https://github.com/rstudio/shiny", + "BugReports": "https://github.com/rstudio/shiny/issues", + "Depends": [ + "methods", + "R (>= 3.1.2)" + ], + "Imports": [ + "bslib (>= 0.6.0)", + "cachem (>= 1.1.0)", + "cli", + "commonmark (>= 2.0.0)", + "fastmap (>= 1.1.1)", + "fontawesome (>= 0.4.0)", + "glue (>= 1.3.2)", + "grDevices", + "htmltools (>= 0.5.4)", + "httpuv (>= 1.5.2)", + "jsonlite (>= 0.9.16)", + "later (>= 1.0.0)", + "lifecycle (>= 0.2.0)", + "mime (>= 0.3)", + "otel", + "promises (>= 1.5.0)", + "R6 (>= 2.0)", + "rlang (>= 0.4.10)", + "sourcetools", + "tools", + "utils", + "withr", + "xtable" + ], + "Suggests": [ + "Cairo (>= 1.5-5)", + "coro (>= 1.1.0)", + "datasets", + "DT", + "dygraphs", + "future", + "ggplot2", + "knitr (>= 1.6)", + "magrittr", + "markdown", + "mirai", + "otelsdk (>= 0.2.0)", + "ragg", + "reactlog (>= 1.0.0)", + "rmarkdown", + "sass", + "showtext", + "testthat (>= 3.2.1)", + "watcher", + "yaml" + ], + "Config/Needs/check": "shinytest2", + "Config/testthat/edition": "3", + "Encoding": "UTF-8", + "RoxygenNote": "7.3.3", + "Collate": "'globals.R' 'app-state.R' 'app_template.R' 'bind-cache.R' 'bind-event.R' 'bookmark-state-local.R' 'bookmark-state.R' 'bootstrap-deprecated.R' 'bootstrap-layout.R' 'conditions.R' 'map.R' 'utils.R' 'bootstrap.R' 'busy-indicators-spinners.R' 'busy-indicators.R' 'cache-utils.R' 'deprecated.R' 'devmode.R' 'diagnose.R' 'extended-task.R' 'fileupload.R' 'graph.R' 'reactives.R' 'reactive-domains.R' 'history.R' 'hooks.R' 'html-deps.R' 'image-interact-opts.R' 'image-interact.R' 'imageutils.R' 'input-action.R' 'input-checkbox.R' 'input-checkboxgroup.R' 'input-date.R' 'input-daterange.R' 'input-file.R' 'input-numeric.R' 'input-password.R' 'input-radiobuttons.R' 'input-select.R' 'input-slider.R' 'input-submit.R' 'input-text.R' 'input-textarea.R' 'input-utils.R' 'insert-tab.R' 'insert-ui.R' 'jqueryui.R' 'knitr.R' 'middleware-shiny.R' 'middleware.R' 'timer.R' 'shiny.R' 'mock-session.R' 'modal.R' 'modules.R' 'notifications.R' 'otel-attr-srcref.R' 'otel-collect.R' 'otel-enable.R' 'otel-error.R' 'otel-label.R' 'otel-reactive-update.R' 'otel-session.R' 'otel-shiny.R' 'otel-with.R' 'priorityqueue.R' 'progress.R' 'react.R' 'reexports.R' 'render-cached-plot.R' 'render-plot.R' 'render-table.R' 'run-url.R' 'runapp.R' 'serializers.R' 'server-input-handlers.R' 'server-resource-paths.R' 'server.R' 'shiny-options.R' 'shiny-package.R' 'shinyapp.R' 'shinyui.R' 'shinywrappers.R' 'showcase.R' 'snapshot.R' 'staticimports.R' 'tar.R' 'test-export.R' 'test-server.R' 'test.R' 'update-input.R' 'utils-lang.R' 'utils-tags.R' 'version_bs_date_picker.R' 'version_ion_range_slider.R' 'version_jquery.R' 'version_jqueryui.R' 'version_selectize.R' 'version_strftime.R' 'viewer.R'", + "NeedsCompilation": "no", + "Author": "Winston Chang [aut] (ORCID: ), Joe Cheng [aut], JJ Allaire [aut], Carson Sievert [aut, cre] (ORCID: ), Barret Schloerke [aut] (ORCID: ), Garrick Aden-Buie [aut] (ORCID: ), Yihui Xie [aut], Jeff Allen [aut], Jonathan McPherson [aut], Alan Dipert [aut], Barbara Borges [aut], Posit Software, PBC [cph, fnd] (ROR: ), jQuery Foundation [cph] (jQuery library and jQuery UI library), jQuery contributors [ctb, cph] (jQuery library; authors listed in inst/www/shared/jquery-AUTHORS.txt), jQuery UI contributors [ctb, cph] (jQuery UI library; authors listed in inst/www/shared/jqueryui/AUTHORS.txt), Mark Otto [ctb] (Bootstrap library), Jacob Thornton [ctb] (Bootstrap library), Bootstrap contributors [ctb] (Bootstrap library), Twitter, Inc [cph] (Bootstrap library), Prem Nawaz Khan [ctb] (Bootstrap accessibility plugin), Victor Tsaran [ctb] (Bootstrap accessibility plugin), Dennis Lembree [ctb] (Bootstrap accessibility plugin), Srinivasu Chakravarthula [ctb] (Bootstrap accessibility plugin), Cathy O'Connor [ctb] (Bootstrap accessibility plugin), PayPal, Inc [cph] (Bootstrap accessibility plugin), Stefan Petre [ctb, cph] (Bootstrap-datepicker library), Andrew Rowls [ctb, cph] (Bootstrap-datepicker library), Brian Reavis [ctb, cph] (selectize.js library), Salmen Bejaoui [ctb, cph] (selectize-plugin-a11y library), Denis Ineshin [ctb, cph] (ion.rangeSlider library), Sami Samhuri [ctb, cph] (Javascript strftime library), SpryMedia Limited [ctb, cph] (DataTables library), Ivan Sagalaev [ctb, cph] (highlight.js library), R Core Team [ctb, cph] (tar implementation from R)", + "Maintainer": "Carson Sievert ", + "Repository": "CRAN" + }, + "sourcetools": { + "Package": "sourcetools", + "Version": "0.1.7-2", + "Source": "Repository", + "Type": "Package", + "Title": "Tools for Reading, Tokenizing and Parsing R Code", + "Authors@R": "person(\"Kevin\", \"Ushey\", role = c(\"aut\", \"cre\"), email = \"kevinushey@gmail.com\")", + "Maintainer": "Kevin Ushey ", + "Description": "Tools for the reading and tokenization of R code. The 'sourcetools' package provides both an R and C++ interface for the tokenization of R code, and helpers for interacting with the tokenized representation of R code.", + "License": "MIT + file LICENSE", + "Depends": [ + "R (>= 3.0.2)" + ], + "Suggests": [ + "testthat" + ], + "RoxygenNote": "5.0.1", + "BugReports": "https://github.com/kevinushey/sourcetools/issues", + "Encoding": "UTF-8", + "NeedsCompilation": "yes", + "Author": "Kevin Ushey [aut, cre]", + "Repository": "CRAN" + }, + "tinytex": { + "Package": "tinytex", + "Version": "0.59", + "Source": "Repository", + "Type": "Package", + "Title": "Helper Functions to Install and Maintain TeX Live, and Compile LaTeX Documents", + "Authors@R": "c( person(\"Yihui\", \"Xie\", role = c(\"aut\", \"cre\", \"cph\"), email = \"xie@yihui.name\", comment = c(ORCID = \"0000-0003-0645-5666\")), person(given = \"Posit Software, PBC\", role = c(\"cph\", \"fnd\")), person(\"Christophe\", \"Dervieux\", role = \"ctb\", comment = c(ORCID = \"0000-0003-4474-2498\")), person(\"Devon\", \"Ryan\", role = \"ctb\", email = \"dpryan79@gmail.com\", comment = c(ORCID = \"0000-0002-8549-0971\")), person(\"Ethan\", \"Heinzen\", role = \"ctb\"), person(\"Fernando\", \"Cagua\", role = \"ctb\"), person() )", + "Description": "Helper functions to install and maintain the 'LaTeX' distribution named 'TinyTeX' (), a lightweight, cross-platform, portable, and easy-to-maintain version of 'TeX Live'. This package also contains helper functions to compile 'LaTeX' documents, and install missing 'LaTeX' packages automatically.", + "Imports": [ + "xfun (>= 0.48)" + ], + "Suggests": [ + "testit", + "rstudioapi" + ], + "License": "MIT + file LICENSE", + "URL": "https://github.com/rstudio/tinytex", + "BugReports": "https://github.com/rstudio/tinytex/issues", + "Encoding": "UTF-8", + "RoxygenNote": "7.3.3", + "NeedsCompilation": "no", + "Author": "Yihui Xie [aut, cre, cph] (ORCID: ), Posit Software, PBC [cph, fnd], Christophe Dervieux [ctb] (ORCID: ), Devon Ryan [ctb] (ORCID: ), Ethan Heinzen [ctb], Fernando Cagua [ctb]", + "Maintainer": "Yihui Xie ", + "Repository": "CRAN" + }, + "withr": { + "Package": "withr", + "Version": "3.0.2", + "Source": "Repository", + "Title": "Run Code 'With' Temporarily Modified Global State", + "Authors@R": "c( person(\"Jim\", \"Hester\", role = \"aut\"), person(\"Lionel\", \"Henry\", , \"lionel@posit.co\", role = c(\"aut\", \"cre\")), person(\"Kirill\", \"Müller\", , \"krlmlr+r@mailbox.org\", role = \"aut\"), person(\"Kevin\", \"Ushey\", , \"kevinushey@gmail.com\", role = \"aut\"), person(\"Hadley\", \"Wickham\", , \"hadley@posit.co\", role = \"aut\"), person(\"Winston\", \"Chang\", role = \"aut\"), person(\"Jennifer\", \"Bryan\", role = \"ctb\"), person(\"Richard\", \"Cotton\", role = \"ctb\"), person(\"Posit Software, PBC\", role = c(\"cph\", \"fnd\")) )", + "Description": "A set of functions to run code 'with' safely and temporarily modified global state. Many of these functions were originally a part of the 'devtools' package, this provides a simple package with limited dependencies to provide access to these functions.", + "License": "MIT + file LICENSE", + "URL": "https://withr.r-lib.org, https://github.com/r-lib/withr#readme", + "BugReports": "https://github.com/r-lib/withr/issues", + "Depends": [ + "R (>= 3.6.0)" + ], + "Imports": [ + "graphics", + "grDevices" + ], + "Suggests": [ + "callr", + "DBI", + "knitr", + "methods", + "rlang", + "rmarkdown (>= 2.12)", + "RSQLite", + "testthat (>= 3.0.0)" + ], + "VignetteBuilder": "knitr", + "Config/Needs/website": "tidyverse/tidytemplate", + "Config/testthat/edition": "3", + "Encoding": "UTF-8", + "RoxygenNote": "7.3.2", + "Collate": "'aaa.R' 'collate.R' 'connection.R' 'db.R' 'defer-exit.R' 'standalone-defer.R' 'defer.R' 'devices.R' 'local_.R' 'with_.R' 'dir.R' 'env.R' 'file.R' 'language.R' 'libpaths.R' 'locale.R' 'makevars.R' 'namespace.R' 'options.R' 'par.R' 'path.R' 'rng.R' 'seed.R' 'wrap.R' 'sink.R' 'tempfile.R' 'timezone.R' 'torture.R' 'utils.R' 'with.R'", + "NeedsCompilation": "no", + "Author": "Jim Hester [aut], Lionel Henry [aut, cre], Kirill Müller [aut], Kevin Ushey [aut], Hadley Wickham [aut], Winston Chang [aut], Jennifer Bryan [ctb], Richard Cotton [ctb], Posit Software, PBC [cph, fnd]", + "Maintainer": "Lionel Henry ", + "Repository": "CRAN" + }, + "xfun": { + "Package": "xfun", + "Version": "0.58", + "Source": "Repository", + "Type": "Package", + "Title": "Supporting Functions for Packages Maintained by 'Yihui Xie'", + "Authors@R": "c( person(\"Yihui\", \"Xie\", role = c(\"aut\", \"cre\", \"cph\"), email = \"xie@yihui.name\", comment = c(ORCID = \"0000-0003-0645-5666\", URL = \"https://yihui.org\")), person(\"Wush\", \"Wu\", role = \"ctb\"), person(\"Daijiang\", \"Li\", role = \"ctb\"), person(\"Xianying\", \"Tan\", role = \"ctb\"), person(\"Salim\", \"Brüggemann\", role = \"ctb\", email = \"salim-b@pm.me\", comment = c(ORCID = \"0000-0002-5329-5987\")), person(\"Christophe\", \"Dervieux\", role = \"ctb\"), person() )", + "Description": "Miscellaneous functions commonly used in other packages maintained by 'Yihui Xie'.", + "Depends": [ + "R (>= 3.2.0)" + ], + "Imports": [ + "grDevices", + "stats", + "tools" + ], + "Suggests": [ + "testit", + "parallel", + "codetools", + "methods", + "rstudioapi", + "tinytex (>= 0.30)", + "mime", + "litedown (>= 0.6)", + "commonmark", + "knitr (>= 1.50)", + "remotes", + "pak", + "curl", + "xml2", + "jsonlite", + "magick", + "yaml", + "data.table", + "qs2" + ], + "License": "MIT + file LICENSE", + "URL": "https://github.com/yihui/xfun", + "BugReports": "https://github.com/yihui/xfun/issues", + "Encoding": "UTF-8", + "VignetteBuilder": "litedown", + "Config/roxygen2/version": "8.0.0", + "NeedsCompilation": "yes", + "Author": "Yihui Xie [aut, cre, cph] (ORCID: , URL: https://yihui.org), Wush Wu [ctb], Daijiang Li [ctb], Xianying Tan [ctb], Salim Brüggemann [ctb] (ORCID: ), Christophe Dervieux [ctb]", + "Maintainer": "Yihui Xie ", + "Repository": "CRAN" + }, + "xtable": { + "Package": "xtable", + "Version": "1.8-8", + "Source": "Repository", + "Date": "2026-02-20", + "Title": "Export Tables to LaTeX or HTML", + "Authors@R": "c(person(\"David B.\", \"Dahl\", role=\"aut\"), person(\"David\", \"Scott\", role=c(\"aut\",\"cre\"), email=\"d.scott@auckland.ac.nz\"), person(\"Charles\", \"Roosen\", role=\"aut\"), person(\"Arni\", \"Magnusson\", role=\"aut\"), person(\"Jonathan\", \"Swinton\", role=\"aut\"), person(\"Ajay\", \"Shah\", role=\"ctb\"), person(\"Arne\", \"Henningsen\", role=\"ctb\"), person(\"Benno\", \"Puetz\", role=\"ctb\"), person(\"Bernhard\", \"Pfaff\", role=\"ctb\"), person(\"Claudio\", \"Agostinelli\", role=\"ctb\"), person(\"Claudius\", \"Loehnert\", role=\"ctb\"), person(\"David\", \"Mitchell\", role=\"ctb\"), person(\"David\", \"Whiting\", role=\"ctb\"), person(\"Fernando da\", \"Rosa\", role=\"ctb\"), person(\"Guido\", \"Gay\", role=\"ctb\"), person(\"Guido\", \"Schulz\", role=\"ctb\"), person(\"Ian\", \"Fellows\", role=\"ctb\"), person(\"Jeff\", \"Laake\", role=\"ctb\"), person(\"John\", \"Walker\", role=\"ctb\"), person(\"Jun\", \"Yan\", role=\"ctb\"), person(\"Liviu\", \"Andronic\", role=\"ctb\"), person(\"Markus\", \"Loecher\", role=\"ctb\"), person(\"Martin\", \"Gubri\", role=\"ctb\"), person(\"Matthieu\", \"Stigler\", role=\"ctb\"), person(\"Robert\", \"Castelo\", role=\"ctb\"), person(\"Seth\", \"Falcon\", role=\"ctb\"), person(\"Stefan\", \"Edwards\", role=\"ctb\"), person(\"Sven\", \"Garbade\", role=\"ctb\"), person(\"Uwe\", \"Ligges\", role=\"ctb\"))", + "Maintainer": "David Scott ", + "Imports": [ + "stats", + "utils", + "methods" + ], + "Suggests": [ + "knitr", + "zoo", + "survival", + "glue", + "tinytex" + ], + "VignetteBuilder": "knitr", + "Description": "Coerce data to LaTeX and HTML tables.", + "URL": "http://xtable.r-forge.r-project.org/", + "Depends": [ + "R (>= 2.10.0)" + ], + "License": "GPL (>= 2)", + "Repository": "CRAN", + "NeedsCompilation": "no", + "Author": "David B. Dahl [aut], David Scott [aut, cre], Charles Roosen [aut], Arni Magnusson [aut], Jonathan Swinton [aut], Ajay Shah [ctb], Arne Henningsen [ctb], Benno Puetz [ctb], Bernhard Pfaff [ctb], Claudio Agostinelli [ctb], Claudius Loehnert [ctb], David Mitchell [ctb], David Whiting [ctb], Fernando da Rosa [ctb], Guido Gay [ctb], Guido Schulz [ctb], Ian Fellows [ctb], Jeff Laake [ctb], John Walker [ctb], Jun Yan [ctb], Liviu Andronic [ctb], Markus Loecher [ctb], Martin Gubri [ctb], Matthieu Stigler [ctb], Robert Castelo [ctb], Seth Falcon [ctb], Stefan Edwards [ctb], Sven Garbade [ctb], Uwe Ligges [ctb]", + "Encoding": "UTF-8" + }, + "yaml": { + "Package": "yaml", + "Version": "2.3.12", + "Source": "Repository", + "Type": "Package", + "Title": "Methods to Convert R Data to YAML and Back", + "Authors@R": "c( person(\"Hadley\", \"Wickham\", , \"hadley@posit.co\", role = \"cre\", comment = c(ORCID = \"0000-0003-4757-117X\")), person(\"Shawn\", \"Garbett\", , \"shawn.garbett@vumc.org\", role = \"ctb\", comment = c(ORCID = \"0000-0003-4079-5621\")), person(\"Jeremy\", \"Stephens\", role = c(\"aut\", \"ctb\")), person(\"Kirill\", \"Simonov\", role = \"aut\"), person(\"Yihui\", \"Xie\", role = \"ctb\", comment = c(ORCID = \"0000-0003-0645-5666\")), person(\"Zhuoer\", \"Dong\", role = \"ctb\"), person(\"Jeffrey\", \"Horner\", role = \"ctb\"), person(\"reikoch\", role = \"ctb\"), person(\"Will\", \"Beasley\", role = \"ctb\", comment = c(ORCID = \"0000-0002-5613-5006\")), person(\"Brendan\", \"O'Connor\", role = \"ctb\"), person(\"Michael\", \"Quinn\", role = \"ctb\"), person(\"Charlie\", \"Gao\", role = \"ctb\"), person(c(\"Gregory\", \"R.\"), \"Warnes\", role = \"ctb\"), person(c(\"Zhian\", \"N.\"), \"Kamvar\", role = \"ctb\") )", + "Description": "Implements the 'libyaml' 'YAML' 1.1 parser and emitter () for R.", + "License": "BSD_3_clause + file LICENSE", + "URL": "https://yaml.r-lib.org, https://github.com/r-lib/yaml/", + "BugReports": "https://github.com/r-lib/yaml/issues", + "Suggests": [ + "knitr", + "rmarkdown", + "testthat (>= 3.0.0)" + ], + "Config/testthat/edition": "3", + "Config/Needs/website": "tidyverse/tidytemplate", + "Encoding": "UTF-8", + "RoxygenNote": "7.3.3", + "VignetteBuilder": "knitr", + "NeedsCompilation": "yes", + "Author": "Hadley Wickham [cre] (ORCID: ), Shawn Garbett [ctb] (ORCID: ), Jeremy Stephens [aut, ctb], Kirill Simonov [aut], Yihui Xie [ctb] (ORCID: ), Zhuoer Dong [ctb], Jeffrey Horner [ctb], reikoch [ctb], Will Beasley [ctb] (ORCID: ), Brendan O'Connor [ctb], Michael Quinn [ctb], Charlie Gao [ctb], Gregory R. Warnes [ctb], Zhian N. Kamvar [ctb]", + "Maintainer": "Hadley Wickham ", + "Repository": "CRAN" + } + } +} diff --git a/renv/.gitignore b/renv/.gitignore new file mode 100644 index 0000000..0ec0cbb --- /dev/null +++ b/renv/.gitignore @@ -0,0 +1,7 @@ +library/ +local/ +cellar/ +lock/ +python/ +sandbox/ +staging/ diff --git a/renv/activate.R b/renv/activate.R new file mode 100644 index 0000000..20ffd44 --- /dev/null +++ b/renv/activate.R @@ -0,0 +1,1438 @@ + +local({ + + # the requested version of renv + version <- "1.2.3" + attr(version, "md5") <- "1bd9f58e1cfe27ce035933937c6f03de" + attr(version, "sha") <- NULL + + # the project directory + project <- Sys.getenv("RENV_PROJECT") + if (!nzchar(project)) + project <- getwd() + + # use start-up diagnostics if enabled + diagnostics <- Sys.getenv("RENV_STARTUP_DIAGNOSTICS", unset = "FALSE") + if (diagnostics) { + start <- Sys.time() + profile <- tempfile("renv-startup-", fileext = ".Rprof") + utils::Rprof(profile) + on.exit({ + utils::Rprof(NULL) + elapsed <- signif(difftime(Sys.time(), start, units = "auto"), digits = 2L) + writeLines(sprintf("- renv took %s to run the autoloader.", format(elapsed))) + writeLines(sprintf("- Profile: %s", profile)) + print(utils::summaryRprof(profile)) + }, add = TRUE) + } + + # figure out whether the autoloader is enabled + enabled <- local({ + + # first, check config option + override <- getOption("renv.config.autoloader.enabled") + if (!is.null(override)) + return(override) + + # if we're being run in a context where R_LIBS is already set, + # don't load -- presumably we're being run as a sub-process and + # the parent process has already set up library paths for us + rcmd <- Sys.getenv("R_CMD", unset = NA) + rlibs <- Sys.getenv("R_LIBS", unset = NA) + if (!is.na(rlibs) && !is.na(rcmd)) + return(FALSE) + + # next, check environment variables + # prefer using the configuration one in the future + envvars <- c( + "RENV_CONFIG_AUTOLOADER_ENABLED", + "RENV_AUTOLOADER_ENABLED", + "RENV_ACTIVATE_PROJECT" + ) + + for (envvar in envvars) { + envval <- Sys.getenv(envvar, unset = NA) + if (!is.na(envval)) + return(tolower(envval) %in% c("true", "t", "1")) + } + + # enable by default + TRUE + + }) + + # bail if we're not enabled + if (!enabled) { + + # if we're not enabled, we might still need to manually load + # the user profile here + profile <- Sys.getenv("R_PROFILE_USER", unset = "~/.Rprofile") + if (file.exists(profile)) { + cfg <- Sys.getenv("RENV_CONFIG_USER_PROFILE", unset = "TRUE") + if (tolower(cfg) %in% c("true", "t", "1")) + sys.source(profile, envir = globalenv()) + } + + return(FALSE) + + } + + # avoid recursion + if (identical(getOption("renv.autoloader.running"), TRUE)) { + warning("ignoring recursive attempt to run renv autoloader") + return(invisible(TRUE)) + } + + # signal that we're loading renv during R startup + options(renv.autoloader.running = TRUE) + on.exit(options(renv.autoloader.running = NULL), add = TRUE) + + # signal that we've consented to use renv + options(renv.consent = TRUE) + + # load the 'utils' package eagerly -- this ensures that renv shims, which + # mask 'utils' packages, will come first on the search path + library(utils, lib.loc = .Library) + + # unload renv if it's already been loaded + if ("renv" %in% loadedNamespaces()) + unloadNamespace("renv") + + # load bootstrap tools + ansify <- function(text) { + if (renv_ansify_enabled()) + renv_ansify_enhanced(text) + else + renv_ansify_default(text) + } + + renv_ansify_enabled <- function() { + + override <- Sys.getenv("RENV_ANSIFY_ENABLED", unset = NA) + if (!is.na(override)) + return(as.logical(override)) + + pane <- Sys.getenv("RSTUDIO_CHILD_PROCESS_PANE", unset = NA) + if (identical(pane, "build")) + return(FALSE) + + testthat <- Sys.getenv("TESTTHAT", unset = "false") + if (tolower(testthat) %in% "true") + return(FALSE) + + iderun <- Sys.getenv("R_CLI_HAS_HYPERLINK_IDE_RUN", unset = "false") + if (tolower(iderun) %in% "false") + return(FALSE) + + TRUE + + } + + renv_ansify_default <- function(text) { + text + } + + renv_ansify_enhanced <- function(text) { + + # R help links + pattern <- "`\\?(renv::(?:[^`])+)`" + replacement <- "`\033]8;;x-r-help:\\1\a?\\1\033]8;;\a`" + text <- gsub(pattern, replacement, text, perl = TRUE) + + # runnable code + pattern <- "`(renv::(?:[^`])+)`" + replacement <- "`\033]8;;x-r-run:\\1\a\\1\033]8;;\a`" + text <- gsub(pattern, replacement, text, perl = TRUE) + + # return ansified text + text + + } + + renv_ansify_init <- function() { + + envir <- renv_envir_self() + if (renv_ansify_enabled()) + assign("ansify", renv_ansify_enhanced, envir = envir) + else + assign("ansify", renv_ansify_default, envir = envir) + + } + + `%||%` <- function(x, y) { + if (is.null(x)) y else x + } + + catf <- function(fmt, ..., appendLF = TRUE) { + + quiet <- getOption("renv.bootstrap.quiet", default = FALSE) + if (quiet) + return(invisible()) + + # also check for config environment variables that should suppress messages + # https://github.com/rstudio/renv/issues/2214 + enabled <- Sys.getenv("RENV_CONFIG_STARTUP_QUIET", unset = NA) + if (!is.na(enabled) && tolower(enabled) %in% c("true", "1")) + return(invisible()) + + enabled <- Sys.getenv("RENV_CONFIG_SYNCHRONIZED_CHECK", unset = NA) + if (!is.na(enabled) && tolower(enabled) %in% c("false", "0")) + return(invisible()) + + msg <- sprintf(fmt, ...) + cat(msg, file = stdout(), sep = if (appendLF) "\n" else "") + + invisible(msg) + + } + + header <- function(label, + ..., + prefix = "#", + suffix = "-", + n = min(getOption("width"), 78)) + { + label <- sprintf(label, ...) + n <- max(n - nchar(label) - nchar(prefix) - 2L, 8L) + if (n <= 0) + return(paste(prefix, label)) + + tail <- paste(rep.int(suffix, n), collapse = "") + paste0(prefix, " ", label, " ", tail) + + } + + heredoc <- function(text, leave = 0) { + + # remove leading, trailing whitespace + trimmed <- gsub("^\\s*\\n|\\n\\s*$", "", text) + + # split into lines + lines <- strsplit(trimmed, "\n", fixed = TRUE)[[1L]] + + # compute common indent + indent <- regexpr("[^[:space:]]", lines) + common <- min(setdiff(indent, -1L)) - leave + text <- paste(substring(lines, common), collapse = "\n") + + # substitute in ANSI links for executable renv code + ansify(text) + + } + + bootstrap <- function(version, library) { + + friendly <- renv_bootstrap_version_friendly(version) + section <- header(sprintf("Bootstrapping renv %s", friendly)) + catf(section) + + # ensure the target library path exists; required for file.copy(..., recursive = TRUE) + dir.create(library, showWarnings = FALSE, recursive = TRUE) + + # try to install renv from cache + md5 <- attr(version, "md5", exact = TRUE) + if (length(md5)) { + pkgpath <- renv_bootstrap_find(version) + if (length(pkgpath) && file.exists(pkgpath)) { + ok <- file.copy(pkgpath, library, recursive = TRUE) + if (isTRUE(ok)) + return(invisible()) + } + } + + # attempt to download renv + catf("- Downloading renv ... ", appendLF = FALSE) + withCallingHandlers( + tarball <- renv_bootstrap_download(version), + error = function(err) { + catf("FAILED") + stop("failed to download:\n", conditionMessage(err)) + } + ) + catf("OK") + on.exit(unlink(tarball), add = TRUE) + + # now attempt to install + catf("- Installing renv ... ", appendLF = FALSE) + withCallingHandlers( + status <- renv_bootstrap_install(version, tarball, library), + error = function(err) { + catf("FAILED") + stop("failed to install:\n", conditionMessage(err)) + } + ) + catf("OK") + + # add empty line to break up bootstrapping from normal output + catf("") + return(invisible()) + } + + renv_bootstrap_tests_running <- function() { + getOption("renv.tests.running", default = FALSE) + } + + renv_bootstrap_repos <- function() { + + # get CRAN repository + cran <- getOption("renv.repos.cran", "https://cloud.r-project.org") + + # check for repos override + repos <- Sys.getenv("RENV_CONFIG_REPOS_OVERRIDE", unset = NA) + if (!is.na(repos)) { + + # split on ';' if present + parts <- strsplit(repos, ";", fixed = TRUE)[[1L]] + + # split into named repositories if present + idx <- regexpr("=", parts, fixed = TRUE) + keys <- substring(parts, 1L, idx - 1L) + vals <- substring(parts, idx + 1L) + names(vals) <- keys + + # if we have a single unnamed repository, call it CRAN + if (length(vals) == 1L && identical(keys, "")) + names(vals) <- "CRAN" + + return(vals) + + } + + # check for lockfile repositories + repos <- tryCatch(renv_bootstrap_repos_lockfile(), error = identity) + if (!inherits(repos, "error") && length(repos)) + return(repos) + + # retrieve current repos + repos <- getOption("repos") + + # ensure @CRAN@ entries are resolved + repos[repos == "@CRAN@"] <- cran + + # add in renv.bootstrap.repos if set + default <- c(FALLBACK = "https://cloud.r-project.org") + extra <- getOption("renv.bootstrap.repos", default = default) + repos <- c(repos, extra) + + # remove duplicates that might've snuck in + dupes <- duplicated(repos) | duplicated(names(repos)) + repos[!dupes] + + } + + renv_bootstrap_repos_lockfile <- function() { + + lockpath <- Sys.getenv("RENV_PATHS_LOCKFILE", unset = "renv.lock") + if (!file.exists(lockpath)) + return(NULL) + + lockfile <- tryCatch(renv_json_read(lockpath), error = identity) + if (inherits(lockfile, "error")) { + warning(lockfile) + return(NULL) + } + + repos <- lockfile$R$Repositories + if (length(repos) == 0) + return(NULL) + + keys <- vapply(repos, `[[`, "Name", FUN.VALUE = character(1)) + vals <- vapply(repos, `[[`, "URL", FUN.VALUE = character(1)) + names(vals) <- keys + + return(vals) + + } + + renv_bootstrap_download <- function(version) { + + sha <- attr(version, "sha", exact = TRUE) + + methods <- if (!is.null(sha)) { + + # attempting to bootstrap a development version of renv + c( + function() renv_bootstrap_download_tarball(sha), + function() renv_bootstrap_download_github(sha) + ) + + } else { + + # attempting to bootstrap a release version of renv + c( + function() renv_bootstrap_download_tarball(version), + function() renv_bootstrap_download_cran_latest(version), + function() renv_bootstrap_download_cran_archive(version) + ) + + } + + for (method in methods) { + path <- tryCatch(method(), error = identity) + if (is.character(path) && file.exists(path)) + return(path) + } + + stop("All download methods failed") + + } + + renv_bootstrap_download_impl <- function(url, destfile) { + + mode <- "wb" + + # https://bugs.r-project.org/bugzilla/show_bug.cgi?id=17715 + fixup <- + Sys.info()[["sysname"]] == "Windows" && + substring(url, 1L, 5L) == "file:" + + if (fixup) + mode <- "w+b" + + args <- list( + url = url, + destfile = destfile, + mode = mode, + quiet = TRUE + ) + + if ("headers" %in% names(formals(utils::download.file))) { + headers <- renv_bootstrap_download_custom_headers(url) + if (length(headers) && is.character(headers)) + args$headers <- headers + } + + do.call(utils::download.file, args) + + } + + renv_bootstrap_download_custom_headers <- function(url) { + + headers <- getOption("renv.download.headers") + if (is.null(headers)) + return(character()) + + if (!is.function(headers)) + stopf("'renv.download.headers' is not a function") + + headers <- headers(url) + if (length(headers) == 0L) + return(character()) + + if (is.list(headers)) + headers <- unlist(headers, recursive = FALSE, use.names = TRUE) + + ok <- + is.character(headers) && + is.character(names(headers)) && + all(nzchar(names(headers))) + + if (!ok) + stop("invocation of 'renv.download.headers' did not return a named character vector") + + headers + + } + + renv_bootstrap_download_cran_latest <- function(version) { + + spec <- renv_bootstrap_download_cran_latest_find(version) + type <- spec$type + repos <- spec$repos + + baseurl <- utils::contrib.url(repos = repos, type = type) + ext <- if (identical(type, "source")) + ".tar.gz" + else if (Sys.info()[["sysname"]] == "Windows") + ".zip" + else + ".tgz" + name <- sprintf("renv_%s%s", version, ext) + url <- paste(baseurl, name, sep = "/") + + destfile <- file.path(tempdir(), name) + status <- tryCatch( + renv_bootstrap_download_impl(url, destfile), + condition = identity + ) + + if (inherits(status, "condition")) + return(FALSE) + + # report success and return + destfile + + } + + renv_bootstrap_download_cran_latest_find <- function(version) { + + # check whether binaries are supported on this system + binary <- + getOption("renv.bootstrap.binary", default = TRUE) && + !identical(.Platform$pkgType, "source") && + !identical(getOption("pkgType"), "source") && + Sys.info()[["sysname"]] %in% c("Darwin", "Windows") + + types <- c(if (binary) "binary", "source") + + # iterate over types + repositories + for (type in types) { + for (repos in renv_bootstrap_repos()) { + + # build arguments for utils::available.packages() call + args <- list(type = type, repos = repos) + + # add custom headers if available -- note that + # utils::available.packages() will pass this to download.file() + if ("headers" %in% names(formals(utils::download.file))) { + headers <- renv_bootstrap_download_custom_headers(repos) + if (length(headers) && is.character(headers)) + args$headers <- headers + } + + # retrieve package database + db <- tryCatch( + as.data.frame( + do.call(utils::available.packages, args), + stringsAsFactors = FALSE + ), + error = identity + ) + + if (inherits(db, "error")) + next + + # check for compatible entry + entry <- db[db$Package %in% "renv" & db$Version %in% version, ] + if (nrow(entry) == 0) + next + + # found it; return spec to caller + spec <- list(entry = entry, type = type, repos = repos) + return(spec) + + } + } + + # if we got here, we failed to find renv + fmt <- "renv %s is not available from your declared package repositories" + stop(sprintf(fmt, version)) + + } + + renv_bootstrap_download_cran_archive <- function(version) { + + name <- sprintf("renv_%s.tar.gz", version) + repos <- renv_bootstrap_repos() + urls <- file.path(repos, "src/contrib/Archive/renv", name) + destfile <- file.path(tempdir(), name) + + for (url in urls) { + + status <- tryCatch( + renv_bootstrap_download_impl(url, destfile), + condition = identity + ) + + if (identical(status, 0L)) + return(destfile) + + } + + return(FALSE) + + } + + renv_bootstrap_find <- function(version) { + + path <- renv_bootstrap_find_cache(version) + if (length(path) && file.exists(path)) { + catf("- Using renv %s from global package cache", version) + return(path) + } + + } + + renv_bootstrap_find_cache <- function(version) { + + md5 <- attr(version, "md5", exact = TRUE) + if (is.null(md5)) + return() + + # infer path to renv cache + cache <- Sys.getenv("RENV_PATHS_CACHE", unset = "") + if (!nzchar(cache)) { + root <- Sys.getenv("RENV_PATHS_ROOT", unset = NA) + if (!is.na(root)) + cache <- file.path(root, "cache") + } + + if (!nzchar(cache)) { + tools <- asNamespace("tools") + if (is.function(tools$R_user_dir)) { + root <- tools$R_user_dir("renv", "cache") + cache <- file.path(root, "cache") + } + } + + # start completing path to cache + file.path( + cache, + renv_bootstrap_cache_version(), + renv_bootstrap_platform_prefix(), + "renv", + version, + md5, + "renv" + ) + + } + + renv_bootstrap_download_tarball <- function(version) { + + # if the user has provided the path to a tarball via + # an environment variable, then use it + tarball <- Sys.getenv("RENV_BOOTSTRAP_TARBALL", unset = NA) + if (is.na(tarball)) + return() + + # allow directories + if (dir.exists(tarball)) { + name <- sprintf("renv_%s.tar.gz", version) + tarball <- file.path(tarball, name) + } + + # bail if it doesn't exist + if (!file.exists(tarball)) { + + # let the user know we weren't able to honour their request + fmt <- "- RENV_BOOTSTRAP_TARBALL is set (%s) but does not exist." + msg <- sprintf(fmt, tarball) + warning(msg) + + # bail + return() + + } + + catf("- Using local tarball '%s'.", tarball) + tarball + + } + + renv_bootstrap_github_token <- function() { + for (envvar in c("GITHUB_TOKEN", "GITHUB_PAT", "GH_TOKEN")) { + envval <- Sys.getenv(envvar, unset = NA) + if (!is.na(envval)) + return(envval) + } + } + + renv_bootstrap_download_github <- function(version) { + + enabled <- Sys.getenv("RENV_BOOTSTRAP_FROM_GITHUB", unset = "TRUE") + if (!identical(enabled, "TRUE")) + return(FALSE) + + # prepare download options + token <- renv_bootstrap_github_token() + if (is.null(token)) + token <- "" + + if (nzchar(Sys.which("curl")) && nzchar(token)) { + fmt <- "--location --fail --header \"Authorization: token %s\"" + extra <- sprintf(fmt, token) + saved <- options("download.file.method", "download.file.extra") + options(download.file.method = "curl", download.file.extra = extra) + on.exit(do.call(base::options, saved), add = TRUE) + } else if (nzchar(Sys.which("wget")) && nzchar(token)) { + fmt <- "--header=\"Authorization: token %s\"" + extra <- sprintf(fmt, token) + saved <- options("download.file.method", "download.file.extra") + options(download.file.method = "wget", download.file.extra = extra) + on.exit(do.call(base::options, saved), add = TRUE) + } + + url <- file.path("https://api.github.com/repos/rstudio/renv/tarball", version) + name <- sprintf("renv_%s.tar.gz", version) + destfile <- file.path(tempdir(), name) + + status <- tryCatch( + renv_bootstrap_download_impl(url, destfile), + condition = identity + ) + + if (!identical(status, 0L)) + return(FALSE) + + renv_bootstrap_download_augment(destfile) + + return(destfile) + + } + + # Add Sha to DESCRIPTION. This is stop gap until #890, after which we + # can use renv::install() to fully capture metadata. + renv_bootstrap_download_augment <- function(destfile) { + sha <- renv_bootstrap_git_extract_sha1_tar(destfile) + if (is.null(sha)) { + return() + } + + # Untar + tempdir <- tempfile("renv-github-") + on.exit(unlink(tempdir, recursive = TRUE), add = TRUE) + untar(destfile, exdir = tempdir) + pkgdir <- dir(tempdir, full.names = TRUE)[[1]] + + # Modify description + desc_path <- file.path(pkgdir, "DESCRIPTION") + desc_lines <- readLines(desc_path) + remotes_fields <- c( + "RemoteType: github", + "RemoteHost: api.github.com", + "RemoteRepo: renv", + "RemoteUsername: rstudio", + "RemotePkgRef: rstudio/renv", + paste("RemoteRef: ", sha), + paste("RemoteSha: ", sha) + ) + writeLines(c(desc_lines[desc_lines != ""], remotes_fields), con = desc_path) + + # Re-tar + local({ + old <- setwd(tempdir) + on.exit(setwd(old), add = TRUE) + + tar(destfile, compression = "gzip") + }) + invisible() + } + + # Extract the commit hash from a git archive. Git archives include the SHA1 + # hash as the comment field of the tarball pax extended header + # (see https://www.kernel.org/pub/software/scm/git/docs/git-archive.html) + # For GitHub archives this should be the first header after the default one + # (512 byte) header. + renv_bootstrap_git_extract_sha1_tar <- function(bundle) { + + # open the bundle for reading + # We use gzcon for everything because (from ?gzcon) + # > Reading from a connection which does not supply a 'gzip' magic + # > header is equivalent to reading from the original connection + conn <- gzcon(file(bundle, open = "rb", raw = TRUE)) + on.exit(close(conn)) + + # The default pax header is 512 bytes long and the first pax extended header + # with the comment should be 51 bytes long + # `52 comment=` (11 chars) + 40 byte SHA1 hash + len <- 0x200 + 0x33 + res <- rawToChar(readBin(conn, "raw", n = len)[0x201:len]) + + if (grepl("^52 comment=", res)) { + sub("52 comment=", "", res) + } else { + NULL + } + } + + renv_bootstrap_install <- function(version, tarball, library) { + + # attempt to install it into project library + dir.create(library, showWarnings = FALSE, recursive = TRUE) + output <- renv_bootstrap_install_impl(library, tarball) + + # check for successful install + status <- attr(output, "status") + if (is.null(status) || identical(status, 0L)) + return(status) + + # an error occurred; report it + header <- "installation of renv failed" + lines <- paste(rep.int("=", nchar(header)), collapse = "") + text <- paste(c(header, lines, output), collapse = "\n") + stop(text) + + } + + renv_bootstrap_install_impl <- function(library, tarball) { + + # invoke using system2 so we can capture and report output + bin <- R.home("bin") + exe <- if (Sys.info()[["sysname"]] == "Windows") "R.exe" else "R" + R <- file.path(bin, exe) + + args <- c( + "--vanilla", "CMD", "INSTALL", "--no-multiarch", + "-l", shQuote(path.expand(library)), + shQuote(path.expand(tarball)) + ) + + system2(R, args, stdout = TRUE, stderr = TRUE) + + } + + renv_bootstrap_platform_prefix_default <- function() { + + # read version component + version <- Sys.getenv("RENV_PATHS_VERSION", unset = "R-%v") + + # expand placeholders + placeholders <- list( + list("%v", format(getRversion()[1, 1:2])), + list("%V", format(getRversion()[1, 1:3])) + ) + + for (placeholder in placeholders) + version <- gsub(placeholder[[1L]], placeholder[[2L]], version, fixed = TRUE) + + # include SVN revision for development versions of R + # (to avoid sharing platform-specific artefacts with released versions of R) + devel <- + identical(R.version[["status"]], "Under development (unstable)") || + identical(R.version[["nickname"]], "Unsuffered Consequences") + + if (devel) + version <- paste(version, R.version[["svn rev"]], sep = "-r") + + version + + } + + renv_bootstrap_platform_prefix <- function() { + + # construct version prefix + version <- renv_bootstrap_platform_prefix_default() + + # build list of path components + components <- c(version, R.version$platform) + + # include prefix if provided by user + prefix <- renv_bootstrap_platform_prefix_impl() + if (!is.na(prefix) && nzchar(prefix)) + components <- c(prefix, components) + + # build prefix + paste(components, collapse = "/") + + } + + renv_bootstrap_platform_prefix_impl <- function() { + + # if an explicit prefix has been supplied, use it + prefix <- Sys.getenv("RENV_PATHS_PREFIX", unset = NA) + if (!is.na(prefix)) + return(prefix) + + # if the user has requested an automatic prefix, generate it + auto <- Sys.getenv("RENV_PATHS_PREFIX_AUTO", unset = NA) + if (is.na(auto) && getRversion() >= "4.4.0") + auto <- "TRUE" + + if (auto %in% c("TRUE", "True", "true", "1")) + return(renv_bootstrap_platform_prefix_auto()) + + # empty string on failure + "" + + } + + renv_bootstrap_platform_prefix_auto <- function() { + + prefix <- tryCatch(renv_bootstrap_platform_os(), error = identity) + if (inherits(prefix, "error") || prefix %in% "unknown") { + + msg <- paste( + "failed to infer current operating system", + "please file a bug report at https://github.com/rstudio/renv/issues", + sep = "; " + ) + + warning(msg) + + } + + prefix + + } + + renv_bootstrap_platform_os <- function() { + + sysinfo <- Sys.info() + sysname <- sysinfo[["sysname"]] + + # handle Windows + macOS up front + if (sysname == "Windows") + return("windows") + else if (sysname == "Darwin") + return("macos") + + # check for os-release files + for (file in c("/etc/os-release", "/usr/lib/os-release")) + if (file.exists(file)) + return(renv_bootstrap_platform_os_via_os_release(file, sysinfo)) + + # check for redhat-release files + if (file.exists("/etc/redhat-release")) + return(renv_bootstrap_platform_os_via_redhat_release()) + + "unknown" + + } + + renv_bootstrap_platform_os_via_os_release <- function(file, sysinfo) { + + # read /etc/os-release + release <- utils::read.table( + file = file, + sep = "=", + quote = c("\"", "'"), + col.names = c("Key", "Value"), + comment.char = "#", + stringsAsFactors = FALSE + ) + + vars <- as.list(release$Value) + names(vars) <- release$Key + + # get os name + os <- tolower(sysinfo[["sysname"]]) + + # read id + id <- "unknown" + for (field in c("ID", "ID_LIKE")) { + if (field %in% names(vars) && nzchar(vars[[field]])) { + id <- vars[[field]] + break + } + } + + # read version + version <- "unknown" + for (field in c("UBUNTU_CODENAME", "VERSION_CODENAME", "VERSION_ID", "BUILD_ID")) { + if (field %in% names(vars) && nzchar(vars[[field]])) { + version <- vars[[field]] + break + } + } + + # join together + paste(c(os, id, version), collapse = "-") + + } + + renv_bootstrap_platform_os_via_redhat_release <- function() { + + # read /etc/redhat-release + contents <- readLines("/etc/redhat-release", warn = FALSE) + + # infer id + id <- if (grepl("centos", contents, ignore.case = TRUE)) + "centos" + else if (grepl("redhat", contents, ignore.case = TRUE)) + "redhat" + else + "unknown" + + # try to find a version component (very hacky) + version <- "unknown" + + parts <- strsplit(contents, "[[:space:]]")[[1L]] + for (part in parts) { + + nv <- tryCatch(numeric_version(part), error = identity) + if (inherits(nv, "error")) + next + + version <- nv[1, 1] + break + + } + + paste(c("linux", id, version), collapse = "-") + + } + + renv_bootstrap_library_root_name <- function(project) { + + # use project name as-is if requested + asis <- Sys.getenv("RENV_PATHS_LIBRARY_ROOT_ASIS", unset = "FALSE") + if (asis) + return(basename(project)) + + # otherwise, disambiguate based on project's path + id <- substring(renv_bootstrap_hash_text(project), 1L, 8L) + paste(basename(project), id, sep = "-") + + } + + renv_bootstrap_library_root <- function(project) { + + prefix <- renv_bootstrap_profile_prefix() + + path <- Sys.getenv("RENV_PATHS_LIBRARY", unset = NA) + if (!is.na(path)) + return(paste(c(path, prefix), collapse = "/")) + + path <- renv_bootstrap_library_root_impl(project) + if (!is.null(path)) { + name <- renv_bootstrap_library_root_name(project) + return(paste(c(path, prefix, name), collapse = "/")) + } + + renv_bootstrap_paths_renv("library", project = project) + + } + + renv_bootstrap_library_root_impl <- function(project) { + + root <- Sys.getenv("RENV_PATHS_LIBRARY_ROOT", unset = NA) + if (!is.na(root)) + return(root) + + type <- renv_bootstrap_project_type(project) + if (identical(type, "package")) { + userdir <- renv_bootstrap_user_dir() + return(file.path(userdir, "library")) + } + + } + + renv_bootstrap_validate_version <- function(version, description = NULL) { + + # resolve description file + # + # avoid passing lib.loc to `packageDescription()` below, since R will + # use the loaded version of the package by default anyhow. note that + # this function should only be called after 'renv' is loaded + # https://github.com/rstudio/renv/issues/1625 + description <- description %||% packageDescription("renv") + + # check whether requested version 'version' matches loaded version of renv + sha <- attr(version, "sha", exact = TRUE) + valid <- if (!is.null(sha)) + renv_bootstrap_validate_version_dev(sha, description) + else + renv_bootstrap_validate_version_release(version, description) + + if (valid) + return(TRUE) + + # the loaded version of renv doesn't match the requested version; + # give the user instructions on how to proceed + dev <- identical(description[["RemoteType"]], "github") + remote <- if (dev) + paste("rstudio/renv", description[["RemoteSha"]], sep = "@") + else + paste("renv", description[["Version"]], sep = "@") + + # display both loaded version + sha if available + friendly <- renv_bootstrap_version_friendly( + version = description[["Version"]], + sha = if (dev) description[["RemoteSha"]] + ) + + fmt <- heredoc(" + renv %1$s was loaded from project library, but this project is configured to use renv %2$s. + - Use `renv::record(\"%3$s\")` to record renv %1$s in the lockfile. + - Use `renv::restore(packages = \"renv\")` to install renv %2$s into the project library. + ") + catf(fmt, friendly, renv_bootstrap_version_friendly(version), remote) + + FALSE + + } + + renv_bootstrap_validate_version_dev <- function(version, description) { + + expected <- description[["RemoteSha"]] + if (!is.character(expected)) + return(FALSE) + + pattern <- sprintf("^\\Q%s\\E", version) + grepl(pattern, expected, perl = TRUE) + + } + + renv_bootstrap_validate_version_release <- function(version, description) { + expected <- description[["Version"]] + is.character(expected) && identical(c(expected), c(version)) + } + + renv_bootstrap_hash_text <- function(text) { + + hashfile <- tempfile("renv-hash-") + on.exit(unlink(hashfile), add = TRUE) + + writeLines(text, con = hashfile) + tools::md5sum(hashfile) + + } + + renv_bootstrap_load <- function(project, libpath, version) { + + # try to load renv from the project library + if (!requireNamespace("renv", lib.loc = libpath, quietly = TRUE)) + return(FALSE) + + # warn if the version of renv loaded does not match + renv_bootstrap_validate_version(version) + + # execute renv load hooks, if any + hooks <- getHook("renv::autoload") + for (hook in hooks) + if (is.function(hook)) + tryCatch(hook(), error = warnify) + + # load the project + renv::load(project) + + TRUE + + } + + renv_bootstrap_profile_load <- function(project) { + + # if RENV_PROFILE is already set, just use that + profile <- Sys.getenv("RENV_PROFILE", unset = NA) + if (!is.na(profile) && nzchar(profile)) + return(profile) + + # check for a profile file (nothing to do if it doesn't exist) + path <- renv_bootstrap_paths_renv("profile", profile = FALSE, project = project) + if (!file.exists(path)) + return(NULL) + + # read the profile, and set it if it exists + contents <- readLines(path, warn = FALSE) + if (length(contents) == 0L) + return(NULL) + + # set RENV_PROFILE + profile <- contents[[1L]] + if (!profile %in% c("", "default")) + Sys.setenv(RENV_PROFILE = profile) + + profile + + } + + renv_bootstrap_profile_prefix <- function() { + profile <- renv_bootstrap_profile_get() + if (!is.null(profile)) + return(file.path("profiles", profile, "renv")) + } + + renv_bootstrap_profile_get <- function() { + profile <- Sys.getenv("RENV_PROFILE", unset = "") + renv_bootstrap_profile_normalize(profile) + } + + renv_bootstrap_profile_set <- function(profile) { + profile <- renv_bootstrap_profile_normalize(profile) + if (is.null(profile)) + Sys.unsetenv("RENV_PROFILE") + else + Sys.setenv(RENV_PROFILE = profile) + } + + renv_bootstrap_profile_normalize <- function(profile) { + + if (is.null(profile) || profile %in% c("", "default")) + return(NULL) + + profile + + } + + renv_bootstrap_path_absolute <- function(path) { + + substr(path, 1L, 1L) %in% c("~", "/", "\\") || ( + substr(path, 1L, 1L) %in% c(letters, LETTERS) && + substr(path, 2L, 3L) %in% c(":/", ":\\") + ) + + } + + renv_bootstrap_paths_renv <- function(..., profile = TRUE, project = NULL) { + renv <- Sys.getenv("RENV_PATHS_RENV", unset = "renv") + root <- if (renv_bootstrap_path_absolute(renv)) NULL else project + prefix <- if (profile) renv_bootstrap_profile_prefix() + components <- c(root, renv, prefix, ...) + paste(components, collapse = "/") + } + + renv_bootstrap_project_type <- function(path) { + + descpath <- file.path(path, "DESCRIPTION") + if (!file.exists(descpath)) + return("unknown") + + desc <- tryCatch( + read.dcf(descpath, all = TRUE), + error = identity + ) + + if (inherits(desc, "error")) + return("unknown") + + type <- desc$Type + if (!is.null(type)) + return(tolower(type)) + + package <- desc$Package + if (!is.null(package)) + return("package") + + "unknown" + + } + + renv_bootstrap_user_dir <- function() { + dir <- renv_bootstrap_user_dir_impl() + path.expand(chartr("\\", "/", dir)) + } + + renv_bootstrap_user_dir_impl <- function() { + + # use local override if set + override <- getOption("renv.userdir.override") + if (!is.null(override)) + return(override) + + # use R_user_dir if available + tools <- asNamespace("tools") + if (is.function(tools$R_user_dir)) + return(tools$R_user_dir("renv", "cache")) + + # try using our own backfill for older versions of R + envvars <- c("R_USER_CACHE_DIR", "XDG_CACHE_HOME") + for (envvar in envvars) { + root <- Sys.getenv(envvar, unset = NA) + if (!is.na(root)) + return(file.path(root, "R/renv")) + } + + # use platform-specific default fallbacks + if (Sys.info()[["sysname"]] == "Windows") + file.path(Sys.getenv("LOCALAPPDATA"), "R/cache/R/renv") + else if (Sys.info()[["sysname"]] == "Darwin") + "~/Library/Caches/org.R-project.R/R/renv" + else + "~/.cache/R/renv" + + } + + renv_bootstrap_version_friendly <- function(version, shafmt = NULL, sha = NULL) { + sha <- sha %||% attr(version, "sha", exact = TRUE) + parts <- c(version, sprintf(shafmt %||% " [sha: %s]", substring(sha, 1L, 7L))) + paste(parts, collapse = "") + } + + renv_bootstrap_exec <- function(project, libpath, version) { + if (!renv_bootstrap_load(project, libpath, version)) + renv_bootstrap_run(project, libpath, version) + } + + renv_bootstrap_run <- function(project, libpath, version) { + tryCatch( + renv_bootstrap_run_impl(project, libpath, version), + error = function(e) { + msg <- paste( + "failed to bootstrap renv: the project will not be loaded.", + paste("Reason:", conditionMessage(e)), + "Use `renv::activate()` to re-initialize the project.", + sep = "\n" + ) + warning(msg, call. = FALSE) + } + ) + } + + renv_bootstrap_run_impl <- function(project, libpath, version) { + + # perform bootstrap + bootstrap(version, libpath) + + # exit early if we're just testing bootstrap + if (!is.na(Sys.getenv("RENV_BOOTSTRAP_INSTALL_ONLY", unset = NA))) + return(TRUE) + + # try again to load + if (requireNamespace("renv", lib.loc = libpath, quietly = TRUE)) { + return(renv::load(project = project)) + } + + # failed to download or load renv; warn the user + msg <- c( + "Failed to find an renv installation: the project will not be loaded.", + "Use `renv::activate()` to re-initialize the project." + ) + + warning(paste(msg, collapse = "\n"), call. = FALSE) + + } + + renv_bootstrap_cache_version <- function() { + # NOTE: users should normally not override the cache version; + # this is provided just to make testing easier + Sys.getenv("RENV_CACHE_VERSION", unset = "v5") + } + + renv_bootstrap_cache_version_previous <- function() { + version <- renv_bootstrap_cache_version() + number <- as.integer(substring(version, 2L)) + paste("v", number - 1L, sep = "") + } + + renv_json_read <- function(file = NULL, text = NULL) { + + jlerr <- NULL + + # if jsonlite is loaded, use that instead + if ("jsonlite" %in% loadedNamespaces()) { + + json <- tryCatch(renv_json_read_jsonlite(file, text), error = identity) + if (!inherits(json, "error")) + return(json) + + jlerr <- json + + } + + # otherwise, fall back to the default JSON reader + json <- tryCatch(renv_json_read_default(file, text), error = identity) + if (!inherits(json, "error")) + return(json) + + # report an error + if (!is.null(jlerr)) + stop(jlerr) + else + stop(json) + + } + + renv_json_read_jsonlite <- function(file = NULL, text = NULL) { + text <- paste(text %||% readLines(file, warn = FALSE), collapse = "\n") + jsonlite::fromJSON(txt = text, simplifyVector = FALSE) + } + + renv_json_read_patterns <- function() { + + list( + + # objects + list("{", "\t\n\tobject(\t\n\t", TRUE), + list("}", "\t\n\t)\t\n\t", TRUE), + + # arrays + list("[", "\t\n\tarray(\t\n\t", TRUE), + list("]", "\n\t\n)\n\t\n", TRUE), + + # maps + list(":", "\t\n\t=\t\n\t", TRUE), + + # newlines + list("\\u000a", "\n", FALSE) + + ) + + } + + renv_json_read_envir <- function() { + + envir <- new.env(parent = emptyenv()) + + envir[["+"]] <- `+` + envir[["-"]] <- `-` + + envir[["object"]] <- function(...) { + result <- list(...) + names(result) <- as.character(names(result)) + result + } + + envir[["array"]] <- list + + envir[["true"]] <- TRUE + envir[["false"]] <- FALSE + envir[["null"]] <- NULL + + envir + + } + + renv_json_read_remap <- function(object, patterns) { + + # repair names if necessary + if (!is.null(names(object))) { + + nms <- names(object) + for (pattern in patterns) + nms <- gsub(pattern[[2L]], pattern[[1L]], nms, fixed = TRUE) + names(object) <- nms + + } + + # repair strings if necessary + if (is.character(object)) { + for (pattern in patterns) + object <- gsub(pattern[[2L]], pattern[[1L]], object, fixed = TRUE) + } + + # recurse for other objects + if (is.recursive(object)) + for (i in seq_along(object)) + object[i] <- list(renv_json_read_remap(object[[i]], patterns)) + + # return remapped object + object + + } + + renv_json_read_default <- function(file = NULL, text = NULL) { + + # read json text + text <- paste(text %||% readLines(file, warn = FALSE), collapse = "\n") + + # convert into something the R parser will understand + patterns <- renv_json_read_patterns() + transformed <- text + for (pattern in patterns) + transformed <- gsub(pattern[[1L]], pattern[[2L]], transformed, fixed = TRUE) + + # parse it + rfile <- tempfile("renv-json-", fileext = ".R") + on.exit(unlink(rfile), add = TRUE) + writeLines(transformed, con = rfile) + json <- parse(rfile, keep.source = FALSE, srcfile = NULL)[[1L]] + + # evaluate in safe environment + result <- eval(json, envir = renv_json_read_envir()) + + # fix up strings if necessary -- do so only with reversible patterns + patterns <- Filter(function(pattern) pattern[[3L]], patterns) + renv_json_read_remap(result, patterns) + + } + + + # load the renv profile, if any + renv_bootstrap_profile_load(project) + + # construct path to library root + root <- renv_bootstrap_library_root(project) + + # construct library prefix for platform + prefix <- renv_bootstrap_platform_prefix() + + # construct full libpath + libpath <- file.path(root, prefix) + + # run bootstrap code + renv_bootstrap_exec(project, libpath, version) + + invisible() + +}) diff --git a/renv/settings.json b/renv/settings.json new file mode 100644 index 0000000..46f2f31 --- /dev/null +++ b/renv/settings.json @@ -0,0 +1,21 @@ +{ + "bioconductor.version": null, + "external.libraries": [], + "ignored.packages": [], + "lockfile.sanitize": true, + "package.dependency.fields": [ + "Imports", + "Depends", + "LinkingTo" + ], + "ppm.enabled": null, + "ppm.ignored.urls": [], + "r.version": null, + "snapshot.dev": false, + "snapshot.type": "implicit", + "use.cache": true, + "vcs.ignore.cellar": true, + "vcs.ignore.library": true, + "vcs.ignore.local": true, + "vcs.manage.ignores": true +} diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..7e59311 --- /dev/null +++ b/requirements.txt @@ -0,0 +1 @@ +pandas==2.3.3 \ No newline at end of file From 8843669bf3dc8d8196e9415b7def0c2dd881385d Mon Sep 17 00:00:00 2001 From: Gatz FO Date: Wed, 24 Jun 2026 15:02:36 +0000 Subject: [PATCH 43/44] added folder content table --- README.md | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 8c6a894..f0b5b5a 100644 --- a/README.md +++ b/README.md @@ -51,5 +51,25 @@ versions. (with the new Python version). ## Deployment +This project can be deployed in Posit connect using Posit Publisher Positron extension. Go to the following repo [vscode_prep](https://github.com/Public-Health-Scotland/vscode_prep) and go to Deployment folder. This folder contains general steps to deploy a project. -This project can be deployed in Posit connect. You will need an API token and the URL if it has already been installed. +- You will need an API token to authenticate your permissions (Viewer/Publisher) in Posit Connect +- Ask for the current Posit connect project URL if it has already been deployed. +- Check Folder content table to see which files are required for deployment (if you upload everythin you will waste space) + +### Folder content + +This project contains the following folders and files: + +| Folder/File | Description | To deploy | On GitHub | +|--------------|-----------------------------|--------------|--------------| +| data/ | This folder contains all CSV files used in this project | ✅ | ✅ | +| images/ | This folder contains all required images | ✅ | ✅ | +| css/ | This folder contains CSS to style the project | ✅ | ✅ | +| .gitignore | This file contains a list of files/folders which are not uploaded to GitHub | ❌ | ✅ | +| intro.Rmd | This is the entry point file which contains the main R shiny application | ✅ | ✅ | +| README.md | This file contains the project description | ❌ | ✅ | +| requirements.txt | This file is essencial to create your Python virtual environment using Reticulate R package | ✅ | ✅ | +| .Rprofile | R project file generated by R studio | ❌ | ✅ | +| renv/ and renv.lock | R environmet to recreated needed packages | ❌ | ✅ | +| .posit | Temporary folder created when using posit publisher extension for deployment | ❌ | ❌ | From 98d7cb389eb63f9a4f154989bb893e4a73584dc8 Mon Sep 17 00:00:00 2001 From: Tina815 Date: Thu, 25 Jun 2026 10:56:57 +0000 Subject: [PATCH 44/44] fix typo --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index f0b5b5a..b7df928 100644 --- a/README.md +++ b/README.md @@ -55,7 +55,7 @@ This project can be deployed in Posit connect using Posit Publisher Positron ext - You will need an API token to authenticate your permissions (Viewer/Publisher) in Posit Connect - Ask for the current Posit connect project URL if it has already been deployed. -- Check Folder content table to see which files are required for deployment (if you upload everythin you will waste space) +- Check Folder content table to see which files are required for deployment (if you upload everything you will waste space) ### Folder content

sqi+VCAGGu!ulpM8s7PVl-k+)ytZz=u|~9d<*r@u})^MA6$^Q3OZ@ zb@AG@{=rD4=Es&<1opX_;@SM+Ye2U6VoRn?Cg|qw%ZZhe@i2ruO~rFG$<%hR9J?On zG@I{4GHp2nm}wuW=J{KfnuB&1^zEo4HBq~m3Bsl4Na|r-^rBmbx^P62pPAa?B2TGt z!n*(7=F%f!PHW|h?A?POZzT-gFK2t|gu8iR)zigW@6;*O>({5aWW1D{o11r6oRrFc z{dyj7fsLJ=R0rR$@bUG9{P=WCQbM9B);`gcQN7ILqu{p9ddc^@^~n-h)+5klU#?+u zXKE>lA|%f1Nnk zSHLV0KFZOjBqpj^c?eIIwqlA8$j55Pfw%v#Cf)W_pG>kd@}JYcnla*J%fd0J#tp4_ zP2UGuj_&&SjJAh&D0+CL$@+CGT;te0*eq583R#q*P}WD@iRQ)J@+^-QknQep`eu**?>Cn$8y%B|~`Jr8k+non0No3LG+}TN~j}En!sh?XM)@3v9 z!phuNM*Nx^^#$onLo;`?cZTE*I38VB<>`>pWl>xjiDZ!r_*7kQN0{8*p#(U?jpO~C z!&N-@4leII7Sos#X>>l-QFm)fSjg%Iwn)KtXUmh5f#K9kMU4F}uTJ;1stby63mgmS z)(H7ZwEdi~$coqC`}4gMqH+T2ozu(=O9uTPpUExH!BXX)zluXgUNn%$oz|+v=T>xEM@inMlm`zWC3^i*@}y$DLxi>GWcHXs}!Bouf^TD2ii8n6aU5n5HM=6+FZyixbUB-mT@s zn_A|IRpL9G0j70IA7`B2Qg@G&OhBD0Cs4X22zI>IV1 z$v2xo#OPnZ;~{mHHQky(<%=fykr5Jtm6m8(Hnn@hlyPkz3lU(;@Mtu`_BAIsS(04f zmspyUA5ChUMBEx7IeS_W#GBjiL_$dAfFZQ0g`Qn(-s&(V)cZ9;_{Ew0j00&rhF>Aaq97&^*;Yv8c^YFHh{E zl@30Dry2lZ(#(#TwoB+Cz8M>XkGJ*Lo9op~Sz81tB_@^h1^=>f2}!63{|$(VIJ^9|61bVOg(C z;!uA=P&1aEwki1jVxbS`ibjF)Ym^Nc(r*t(wBWNz={>X>)KiFf7G|+q(;ouimT7zp zsOAT8!KRNY#kaiQEz>Y_na(^TJzjWsGT2+4-L99~)zUnUiG>~l9t%TjwJHj4B4ouK zNNyraCS1>c6#KyZG#f=tIfJy)k`5fJou43*B^6<$EHSf2Kw=aRQ~kq->=kZf7bdo< zgX>$2PEE-f5@*;A6lSu~RQ|-YdW;{9qfez}N^S(AMe|MhELKY9IrnZhBqKyuZv4+h z1tEa4@4_*Q_Uobc3NPlz++JlZHhZ-;APIT(yW4z^qAXTIgNA>9ga|H z3#yZfri=$2m_j+<;nRK@xcHp6ri0gqc0yo_S4&9ZF!O@ zA$K6R-Bw>vlnB)6(%PMcL}2~w6oq+l3J9PQ?M(X zj2YgAd?WcfHd!2pq>nd{mnVAbr@m?@G&)&>I>{AT8y5A&FnhbQ+GY<-;40jxsS#N> zX4g`S!cUX{j?d$MqvQ3n(M}VzO%VxBK{Nqy>v3sUe-LxZeO-X%Q-%stEOuEmXdY zt(J#hTCwkFcQq~vK$L^`3B0N6@)blIJb(LBRbGsL7`CiXdp@v^)*F<357O6bkGDsj z@oVsh_&>``$TgF0tlH9(YJ`{$<2^E}vO;s)mo54g5!ERvIbDy5y>oIn%kgc$YEOXQ zf_H6{-Zh~Q-AQv3-|a1(1OY3!1x?MuB0q(4O+5=`saB~Jd!QzsglXuv$BXS`Yo}pU zTIhZyODpXPPwx(MB~spSKLSHH_c~|&*}Et9X-ZY>HuwS!%dG6lAA5UJNY$;SBB$^? zApu57&k`%bF#uGU0Q!#>Yidt@Y$%%eZs{LKUn;6Oc;RnBe^jMzd@?#>$iJ= zJ%c&)k5NnH;aOduAWW~#&l4l1XPyvz4?i@7l8^bkcv;$N%|k1zYH4^h;7g9A%a@*I zWVn85nskieoe8#g+UNC6k?H)1D;Zmma}3G@*FIYFXbo3AW`d~OSGTX*z!o~jv&Wit zQT+QqB55r-g^aJ?w(W()XG!T4C{atD)6v|Ey1F*GTk1Dm4@R_jU0&ukV6M)R+!9=D zll)=`k^_HG&n=!Hj9b{f4a)eH%fRsB1OQJkB=3INc24g}T5$RceDvGBtIwPl{(FAD z^!G{~u{rdPa$m}4fV_@WG!5-u^^ulKHIVz^!^z83}pyUq}}eUCA`_#6!Y!moCGd>~f( zNeT3o#T5DHD)o|;t#Jbac5z$nCe?pA;*~-stWPR?LLUz2kYko4#W@MT*euvcT~`HG znXrM;3=Douz!*OLxkb3bxW1$2dX@GF_@;=W(#uMOM5kNO3pVN36z4Izr~ z6j(vG?O_>0*wQcXFf8B#gTl|tUMaUH;%E&%9dwj%W#vxMBA?{HJ{{4T3$^@rQhGY8ePclO4)$diBH&(MAG zBJ$Ip_t%#SAdl9xxf9Wq4R4%qg} z=#0kK6~ra!4eJXqvA&no60r3FS$Ow2q!SC7MMi&%+D%jbi4J+8dxTb&-a5l9xmO~Z zE9?U9;y9mO2F3(J=bJwoqoN!l_Ku`J}$VFdhhQWKVAR%Kf{+e?X+#$ z0;-o;I5lp|7=h);GCEhJ?r!ali0kV2z9JA9!`fAGW1QjVHZOImCt_<<4JFr`2o-lG z^$@!uvaU)Y8WaFC#G;`1x|hdp{J+AM{(AnWK}qjlDy!4YBMOs-|HqiHziw4-sZA;= zBH8`@-V6-?_n5Z-4`E{eYcSmZ&;BtKR+96iVwhs=+L?B0b!MszYjVrZY6w?`MYWE7 zbcht}FfIFank@ZqbRV#xuwOzRW1BT8&3t0!=oBwVxoeD(eaM)AF%4^Ptti|JndiCm zA%pA3!PvQkVg-kwK{~IL5aO#~6X!P>Yp}pT8W7EJRKw&g@WatEbNY zutMP=>4s$c6rzD;YWmw8+^Axh?piNDo#%S7;ok*1Rg$YSn%k^AHq}`MeVP!_zqbsICbzX*4Fu z#rCUX;A(7yIM>L(!+grHRHFj^(Qpoja!6gszC1A4usVq-^ZY)FDL}ipVjkh?ew9}* zrTMrSt&Y%KpJ9yRg=EadJM@dd&|kvf{o=l%GT~O_&#L@aMgP8Yo)RfZ<*(yGt<@^W zpevINYGYN|<(QX5LAt&vX43wuF}*-cheaDZor-j=-$3phOPw|>Z(-83n*aCR{s&|4 z0o7F2#g979XTipdiYN$-N>LDyE+C*%LkqoxrgRc|m2OA61nIp)Lg=9f6a}P9Nq|5= z=@1CgYv7&e%sB7=)_dz^QBrR1J$Ij7&)NI8(*xUmGAk|BUJytI>~$;-BSjmqC%bKl z-elsL3l)yxFkiB2iXX@X9=EbVP`PVeQkV#D3x8#3eL1ue(PXa1DB#zgmofJ#i1Opt zgUhi#ap?5^1P<7DoH7QD(f+u3T*SUuyGt7n^O&{bPW{TaSc1S>Lz9bgl9oOo))PScZzB4jg><4I$pI5}9g{1s4L$t2bEF7AIw%Yn~Oz>ZVJUzH|I+&=1 z*%FHv(W4ygZ&52YETxRo{$PyZ@v%vT3CXP_=S6#q9V>qp2Y>OMhnua>5 z5x~e{F~cqx9i#zN@Et-k}=W61{fdTlQ0I<6vacCP*k}>Xofj)1)mPZ zK01c^Pa^NS3`uq1c*Rs^rU8QJ0PWPp)V*0M%Hh7^)c7WUGqnJ=ZEXH06cisXF5|gl z(JW?}IbIx>g3Y_%5(XhoMgSldhdVE~Vfsd|}X}{6BIO z>A|CEB>gyfLtpM}QgohOP8;`St3y(D3)lJC+^Jv%k>S8SDz|cSQaapCwh%q_{>pR_ z*n0Tq@ujLZDxa6I{&ak|4iYZo+NG{>Gw`0Ol=-vH~+Vn9J zJCA)3UVZ`F6%L~$CfU|7jaMFS@;E#0Iv9uYpF({J=pD_+2bY_~qI+3$2{L@55&xQE zutRo&q%@E_I~F(T;P^WuZ+{sbUAd%KhOr9YsZXY&j%G=B{%vXpR_&0cDg&YcPFV{} z2O)}T{m&IU7@#;$&h%BqIMk3M&NttbdAZ0V<`+4iKD!|qOstPG;WF{!CG^cQS@2VZ zxOMdFvO`xaRCG!)>I_1Qw=o0Tom#x3F&ZcTAtSifJ4bf7EIh;@kX1Xs!`KaHUvHj) z@*L`da~y_Q5qAlCx?_5a%IlX3)_utXe~hKCmQO;6l`OijC(SJ{kz?%)B_}Gvg>Q|` z|B}5U>o{=ILG+FZ8G3m4n28(CL1(zI8P>>?TG%D?I8k{S-Aj3afjb1h7VtpTuL&NT z6o+A#V8zYl?eCNm^-jT)af@|bu;s-6pvC(aFb5MA@Hi{6g0r@(QbogUi!e;Hmwv&R z=|F58fUoJDOUGz3vl-;#3p~C3jP6es%G_|m-x~Y&e-12Xx|n$Di{G)HTV7oocOFM@ z!@batmyR-s!#X@~$)tC%=4(Ik#a>FDPaW2r4{IwMZ&<`KK8h- zS}S4(kdoCfUYv;xtwWtwYV7h3B*AbD*NmS5gWB|0_p8kIfYxd zlqz2AgkROEQ~5V!IP%oA4=0CV!a7q$hnGx4`OI>(^y$=Y>US~O=(qlfml4+2hNhwM z#q5_h`l`KaW>QVl3%s0k%Bc@_elw{wPvPdQK7}@jamzL2^&F{ipgwHL`z3B)mfeLk zdFJa>uw#x`m_g>MNHbk|M_`#wbL&v?briKlM~%8mthkU5S`--c&lc<6j4kBtdv3!$ zyped-W`Qt^BZlH;r!+`F^Nm@MB_rPt4Al=D7oT56>0_lom=7~#Z)|#xYu4W$|}V8>)X2-iyR=SyhhN(&kK`C&!O%(qFs#o1R+)E zF;|UbO%MTQL0z?x#n)ehzwh+fF;h=#GSV8pD<*~-W>wJBI!HJ@@ck2zlGE0=(*eG! zPCyYUL=SnLxS0jWP4a04$#?%e=F-Yi^JB7G*h~st^luM}*7;7{YkaO>tYuRDfJ{lq zdW!agALVYqXc;m8#4z#Q9#O*S^(3I?$3J(Utp4XbpyHw5hh38g;^SDFnAtuH{ zs3x!tSb6Cpyi}r@;Are(3z82ud|bzG=RAgJke3@vLe&)O^tX&$ffejDPbc~kba?lV zkyw6N?8|q3_`o^q2ymB`yK0RE$|IY1cOSCq=6?+nhpoOpj=z#ch}FYVNSN14XW>I* z=_FqxJh6}4!V^7HUyuBI!dhOc&GL@X6;yZ;*V<&!?5nuvnH64n0S zX}$zEp7JJtNn>JvUvsBjhBN)E-2<8n=B(PVs@QDQt&BW}y;YW_M?2Z)_wF%LpPy9x zI@$4D;I0!F*lzcCK6<8b+y=F{r%T*6R|;RQEa>VT63qn}w#%a2>k|sP{*9_aFK+1m z0rFLT8LszF2hqXAcoQsY*E)eu+N(@m+A~`rV!dtFt@(2lllNjZ-ogsWL@xQ(ZSRB=ljO~^MT<6FPp1bc#c+b zu*xZml_`!_KKtXRu&d7}*Sp*z2#ip1ts6l*qfS4qnHE^ep*+1Zgz)Ch!nEL64 zaHDP5e%4y%g>%gF_v?7V1{~i-$7Nk;J=5=!EA*K@=OL%bq=AN{kK#0RWh z(Z+i@Q(ETWq{&L70;DFy+S)-}8h1rJAGP}?5q1tzWBJoT{0vqZXb0c$`R z3wr4c)Lt#=M#4u0gxTSJe&I@Pez2@hJLrhi-_=BC9+XQ5fRDPc zaf#|VsMsz4b0G9I(2^eq?{KjdbUe?>3^r6u)vJ-l9Yl&!D=7Y07T4|{haQo7_4l0r z)(S{hR$!qs#}+%3DB7C$;>5_tHhP)75lHdk`zbg+fBZcuM-P_zvxJ45BBL*crq_txc$%3_R#7@!Q;i~r>r0Z;78$wH^v2|sEDqOc@q7(`KU&@bxM!2Cv&S#`O`SL;LgkQNNr=lC+?>lO=-bHq z#5JzLCAF`xF9OOdJ~XCEC?gIq8m$rC(dUeUVP+K~OEV^Hb_apNc2M@6p^8a`>3RLQ zz=yM`elOiWN6qQ3OEs~v=nXq1R!FZup1Akp=8x9|U*LkzcBfF&fAsl-WIGPz_esaX?WIrcWkz#_s@^6?-Wyi>Mp*2 znDn!ayi>7PE%Ov#f?L0D8)PA$l=km*P7&cVs}b)thD#8`dxxTGVB5n-Q+!5Gwx#%WMM)E#baWYeI|7}w z9V6WHNpn4ctXj(5sM+7*r*fkfpm z$&WZDVsd&!(3lc~4pFDS41Z{$A0MC5WQY6eX2l++&BJz$%iSN+wf(d-v`-(sS?HHr zx)FIVb92-4ip9MwkRTL!Z}p9D>2G|Ag(my%764JhF6EM?xS^3LGo^$#oDOXrRhOL& z@JvUn0A424s=*D$*jvK6D;kp#(O=KbGn?$F`hq*vlkvTcAAqxdHkSR|lf+=k*$>5*F#(*{{ z`ouGPE(8z0B-6k%M6}Gi6znT8=$;yG1{h~^jz~8E@$hMEB(FK?MyX+N8o7UJhfc-1 zC%aGGXohprR3@$XzL0*c3T^yvvtP8>9zMQtwj)YmhEpLR;`QvVdo>C7a~723BRS!0 zf%`7FO(LT9>+{p2<-%6&7ioz$NcXuf*Lcku?#14#qi&Aii9~J)lcZ;1u4=*r3`RS4 zorox&2T2xQJxupA+lYN!vVan9_{8YPWtDAf_-|QTDUjMq!Zp@ohACAn{DoVfC;rF70zJVFjpK2&O zz4bgcQs$s~raJ}Q<2NJZvpb)+@&0#u+x5BL(jAcUp~&i;%}%TTI(znPsdt8k5-%?= zG8-_7)`v&8j}`Q0DUzR^VExh$mBG-yzq=aOSeQm#v?<;B9hyZjb#nobgmw|A0L^cF zZ=VC49?L@(&7~}>;BpR#6|wf?!AS80`8Yg8D3jRb*`C1n7Et$Ts{8kn-dz^91v2wN z2AUu;A7a*+#S=h{XjmtE2`>*@`yV#@`;e)!f7j^VKLvt|J&>cOqi^C7v%0#<&QnwC z{Ouv`d(&x&<@z;tkl*fCrVw`d8pP+2x`nmrNgZ0{umAph6I5P7XjKL3(mR%rKJVF- zJVw(e4^A`kg>m@1xw(mWQAU4DEe!AI>G6Ut5Hp{)G@A++2tf23GIF0VHglgj^Q9C{ zWva3%LoH^zC7S%TXQT7^@`cC;0@nPr+4%7|o><5Q*T=we_yc!3n56xlG`Xks~CG(<}Xl1=eQed^g{Vf=J>u~`&*k^a&@zBjWw5ctV*d-AiwJw-WiJ#GWqM@aOqKc z8$8n!kJ9DlHm`F@oCadu0OXLepOxl}#GUev;QRdC}nA9Wl0!oq?%uay;tJ2MlLd9lM!0io+33)pio38Zc$O8HjOoeqFQy4=2y* ziN}sEDNXn(S>Y59X>R2|Eylb#-+)-bn&| zxv_kBuw2USa`!4BGH~CbXUggD?KC?kXR(*~1WknGoZ@mnW?XPwn@Ob!OlyB<%w|0R zwshjZqGMOBu)@KEzr$bo?ncc>+TFVQzleJLH6SX79hj-z;hq3m<+&14{qDE_kplLX zDCWp)`Or&ti$kSMG6D4sJ6%qmw&IArHfTU5&@d)DJ3HLBZUtjAJ!*mS^dQ>hL6GOz zqzi3Qy%i9ILKj9dmk%d|N8Sj3X_N^{*riFMh5S7TnnjoUrn+i1AHQiXap-w7>bn7- zK+TBM2k*_j)~pQ4y3XEXuKMSzRD{n*6aSH0kjc>j%hW?Q98#Cbpjzx*p^Gi8Hjq5# zyX?W(k;qeAuLU>&VqZV9yX!-8?ck-DQ(G$1K1Elk@VA>I36%h9%1@ei>?&KSC|@>r z8noe2g753>=|saXJFb)|$G{8AM}Kn^IP4 zT=vq@@C&seSin1=)pfI?JGV8)uB>(M*8En8VwuOU3Gq?ZyMQgLy?-#xA6W3>1idm+ zdZ!J#KrnK`&-G@J-jP}d<6Prj$K0=q^9THc+JY$J*)+@1i5W4~4ue%wV0 zV0u>XsXzS>*3t$uWP{kzr>DS#7gSUXm>477f#$HAYze1HHGXW2&ms&4gH=5Kcs#{_ zbC@!L%y#RM($_b3dG-1%GbcpCeeSI^jp|W~ti6lF<)r3c{zJN1+g(lHCOWRUR9{MO zEU(eP=x8ChgN4Dy18h+pMIyy}CV@%Z)v|E04pbz^nfly%>5R`Xa;%Y`O?HcjkU4k)rm!YdNe?jy>`R7h z=4Lxj@xW5mc+vCc&tJ}~TeL>ts~R?VO}wXLD26{S0?a`TmkJUXGxz*~;7*SenuC_rw$oJB9aegBX;euzP#xJ^9px-@<%!fnF5H2rrv0K!RWW`^l4oUjdV#$wJck} zc1GRJU)NqgZ3r2ttg1p66hMF{LNQELzqcYs6At8huOi!gRU;MbteN_)$YX&`Kt@O` z-1J|KPIG5m8R+ZF^cwT#ikFl!(*sVP|E`MNUnq;sX8|nWtEB~UCUx#!jb&%? z2Gs#H-%Z{f)VbW0kugKAAM7n7dQzn**CF9o#kHi8sYDWmNXSSas&NvgmbtnUET|1W(K6z+DaaKGI`b?aD>lPlwzOq)nAt2zSAm1kU2t1 z55V@fa{ikqGUvI0*GFtD;7d!bqs4(Rq0nfLCF~%lYU64<57q~m7Zyp;$F(CPPK_9H zQJs2{sDpBR0Ci)KrstMicVc5N@fwuehf42c`|2r+vUnxuo?*V^OP#-xmv7ayQaX4j zYSqxfCUgt5vc2QHzdic&U-&QS{}=eLA9HZV1bF)c-6@i!XsK6x?>NP^P#ssT`i@SENszoMh&E~Dgx*cAPA$)>=0TRQc?Y?GH$(3g|5GGCERH)LXx8K;K73? z_aC=FqZ3U_lgii44mZpa#ocm!%Pcv9#(kHiKpKm7l9&@AD^eN-+?WxQ+Z-kw@QpRz zzM>fb)bsu+$Ta$!<=z(Av%`fbyW2oW2_&y^3{5G$di9D))IR@AjGh>gqMqtrp;Ogs}r9f;X9scgA?#e#-zAVpp8uLbij6L5SK)zuwH2RVeNXzt6=!AhXgq<~$g zX>s;j{QS^B;23ORi~ZHe1dJQwzZfYXLx2Mf_E2cN=sq2z50A&2d>=nN@WKGU4EP$9 zOwuYS%r`2=Z6>nY4V65u1!0Z{IIuSKmu|k_7>x(8M!i|sCoAUu6Bp9nvIEJS59Uh! z0{o0o`8o{nb35Yr2LS{GI|L{|U2pFig-B2L@BgN50T2KUV48sN<^c)3+P1K|4g8R- z*xQB^e6b>p`_udzi{(8FKuaOBGc&J~0uQMa^Is|hs4HGg-(Gpfc^bE!ewI~H6CmfBlb3z02DxfOE|L!uq@S~b3rou z8K!|$4~Q1qz?jChM6mD}LWm0sa1-Ap zEZy=i1$~4HA)Ln|E1bVI0dQrSA*Eqlm}6|m0}uT{L@*A5z4g2y*Jt0Qg193g!w{J3m> zzi+2&!3P_Zx@BcOWF-ovOp9E3$ITq->?&iW2Ma5k%y~!ZpZ)jpavMs(r=__Dy88O$ z#>2fv4;pYyZjz&xii(PTz|D(&K;5z%ny^Dbh$6~=`3xK^1t7D5zEc7nnM9$;01%|X zY3$o`xDN$O8GiTK?XsA#`-iH7eY1%<7nGGiOQL@svO19*a4QZ(o@zoS;OZ)hp${-V zG<^usGBr(Y@93}!ixN%tf%O4S3Et1@0w{`H*?Hrq0p+(ZI0W zpsZj2yB_t*(gC`{7<2c0jZ4fRL&tLJ(Cj{U!$`uDUk>$dp0vtOq>Hv?S`{@=b|s)R23c-!UQVy~k}+*Q1oy=>toZ2diiGKmfQ^G4(J~ ze6WYs45fYaRavuHVNOED%kTlXOOwQ|jz;pre`ws-pBGFl_FqD@x3#%&tV~3KD3JD& z(tJGX2SB-ou;HFDcE&QkuuHU&okth_Rk$w8yd!b`lrr++sU@XkJlnR-?G4I*qYbGOg{$(#ef*q5&I18$Dl2iJT;{235Ygc(Wppi!s^8GVI2~qD!@gg6hmz zd$;W$vI6rw%fTnyCC5i zxHz}@guMS`_`uwIMG#M{f&F(J0CuqwDvqpJCcsx}gs^^bb*gMXV{TgvB{GG?8YkZ2 zd3`+|vH$H6O2yi|#(HdW?&wbKMWbZ}IQH)2u&JY6#`Ao?attg_1QVqvmHX7mHV~M~ zaOK+#eU1LXyLD2OHcP;u$yb(-dTSLh<<|UKcs=4DD(8@P`7#Li`}Q#*Iq=z-O|oNT zN-_=K*AVmcU&Hw{;JKVbG4p+JpjJX9k;FFAH@8{6{C^9fcNxKoFg%^ZE^C6srkFFb zwfB@oDK8!vM8R}7)_#uYms3f71x3;tLUA)m-xFP#!1?M1e!c(jLk7IxrPZ#z zTB=J3jPoiR|M#D66j?nczs&O)Q=>~M#lKmK{>T@`fBnJ#H#pcIv;2ShgW(a4=cM_U zY%}B?_($@~%#lC03~9%{*HHY|Q3Egkzab`f*b~mSvZ6D;eYCj1KUSx|0ifiUH{w{bmyvQoRj*93oj0xlIC<{Z=J0eUc6U^zrB8X$B97 z3LG2?beSS$9!glt{apB0LCP(SZF=H-x1HN;*22Y3!*=}nczZU56CPy@3M{~`!r!}>;FGxro|&-%|H%SOkL%48RjU9P zrw_W}ntQ=feO#*~p?_HDEiE#_Z4itoZMTNkO4lg?Jet1t>JbrbT^@1If&ypg`(Ht+ zaj0V4XQ|Twp}))DPkTay`jOhFSa9~pKe-PrDS{CNHI zPZ?;-_V>$l?E`^6!^7*;jw^k1Y40MKSW*rigsyLn=hO~nI|RmpU{mGjk*AiR>cz-) z^62~rJaH~n!1iLn)WUpX0LA^-YEG_$3U)g~!7HQiW}-gIB~th7gah4?-$y}$uJf=} zVnEa9p=@W{6oL%S6kB&*dDE;sHh*>XDN`C>Kdz_7=3D^BnlgUfAZ7s|-U=cjW?mBD zOZSI+XaoF;jN|Isf9_7YXSX}tSK6vnbAw~r@Yp#>&`9=HQ{P9Kn1)7UIKmA_2fSF- zM=e%~Zu9nPn~G*ZvY>O^LCZS%ue}DV^1T5RJzKz z;Hn?T^!gtlQVN{oph8E5_=MbwQY~hTP0T|I?c}}ia#dDKe~rY-jkgr)<~ll|?MOy8 zdR?pW&_Co({dvcYVmRv$bv_v+8Xtl_%G$A&cT+Ux8se2~Om6kZ{SPe9Ml!dExkL`@ z#Mb?6mrd^eFK|^ve&4(5**`(MwjV!do?cGicOyScIAlZ$oUrT+xUyCnw)6QoNx84`b38pJd$Cn;=69Y&I|XZ_aMf=sEaO46 z!**rg721_7h#RT(cQALNBxeoIvNOstn-lR^H4*E!1eUnvj5i0pAm#BxTsE)Z=~UZ0 zk0l?}Rei93l0Kl@Yw8GZYKhN1YpotMt^MXl)4IglXzxeQZix#$3TdqEEF5uU;ZGR_mTcu;HL>nE22m?pfW$*DqS)TRf=FQofwZVqh*|YNU{-QOc@T z`B*Yl7~Nz~8i6wr-d!#ju(uU#xmqZMt~R^yH(Llioe;`vtFKgRxmt0)jIFIA@UOK6 zy@VK6$copFuq+6@{rHj$tAw?q@tijcRyd-?IxC^|>J834Q@Q3nwQi0^qo3c_+k z?1+&?yKkN}|E?mG3x2``>8basz`Fy^i?1CSU`L0gX*hT?Td4ZWw|bkrO35aXJ-!TK z+&z;P)<|n7uTx8UG`+M43H2l&Gf2?%$>+|WGSBv|gJ5CLDvN%Wo`?3BRfkT2Tv%R5#LT)vf)d26Kh z@dAWZd2aTx3~zshOG(76J$4M5k+d-<%lcTmJb$wOfa!OO6wFjIT~gwRM5?06>y%Nl zK12g8VhdDD$+E|0BomMKuuH;&i=l<3c4DzDRq`Er<()3${I#V-d(zk=rb?ZpW8D;u zMXNxeRwag9%A<8@kw1#l{?!w>%YjH$QfLHU6&NC&`SXY7c4$xtrR`7z?|l~nAB0kw{qF&&Lcg% zqSsXI8Bfcvm9`vCkj4M7}k=rE2|4jXO}~hg@QTTTk-VMB_Q5i2-4X?{7cJ>=qVRFLAaAFHp*p zcS7DY?SB*|V7;XsjG13rCYI#x(Vsfzm@n$#B(C2OZOZKDO$6D;Gmp@8PF@_(>Hc9jpF2gh#xpOxEL9Qi z_lShRc0UKxR#!mu->>bO;rtFmY)NQ=vj~aq&{w+jgllXfk0T5#8@h#?xyvRb-Yu1v zEX=?v6RlWgI3f-By`{!!)VB^M+F3&!s-puEG1<-C3(umn!?AA`b8p{2c}9fxf=tPFpNNI-PN^H#mpg{ea9-gs@zKGQN2FSYnqd1(8v5& z{*%UOyzDZb&~no-}d`&bdSAW zIH@AEUle$wi1ts0eYTtYp~_;M2CZnaq=z_vc*(L$F1Ag0phyVMOfF>QSzIxZ&>Yhl|}jG>eqA zh!Hq_@eW>6TT*6;YvX+Dhj6Z`rPBWh1NUqCxPl_2Kv1FOQb58uHKRaO^eok>uykLN7^2H(0z#wB_tkxpdI9$Xzt$RiMdi`r7nIoHo_+vnxTadgM2|o1t-^`m(wmZA0S~oH#J+29aWYL)vvty|Nw~{CS(eHndf}vs21v^m1%uU$@8GB^S z7G>@(Ht-PLdEk}RKQbP-GwYbZ+ZcVTQFCV7Lb8GF!5?yFijDce_ffjlMwHK9XJy^k z``xBa!A&W(CRqI=s-OIAR6C+9eI;W!(R)ilB$8XNxsnMi&2^4qVdea=!i~CBT|X!W zPT_X#Ts%Blh0pgf)z|?M{JcCZf_J0fh}+6ZlO9P6VkDjdIXn-a_I(H9X8$Xc>$~sg zs~uicIu>i2IJ`j39?M}t==#h*bZ~oTx8JL(MpeKNIgN8e;>bEK-uE4n7!mLlR}qPJ ztFDC8I#k!_CX7OhT$YE^3zXAI_KWBU7=Ag3%f|Okq)Ux(bc6 zo{Bq!5++f-&$ySf5>Fbubb7<_@SzbV{<^9M%*c034$o9ngsCt6Yo=%3-F3JC^_{wF39nr0%^op-s z2R(wqG^;C(Ls&vVA5#@Ajhs!_YsFc^dT5W4Bn}4dyXd+$_& zI`Wk-$^E}06B&Gp2m(^!%Xa=juSGyV5D_8?o;lkeUgUZXxa0C2SW&x=4ixG|&>9<}@0Bdxb@4%{ z$5P2)O*ul5pPOkmZU7XEjk-+?E-M9S%&sd69a^H+l{hp>C`L=~Dg^ zt%i$s8cP-wZ(Y<`dG>JauUcF6MKLlkROY@YUPdo>nvx*Up}T2-Bd&((?Aor^E4My( zd(loSOp_erK#PjqylywT-7#A3GYDO{h`e|gXZ#y4p*D_~z0wRbPf^JcQ`OJNo*6IJ zr3Ptz+c}N>1gmgwwr7}zY#8aOtSypdF$7M(rz2Mx)ZSKbP3_{Y*$ukB+EiLSA&iZT z^rD4@FGivil@+gEDvSHGR|+x_l5B*r`?4x1-xWWo9c*;VBty;lHDEi%Fd}$ zQH=Cxym92rA0{*MA-cGJRJ6$yOb@ApI;*BI^C(5HdBN#uV!64jdBfL7=%$fDySBnl zIoN!K$BHbTd25A(ps5rx`|Ca5lq~Ut2}R}sco?iozg;&v#p)Qhb0B?oSAG&NeCgz9 z7hdO4I}I0jFcCY?f)l{V;tY-{xTD{w7^zL~^AG>OIO&l%Q0{3@B;&k`kWBS7AArb?`F8m)fcRL{SB`ZN(yRt#{>nw-Mcpg zPc$8Sgi158fmd=#+FZpvG)hz@wS3x8t!L#(HQN-wAj3w&$o!tWFGi>z64!PRwYR&Y z7S3#p5nuACY!@$PDRQf<`bhSfjX>^ASR@9SQS8HP&`G0wW5pd~|682QDd+lDKe4ae z{|I~4qsXH55>`+PQW3NB;ghc{ckhlUd7^FuHe_)epl@4?cNgTI%^hHk8-i2eUJNE% z_utQlQmOvK@2vtnDU6YxQs3hPby@OCPtJ%UWJavN9@UdQfL7 z63g$r`QAp}#zU6kJsX##3)M+FyZIeHvY2r%E&;?{GVrZ2q6f|{7qDqYZ|4{$cLF6% zxl-IeH_i($Pt3=sD-nn!`PW^PDp)x1Tpp_}keO7hpZFi1vq~9hr=04?IfSS-wy(%`RX4thL}Zgp^7r<{FH}P+ z^_PPb&G~aaJBvr2_75H@;-OgwD&fb@MtoJ zyVps3`k6Kvyn8mc;s`BoKs347c$rb+W5>4K{eql_URGfQb4pjr@Ggz2HzTFrJfg+- zpVqiMSy@LNP$sk9z5X7(lkPSi`^O#G1|>-r=i?0M$+qR zXPtQ`=})y!OQLv4qb!Ilto=_|P@h0{k9aFJE6=!Al`S+RkIOO0jGhy*$d+dRS4>4T8%%_W-BY z7KhEO(j~>SE%5}sexiBvgXkwk$vE!ay7$zl56b2;8Qhg+68{ZRYpe)V z>e_PQ{F1G6VW86pWVIt;Z^G`k9gbI~rgH+XvrhB~P+@pZNb5z^N2MSqF*vS{##gnC zHof&$sL^WOvm;(SqkSmCi=0#35|;`{7JiT~fZ4QLm$`Hc3M4I>Hbc^%b4{txY6X3i zG6rSge)_#Gw&epo^??fVh5QG#+H<#ks>a}t?jN5uQJ$nyoMeumCyrmA9W1U`pY ztAY$H3n`AxHt&+gX=o{V$drz;FD+kTq{Dj(ZhAaZen{4l08Q_FO8HV7drjW=<+kY8 zkLBnYG2cL*(y?7yn{!zL+56i=XG#q&vdCk<{%`OKVRXoaC6LWCB{C<`?|HTtb4BUL z%V^X3R-y0^Gs)d1qCPV|*N>sAMDZr}n2xDYUdWXI>{5Q;Xyz-JRA8C4%q6W60oKV{ zmA?ASxzf_ShUk^YldFoCs<}8$HX1FbzLUGpu=Va{`WrYKZ}c8Fp@PRp?c@^NwW~mP zI13wcGac#6{jP~ch|eio!emcLuAs=j$Ln>SeVT?{2$t9j(L@$af*6>Y5F4#}K6_p?Jgwi(7o-XceTg*=q<}O#PLfT_I zDM;2L}3LcU@jyz;ia{cDsgg z_zpI6GjWJGnmXb`V{hIy)pAo}4q)TIWHb2j_{HkaQcjPCw@Jf^#?ECkMWgu|>}Jod zOrys1vN&vNRW_sgTif^xRyN$%>^tz=mDv_8w_vBogv!zYPEFC-q_~1l3RhbgKNnkz zIC}QH;X=HyxrAD3&PhCwN1InysoorXUB#s1Hh$E^(@|q`^&^~Es!JAol?jQpchTQn*sP z{((Rl@@6w^+fpe?^8rI3_Mu1yE#AuignLxEpRIlk@+z-KuQYqr?RmR?`NN*($b9?; zc=J>@cPwXTFj$j&SwRT6`xoHuK>#_pp3a{^JTyn?R~ifPrpFBW9pt@fm1bR#~IpXb3VIzdLjx!AS_ zNqcv8L>x6B<V}y^v0j0F zj&E+oX6<~U->#)vqa(&QwxUc`x481wVVIUKpKH&0nQ?d*Qeg)_Pt5a6q1Z9&dQ#kZ z{nU|1VIIT6(`dC3%9VnstP}x5v{{V1LU3#fKO`I=nz(oEE1YUP&2Hx#eI0o!Vtz5t zY+?2X*oEc9$H>fUW`2oLmSN>OIz~zB1S2F7L#M#xk^L@-3bQ#fXE;A4-(ZwOv~CL| z*bjG!#>QN{Wfo4{j5kS|)(6QpO40Y={p=9*cm(0>>>kO@XK+=jjhwGNn2)V8Eo?i+ zh}cp2b3Wdj*S}CJMMQCqm%--P1!m2hjLK3&Ee&n`>RC&ur&EF_ax?x7z<9w0a+zy? z*$%BS;X>GeChIBLYOO&SxOT&S^r(;}2SNpV;LsM>{SdQ@@(t+W_J35Wto~VlGTO~! zwIquBq$**m+#0^QoFrlT)<>fv25EMTt9Ew11l=lc^u&-Z<2|js3Ur<3=fe*?zM<