diff --git a/_quarto.yml b/_quarto.yml index 058c4a44..698bc3bc 100644 --- a/_quarto.yml +++ b/_quarto.yml @@ -1,9 +1,10 @@ project: type: website render: - - "**/index.qmd" + - "extensions/**/connect-extension.qmd" - contributing.qmd - extensions.qmd + - index.qmd website: diff --git a/contributing.qmd b/contributing.qmd index 14441a55..59faa023 100644 --- a/contributing.qmd +++ b/contributing.qmd @@ -5,11 +5,11 @@ title: Contributing Add your extension in the `extensions/` subdirectory. In addition to the extension code, include: -## `index.qmd` +## `connect-extension.qmd` A file that has the name of your extension, the categories it falls into, and a brief description -```{filename="index.qmd"} +```{filename="connect-extension.qmd"} --- title: extension title categories: diff --git a/extensions.qmd b/extensions.qmd index 0f6a97eb..9ad66078 100644 --- a/extensions.qmd +++ b/extensions.qmd @@ -2,5 +2,5 @@ title: Extensions listing: categories: true - contents: "extensions/**/index.qmd" + contents: "extensions/**/connect-extension.qmd" --- diff --git a/extensions/audit-api/index.qmd b/extensions/audit-api/connect-extension.qmd similarity index 100% rename from extensions/audit-api/index.qmd rename to extensions/audit-api/connect-extension.qmd diff --git a/extensions/audits/.gitignore b/extensions/audits/.gitignore new file mode 100644 index 00000000..4c23a061 --- /dev/null +++ b/extensions/audits/.gitignore @@ -0,0 +1,2 @@ +/.quarto/ +_site/ diff --git a/extensions/audits/_quarto.yml b/extensions/audits/_quarto.yml new file mode 100644 index 00000000..8e36b5bc --- /dev/null +++ b/extensions/audits/_quarto.yml @@ -0,0 +1,24 @@ +project: + type: website + +website: + title: "Connect Audits" + navbar: + left: + - href: index.qmd + text: Home + - href: unpublished.qmd + text: Unpublished Content + - href: runtime-versions.qmd + text: Runtime Versions + + +format: + html: + theme: cosmo + css: styles.css + toc: true + code-fold: true + + + diff --git a/extensions/audits/index.qmd b/extensions/audits/index.qmd new file mode 100644 index 00000000..54ced676 --- /dev/null +++ b/extensions/audits/index.qmd @@ -0,0 +1,4 @@ +--- +title: "Connect Audits" +--- + diff --git a/extensions/audits/requirements-dev.txt b/extensions/audits/requirements-dev.txt new file mode 100644 index 00000000..7bd20520 --- /dev/null +++ b/extensions/audits/requirements-dev.txt @@ -0,0 +1,2 @@ +-r requirements.txt +ipykernel \ No newline at end of file diff --git a/extensions/audits/requirements.txt b/extensions/audits/requirements.txt new file mode 100644 index 00000000..4fb9e3b4 --- /dev/null +++ b/extensions/audits/requirements.txt @@ -0,0 +1,6 @@ +jupyter +python-dotenv +posit-sdk +polars +reactable +great_tables diff --git a/extensions/audits/runtime-versions.qmd b/extensions/audits/runtime-versions.qmd new file mode 100644 index 00000000..44f9bb98 --- /dev/null +++ b/extensions/audits/runtime-versions.qmd @@ -0,0 +1,76 @@ +--- +title: Runtime Versions +jupyter: python3 +--- + +```{python} +import polars as pl +import polars.selectors as cs +import os +from reactable import Reactable, Column, embed_css + +if os.getenv("RSTUDIO_PRODUCT") != "CONNECT": + from dotenv import load_dotenv + load_dotenv() + +from posit import connect +client = connect.Client() + +content = client.content.find() +embed_css() +``` + + +## Python + +```{python} +python_content = ( + pl.DataFrame(content, infer_schema_length=None) + .filter(pl.col("py_version").is_not_null()) + .with_columns( + pl.col("py_version") + .str.split_exact(".", 3) + .alias("split_version") + ) + .with_columns([ + pl.col("split_version").struct.field("field_0").cast(pl.Int64).alias("major"), + pl.col("split_version").struct.field("field_1").cast(pl.Int64).alias("minor"), + pl.col("split_version").struct.field("field_2").cast(pl.Int64).alias("patch") + ]) +) + +py_version_dfs = list(g for k, g in python_content.group_by("py_version")) +py_summary_df = ( + python_content + .group_by(["py_version", "major", "minor", "patch"]) + .agg(n=pl.len()) + .sort(["major", "minor", "patch"]) + .select(pl.col(["py_version", "n"]))) + +Reactable( + py_summary_df, + default_sorted=["major"], + details=Column( + details=lambda ri: Reactable(py_version_dfs[ri.row_index]).to_widget(), + ), +) +``` + +## R + +```{python} +r_content = ( + pl.DataFrame(content, infer_schema_length=None) + .filter(pl.col("r_version").is_not_null()) +) + +r_version_dfs = list(g for k, g in r_content.group_by("py_version")) +r_summary_df = r_content.group_by("py_version").agg(n=pl.count()) + +Reactable( + r_summary_df, + details=Column( + details=lambda ri: Reactable(r_version_dfs[ri.row_index]).to_widget(), + ), +) +``` \ No newline at end of file diff --git a/extensions/audits/styles.css b/extensions/audits/styles.css new file mode 100644 index 00000000..2ddf50c7 --- /dev/null +++ b/extensions/audits/styles.css @@ -0,0 +1 @@ +/* css styles */ diff --git a/extensions/audits/unpublished.qmd b/extensions/audits/unpublished.qmd new file mode 100644 index 00000000..48b96d5d --- /dev/null +++ b/extensions/audits/unpublished.qmd @@ -0,0 +1,35 @@ +--- +title: Unpublished Content +jupyter: python3 +--- + + +```{python} +#| echo: false +import os + +import polars as pl +from posit import connect +from reactable import Reactable, embed_css + +if os.getenv("RSTUDIO_PRODUCT") != "CONNECT": + from dotenv import load_dotenv + load_dotenv() + +client = connect.Client() + +content = client.content.find() +unpublished = ( + pl.DataFrame(content, infer_schema_length=None) + .filter(pl.col("app_mode") == "unknown") + .select(pl.col("name", "title", "guid")) + ) + +embed_css() + +Reactable( + unpublished, + searchable=True, + ) +``` + diff --git a/extensions/integration-session-manager/index.qmd b/extensions/integration-session-manager/connect-extension.qmd similarity index 100% rename from extensions/integration-session-manager/index.qmd rename to extensions/integration-session-manager/connect-extension.qmd diff --git a/extensions/notifier/index.qmd b/extensions/notifier/connect-extension.qmd similarity index 100% rename from extensions/notifier/index.qmd rename to extensions/notifier/connect-extension.qmd diff --git a/extensions/oauth-integration-debug/index.qmd b/extensions/oauth-integration-debug/connect-extension.qmd similarity index 100% rename from extensions/oauth-integration-debug/index.qmd rename to extensions/oauth-integration-debug/connect-extension.qmd diff --git a/extensions/reaper/index.qmd b/extensions/reaper/connect-extension.qmd similarity index 100% rename from extensions/reaper/index.qmd rename to extensions/reaper/connect-extension.qmd