diff --git a/.github/workflows/docstrings.yml b/.github/workflows/docstrings.yml index 2403737098e..156fff7dbef 100644 --- a/.github/workflows/docstrings.yml +++ b/.github/workflows/docstrings.yml @@ -11,23 +11,23 @@ jobs: runs-on: ubuntu-20.04 steps: - name: Checkout site - uses: actions/checkout@v3 + uses: actions/checkout@v4 with: submodules: recursive # Fetch Hugo themes and all extra projects fetch-depth: 0 # Fetch all history for .GitInfo and .Lastmod path: site - name: Checkout coast - uses: actions/checkout@v3 + uses: actions/checkout@v4 with: repository: British-Oceanographic-Data-Centre/COAsT ref: develop path: external - name: add python - uses: actions/setup-python@v2 + uses: actions/setup-python@v4 with: - python-version: 3.8 + python-version: 3.10 - name: covert docstrings run: | @@ -44,8 +44,10 @@ jobs: git config --global user.email "bodcsoft@bodc.ac.uk" git config --global author.email "bodcsoft@bodc.ac.uk" git remote set-url origin https://x-access-token:${{ secrets.GITHUB_TOKEN }}@github.com/$GITHUB_REPOSITORY + git fetch origin git checkout develop git pull + [ ! -f content/en/docs/Reference/index.md ] || mv content/en/docs/Reference/index.md content/en/docs/Reference/index_class.md git add content/en/docs/Reference/* git commit -am "Updated docstrings from coast repo." git push origin develop diff --git a/.github/workflows/hugo.yml b/.github/workflows/hugo.yml index 56bd89f2fe3..37b8b2666eb 100644 --- a/.github/workflows/hugo.yml +++ b/.github/workflows/hugo.yml @@ -9,7 +9,7 @@ jobs: deploy: runs-on: ubuntu-20.04 steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v4 with: submodules: recursive # Fetch Hugo themes and all extra projects fetch-depth: 0 # Fetch all history for .GitInfo and .Lastmod @@ -17,11 +17,11 @@ jobs: - name: Setup Hugo uses: peaceiris/actions-hugo@v2 with: - hugo-version: '0.70.0' + hugo-version: '0.120.1' extended: true - name: Setup nodejs - uses: actions/setup-node@v1 + uses: actions/setup-node@v4 with: node-version: 12 diff --git a/.github/workflows/markdown-altimetry.yml b/.github/workflows/markdown-altimetry.yml index 5c91890719b..58254d7d86e 100644 --- a/.github/workflows/markdown-altimetry.yml +++ b/.github/workflows/markdown-altimetry.yml @@ -14,14 +14,14 @@ jobs: shell: bash -l {0} steps: - name: Checkout site - uses: actions/checkout@v3 + uses: actions/checkout@v4 with: submodules: recursive # Fetch Hugo themes and all extra projects fetch-depth: 0 # Fetch all history for .GitInfo and .Lastmod path: site - name: Checkout coast - uses: actions/checkout@v3 + uses: actions/checkout@v4 with: repository: British-Oceanographic-Data-Centre/COAsT ref: develop @@ -32,7 +32,6 @@ jobs: with: activate-environment: coast environment-file: external/environment.yml - python-version: 3.8.10 - name: prep exec notebooks run: | conda info @@ -67,6 +66,7 @@ jobs: git config --global user.email "bodcsoft@bodc.ac.uk" git config --global author.email "bodcsoft@bodc.ac.uk" git remote set-url origin https://x-access-token:${{ secrets.GITHUB_TOKEN }}@github.com/$GITHUB_REPOSITORY + git fetch origin git checkout develop git pull git add content/en/docs/Examples/Notebooks/Altimetry/* diff --git a/.github/workflows/markdown-general.yml b/.github/workflows/markdown-general.yml index 9135d5caa00..c9ab6eff47d 100644 --- a/.github/workflows/markdown-general.yml +++ b/.github/workflows/markdown-general.yml @@ -13,14 +13,14 @@ jobs: shell: bash -l {0} steps: - name: Checkout site - uses: actions/checkout@v3 + uses: actions/checkout@v4 with: submodules: recursive # Fetch Hugo themes and all extra projects fetch-depth: 0 # Fetch all history for .GitInfo and .Lastmod path: site - name: Checkout coast - uses: actions/checkout@v3 + uses: actions/checkout@v4 with: repository: British-Oceanographic-Data-Centre/COAsT ref: develop @@ -31,7 +31,6 @@ jobs: with: activate-environment: coast environment-file: external/environment.yml - python-version: 3.8.10 - name: prep exec notebooks run: | conda info @@ -45,6 +44,9 @@ jobs: mkdir -p ./example_scripts/notebook_tutorials/markdown/general ls ./example_scripts/notebook_tutorials pip install . + sudo apt-get update + sudo apt-get install -y libgeos-dev + pip install cartopy==0.21.0 mv config ./example_scripts/notebook_tutorials/runnable_notebooks/general/config bash notebook_to_md.sh general - name: convert notebooks @@ -58,6 +60,8 @@ jobs: mv ./markdown/general/climatology_tutorial.md $GITHUB_WORKSPACE/site/content/en/docs/Examples/Notebooks/General/ mv ./markdown/general/dask_wrapper_template_tutorial.md $GITHUB_WORKSPACE/site/content/en/docs/Examples/Notebooks/General/ mv ./markdown/general/mask_maker_tutorial.md $GITHUB_WORKSPACE/site/content/en/docs/Examples/Notebooks/General/ + mv ./markdown/general/polar_plotting.md $GITHUB_WORKSPACE/site/content/en/docs/Examples/Notebooks/General/ + mv ./markdown/general/zarr_files.md $GITHUB_WORKSPACE/site/content/en/docs/Examples/Notebooks/General/ echo "Move images" rsync -r ./markdown_images/general/ $GITHUB_WORKSPACE/site/static @@ -69,8 +73,9 @@ jobs: git config --global user.email "bodcsoft@bodc.ac.uk" git config --global author.email "bodcsoft@bodc.ac.uk" git remote set-url origin https://x-access-token:${{ secrets.GITHUB_TOKEN }}@github.com/$GITHUB_REPOSITORY + git fetch origin git checkout develop - git pull + git pull git add content/en/docs/Examples/Notebooks/General/* git add static/* git commit -am "Updated General notebook pages from coast repo." diff --git a/.github/workflows/markdown-gridded.yml b/.github/workflows/markdown-gridded.yml index d3154cf7d4c..4ca7dfa46ac 100644 --- a/.github/workflows/markdown-gridded.yml +++ b/.github/workflows/markdown-gridded.yml @@ -13,14 +13,14 @@ jobs: shell: bash -l {0} steps: - name: Checkout site - uses: actions/checkout@v3 + uses: actions/checkout@v4 with: submodules: recursive # Fetch Hugo themes and all extra projects fetch-depth: 0 # Fetch all history for .GitInfo and .Lastmod path: site - name: Checkout coast - uses: actions/checkout@v3 + uses: actions/checkout@v4 with: repository: British-Oceanographic-Data-Centre/COAsT ref: develop @@ -31,7 +31,6 @@ jobs: with: activate-environment: coast environment-file: external/environment.yml - python-version: 3.8.10 - name: prep exec notebooks run: | conda info @@ -71,8 +70,9 @@ jobs: git config --global user.email "bodcsoft@bodc.ac.uk" git config --global author.email "bodcsoft@bodc.ac.uk" git remote set-url origin https://x-access-token:${{ secrets.GITHUB_TOKEN }}@github.com/$GITHUB_REPOSITORY + git fetch origin git checkout develop - git pull + git pull git add content/en/docs/Examples/Notebooks/Gridded/* git add static/* git commit -am "Updated Gridded notebook pages from coast repo." diff --git a/.github/workflows/markdown-profile.yml b/.github/workflows/markdown-profile.yml index 745a2350a04..f070482ea7b 100644 --- a/.github/workflows/markdown-profile.yml +++ b/.github/workflows/markdown-profile.yml @@ -13,14 +13,14 @@ jobs: shell: bash -l {0} steps: - name: Checkout site - uses: actions/checkout@v3 + uses: actions/checkout@v4 with: submodules: recursive # Fetch Hugo themes and all extra projects fetch-depth: 0 # Fetch all history for .GitInfo and .Lastmod path: site - name: Checkout coast - uses: actions/checkout@v3 + uses: actions/checkout@v4 with: repository: British-Oceanographic-Data-Centre/COAsT ref: develop @@ -31,7 +31,6 @@ jobs: with: activate-environment: coast environment-file: external/environment.yml - python-version: 3.8.10 - name: prep exec notebooks run: | conda info @@ -64,6 +63,7 @@ jobs: git config --global user.email "bodcsoft@bodc.ac.uk" git config --global author.email "bodcsoft@bodc.ac.uk" git remote set-url origin https://x-access-token:${{ secrets.GITHUB_TOKEN }}@github.com/$GITHUB_REPOSITORY + git fetch origin git checkout develop git pull git add content/en/docs/Examples/Notebooks/Profile/* diff --git a/.github/workflows/markdown-tidegauge.yml b/.github/workflows/markdown-tidegauge.yml index 497f597c566..e926163a7a7 100644 --- a/.github/workflows/markdown-tidegauge.yml +++ b/.github/workflows/markdown-tidegauge.yml @@ -13,14 +13,14 @@ jobs: shell: bash -l {0} steps: - name: Checkout site - uses: actions/checkout@v3 + uses: actions/checkout@v4 with: submodules: recursive # Fetch Hugo themes and all extra projects fetch-depth: 0 # Fetch all history for .GitInfo and .Lastmod path: site - name: Checkout coast - uses: actions/checkout@v3 + uses: actions/checkout@v4 with: repository: British-Oceanographic-Data-Centre/COAsT ref: develop @@ -31,7 +31,6 @@ jobs: with: activate-environment: coast environment-file: external/environment.yml - python-version: 3.8.10 - name: prep exec notebooks run: | conda info @@ -67,6 +66,7 @@ jobs: git config --global user.email "bodcsoft@bodc.ac.uk" git config --global author.email "bodcsoft@bodc.ac.uk" git remote set-url origin https://x-access-token:${{ secrets.GITHUB_TOKEN }}@github.com/$GITHUB_REPOSITORY + git fetch origin git checkout develop git pull git add content/en/docs/Examples/Notebooks/Tidegauge/* diff --git a/README.md b/README.md index 3eecfad39f8..772e5c21f16 100644 --- a/README.md +++ b/README.md @@ -1,31 +1,53 @@ -# COAsT docsy +# COAsT Documentation Website -This is the website repo for the COAsT python package it uses [Docsy](https://github.com/google/docsy) a Hugo theme for technical documentation sites, providing easy site navigation, structure, and more. +This is the repository for the COAsT Python package documentation website. This site utilizes the [Docsy](https://github.com/google/docsy) theme, a Hugo theme designed for technical documentation sites, offering streamlined navigation, structure, and more. +## Prerequisites -## Cloning the COAsT Project website +Before you get started, make sure you have the following prerequisites in place: -The following will give you a project that is set up and ready to use (don't forget to use `--recurse-submodules` or you won't pull down some of the code you need to generate a working site). The `hugo server` command builds and serves the site. If you just want to build the site, run `hugo` instead. +1. **Node.js and npm Installation**: Download and install Node.js, which includes npm, from the official [Node.js website](https://nodejs.org/). We recommend using version 18 or later. + +2. **Hugo Installation**: You'll need an extended version of Hugo, preferably version 0.120.1 or later, for local builds and previews of sites that use Docsy. To ensure you have the correct Hugo version, follow these steps: + + - If you install Hugo from the release page, make sure to select the **extended Hugo version** to support SCSS. + + - After installation, verify your Hugo version by running `hugo version`. Your output should resemble the following: + + ```bash + hugo v0.120.2-9c2b2414d231ec1bdaf3e3a030bf148a45c7aa17+extended linux/amd64 BuildDate=2023-10-31T16:27:18Z VendorInfo=gohugoio + ``` + + Ensure that the version name includes the string *"extended"*. + +## Getting Started + +Follow these steps to set up your project and get it ready for use. Begin by cloning the repository: ```bash -git clone --recurse-submodules --depth 1 https://github.com/British-Oceanographic-Data-Centre/COAsT-site.git -cd docsy-example -hugo server +git clone --recurse-submodules --depth 1 git@github.com:British-Oceanographic-Data-Centre/COAsT-site.git +cd COAsT-site ``` -The theme is included as a Git submodule: +Now, proceed to install the dependencies and essential scripts: ```bash -▶ git submodule - a053131a4ebf6a59e4e8834a42368e248d98c01d themes/docsy (heads/master) +npm install # Install package dependencies +npm run prepare # Fetch the submodule used as the theme for this website and install its dependencies ``` -If you want to do SCSS edits and want to publish these, you need to install `PostCSS` (not needed for `hugo server`): +The `npm run prepare` command will install all the necessary dependencies for your theme, including `PostCSS`, `Bootstrap`, and `Autoprefixer`. + +## Running the Website Locally + +After cloning the site repository, navigate to the repository's root folder, and execute the following command to serve the website locally: ```bash -npm install +hugo server ``` +The `hugo server` command builds and serves the site. If you only want to build the site without serving it locally, run `hugo` instead. + - -## Running the website locally - -Once you've cloned the site repo, from the repo root folder, run: - -``` -hugo server -``` +To pull in changes, see `pull-deps.sh` script in the theme.--> \ No newline at end of file diff --git a/assets/scss/_variables_project.scss b/assets/scss/_variables_project.scss index 256902739d6..c3c8277f784 100644 --- a/assets/scss/_variables_project.scss +++ b/assets/scss/_variables_project.scss @@ -4,3 +4,50 @@ Add styles or override variables from the theme here. */ +.text-shadow-black-3{ + text-shadow: 3px 3px rgba(0,0,0,1); +} +.text-shadow-black-2{ + text-shadow: 2px 2px rgba(0,0,0,1); +} + +.text-shadow-white-3{ + text-shadow: 3px 3px rgba(255,255,255,1); +} +.text-shadow-white-2{ + text-shadow: 2px 2px rgba(255,255,255,1); +} + +.link-size{ + width: 12rem; +} + +.icon-size{ + height: 2rem; +} + +.foot-link{ + :hover{ + opacity: 0.7; + } +} + +.td-search__input:not(:focus){ + background: rgba(0,0,0,0.3) !important; +} + + +.td-footer { + min-height: 130px !important; + padding-top: 2.5rem !important; +} + + +#td-cover-block-0 { + background-image: linear-gradient(45deg, rgba(255,255,255, 0.2), rgba(255,255,255, 0.2)), url(/COAsT/feature-background_hu7bd19a57cd689ada407cd31cc8f06f38_227588_960x540_fill_q75_catmullrom_top.jpg) !important; +} +@media only screen and (min-width: 1200px) { + #td-cover-block-0 { + background-image: linear-gradient(45deg, rgba(255,255,255, 0.2), rgba(255,255,255, 0.2)), url(/COAsT/feature-background_hu7bd19a57cd689ada407cd31cc8f06f38_227588_960x540_fill_q75_catmullrom_top.jpg) !important; + } +} \ No newline at end of file diff --git a/config.toml b/config.toml index 0c033fb0ac5..be32700845c 100644 --- a/config.toml +++ b/config.toml @@ -17,7 +17,7 @@ defaultContentLanguageInSubdir = false # Useful when translating. enableMissingTranslationPlaceholders = true -disableKinds = ["taxonomy", "taxonomyTerm"] +disableKinds = ["taxonomy"] # Highlighting config pygmentsCodeFences = true @@ -54,6 +54,7 @@ id = "UA-00000000-0" [languages] [languages.en] +[languages.en.params] title = "COAsT" description = "A Docsy site - full of documention" languageName ="English" @@ -66,7 +67,10 @@ weight = 1 #contentDir = "content/no" #time_format_default = "02.01.2006" #time_format_blog = "02.01.2006" - +[module] + [[module.mounts]] + source = "node_modules/bootstrap/dist/js/bootstrap.bundle.min.js" + target = "assets/js/bootstrap.bundle.min.js" [markup] [markup.goldmark] [markup.goldmark.renderer] @@ -119,7 +123,7 @@ offlineSearch = true # User interface configuration [params.ui] # Enable to show the side bar menu in its compact state. -sidebar_menu_compact = false +sidebar_menu_compact = true # Set to true to disable breadcrumb navigation. breadcrumb_disable = false # Set to true to hide the sidebar search box (the top nav search box will still be displayed if search is enabled) @@ -127,7 +131,7 @@ sidebar_search_disable = false # Set to false if you don't want to display a logo (/assets/icons/logo.svg) in the top nav bar navbar_logo = true # Set to true to disable the About link in the site footer -footer_about_disable = false +footer_about_disable = true # Adds a H2 section titled "Feedback" to the bottom of each doc. The responses are sent to Google Analytics as events. # This feature depends on [services.googleAnalytics] and will be disabled if "services.googleAnalytics.id" is not set. @@ -147,10 +151,18 @@ enable = true [params.links] # End user relevant links. These will show up on left side of footer and in the community page if you have one. +[[params.links.user]] + name = "COAsT Github" + url = "https://github.com/British-Oceanographic-Data-Centre/COAsT" + desc = "COAsT GitHub Repository." [[params.links.user]] name = "COAsT Pypi" url = "https://pypi.org/project/COAsT/#history" - desc = "COAsT python package." + desc = "COAsT pip python package." +[[params.links.user]] + name = "COAsT Anaconda" + url = "https://anaconda.org/BODC/coast" + desc = "COAsT anaconda package." #[[params.links.user]] # name ="Twitter" # url = "https://example.org/twitter" diff --git a/content/en/_index.html b/content/en/_index.html index 076d0833ae5..065fb5adec1 100644 --- a/content/en/_index.html +++ b/content/en/_index.html @@ -4,41 +4,73 @@ +++ -{{< blocks/cover title="Welcome to the documentation: A Docsy site for COAsT" image_anchor="top" height="full" color="orange" >}} -
- }}"> - Learn More - - - Download - -

COAsT

- {{< blocks/link-down color="info" >}} +
+ {{< blocks/cover image_anchor="top" height="full">}} +

COAsT +

+

Coastal Ocean Assessment Toolbox

+
+

+ A Python toolbox for assessing kilometer-scale ocean models, conducting statistical analyses, + and facilitating model validation. +

+ +
+ {{< blocks/link-down color="info" >}} +
+
+ {{< /blocks/cover >}}
-{{< /blocks/cover >}} +
+ {{% blocks/lead color="primary"%}} +

About

+
+

COAsT is Diagnostic and Assessment toolbox for kilometric scale regional models. + It's aim is to deliver a flexible, community-ready framework for assessing kilometric scale ocean models.

+

The focus, initially, is be on delivering novel diagnostics for processes that are emergent + at the kilometric scale and with NEMO model output.

+
-{{% blocks/lead color="primary" %}} -This site provides visibility into the COAsT python framework. - -{{% /blocks/lead %}} - - - - -{{< blocks/section color="dark">}} -{{% blocks/feature icon="fab fa-app-store-ios" title="Download **from Anaconda.org**" url="https://anaconda.org/BODC/" %}} -Get the COAsT framework! -{{% /blocks/feature %}} - - -{{% blocks/feature icon="fab fa-github" title="Contributions welcome!" url="https://github.com/British-Oceanographic-Data-Centre/COAsT-site" %}} -We do a [Pull Request](https://github.com/British-Oceanographic-Data-Centre/COAsT-site/pulls) contributions workflow on **GitHub**. New users are always welcome! -{{% /blocks/feature %}} - + {{% /blocks/lead %}} +
-{{% blocks/feature icon="fab fa-twitter" title="Follow us on Twitter!" url="https://twitter.com/GoHugoIO" %}} -For announcement of latest features etc. -{{% /blocks/feature %}} +
+ {{% blocks/lead color="white"%}} +

Join the COAsT community

+
+

COAsT is an open source project that anyone in the community can use, improve, and enjoy. + We'd love you to join us! Here's a few ways to find out what's happening and get involved.

+
+ + {{% /blocks/lead %}} +
diff --git a/content/en/about/_index.html b/content/en/about/_index.html deleted file mode 100644 index 2e8fa517e1e..00000000000 --- a/content/en/about/_index.html +++ /dev/null @@ -1,24 +0,0 @@ ---- -title: About Goldydocs -linkTitle: About -menu: - main: - weight: 10 - ---- - - -{{< blocks/cover title="About COAsT" image_anchor="top" height="min" >}} - - - -{{< /blocks/cover >}} - -{{% blocks/lead color="5" %}} -COAsT is a Python package for managing and analysing high resolution NEMO output
-Read more [here](../docs/) -{{% /blocks/lead %}} - -{{% blocks/lead %}} -This site was based off the Docsy Hugo theme. -{{% /blocks/lead %}} diff --git a/content/en/about/featured-background.jpg b/content/en/about/featured-background.jpg deleted file mode 100644 index bc012365abb..00000000000 Binary files a/content/en/about/featured-background.jpg and /dev/null differ diff --git a/content/en/community/_index.md b/content/en/community/_index.md deleted file mode 100644 index cdade163086..00000000000 --- a/content/en/community/_index.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -title: Community -menu: - main: - weight: 40 ---- - - diff --git a/content/en/docs/Contributing-Docs/_index.md b/content/en/docs/Contributing-Docs/_index.md deleted file mode 100644 index 36ce103a34a..00000000000 --- a/content/en/docs/Contributing-Docs/_index.md +++ /dev/null @@ -1,53 +0,0 @@ ---- -title: "Contributing: Documentation" -linkTitle: "Contributing: Documentation" -weight: 4 -date: 2017-01-05 -description: > - Guidelines for contributing to the COAsT documentation site. ---- - -We use [Hugo](https://gohugo.io/) Extended Version to format and generate our website, the -[Docsy](https://github.com/google/docsy) theme for styling and site structure, -and [GitHub pages](https://help.github.com/en/github/working-with-github-pages) to manage the deployment of the site. -Hugo is an open-source static site generator that provides us with templates, -content organisation in a standard directory structure, and a website generation engine. You write the pages in Markdown (or HTML if you want), and Hugo wraps them up into a website. - -All submissions, including submissions by project members, require review. We -use GitHub pull requests for this purpose. Consult -[GitHub Help](https://help.github.com/articles/about-pull-requests/) for more -information on using pull requests. - -## Updating a single page - -If you've just spotted something you'd like to change while using the docs, Docsy has a shortcut for you: - -1. Click **Edit this page** in the top right hand corner of the page. -1. If you don't already have an up to date fork of the project repo, you are prompted to get one - click **Fork this repository and propose changes** or **Update your Fork** to get an up to date version of the project to edit. The appropriate page in your fork is displayed in edit mode. -1. make your edit -1. submit a pull request with a summary of the changes - -## Previewing your changes locally - -If you want to run your own local Hugo server to preview your changes as you work: - -1. Follow the instructions in [Getting started](/docs/contributing_documentation/hugo) to install Hugo and any other tools you need. You'll need at least **Hugo version 0.45** (we recommend using the most recent available version), and it must be the **extended** version, which supports SCSS. -1. Fork the [COAsT-site repo](https://github.com/British-Oceanographic-Data-Centre/COAsT-site.git) repo into your own project, then create a local copy using `git clone`. Don’t forget to use `--recurse-submodules` or you won’t pull down some of the code you need to generate a working site. - - ``` - git clone --recurse-submodules --depth 1 https://github.com/British-Oceanographic-Data-Centre/COAsT-site.git - ``` -1. Run `npm install` to install Node.js dependencies. -2. Run `hugo server` in the site root directory. By default your site will be available at http://localhost:1313/COAsT. Now that you're serving your site locally, Hugo will watch for changes to the content and automatically refresh your site. -2. Continue with the usual GitHub workflow to edit files, commit them, push the - changes up to your fork, and create a pull request. - -## Creating an issue - -If you've found a problem in the docs, but you're not sure how to fix it yourself, please create an issue in the [COAsT-site repo](https://github.com/British-Oceanographic-Data-Centre/COAsT-site.git). You can also create an issue about a specific page by clicking the **Create Issue** button in the top right hand corner of the page. - -## Useful resources - -* [Docsy user guide](https://www.docsy.dev/about/): All about Docsy, including how it manages navigation, look and feel, and multi-language support. -* [Hugo documentation](https://gohugo.io/documentation/): Comprehensive reference for Hugo. -* [Github Hello World!](https://guides.github.com/activities/hello-world/): A basic introduction to GitHub concepts and workflow. diff --git a/content/en/docs/Contributing-Docs/hugo.md b/content/en/docs/Contributing-Docs/hugo.md deleted file mode 100644 index d0b27877983..00000000000 --- a/content/en/docs/Contributing-Docs/hugo.md +++ /dev/null @@ -1,40 +0,0 @@ ---- -title: "setting up Hugo" -linkTitle: "hugo" -weight: 5 -description: > - What do you need to know to build a local version of this site ---- - -This page will walk you though a simple setup for hugo extended - which is needed if want to view any changes you make to this site locally. - -For more details please [read this](https://gohugo.io/getting-started/installing/). - -## Installation -### Manual -1) Download hugo _extended_ from [GitHub](https://github.com/gohugoio/hugo/releases) -2) Unzip into preferred location (I use C:\hugo) -3) Add to OS PATH - * optional but makes usage easier -### Via a Package Manager -On Windows you can use [Chocolately](https://chocolatey.org/) to install with: -```shell -choco install hugo-extended -``` -Or on macOS/Linux you can use [Homebrew](https://brew.sh/) to install with: -```shell -brew install hugo -``` -## Try it out! -You should now be able to try the following in a terminal -```shell -$ hugo --help -``` - -if you have cloned the COAsT-site [repo](github_repo) you should also now be able to; - -```shell -$ cd COAsT-site -$ hugo server -``` -the above will start a local hugo powered version of the website. you can edit any of the files under /content and see your changes at http://localhost:1313/COAsT/ diff --git a/content/en/docs/Examples/Notebooks/Altimetry/altimetry_tutorial.md b/content/en/docs/Examples/Notebooks/Altimetry/altimetry_tutorial.md index 93346ff41c2..657c6b12b53 100644 --- a/content/en/docs/Examples/Notebooks/Altimetry/altimetry_tutorial.md +++ b/content/en/docs/Examples/Notebooks/Altimetry/altimetry_tutorial.md @@ -25,6 +25,25 @@ fn_altimetry = dn_files + "coast_example_altimetry_data.nc" fn_altimetry_config = root + "./config/example_altimetry.json" ``` + /usr/share/miniconda/envs/coast/lib/python3.10/site-packages/pydap/lib.py:5: DeprecationWarning: pkg_resources is deprecated as an API. See https://setuptools.pypa.io/en/latest/pkg_resources.html + /usr/share/miniconda/envs/coast/lib/python3.10/site-packages/pkg_resources/__init__.py:2871: DeprecationWarning: Deprecated call to `pkg_resources.declare_namespace('pydap')`. + Implementing implicit namespace packages (as specified in PEP 420) is preferred to `pkg_resources.declare_namespace`. See https://setuptools.pypa.io/en/latest/references/keywords.html#keyword-namespace-packages + /usr/share/miniconda/envs/coast/lib/python3.10/site-packages/pkg_resources/__init__.py:2871: DeprecationWarning: Deprecated call to `pkg_resources.declare_namespace('pydap.responses')`. + Implementing implicit namespace packages (as specified in PEP 420) is preferred to `pkg_resources.declare_namespace`. See https://setuptools.pypa.io/en/latest/references/keywords.html#keyword-namespace-packages + /usr/share/miniconda/envs/coast/lib/python3.10/site-packages/pkg_resources/__init__.py:2350: DeprecationWarning: Deprecated call to `pkg_resources.declare_namespace('pydap')`. + Implementing implicit namespace packages (as specified in PEP 420) is preferred to `pkg_resources.declare_namespace`. See https://setuptools.pypa.io/en/latest/references/keywords.html#keyword-namespace-packages + /usr/share/miniconda/envs/coast/lib/python3.10/site-packages/pkg_resources/__init__.py:2871: DeprecationWarning: Deprecated call to `pkg_resources.declare_namespace('pydap.handlers')`. + Implementing implicit namespace packages (as specified in PEP 420) is preferred to `pkg_resources.declare_namespace`. See https://setuptools.pypa.io/en/latest/references/keywords.html#keyword-namespace-packages + /usr/share/miniconda/envs/coast/lib/python3.10/site-packages/pkg_resources/__init__.py:2350: DeprecationWarning: Deprecated call to `pkg_resources.declare_namespace('pydap')`. + Implementing implicit namespace packages (as specified in PEP 420) is preferred to `pkg_resources.declare_namespace`. See https://setuptools.pypa.io/en/latest/references/keywords.html#keyword-namespace-packages + /usr/share/miniconda/envs/coast/lib/python3.10/site-packages/pkg_resources/__init__.py:2871: DeprecationWarning: Deprecated call to `pkg_resources.declare_namespace('pydap.tests')`. + Implementing implicit namespace packages (as specified in PEP 420) is preferred to `pkg_resources.declare_namespace`. See https://setuptools.pypa.io/en/latest/references/keywords.html#keyword-namespace-packages + /usr/share/miniconda/envs/coast/lib/python3.10/site-packages/pkg_resources/__init__.py:2350: DeprecationWarning: Deprecated call to `pkg_resources.declare_namespace('pydap')`. + Implementing implicit namespace packages (as specified in PEP 420) is preferred to `pkg_resources.declare_namespace`. See https://setuptools.pypa.io/en/latest/references/keywords.html#keyword-namespace-packages + /usr/share/miniconda/envs/coast/lib/python3.10/site-packages/pkg_resources/__init__.py:2871: DeprecationWarning: Deprecated call to `pkg_resources.declare_namespace('sphinxcontrib')`. + Implementing implicit namespace packages (as specified in PEP 420) is preferred to `pkg_resources.declare_namespace`. See https://setuptools.pypa.io/en/latest/references/keywords.html#keyword-namespace-packages + + ### Load data @@ -40,8 +59,14 @@ nemo = coast.Gridded(fn_nemo_dat, fn_nemo_dom, config=fn_nemo_config) altimetry = coast.Altimetry(fn_altimetry, config=fn_altimetry_config) ``` + /usr/share/miniconda/envs/coast/lib/python3.10/site-packages/xarray/core/dataset.py:278: UserWarning: The specified chunks separate the stored chunks along dimension "time_counter" starting at index 2. This could degrade performance. Instead, consider rechunking after loading. + + ././config/example_altimetry.json - Altimetry object at 0x561214f5efc0 initialised + Altimetry object at 0x560d5d3e2980 initialised + + + /usr/share/miniconda/envs/coast/lib/python3.10/site-packages/xarray/core/dataset.py:278: UserWarning: The specified chunks separate the stored chunks along dimension "time" starting at index 1000. This could degrade performance. Instead, consider rechunking after loading. ### Subsetting @@ -57,7 +82,7 @@ ind = ind[::4] altimetry = altimetry.isel(t_dim=ind) ``` - Subsetting Altimetry object at 0x561214f5efc0 indices in [-10, 10], [45, 60] + Subsetting Altimetry object at 0x560d5d3e2980 indices in [-10, 10], [45, 60] ### Model interpolation @@ -74,7 +99,7 @@ altimetry.obs_operator(nemo, mod_var_name="ssh", time_interp="nearest") # to see for yourself. ``` - Interpolating Gridded object at 0x561214f5efc0 "ssh" with time_interp "nearest" + Interpolating Gridded object at 0x560d5d3e2980 "ssh" with time_interp "nearest" @@ -93,13 +118,7 @@ altimetry.obs_operator(nemo, mod_var_name="ssh", time_interp="nearest") stats = altimetry.basic_stats("ocean_tide_standard_name", "interp_ssh") ``` - Altimetry object at 0x561214f5efc0 initialised - - - /usr/share/miniconda/envs/coast/lib/python3.8/site-packages/coast/data/altimetry.py:351: FutureWarning: The default value of numeric_only in DataFrame.corr is deprecated. In a future version, it will default to False. Select only valid columns or specify the value of numeric_only to silence this warning. - corr = pdvar.corr(method=method) - /usr/share/miniconda/envs/coast/lib/python3.8/site-packages/coast/data/altimetry.py:365: FutureWarning: The default value of numeric_only in DataFrame.cov is deprecated. In a future version, it will default to False. Select only valid columns or specify the value of numeric_only to silence this warning. - cov = pdvar.cov() + Altimetry object at 0x560d5d3e2980 initialised @@ -127,7 +146,7 @@ crps = altimetry.crps(nemo, model_var_name="ssh", obs_var_name="ocean_tide_stand #crps.dataset # uncomment to print data object summary ``` - Altimetry object at 0x561214f5efc0 initialised + Altimetry object at 0x560d5d3e2980 initialised ### Plotting data @@ -140,8 +159,7 @@ crps = altimetry.crps(nemo, model_var_name="ssh", obs_var_name="ocean_tide_stand fig, ax = altimetry.quick_plot("ocean_tide_standard_name") ``` - /usr/share/miniconda/envs/coast/lib/python3.8/site-packages/cartopy/io/__init__.py:241: DownloadWarning: Downloading: https://naturalearth.s3.amazonaws.com/50m_physical/ne_50m_coastline.zip - warnings.warn(f'Downloading: {url}', DownloadWarning) + /usr/share/miniconda/envs/coast/lib/python3.10/site-packages/cartopy/io/__init__.py:241: DownloadWarning: Downloading: https://naturalearth.s3.amazonaws.com/50m_physical/ne_50m_coastline.zip diff --git a/content/en/docs/Examples/Notebooks/General/climatology_tutorial.md b/content/en/docs/Examples/Notebooks/General/climatology_tutorial.md index 64e28b3cfc7..54653560bc1 100644 --- a/content/en/docs/Examples/Notebooks/General/climatology_tutorial.md +++ b/content/en/docs/Examples/Notebooks/General/climatology_tutorial.md @@ -26,6 +26,25 @@ processes will automatically be used. import coast ``` + /usr/share/miniconda/envs/coast/lib/python3.10/site-packages/pydap/lib.py:5: DeprecationWarning: pkg_resources is deprecated as an API. See https://setuptools.pypa.io/en/latest/pkg_resources.html + /usr/share/miniconda/envs/coast/lib/python3.10/site-packages/pkg_resources/__init__.py:2871: DeprecationWarning: Deprecated call to `pkg_resources.declare_namespace('pydap')`. + Implementing implicit namespace packages (as specified in PEP 420) is preferred to `pkg_resources.declare_namespace`. See https://setuptools.pypa.io/en/latest/references/keywords.html#keyword-namespace-packages + /usr/share/miniconda/envs/coast/lib/python3.10/site-packages/pkg_resources/__init__.py:2871: DeprecationWarning: Deprecated call to `pkg_resources.declare_namespace('pydap.responses')`. + Implementing implicit namespace packages (as specified in PEP 420) is preferred to `pkg_resources.declare_namespace`. See https://setuptools.pypa.io/en/latest/references/keywords.html#keyword-namespace-packages + /usr/share/miniconda/envs/coast/lib/python3.10/site-packages/pkg_resources/__init__.py:2350: DeprecationWarning: Deprecated call to `pkg_resources.declare_namespace('pydap')`. + Implementing implicit namespace packages (as specified in PEP 420) is preferred to `pkg_resources.declare_namespace`. See https://setuptools.pypa.io/en/latest/references/keywords.html#keyword-namespace-packages + /usr/share/miniconda/envs/coast/lib/python3.10/site-packages/pkg_resources/__init__.py:2871: DeprecationWarning: Deprecated call to `pkg_resources.declare_namespace('pydap.handlers')`. + Implementing implicit namespace packages (as specified in PEP 420) is preferred to `pkg_resources.declare_namespace`. See https://setuptools.pypa.io/en/latest/references/keywords.html#keyword-namespace-packages + /usr/share/miniconda/envs/coast/lib/python3.10/site-packages/pkg_resources/__init__.py:2350: DeprecationWarning: Deprecated call to `pkg_resources.declare_namespace('pydap')`. + Implementing implicit namespace packages (as specified in PEP 420) is preferred to `pkg_resources.declare_namespace`. See https://setuptools.pypa.io/en/latest/references/keywords.html#keyword-namespace-packages + /usr/share/miniconda/envs/coast/lib/python3.10/site-packages/pkg_resources/__init__.py:2871: DeprecationWarning: Deprecated call to `pkg_resources.declare_namespace('pydap.tests')`. + Implementing implicit namespace packages (as specified in PEP 420) is preferred to `pkg_resources.declare_namespace`. See https://setuptools.pypa.io/en/latest/references/keywords.html#keyword-namespace-packages + /usr/share/miniconda/envs/coast/lib/python3.10/site-packages/pkg_resources/__init__.py:2350: DeprecationWarning: Deprecated call to `pkg_resources.declare_namespace('pydap')`. + Implementing implicit namespace packages (as specified in PEP 420) is preferred to `pkg_resources.declare_namespace`. See https://setuptools.pypa.io/en/latest/references/keywords.html#keyword-namespace-packages + /usr/share/miniconda/envs/coast/lib/python3.10/site-packages/pkg_resources/__init__.py:2871: DeprecationWarning: Deprecated call to `pkg_resources.declare_namespace('sphinxcontrib')`. + Implementing implicit namespace packages (as specified in PEP 420) is preferred to `pkg_resources.declare_namespace`. See https://setuptools.pypa.io/en/latest/references/keywords.html#keyword-namespace-packages + + ### Usage of coast.Climatology.make_climatology(). Calculates mean over a given period of time. This doesn't take different years into account, unless using the @@ -51,6 +70,9 @@ nemo_data = coast.Gridded(fn_data=fn_nemo_dat, ``` + /usr/share/miniconda/envs/coast/lib/python3.10/site-packages/xarray/core/dataset.py:278: UserWarning: The specified chunks separate the stored chunks along dimension "time_counter" starting at index 2. This could degrade performance. Instead, consider rechunking after loading. + + Calculate the climatology for temperature and sea surface height (ssh) as an example: diff --git a/content/en/docs/Examples/Notebooks/General/eof_tutorial.md b/content/en/docs/Examples/Notebooks/General/eof_tutorial.md index 9af16994b42..358eaf11052 100644 --- a/content/en/docs/Examples/Notebooks/General/eof_tutorial.md +++ b/content/en/docs/Examples/Notebooks/General/eof_tutorial.md @@ -26,6 +26,25 @@ fn_nemo_dom = dn_files + "coast_example_nemo_domain.nc" fn_nemo_config = root + "./config/example_nemo_grid_t.json" ``` + /usr/share/miniconda/envs/coast/lib/python3.10/site-packages/pydap/lib.py:5: DeprecationWarning: pkg_resources is deprecated as an API. See https://setuptools.pypa.io/en/latest/pkg_resources.html + /usr/share/miniconda/envs/coast/lib/python3.10/site-packages/pkg_resources/__init__.py:2871: DeprecationWarning: Deprecated call to `pkg_resources.declare_namespace('pydap')`. + Implementing implicit namespace packages (as specified in PEP 420) is preferred to `pkg_resources.declare_namespace`. See https://setuptools.pypa.io/en/latest/references/keywords.html#keyword-namespace-packages + /usr/share/miniconda/envs/coast/lib/python3.10/site-packages/pkg_resources/__init__.py:2871: DeprecationWarning: Deprecated call to `pkg_resources.declare_namespace('pydap.responses')`. + Implementing implicit namespace packages (as specified in PEP 420) is preferred to `pkg_resources.declare_namespace`. See https://setuptools.pypa.io/en/latest/references/keywords.html#keyword-namespace-packages + /usr/share/miniconda/envs/coast/lib/python3.10/site-packages/pkg_resources/__init__.py:2350: DeprecationWarning: Deprecated call to `pkg_resources.declare_namespace('pydap')`. + Implementing implicit namespace packages (as specified in PEP 420) is preferred to `pkg_resources.declare_namespace`. See https://setuptools.pypa.io/en/latest/references/keywords.html#keyword-namespace-packages + /usr/share/miniconda/envs/coast/lib/python3.10/site-packages/pkg_resources/__init__.py:2871: DeprecationWarning: Deprecated call to `pkg_resources.declare_namespace('pydap.handlers')`. + Implementing implicit namespace packages (as specified in PEP 420) is preferred to `pkg_resources.declare_namespace`. See https://setuptools.pypa.io/en/latest/references/keywords.html#keyword-namespace-packages + /usr/share/miniconda/envs/coast/lib/python3.10/site-packages/pkg_resources/__init__.py:2350: DeprecationWarning: Deprecated call to `pkg_resources.declare_namespace('pydap')`. + Implementing implicit namespace packages (as specified in PEP 420) is preferred to `pkg_resources.declare_namespace`. See https://setuptools.pypa.io/en/latest/references/keywords.html#keyword-namespace-packages + /usr/share/miniconda/envs/coast/lib/python3.10/site-packages/pkg_resources/__init__.py:2871: DeprecationWarning: Deprecated call to `pkg_resources.declare_namespace('pydap.tests')`. + Implementing implicit namespace packages (as specified in PEP 420) is preferred to `pkg_resources.declare_namespace`. See https://setuptools.pypa.io/en/latest/references/keywords.html#keyword-namespace-packages + /usr/share/miniconda/envs/coast/lib/python3.10/site-packages/pkg_resources/__init__.py:2350: DeprecationWarning: Deprecated call to `pkg_resources.declare_namespace('pydap')`. + Implementing implicit namespace packages (as specified in PEP 420) is preferred to `pkg_resources.declare_namespace`. See https://setuptools.pypa.io/en/latest/references/keywords.html#keyword-namespace-packages + /usr/share/miniconda/envs/coast/lib/python3.10/site-packages/pkg_resources/__init__.py:2871: DeprecationWarning: Deprecated call to `pkg_resources.declare_namespace('sphinxcontrib')`. + Implementing implicit namespace packages (as specified in PEP 420) is preferred to `pkg_resources.declare_namespace`. See https://setuptools.pypa.io/en/latest/references/keywords.html#keyword-namespace-packages + + ### Loading data @@ -70,7 +89,7 @@ eof_data.EOF.sel(mode=[1,2,3,4]).plot.pcolormesh(col='mode',col_wrap=2,x='longit - + @@ -88,7 +107,7 @@ eof_data.temporal_proj.sel(mode=[1,2,3,4]).plot(col='mode',col_wrap=2,x='time') - + diff --git a/content/en/docs/Examples/Notebooks/General/export_to_netcdf_tutorial.md b/content/en/docs/Examples/Notebooks/General/export_to_netcdf_tutorial.md index 9eceda5246e..c95ea7cab90 100644 --- a/content/en/docs/Examples/Notebooks/General/export_to_netcdf_tutorial.md +++ b/content/en/docs/Examples/Notebooks/General/export_to_netcdf_tutorial.md @@ -19,6 +19,25 @@ import coast import xarray as xr ``` + /usr/share/miniconda/envs/coast/lib/python3.10/site-packages/pydap/lib.py:5: DeprecationWarning: pkg_resources is deprecated as an API. See https://setuptools.pypa.io/en/latest/pkg_resources.html + /usr/share/miniconda/envs/coast/lib/python3.10/site-packages/pkg_resources/__init__.py:2871: DeprecationWarning: Deprecated call to `pkg_resources.declare_namespace('pydap')`. + Implementing implicit namespace packages (as specified in PEP 420) is preferred to `pkg_resources.declare_namespace`. See https://setuptools.pypa.io/en/latest/references/keywords.html#keyword-namespace-packages + /usr/share/miniconda/envs/coast/lib/python3.10/site-packages/pkg_resources/__init__.py:2871: DeprecationWarning: Deprecated call to `pkg_resources.declare_namespace('pydap.responses')`. + Implementing implicit namespace packages (as specified in PEP 420) is preferred to `pkg_resources.declare_namespace`. See https://setuptools.pypa.io/en/latest/references/keywords.html#keyword-namespace-packages + /usr/share/miniconda/envs/coast/lib/python3.10/site-packages/pkg_resources/__init__.py:2350: DeprecationWarning: Deprecated call to `pkg_resources.declare_namespace('pydap')`. + Implementing implicit namespace packages (as specified in PEP 420) is preferred to `pkg_resources.declare_namespace`. See https://setuptools.pypa.io/en/latest/references/keywords.html#keyword-namespace-packages + /usr/share/miniconda/envs/coast/lib/python3.10/site-packages/pkg_resources/__init__.py:2871: DeprecationWarning: Deprecated call to `pkg_resources.declare_namespace('pydap.handlers')`. + Implementing implicit namespace packages (as specified in PEP 420) is preferred to `pkg_resources.declare_namespace`. See https://setuptools.pypa.io/en/latest/references/keywords.html#keyword-namespace-packages + /usr/share/miniconda/envs/coast/lib/python3.10/site-packages/pkg_resources/__init__.py:2350: DeprecationWarning: Deprecated call to `pkg_resources.declare_namespace('pydap')`. + Implementing implicit namespace packages (as specified in PEP 420) is preferred to `pkg_resources.declare_namespace`. See https://setuptools.pypa.io/en/latest/references/keywords.html#keyword-namespace-packages + /usr/share/miniconda/envs/coast/lib/python3.10/site-packages/pkg_resources/__init__.py:2871: DeprecationWarning: Deprecated call to `pkg_resources.declare_namespace('pydap.tests')`. + Implementing implicit namespace packages (as specified in PEP 420) is preferred to `pkg_resources.declare_namespace`. See https://setuptools.pypa.io/en/latest/references/keywords.html#keyword-namespace-packages + /usr/share/miniconda/envs/coast/lib/python3.10/site-packages/pkg_resources/__init__.py:2350: DeprecationWarning: Deprecated call to `pkg_resources.declare_namespace('pydap')`. + Implementing implicit namespace packages (as specified in PEP 420) is preferred to `pkg_resources.declare_namespace`. See https://setuptools.pypa.io/en/latest/references/keywords.html#keyword-namespace-packages + /usr/share/miniconda/envs/coast/lib/python3.10/site-packages/pkg_resources/__init__.py:2871: DeprecationWarning: Deprecated call to `pkg_resources.declare_namespace('sphinxcontrib')`. + Implementing implicit namespace packages (as specified in PEP 420) is preferred to `pkg_resources.declare_namespace`. See https://setuptools.pypa.io/en/latest/references/keywords.html#keyword-namespace-packages + + ### Now define some file paths @@ -39,6 +58,9 @@ ofile = "example_export_output.nc" # The target filename for output nemo = coast.Gridded(fn_nemo_dat, fn_nemo_dom, config=config) ``` + /usr/share/miniconda/envs/coast/lib/python3.10/site-packages/xarray/core/dataset.py:278: UserWarning: The specified chunks separate the stored chunks along dimension "time_counter" starting at index 2. This could degrade performance. Instead, consider rechunking after loading. + + ### We can export the whole xr.DataSet to a netCDF file Other file formats are available. From the documentation: - NETCDF4: Data is stored in an HDF5 file, using netCDF4 API features. diff --git a/content/en/docs/Examples/Notebooks/General/mask_maker_tutorial.md b/content/en/docs/Examples/Notebooks/General/mask_maker_tutorial.md index d8f2938c93e..8af1bce45b2 100644 --- a/content/en/docs/Examples/Notebooks/General/mask_maker_tutorial.md +++ b/content/en/docs/Examples/Notebooks/General/mask_maker_tutorial.md @@ -27,6 +27,25 @@ import matplotlib.colors as colors # colormap fiddling import xarray as xr ``` + /usr/share/miniconda/envs/coast/lib/python3.10/site-packages/pydap/lib.py:5: DeprecationWarning: pkg_resources is deprecated as an API. See https://setuptools.pypa.io/en/latest/pkg_resources.html + /usr/share/miniconda/envs/coast/lib/python3.10/site-packages/pkg_resources/__init__.py:2871: DeprecationWarning: Deprecated call to `pkg_resources.declare_namespace('pydap')`. + Implementing implicit namespace packages (as specified in PEP 420) is preferred to `pkg_resources.declare_namespace`. See https://setuptools.pypa.io/en/latest/references/keywords.html#keyword-namespace-packages + /usr/share/miniconda/envs/coast/lib/python3.10/site-packages/pkg_resources/__init__.py:2871: DeprecationWarning: Deprecated call to `pkg_resources.declare_namespace('pydap.responses')`. + Implementing implicit namespace packages (as specified in PEP 420) is preferred to `pkg_resources.declare_namespace`. See https://setuptools.pypa.io/en/latest/references/keywords.html#keyword-namespace-packages + /usr/share/miniconda/envs/coast/lib/python3.10/site-packages/pkg_resources/__init__.py:2350: DeprecationWarning: Deprecated call to `pkg_resources.declare_namespace('pydap')`. + Implementing implicit namespace packages (as specified in PEP 420) is preferred to `pkg_resources.declare_namespace`. See https://setuptools.pypa.io/en/latest/references/keywords.html#keyword-namespace-packages + /usr/share/miniconda/envs/coast/lib/python3.10/site-packages/pkg_resources/__init__.py:2871: DeprecationWarning: Deprecated call to `pkg_resources.declare_namespace('pydap.handlers')`. + Implementing implicit namespace packages (as specified in PEP 420) is preferred to `pkg_resources.declare_namespace`. See https://setuptools.pypa.io/en/latest/references/keywords.html#keyword-namespace-packages + /usr/share/miniconda/envs/coast/lib/python3.10/site-packages/pkg_resources/__init__.py:2350: DeprecationWarning: Deprecated call to `pkg_resources.declare_namespace('pydap')`. + Implementing implicit namespace packages (as specified in PEP 420) is preferred to `pkg_resources.declare_namespace`. See https://setuptools.pypa.io/en/latest/references/keywords.html#keyword-namespace-packages + /usr/share/miniconda/envs/coast/lib/python3.10/site-packages/pkg_resources/__init__.py:2871: DeprecationWarning: Deprecated call to `pkg_resources.declare_namespace('pydap.tests')`. + Implementing implicit namespace packages (as specified in PEP 420) is preferred to `pkg_resources.declare_namespace`. See https://setuptools.pypa.io/en/latest/references/keywords.html#keyword-namespace-packages + /usr/share/miniconda/envs/coast/lib/python3.10/site-packages/pkg_resources/__init__.py:2350: DeprecationWarning: Deprecated call to `pkg_resources.declare_namespace('pydap')`. + Implementing implicit namespace packages (as specified in PEP 420) is preferred to `pkg_resources.declare_namespace`. See https://setuptools.pypa.io/en/latest/references/keywords.html#keyword-namespace-packages + /usr/share/miniconda/envs/coast/lib/python3.10/site-packages/pkg_resources/__init__.py:2871: DeprecationWarning: Deprecated call to `pkg_resources.declare_namespace('sphinxcontrib')`. + Implementing implicit namespace packages (as specified in PEP 420) is preferred to `pkg_resources.declare_namespace`. See https://setuptools.pypa.io/en/latest/references/keywords.html#keyword-namespace-packages + + ```python # set some paths @@ -179,7 +198,7 @@ mask_xr.mask.sum(dim='dim_mask').plot(levels=(1,2,3,4)) - + @@ -611,9 +630,9 @@ Data variables: all_mean_temperature (dim_mask) float32 7.48 6.685 ... 7.275 all_mean_practical_salinity (dim_mask) float32 34.57 34.86 ... 33.76 all_mean_qc_flags_profiles (dim_mask) float64 4.422e+05 ... 1.93... - all_mean_qc_flags_levels (dim_mask) float64 3.272e+07 ... 3.68...
    • @@ -720,7 +739,7 @@ plt.legend() - + @@ -752,7 +771,7 @@ mask_mean_SST.plot() - + @@ -780,7 +799,7 @@ plt.legend() - + diff --git a/content/en/docs/Examples/Notebooks/General/seasonal_decomp_example.md b/content/en/docs/Examples/Notebooks/General/seasonal_decomp_example.md index a2237663efd..e1202849eae 100644 --- a/content/en/docs/Examples/Notebooks/General/seasonal_decomp_example.md +++ b/content/en/docs/Examples/Notebooks/General/seasonal_decomp_example.md @@ -42,6 +42,26 @@ config = root + "./config/example_nemo_grid_t.json" grd = coast.Gridded(fn_nemo_dat, fn_nemo_dom, config=config) ``` + /usr/share/miniconda/envs/coast/lib/python3.10/site-packages/pydap/lib.py:5: DeprecationWarning: pkg_resources is deprecated as an API. See https://setuptools.pypa.io/en/latest/pkg_resources.html + /usr/share/miniconda/envs/coast/lib/python3.10/site-packages/pkg_resources/__init__.py:2871: DeprecationWarning: Deprecated call to `pkg_resources.declare_namespace('pydap')`. + Implementing implicit namespace packages (as specified in PEP 420) is preferred to `pkg_resources.declare_namespace`. See https://setuptools.pypa.io/en/latest/references/keywords.html#keyword-namespace-packages + /usr/share/miniconda/envs/coast/lib/python3.10/site-packages/pkg_resources/__init__.py:2871: DeprecationWarning: Deprecated call to `pkg_resources.declare_namespace('pydap.responses')`. + Implementing implicit namespace packages (as specified in PEP 420) is preferred to `pkg_resources.declare_namespace`. See https://setuptools.pypa.io/en/latest/references/keywords.html#keyword-namespace-packages + /usr/share/miniconda/envs/coast/lib/python3.10/site-packages/pkg_resources/__init__.py:2350: DeprecationWarning: Deprecated call to `pkg_resources.declare_namespace('pydap')`. + Implementing implicit namespace packages (as specified in PEP 420) is preferred to `pkg_resources.declare_namespace`. See https://setuptools.pypa.io/en/latest/references/keywords.html#keyword-namespace-packages + /usr/share/miniconda/envs/coast/lib/python3.10/site-packages/pkg_resources/__init__.py:2871: DeprecationWarning: Deprecated call to `pkg_resources.declare_namespace('pydap.handlers')`. + Implementing implicit namespace packages (as specified in PEP 420) is preferred to `pkg_resources.declare_namespace`. See https://setuptools.pypa.io/en/latest/references/keywords.html#keyword-namespace-packages + /usr/share/miniconda/envs/coast/lib/python3.10/site-packages/pkg_resources/__init__.py:2350: DeprecationWarning: Deprecated call to `pkg_resources.declare_namespace('pydap')`. + Implementing implicit namespace packages (as specified in PEP 420) is preferred to `pkg_resources.declare_namespace`. See https://setuptools.pypa.io/en/latest/references/keywords.html#keyword-namespace-packages + /usr/share/miniconda/envs/coast/lib/python3.10/site-packages/pkg_resources/__init__.py:2871: DeprecationWarning: Deprecated call to `pkg_resources.declare_namespace('pydap.tests')`. + Implementing implicit namespace packages (as specified in PEP 420) is preferred to `pkg_resources.declare_namespace`. See https://setuptools.pypa.io/en/latest/references/keywords.html#keyword-namespace-packages + /usr/share/miniconda/envs/coast/lib/python3.10/site-packages/pkg_resources/__init__.py:2350: DeprecationWarning: Deprecated call to `pkg_resources.declare_namespace('pydap')`. + Implementing implicit namespace packages (as specified in PEP 420) is preferred to `pkg_resources.declare_namespace`. See https://setuptools.pypa.io/en/latest/references/keywords.html#keyword-namespace-packages + /usr/share/miniconda/envs/coast/lib/python3.10/site-packages/pkg_resources/__init__.py:2871: DeprecationWarning: Deprecated call to `pkg_resources.declare_namespace('sphinxcontrib')`. + Implementing implicit namespace packages (as specified in PEP 420) is preferred to `pkg_resources.declare_namespace`. See https://setuptools.pypa.io/en/latest/references/keywords.html#keyword-namespace-packages + /usr/share/miniconda/envs/coast/lib/python3.10/site-packages/xarray/core/dataset.py:278: UserWarning: The specified chunks separate the stored chunks along dimension "time_counter" starting at index 2. This could degrade performance. Instead, consider rechunking after loading. + + The loaded example data only has 7 time stamps, the code below creates a new (fake) extended temperature variable with 48 monthly records. This code is not required to use the function, it is only included here to make a set of time series that are long enough to be interesting. @@ -71,6 +91,9 @@ temperature = xr.DataArray( ) ``` + /tmp/ipykernel_2964/2929135463.py:14: UserWarning: Converting non-nanosecond precision datetime values to nanosecond precision. This behavior can eventually be relaxed in xarray, as it is an artifact from pandas which is now beginning to support non-nanosecond precision values. This warning is caused by passing non-nanosecond np.datetime64 or np.timedelta64 values to the DataArray or Variable constructor; it can be silenced by converting the values to nanosecond precision ahead of time. + + Check out the new data @@ -86,7 +109,7 @@ temperature[0,0,:,:].plot() - + @@ -107,7 +130,7 @@ temperature[:,0,200,200].plot() - [] + [] @@ -134,6 +157,12 @@ proc_data = coast.Process_data() grd = proc_data.seasonal_decomposition(temperature, 2, model="additive", period=6, extrapolate_trend="freq") ``` + /usr/share/miniconda/envs/coast/lib/python3.10/site-packages/coast/_utils/logging_util.py:21: DeprecationWarning: ProcessData is deprecated: Please use the 'ProcessData' class instead. This name will change in the next release. + /usr/share/miniconda/envs/coast/lib/python3.10/site-packages/coast/_utils/process_data.py:114: DeprecationWarning: Supplying chunks as dimension-order tuples is deprecated. It will raise an error in the future. Instead use a dict with dimension names as keys. + /usr/share/miniconda/envs/coast/lib/python3.10/site-packages/coast/_utils/process_data.py:116: DeprecationWarning: Supplying chunks as dimension-order tuples is deprecated. It will raise an error in the future. Instead use a dict with dimension names as keys. + /usr/share/miniconda/envs/coast/lib/python3.10/site-packages/coast/_utils/process_data.py:118: DeprecationWarning: Supplying chunks as dimension-order tuples is deprecated. It will raise an error in the future. Instead use a dict with dimension names as keys. + + The returned xarray Dataset contains the decomposed time series (trend, seasonal, residual) as dask arrays @@ -525,7 +554,7 @@ Dimensions without coordinates: z_dim, y_dim, x_dim Data variables: trend (t_dim, z_dim, y_dim, x_dim) float64 nan nan nan ... nan nan nan seasonal (t_dim, z_dim, y_dim, x_dim) float64 nan nan nan ... nan nan nan - residual (t_dim, z_dim, y_dim, x_dim) float64 nan nan nan ... nan nan nan
    • @@ -750,9 +779,9 @@ temp_decomp[:,:,0,200,200].plot(hue="component") - [, - , - ] + [, + , + ] diff --git a/content/en/docs/Examples/Notebooks/Gridded/contour_tutorial.md b/content/en/docs/Examples/Notebooks/Gridded/contour_tutorial.md index abc8b2e19fb..23a403bef1e 100644 --- a/content/en/docs/Examples/Notebooks/Gridded/contour_tutorial.md +++ b/content/en/docs/Examples/Notebooks/Gridded/contour_tutorial.md @@ -45,6 +45,25 @@ fn_config_u_grid = root + "./config/example_nemo_grid_u.json" fn_config_v_grid = root + "./config/example_nemo_grid_v.json" ``` + /usr/share/miniconda/envs/coast/lib/python3.10/site-packages/pydap/lib.py:5: DeprecationWarning: pkg_resources is deprecated as an API. See https://setuptools.pypa.io/en/latest/pkg_resources.html + /usr/share/miniconda/envs/coast/lib/python3.10/site-packages/pkg_resources/__init__.py:2871: DeprecationWarning: Deprecated call to `pkg_resources.declare_namespace('pydap')`. + Implementing implicit namespace packages (as specified in PEP 420) is preferred to `pkg_resources.declare_namespace`. See https://setuptools.pypa.io/en/latest/references/keywords.html#keyword-namespace-packages + /usr/share/miniconda/envs/coast/lib/python3.10/site-packages/pkg_resources/__init__.py:2871: DeprecationWarning: Deprecated call to `pkg_resources.declare_namespace('pydap.responses')`. + Implementing implicit namespace packages (as specified in PEP 420) is preferred to `pkg_resources.declare_namespace`. See https://setuptools.pypa.io/en/latest/references/keywords.html#keyword-namespace-packages + /usr/share/miniconda/envs/coast/lib/python3.10/site-packages/pkg_resources/__init__.py:2350: DeprecationWarning: Deprecated call to `pkg_resources.declare_namespace('pydap')`. + Implementing implicit namespace packages (as specified in PEP 420) is preferred to `pkg_resources.declare_namespace`. See https://setuptools.pypa.io/en/latest/references/keywords.html#keyword-namespace-packages + /usr/share/miniconda/envs/coast/lib/python3.10/site-packages/pkg_resources/__init__.py:2871: DeprecationWarning: Deprecated call to `pkg_resources.declare_namespace('pydap.handlers')`. + Implementing implicit namespace packages (as specified in PEP 420) is preferred to `pkg_resources.declare_namespace`. See https://setuptools.pypa.io/en/latest/references/keywords.html#keyword-namespace-packages + /usr/share/miniconda/envs/coast/lib/python3.10/site-packages/pkg_resources/__init__.py:2350: DeprecationWarning: Deprecated call to `pkg_resources.declare_namespace('pydap')`. + Implementing implicit namespace packages (as specified in PEP 420) is preferred to `pkg_resources.declare_namespace`. See https://setuptools.pypa.io/en/latest/references/keywords.html#keyword-namespace-packages + /usr/share/miniconda/envs/coast/lib/python3.10/site-packages/pkg_resources/__init__.py:2871: DeprecationWarning: Deprecated call to `pkg_resources.declare_namespace('pydap.tests')`. + Implementing implicit namespace packages (as specified in PEP 420) is preferred to `pkg_resources.declare_namespace`. See https://setuptools.pypa.io/en/latest/references/keywords.html#keyword-namespace-packages + /usr/share/miniconda/envs/coast/lib/python3.10/site-packages/pkg_resources/__init__.py:2350: DeprecationWarning: Deprecated call to `pkg_resources.declare_namespace('pydap')`. + Implementing implicit namespace packages (as specified in PEP 420) is preferred to `pkg_resources.declare_namespace`. See https://setuptools.pypa.io/en/latest/references/keywords.html#keyword-namespace-packages + /usr/share/miniconda/envs/coast/lib/python3.10/site-packages/pkg_resources/__init__.py:2871: DeprecationWarning: Deprecated call to `pkg_resources.declare_namespace('sphinxcontrib')`. + Implementing implicit namespace packages (as specified in PEP 420) is preferred to `pkg_resources.declare_namespace`. See https://setuptools.pypa.io/en/latest/references/keywords.html#keyword-namespace-packages + + ### Extract isobath contour between two points and create contour object. diff --git a/content/en/docs/Examples/Notebooks/Gridded/introduction_to_gridded_class.md b/content/en/docs/Examples/Notebooks/Gridded/introduction_to_gridded_class.md index 50ddccdf94e..a6e8f00cec1 100644 --- a/content/en/docs/Examples/Notebooks/Gridded/introduction_to_gridded_class.md +++ b/content/en/docs/Examples/Notebooks/Gridded/introduction_to_gridded_class.md @@ -37,6 +37,25 @@ fn_nemo_dom = dn_files + "coast_example_nemo_domain.nc" fn_config_t_grid = root + "./config/example_nemo_grid_t.json" ``` + /usr/share/miniconda/envs/coast/lib/python3.10/site-packages/pydap/lib.py:5: DeprecationWarning: pkg_resources is deprecated as an API. See https://setuptools.pypa.io/en/latest/pkg_resources.html + /usr/share/miniconda/envs/coast/lib/python3.10/site-packages/pkg_resources/__init__.py:2871: DeprecationWarning: Deprecated call to `pkg_resources.declare_namespace('pydap')`. + Implementing implicit namespace packages (as specified in PEP 420) is preferred to `pkg_resources.declare_namespace`. See https://setuptools.pypa.io/en/latest/references/keywords.html#keyword-namespace-packages + /usr/share/miniconda/envs/coast/lib/python3.10/site-packages/pkg_resources/__init__.py:2871: DeprecationWarning: Deprecated call to `pkg_resources.declare_namespace('pydap.responses')`. + Implementing implicit namespace packages (as specified in PEP 420) is preferred to `pkg_resources.declare_namespace`. See https://setuptools.pypa.io/en/latest/references/keywords.html#keyword-namespace-packages + /usr/share/miniconda/envs/coast/lib/python3.10/site-packages/pkg_resources/__init__.py:2350: DeprecationWarning: Deprecated call to `pkg_resources.declare_namespace('pydap')`. + Implementing implicit namespace packages (as specified in PEP 420) is preferred to `pkg_resources.declare_namespace`. See https://setuptools.pypa.io/en/latest/references/keywords.html#keyword-namespace-packages + /usr/share/miniconda/envs/coast/lib/python3.10/site-packages/pkg_resources/__init__.py:2871: DeprecationWarning: Deprecated call to `pkg_resources.declare_namespace('pydap.handlers')`. + Implementing implicit namespace packages (as specified in PEP 420) is preferred to `pkg_resources.declare_namespace`. See https://setuptools.pypa.io/en/latest/references/keywords.html#keyword-namespace-packages + /usr/share/miniconda/envs/coast/lib/python3.10/site-packages/pkg_resources/__init__.py:2350: DeprecationWarning: Deprecated call to `pkg_resources.declare_namespace('pydap')`. + Implementing implicit namespace packages (as specified in PEP 420) is preferred to `pkg_resources.declare_namespace`. See https://setuptools.pypa.io/en/latest/references/keywords.html#keyword-namespace-packages + /usr/share/miniconda/envs/coast/lib/python3.10/site-packages/pkg_resources/__init__.py:2871: DeprecationWarning: Deprecated call to `pkg_resources.declare_namespace('pydap.tests')`. + Implementing implicit namespace packages (as specified in PEP 420) is preferred to `pkg_resources.declare_namespace`. See https://setuptools.pypa.io/en/latest/references/keywords.html#keyword-namespace-packages + /usr/share/miniconda/envs/coast/lib/python3.10/site-packages/pkg_resources/__init__.py:2350: DeprecationWarning: Deprecated call to `pkg_resources.declare_namespace('pydap')`. + Implementing implicit namespace packages (as specified in PEP 420) is preferred to `pkg_resources.declare_namespace`. See https://setuptools.pypa.io/en/latest/references/keywords.html#keyword-namespace-packages + /usr/share/miniconda/envs/coast/lib/python3.10/site-packages/pkg_resources/__init__.py:2871: DeprecationWarning: Deprecated call to `pkg_resources.declare_namespace('sphinxcontrib')`. + Implementing implicit namespace packages (as specified in PEP 420) is preferred to `pkg_resources.declare_namespace`. See https://setuptools.pypa.io/en/latest/references/keywords.html#keyword-namespace-packages + + We can create a new Gridded object by simple calling `coast.Gridded()`. By passing this a NEMO data file and a NEMO domain file, COAsT will combine the two into a single xarray dataset within the Gridded object. Each individual Gridded object should be for a specified NEMO grid type, which is specified in a configuration file which is also passed as an argument. The Dask library is switched on by default, chunking can be specified in the configuration file. @@ -44,6 +63,9 @@ We can create a new Gridded object by simple calling `coast.Gridded()`. By passi nemo_t = coast.Gridded(fn_data = fn_nemo_dat, fn_domain = fn_nemo_dom, config=fn_config_t_grid) ``` + /usr/share/miniconda/envs/coast/lib/python3.10/site-packages/xarray/core/dataset.py:278: UserWarning: The specified chunks separate the stored chunks along dimension "time_counter" starting at index 2. This could degrade performance. Instead, consider rechunking after loading. + + Our new Gridded object `nemo_t` contains a variable called dataset, which holds information on the two files we passed. Let’s have a look at this: @@ -87,7 +109,7 @@ plt.pcolormesh(nemo_t.dataset.longitude, nemo_t.dataset.latitude, nemo_t.dataset - + @@ -161,8 +183,7 @@ plt.ylabel("latitude") plt.show() ``` - /tmp/ipykernel_3888/2498690501.py:2: UserWarning: The input coordinates to pcolormesh are interpreted as cell centers, but are not monotonically increasing or decreasing. This may lead to incorrectly calculated cell edges, in which case, please supply explicit cell edges to pcolormesh. - plt.pcolormesh( + /tmp/ipykernel_2672/2498690501.py:2: UserWarning: The input coordinates to pcolormesh are interpreted as cell centers, but are not monotonically increasing or decreasing. This may lead to incorrectly calculated cell edges, in which case, please supply explicit cell edges to pcolormesh. diff --git a/content/en/docs/Examples/Notebooks/Gridded/potential_energy_tutorial.md b/content/en/docs/Examples/Notebooks/Gridded/potential_energy_tutorial.md index 37feef8b4e5..d367f5aff26 100644 --- a/content/en/docs/Examples/Notebooks/Gridded/potential_energy_tutorial.md +++ b/content/en/docs/Examples/Notebooks/Gridded/potential_energy_tutorial.md @@ -21,6 +21,25 @@ import matplotlib.colors as colors # colormap fiddling import xarray as xr ``` + /usr/share/miniconda/envs/coast/lib/python3.10/site-packages/pydap/lib.py:5: DeprecationWarning: pkg_resources is deprecated as an API. See https://setuptools.pypa.io/en/latest/pkg_resources.html + /usr/share/miniconda/envs/coast/lib/python3.10/site-packages/pkg_resources/__init__.py:2871: DeprecationWarning: Deprecated call to `pkg_resources.declare_namespace('pydap')`. + Implementing implicit namespace packages (as specified in PEP 420) is preferred to `pkg_resources.declare_namespace`. See https://setuptools.pypa.io/en/latest/references/keywords.html#keyword-namespace-packages + /usr/share/miniconda/envs/coast/lib/python3.10/site-packages/pkg_resources/__init__.py:2871: DeprecationWarning: Deprecated call to `pkg_resources.declare_namespace('pydap.responses')`. + Implementing implicit namespace packages (as specified in PEP 420) is preferred to `pkg_resources.declare_namespace`. See https://setuptools.pypa.io/en/latest/references/keywords.html#keyword-namespace-packages + /usr/share/miniconda/envs/coast/lib/python3.10/site-packages/pkg_resources/__init__.py:2350: DeprecationWarning: Deprecated call to `pkg_resources.declare_namespace('pydap')`. + Implementing implicit namespace packages (as specified in PEP 420) is preferred to `pkg_resources.declare_namespace`. See https://setuptools.pypa.io/en/latest/references/keywords.html#keyword-namespace-packages + /usr/share/miniconda/envs/coast/lib/python3.10/site-packages/pkg_resources/__init__.py:2871: DeprecationWarning: Deprecated call to `pkg_resources.declare_namespace('pydap.handlers')`. + Implementing implicit namespace packages (as specified in PEP 420) is preferred to `pkg_resources.declare_namespace`. See https://setuptools.pypa.io/en/latest/references/keywords.html#keyword-namespace-packages + /usr/share/miniconda/envs/coast/lib/python3.10/site-packages/pkg_resources/__init__.py:2350: DeprecationWarning: Deprecated call to `pkg_resources.declare_namespace('pydap')`. + Implementing implicit namespace packages (as specified in PEP 420) is preferred to `pkg_resources.declare_namespace`. See https://setuptools.pypa.io/en/latest/references/keywords.html#keyword-namespace-packages + /usr/share/miniconda/envs/coast/lib/python3.10/site-packages/pkg_resources/__init__.py:2871: DeprecationWarning: Deprecated call to `pkg_resources.declare_namespace('pydap.tests')`. + Implementing implicit namespace packages (as specified in PEP 420) is preferred to `pkg_resources.declare_namespace`. See https://setuptools.pypa.io/en/latest/references/keywords.html#keyword-namespace-packages + /usr/share/miniconda/envs/coast/lib/python3.10/site-packages/pkg_resources/__init__.py:2350: DeprecationWarning: Deprecated call to `pkg_resources.declare_namespace('pydap')`. + Implementing implicit namespace packages (as specified in PEP 420) is preferred to `pkg_resources.declare_namespace`. See https://setuptools.pypa.io/en/latest/references/keywords.html#keyword-namespace-packages + /usr/share/miniconda/envs/coast/lib/python3.10/site-packages/pkg_resources/__init__.py:2871: DeprecationWarning: Deprecated call to `pkg_resources.declare_namespace('sphinxcontrib')`. + Implementing implicit namespace packages (as specified in PEP 420) is preferred to `pkg_resources.declare_namespace`. See https://setuptools.pypa.io/en/latest/references/keywords.html#keyword-namespace-packages + + ```python # set some paths @@ -75,17 +94,17 @@ strat.quick_plot('PEA') ``` - -![png](/COAsT/potential_energy_tutorial_files/potential_energy_tutorial_11_0.png) - + (
      , + ) - (
      , - ) + +![png](/COAsT/potential_energy_tutorial_files/potential_energy_tutorial_11_1.png) + @@ -467,10 +486,10 @@ Coordinates: longitude (y_dim, x_dim) float32 -19.89 -19.78 -19.67 ... 12.78 12.89 13.0 Dimensions without coordinates: t_dim, y_dim, x_dim Data variables: - PEA (t_dim, y_dim, x_dim) float64 nan nan nan nan ... nan nan nan nan
      • diff --git a/content/en/docs/Examples/Notebooks/Gridded/pycnocline_tutorial.md b/content/en/docs/Examples/Notebooks/Gridded/pycnocline_tutorial.md index bd918bc0f40..874d42cf1bc 100644 --- a/content/en/docs/Examples/Notebooks/Gridded/pycnocline_tutorial.md +++ b/content/en/docs/Examples/Notebooks/Gridded/pycnocline_tutorial.md @@ -21,6 +21,25 @@ import matplotlib.pyplot as plt import matplotlib.colors as colors # colormap fiddling ``` + /usr/share/miniconda/envs/coast/lib/python3.10/site-packages/pydap/lib.py:5: DeprecationWarning: pkg_resources is deprecated as an API. See https://setuptools.pypa.io/en/latest/pkg_resources.html + /usr/share/miniconda/envs/coast/lib/python3.10/site-packages/pkg_resources/__init__.py:2871: DeprecationWarning: Deprecated call to `pkg_resources.declare_namespace('pydap')`. + Implementing implicit namespace packages (as specified in PEP 420) is preferred to `pkg_resources.declare_namespace`. See https://setuptools.pypa.io/en/latest/references/keywords.html#keyword-namespace-packages + /usr/share/miniconda/envs/coast/lib/python3.10/site-packages/pkg_resources/__init__.py:2871: DeprecationWarning: Deprecated call to `pkg_resources.declare_namespace('pydap.responses')`. + Implementing implicit namespace packages (as specified in PEP 420) is preferred to `pkg_resources.declare_namespace`. See https://setuptools.pypa.io/en/latest/references/keywords.html#keyword-namespace-packages + /usr/share/miniconda/envs/coast/lib/python3.10/site-packages/pkg_resources/__init__.py:2350: DeprecationWarning: Deprecated call to `pkg_resources.declare_namespace('pydap')`. + Implementing implicit namespace packages (as specified in PEP 420) is preferred to `pkg_resources.declare_namespace`. See https://setuptools.pypa.io/en/latest/references/keywords.html#keyword-namespace-packages + /usr/share/miniconda/envs/coast/lib/python3.10/site-packages/pkg_resources/__init__.py:2871: DeprecationWarning: Deprecated call to `pkg_resources.declare_namespace('pydap.handlers')`. + Implementing implicit namespace packages (as specified in PEP 420) is preferred to `pkg_resources.declare_namespace`. See https://setuptools.pypa.io/en/latest/references/keywords.html#keyword-namespace-packages + /usr/share/miniconda/envs/coast/lib/python3.10/site-packages/pkg_resources/__init__.py:2350: DeprecationWarning: Deprecated call to `pkg_resources.declare_namespace('pydap')`. + Implementing implicit namespace packages (as specified in PEP 420) is preferred to `pkg_resources.declare_namespace`. See https://setuptools.pypa.io/en/latest/references/keywords.html#keyword-namespace-packages + /usr/share/miniconda/envs/coast/lib/python3.10/site-packages/pkg_resources/__init__.py:2871: DeprecationWarning: Deprecated call to `pkg_resources.declare_namespace('pydap.tests')`. + Implementing implicit namespace packages (as specified in PEP 420) is preferred to `pkg_resources.declare_namespace`. See https://setuptools.pypa.io/en/latest/references/keywords.html#keyword-namespace-packages + /usr/share/miniconda/envs/coast/lib/python3.10/site-packages/pkg_resources/__init__.py:2350: DeprecationWarning: Deprecated call to `pkg_resources.declare_namespace('pydap')`. + Implementing implicit namespace packages (as specified in PEP 420) is preferred to `pkg_resources.declare_namespace`. See https://setuptools.pypa.io/en/latest/references/keywords.html#keyword-namespace-packages + /usr/share/miniconda/envs/coast/lib/python3.10/site-packages/pkg_resources/__init__.py:2871: DeprecationWarning: Deprecated call to `pkg_resources.declare_namespace('sphinxcontrib')`. + Implementing implicit namespace packages (as specified in PEP 420) is preferred to `pkg_resources.declare_namespace`. See https://setuptools.pypa.io/en/latest/references/keywords.html#keyword-namespace-packages + + ```python # set some paths @@ -103,8 +122,7 @@ strat = coast.GriddedStratification(nemo_nwes_t) strat.construct_pycnocline_vars( nemo_nwes_t, nemo_nwes_w ) ``` - /usr/share/miniconda/envs/coast/lib/python3.8/site-packages/xarray/core/computation.py:771: RuntimeWarning: invalid value encountered in sqrt - result_data = func(*input_data) + /usr/share/miniconda/envs/coast/lib/python3.10/site-packages/xarray/core/computation.py:821: RuntimeWarning: invalid value encountered in sqrt ### Plotting data @@ -118,21 +136,21 @@ strat.quick_plot() ``` - -![png](/COAsT/pycnocline_tutorial_files/pycnocline_tutorial_17_0.png) - + (
        , + ) - -![png](/COAsT/pycnocline_tutorial_files/pycnocline_tutorial_17_1.png) - + +![png](/COAsT/pycnocline_tutorial_files/pycnocline_tutorial_17_1.png) + - (
        , - ) + +![png](/COAsT/pycnocline_tutorial_files/pycnocline_tutorial_17_2.png) + diff --git a/content/en/docs/Examples/Notebooks/Gridded/seasia_dic_example_plot_tutorial.md b/content/en/docs/Examples/Notebooks/Gridded/seasia_dic_example_plot_tutorial.md index 79f28623487..eb72db2dde1 100644 --- a/content/en/docs/Examples/Notebooks/Gridded/seasia_dic_example_plot_tutorial.md +++ b/content/en/docs/Examples/Notebooks/Gridded/seasia_dic_example_plot_tutorial.md @@ -16,6 +16,25 @@ import coast import matplotlib.pyplot as plt ``` + /usr/share/miniconda/envs/coast/lib/python3.10/site-packages/pydap/lib.py:5: DeprecationWarning: pkg_resources is deprecated as an API. See https://setuptools.pypa.io/en/latest/pkg_resources.html + /usr/share/miniconda/envs/coast/lib/python3.10/site-packages/pkg_resources/__init__.py:2871: DeprecationWarning: Deprecated call to `pkg_resources.declare_namespace('pydap')`. + Implementing implicit namespace packages (as specified in PEP 420) is preferred to `pkg_resources.declare_namespace`. See https://setuptools.pypa.io/en/latest/references/keywords.html#keyword-namespace-packages + /usr/share/miniconda/envs/coast/lib/python3.10/site-packages/pkg_resources/__init__.py:2871: DeprecationWarning: Deprecated call to `pkg_resources.declare_namespace('pydap.responses')`. + Implementing implicit namespace packages (as specified in PEP 420) is preferred to `pkg_resources.declare_namespace`. See https://setuptools.pypa.io/en/latest/references/keywords.html#keyword-namespace-packages + /usr/share/miniconda/envs/coast/lib/python3.10/site-packages/pkg_resources/__init__.py:2350: DeprecationWarning: Deprecated call to `pkg_resources.declare_namespace('pydap')`. + Implementing implicit namespace packages (as specified in PEP 420) is preferred to `pkg_resources.declare_namespace`. See https://setuptools.pypa.io/en/latest/references/keywords.html#keyword-namespace-packages + /usr/share/miniconda/envs/coast/lib/python3.10/site-packages/pkg_resources/__init__.py:2871: DeprecationWarning: Deprecated call to `pkg_resources.declare_namespace('pydap.handlers')`. + Implementing implicit namespace packages (as specified in PEP 420) is preferred to `pkg_resources.declare_namespace`. See https://setuptools.pypa.io/en/latest/references/keywords.html#keyword-namespace-packages + /usr/share/miniconda/envs/coast/lib/python3.10/site-packages/pkg_resources/__init__.py:2350: DeprecationWarning: Deprecated call to `pkg_resources.declare_namespace('pydap')`. + Implementing implicit namespace packages (as specified in PEP 420) is preferred to `pkg_resources.declare_namespace`. See https://setuptools.pypa.io/en/latest/references/keywords.html#keyword-namespace-packages + /usr/share/miniconda/envs/coast/lib/python3.10/site-packages/pkg_resources/__init__.py:2871: DeprecationWarning: Deprecated call to `pkg_resources.declare_namespace('pydap.tests')`. + Implementing implicit namespace packages (as specified in PEP 420) is preferred to `pkg_resources.declare_namespace`. See https://setuptools.pypa.io/en/latest/references/keywords.html#keyword-namespace-packages + /usr/share/miniconda/envs/coast/lib/python3.10/site-packages/pkg_resources/__init__.py:2350: DeprecationWarning: Deprecated call to `pkg_resources.declare_namespace('pydap')`. + Implementing implicit namespace packages (as specified in PEP 420) is preferred to `pkg_resources.declare_namespace`. See https://setuptools.pypa.io/en/latest/references/keywords.html#keyword-namespace-packages + /usr/share/miniconda/envs/coast/lib/python3.10/site-packages/pkg_resources/__init__.py:2871: DeprecationWarning: Deprecated call to `pkg_resources.declare_namespace('sphinxcontrib')`. + Implementing implicit namespace packages (as specified in PEP 420) is preferred to `pkg_resources.declare_namespace`. See https://setuptools.pypa.io/en/latest/references/keywords.html#keyword-namespace-packages + + ### Define file paths for data @@ -56,8 +75,7 @@ plt.ylabel("latitude") plt.show() ``` - /tmp/ipykernel_3997/1161426776.py:2: UserWarning: The input coordinates to pcolormesh are interpreted as cell centers, but are not monotonically increasing or decreasing. This may lead to incorrectly calculated cell edges, in which case, please supply explicit cell edges to pcolormesh. - plt.pcolormesh( + /tmp/ipykernel_2792/1161426776.py:2: UserWarning: The input coordinates to pcolormesh are interpreted as cell centers, but are not monotonically increasing or decreasing. This may lead to incorrectly calculated cell edges, in which case, please supply explicit cell edges to pcolormesh. diff --git a/content/en/docs/Examples/Notebooks/Gridded/transect_tutorial.md b/content/en/docs/Examples/Notebooks/Gridded/transect_tutorial.md index 396a045b54e..255ff4beebb 100644 --- a/content/en/docs/Examples/Notebooks/Gridded/transect_tutorial.md +++ b/content/en/docs/Examples/Notebooks/Gridded/transect_tutorial.md @@ -25,6 +25,25 @@ import coast import matplotlib.pyplot as plt ``` + /usr/share/miniconda/envs/coast/lib/python3.10/site-packages/pydap/lib.py:5: DeprecationWarning: pkg_resources is deprecated as an API. See https://setuptools.pypa.io/en/latest/pkg_resources.html + /usr/share/miniconda/envs/coast/lib/python3.10/site-packages/pkg_resources/__init__.py:2871: DeprecationWarning: Deprecated call to `pkg_resources.declare_namespace('pydap')`. + Implementing implicit namespace packages (as specified in PEP 420) is preferred to `pkg_resources.declare_namespace`. See https://setuptools.pypa.io/en/latest/references/keywords.html#keyword-namespace-packages + /usr/share/miniconda/envs/coast/lib/python3.10/site-packages/pkg_resources/__init__.py:2871: DeprecationWarning: Deprecated call to `pkg_resources.declare_namespace('pydap.responses')`. + Implementing implicit namespace packages (as specified in PEP 420) is preferred to `pkg_resources.declare_namespace`. See https://setuptools.pypa.io/en/latest/references/keywords.html#keyword-namespace-packages + /usr/share/miniconda/envs/coast/lib/python3.10/site-packages/pkg_resources/__init__.py:2350: DeprecationWarning: Deprecated call to `pkg_resources.declare_namespace('pydap')`. + Implementing implicit namespace packages (as specified in PEP 420) is preferred to `pkg_resources.declare_namespace`. See https://setuptools.pypa.io/en/latest/references/keywords.html#keyword-namespace-packages + /usr/share/miniconda/envs/coast/lib/python3.10/site-packages/pkg_resources/__init__.py:2871: DeprecationWarning: Deprecated call to `pkg_resources.declare_namespace('pydap.handlers')`. + Implementing implicit namespace packages (as specified in PEP 420) is preferred to `pkg_resources.declare_namespace`. See https://setuptools.pypa.io/en/latest/references/keywords.html#keyword-namespace-packages + /usr/share/miniconda/envs/coast/lib/python3.10/site-packages/pkg_resources/__init__.py:2350: DeprecationWarning: Deprecated call to `pkg_resources.declare_namespace('pydap')`. + Implementing implicit namespace packages (as specified in PEP 420) is preferred to `pkg_resources.declare_namespace`. See https://setuptools.pypa.io/en/latest/references/keywords.html#keyword-namespace-packages + /usr/share/miniconda/envs/coast/lib/python3.10/site-packages/pkg_resources/__init__.py:2871: DeprecationWarning: Deprecated call to `pkg_resources.declare_namespace('pydap.tests')`. + Implementing implicit namespace packages (as specified in PEP 420) is preferred to `pkg_resources.declare_namespace`. See https://setuptools.pypa.io/en/latest/references/keywords.html#keyword-namespace-packages + /usr/share/miniconda/envs/coast/lib/python3.10/site-packages/pkg_resources/__init__.py:2350: DeprecationWarning: Deprecated call to `pkg_resources.declare_namespace('pydap')`. + Implementing implicit namespace packages (as specified in PEP 420) is preferred to `pkg_resources.declare_namespace`. See https://setuptools.pypa.io/en/latest/references/keywords.html#keyword-namespace-packages + /usr/share/miniconda/envs/coast/lib/python3.10/site-packages/pkg_resources/__init__.py:2871: DeprecationWarning: Deprecated call to `pkg_resources.declare_namespace('sphinxcontrib')`. + Implementing implicit namespace packages (as specified in PEP 420) is preferred to `pkg_resources.declare_namespace`. See https://setuptools.pypa.io/en/latest/references/keywords.html#keyword-namespace-packages + + ### Define filepaths for data and configuration diff --git a/content/en/docs/Examples/Notebooks/Profile/introduction_to_profile_class.md b/content/en/docs/Examples/Notebooks/Profile/introduction_to_profile_class.md index 0116c2bc964..9484140a147 100644 --- a/content/en/docs/Examples/Notebooks/Profile/introduction_to_profile_class.md +++ b/content/en/docs/Examples/Notebooks/Profile/introduction_to_profile_class.md @@ -77,6 +77,25 @@ import numpy as np import matplotlib.pyplot as plt ``` + /usr/share/miniconda/envs/coast/lib/python3.10/site-packages/pydap/lib.py:5: DeprecationWarning: pkg_resources is deprecated as an API. See https://setuptools.pypa.io/en/latest/pkg_resources.html + /usr/share/miniconda/envs/coast/lib/python3.10/site-packages/pkg_resources/__init__.py:2871: DeprecationWarning: Deprecated call to `pkg_resources.declare_namespace('pydap')`. + Implementing implicit namespace packages (as specified in PEP 420) is preferred to `pkg_resources.declare_namespace`. See https://setuptools.pypa.io/en/latest/references/keywords.html#keyword-namespace-packages + /usr/share/miniconda/envs/coast/lib/python3.10/site-packages/pkg_resources/__init__.py:2871: DeprecationWarning: Deprecated call to `pkg_resources.declare_namespace('pydap.responses')`. + Implementing implicit namespace packages (as specified in PEP 420) is preferred to `pkg_resources.declare_namespace`. See https://setuptools.pypa.io/en/latest/references/keywords.html#keyword-namespace-packages + /usr/share/miniconda/envs/coast/lib/python3.10/site-packages/pkg_resources/__init__.py:2350: DeprecationWarning: Deprecated call to `pkg_resources.declare_namespace('pydap')`. + Implementing implicit namespace packages (as specified in PEP 420) is preferred to `pkg_resources.declare_namespace`. See https://setuptools.pypa.io/en/latest/references/keywords.html#keyword-namespace-packages + /usr/share/miniconda/envs/coast/lib/python3.10/site-packages/pkg_resources/__init__.py:2871: DeprecationWarning: Deprecated call to `pkg_resources.declare_namespace('pydap.handlers')`. + Implementing implicit namespace packages (as specified in PEP 420) is preferred to `pkg_resources.declare_namespace`. See https://setuptools.pypa.io/en/latest/references/keywords.html#keyword-namespace-packages + /usr/share/miniconda/envs/coast/lib/python3.10/site-packages/pkg_resources/__init__.py:2350: DeprecationWarning: Deprecated call to `pkg_resources.declare_namespace('pydap')`. + Implementing implicit namespace packages (as specified in PEP 420) is preferred to `pkg_resources.declare_namespace`. See https://setuptools.pypa.io/en/latest/references/keywords.html#keyword-namespace-packages + /usr/share/miniconda/envs/coast/lib/python3.10/site-packages/pkg_resources/__init__.py:2871: DeprecationWarning: Deprecated call to `pkg_resources.declare_namespace('pydap.tests')`. + Implementing implicit namespace packages (as specified in PEP 420) is preferred to `pkg_resources.declare_namespace`. See https://setuptools.pypa.io/en/latest/references/keywords.html#keyword-namespace-packages + /usr/share/miniconda/envs/coast/lib/python3.10/site-packages/pkg_resources/__init__.py:2350: DeprecationWarning: Deprecated call to `pkg_resources.declare_namespace('pydap')`. + Implementing implicit namespace packages (as specified in PEP 420) is preferred to `pkg_resources.declare_namespace`. See https://setuptools.pypa.io/en/latest/references/keywords.html#keyword-namespace-packages + /usr/share/miniconda/envs/coast/lib/python3.10/site-packages/pkg_resources/__init__.py:2871: DeprecationWarning: Deprecated call to `pkg_resources.declare_namespace('sphinxcontrib')`. + Implementing implicit namespace packages (as specified in PEP 420) is preferred to `pkg_resources.declare_namespace`. See https://setuptools.pypa.io/en/latest/references/keywords.html#keyword-namespace-packages + + We can create a new Profile object easily: @@ -139,13 +158,12 @@ Have a look inside the `profile.py` class to see what it can do profile.plot_map() ``` - /usr/share/miniconda/envs/coast/lib/python3.8/site-packages/cartopy/io/__init__.py:241: DownloadWarning: Downloading: https://naturalearth.s3.amazonaws.com/50m_physical/ne_50m_coastline.zip - warnings.warn(f'Downloading: {url}', DownloadWarning) + /usr/share/miniconda/envs/coast/lib/python3.10/site-packages/cartopy/io/__init__.py:241: DownloadWarning: Downloading: https://naturalearth.s3.amazonaws.com/50m_physical/ne_50m_coastline.zip -![png](/COAsT/0._profile_introduction_files/0._profile_introduction_12_1.png) +![png](/COAsT/introduction_to_profile_class_files/introduction_to_profile_class_12_1.png) @@ -179,6 +197,9 @@ fn_nemo_config = path.join(root, "./config/example_nemo_grid_t.json") nemo = coast.Gridded(fn_nemo_dat, fn_nemo_dom, multiple=True, config=fn_nemo_config) ``` + /usr/share/miniconda/envs/coast/lib/python3.10/site-packages/xarray/core/dataset.py:278: UserWarning: The specified chunks separate the stored chunks along dimension "time_counter" starting at index 2. This could degrade performance. Instead, consider rechunking after loading. + + #### Create a landmask array in Gridded In this example we add a `landmask` variable to the `Gridded` dataset. When this is present, the `obs_operator` will use this to interpolation to the @@ -200,6 +221,10 @@ nemo.dataset = nemo.dataset.rename({"depth_0": "depth"}) # profile methods will model_profiles = profile.obs_operator(nemo) ``` + /usr/share/miniconda/envs/coast/lib/python3.10/site-packages/coast/data/profile.py:456: UserWarning: Converting non-nanosecond precision timedelta values to nanosecond precision. This behavior can eventually be relaxed in xarray, as it is an artifact from pandas which is now beginning to support non-nanosecond precision values. This warning is caused by passing non-nanosecond np.datetime64 or np.timedelta64 values to the DataArray or Variable constructor; it can be silenced by converting the values to nanosecond precision ahead of time. + /usr/share/miniconda/envs/coast/lib/python3.10/site-packages/coast/data/profile.py:456: UserWarning: Converting non-nanosecond precision timedelta values to nanosecond precision. This behavior can eventually be relaxed in xarray, as it is an artifact from pandas which is now beginning to support non-nanosecond precision values. This warning is caused by passing non-nanosecond np.datetime64 or np.timedelta64 values to the DataArray or Variable constructor; it can be silenced by converting the values to nanosecond precision ahead of time. + + Now that we have interpolated the model onto Profiles, we have a new Profile object called `model_profiles`. This can be used to do some comparisons with our original `processed_profile` object, which we created above. @@ -305,13 +330,13 @@ differences.dataset.diff_temperature.plot() - + -![png](/COAsT/0._profile_introduction_files/0._profile_introduction_33_1.png) +![png](/COAsT/introduction_to_profile_class_files/introduction_to_profile_class_33_1.png) @@ -333,13 +358,13 @@ plt.colorbar( label='temperature diff (obs-model)') - + -![png](/COAsT/0._profile_introduction_files/0._profile_introduction_34_1.png) +![png](/COAsT/introduction_to_profile_class_files/introduction_to_profile_class_34_1.png) @@ -372,7 +397,7 @@ surface_errors.plot_map(var_str="diff_temperature") -![png](/COAsT/0._profile_introduction_files/0._profile_introduction_38_0.png) +![png](/COAsT/introduction_to_profile_class_files/introduction_to_profile_class_38_0.png) @@ -418,7 +443,7 @@ bottom_errors.plot_map(var_str="diff_temperature") -![png](/COAsT/0._profile_introduction_files/0._profile_introduction_44_0.png) +![png](/COAsT/introduction_to_profile_class_files/introduction_to_profile_class_44_0.png) @@ -455,7 +480,7 @@ plt.title("Temperature diff (obs-model)") -![png](/COAsT/0._profile_introduction_files/0._profile_introduction_46_1.png) +![png](/COAsT/introduction_to_profile_class_files/introduction_to_profile_class_46_1.png) @@ -533,13 +558,13 @@ plt.legend() - + -![png](/COAsT/0._profile_introduction_files/0._profile_introduction_56_1.png) +![png](/COAsT/introduction_to_profile_class_files/introduction_to_profile_class_56_1.png) @@ -573,13 +598,13 @@ plt.colorbar() - + -![png](/COAsT/0._profile_introduction_files/0._profile_introduction_59_1.png) +![png](/COAsT/introduction_to_profile_class_files/introduction_to_profile_class_59_1.png) @@ -614,12 +639,12 @@ plt.colorbar() - + -![png](/COAsT/0._profile_introduction_files/0._profile_introduction_63_1.png) +![png](/COAsT/introduction_to_profile_class_files/introduction_to_profile_class_63_1.png) diff --git a/content/en/docs/Examples/Notebooks/Profile/wod_bgc_ragged_example.md b/content/en/docs/Examples/Notebooks/Profile/wod_bgc_ragged_example.md index 71c6cf6f337..04a314f5cd6 100644 --- a/content/en/docs/Examples/Notebooks/Profile/wod_bgc_ragged_example.md +++ b/content/en/docs/Examples/Notebooks/Profile/wod_bgc_ragged_example.md @@ -27,6 +27,25 @@ path_examples = "./example_files/" path_config = "./config/" ``` + /usr/share/miniconda/envs/coast/lib/python3.10/site-packages/pydap/lib.py:5: DeprecationWarning: pkg_resources is deprecated as an API. See https://setuptools.pypa.io/en/latest/pkg_resources.html + /usr/share/miniconda/envs/coast/lib/python3.10/site-packages/pkg_resources/__init__.py:2871: DeprecationWarning: Deprecated call to `pkg_resources.declare_namespace('pydap')`. + Implementing implicit namespace packages (as specified in PEP 420) is preferred to `pkg_resources.declare_namespace`. See https://setuptools.pypa.io/en/latest/references/keywords.html#keyword-namespace-packages + /usr/share/miniconda/envs/coast/lib/python3.10/site-packages/pkg_resources/__init__.py:2871: DeprecationWarning: Deprecated call to `pkg_resources.declare_namespace('pydap.responses')`. + Implementing implicit namespace packages (as specified in PEP 420) is preferred to `pkg_resources.declare_namespace`. See https://setuptools.pypa.io/en/latest/references/keywords.html#keyword-namespace-packages + /usr/share/miniconda/envs/coast/lib/python3.10/site-packages/pkg_resources/__init__.py:2350: DeprecationWarning: Deprecated call to `pkg_resources.declare_namespace('pydap')`. + Implementing implicit namespace packages (as specified in PEP 420) is preferred to `pkg_resources.declare_namespace`. See https://setuptools.pypa.io/en/latest/references/keywords.html#keyword-namespace-packages + /usr/share/miniconda/envs/coast/lib/python3.10/site-packages/pkg_resources/__init__.py:2871: DeprecationWarning: Deprecated call to `pkg_resources.declare_namespace('pydap.handlers')`. + Implementing implicit namespace packages (as specified in PEP 420) is preferred to `pkg_resources.declare_namespace`. See https://setuptools.pypa.io/en/latest/references/keywords.html#keyword-namespace-packages + /usr/share/miniconda/envs/coast/lib/python3.10/site-packages/pkg_resources/__init__.py:2350: DeprecationWarning: Deprecated call to `pkg_resources.declare_namespace('pydap')`. + Implementing implicit namespace packages (as specified in PEP 420) is preferred to `pkg_resources.declare_namespace`. See https://setuptools.pypa.io/en/latest/references/keywords.html#keyword-namespace-packages + /usr/share/miniconda/envs/coast/lib/python3.10/site-packages/pkg_resources/__init__.py:2871: DeprecationWarning: Deprecated call to `pkg_resources.declare_namespace('pydap.tests')`. + Implementing implicit namespace packages (as specified in PEP 420) is preferred to `pkg_resources.declare_namespace`. See https://setuptools.pypa.io/en/latest/references/keywords.html#keyword-namespace-packages + /usr/share/miniconda/envs/coast/lib/python3.10/site-packages/pkg_resources/__init__.py:2350: DeprecationWarning: Deprecated call to `pkg_resources.declare_namespace('pydap')`. + Implementing implicit namespace packages (as specified in PEP 420) is preferred to `pkg_resources.declare_namespace`. See https://setuptools.pypa.io/en/latest/references/keywords.html#keyword-namespace-packages + /usr/share/miniconda/envs/coast/lib/python3.10/site-packages/pkg_resources/__init__.py:2871: DeprecationWarning: Deprecated call to `pkg_resources.declare_namespace('sphinxcontrib')`. + Implementing implicit namespace packages (as specified in PEP 420) is preferred to `pkg_resources.declare_namespace`. See https://setuptools.pypa.io/en/latest/references/keywords.html#keyword-namespace-packages + + ### load and preprocess profile and model data @@ -109,6 +128,10 @@ model_profiles = wod_profile_sub.obs_operator(seasia_bgc) #model_profiles.dataset # uncomment to print data object summary ``` + /usr/share/miniconda/envs/coast/lib/python3.10/site-packages/coast/data/profile.py:456: UserWarning: Converting non-nanosecond precision timedelta values to nanosecond precision. This behavior can eventually be relaxed in xarray, as it is an artifact from pandas which is now beginning to support non-nanosecond precision values. This warning is caused by passing non-nanosecond np.datetime64 or np.timedelta64 values to the DataArray or Variable constructor; it can be silenced by converting the values to nanosecond precision ahead of time. + /usr/share/miniconda/envs/coast/lib/python3.10/site-packages/coast/data/profile.py:456: UserWarning: Converting non-nanosecond precision timedelta values to nanosecond precision. This behavior can eventually be relaxed in xarray, as it is an artifact from pandas which is now beginning to support non-nanosecond precision values. This warning is caused by passing non-nanosecond np.datetime64 or np.timedelta64 values to the DataArray or Variable constructor; it can be silenced by converting the values to nanosecond precision ahead of time. + + Remove any points that are far from model. diff --git a/content/en/docs/Examples/Notebooks/Tidegauge/tidegauge_validation_tutorial.md b/content/en/docs/Examples/Notebooks/Tidegauge/tidegauge_validation_tutorial.md index 82b9f795901..4f921fa78a8 100644 --- a/content/en/docs/Examples/Notebooks/Tidegauge/tidegauge_validation_tutorial.md +++ b/content/en/docs/Examples/Notebooks/Tidegauge/tidegauge_validation_tutorial.md @@ -34,6 +34,25 @@ import datetime import matplotlib.pyplot as plt ``` + /usr/share/miniconda/envs/coast/lib/python3.10/site-packages/pydap/lib.py:5: DeprecationWarning: pkg_resources is deprecated as an API. See https://setuptools.pypa.io/en/latest/pkg_resources.html + /usr/share/miniconda/envs/coast/lib/python3.10/site-packages/pkg_resources/__init__.py:2871: DeprecationWarning: Deprecated call to `pkg_resources.declare_namespace('pydap')`. + Implementing implicit namespace packages (as specified in PEP 420) is preferred to `pkg_resources.declare_namespace`. See https://setuptools.pypa.io/en/latest/references/keywords.html#keyword-namespace-packages + /usr/share/miniconda/envs/coast/lib/python3.10/site-packages/pkg_resources/__init__.py:2871: DeprecationWarning: Deprecated call to `pkg_resources.declare_namespace('pydap.responses')`. + Implementing implicit namespace packages (as specified in PEP 420) is preferred to `pkg_resources.declare_namespace`. See https://setuptools.pypa.io/en/latest/references/keywords.html#keyword-namespace-packages + /usr/share/miniconda/envs/coast/lib/python3.10/site-packages/pkg_resources/__init__.py:2350: DeprecationWarning: Deprecated call to `pkg_resources.declare_namespace('pydap')`. + Implementing implicit namespace packages (as specified in PEP 420) is preferred to `pkg_resources.declare_namespace`. See https://setuptools.pypa.io/en/latest/references/keywords.html#keyword-namespace-packages + /usr/share/miniconda/envs/coast/lib/python3.10/site-packages/pkg_resources/__init__.py:2871: DeprecationWarning: Deprecated call to `pkg_resources.declare_namespace('pydap.handlers')`. + Implementing implicit namespace packages (as specified in PEP 420) is preferred to `pkg_resources.declare_namespace`. See https://setuptools.pypa.io/en/latest/references/keywords.html#keyword-namespace-packages + /usr/share/miniconda/envs/coast/lib/python3.10/site-packages/pkg_resources/__init__.py:2350: DeprecationWarning: Deprecated call to `pkg_resources.declare_namespace('pydap')`. + Implementing implicit namespace packages (as specified in PEP 420) is preferred to `pkg_resources.declare_namespace`. See https://setuptools.pypa.io/en/latest/references/keywords.html#keyword-namespace-packages + /usr/share/miniconda/envs/coast/lib/python3.10/site-packages/pkg_resources/__init__.py:2871: DeprecationWarning: Deprecated call to `pkg_resources.declare_namespace('pydap.tests')`. + Implementing implicit namespace packages (as specified in PEP 420) is preferred to `pkg_resources.declare_namespace`. See https://setuptools.pypa.io/en/latest/references/keywords.html#keyword-namespace-packages + /usr/share/miniconda/envs/coast/lib/python3.10/site-packages/pkg_resources/__init__.py:2350: DeprecationWarning: Deprecated call to `pkg_resources.declare_namespace('pydap')`. + Implementing implicit namespace packages (as specified in PEP 420) is preferred to `pkg_resources.declare_namespace`. See https://setuptools.pypa.io/en/latest/references/keywords.html#keyword-namespace-packages + /usr/share/miniconda/envs/coast/lib/python3.10/site-packages/pkg_resources/__init__.py:2871: DeprecationWarning: Deprecated call to `pkg_resources.declare_namespace('sphinxcontrib')`. + Implementing implicit namespace packages (as specified in PEP 420) is preferred to `pkg_resources.declare_namespace`. See https://setuptools.pypa.io/en/latest/references/keywords.html#keyword-namespace-packages + + ### Define paths @@ -52,6 +71,7 @@ if 1: fn_dat = dir + "coast_example_nemo_data.nc" fn_config = "./config/example_nemo_grid_t.json" fn_tidegauge = dir + "tide_gauges/lowestoft-p024-uk-bodc" + fn_tidegauge_bodc = dir + "tide_gauges/LIV2010.txt" fn_tg = dir + "tide_gauges/coast_example_tidegauges.nc" # These are a collection (xr.DataSet) of tidegauge observations. Created for this demonstration, they are synthetic. ``` @@ -64,7 +84,7 @@ We can create our empty tidegauge object: tidegauge = coast.Tidegauge() ``` - Tidegauge object at 0x561eabdbafc0 initialised + Tidegauge object at 0x562173632980 initialised The `Tidegauge` class contains multiple methods for reading different typical @@ -75,7 +95,7 @@ To read a gesla file between two dates, we can use: ```python date0 = datetime.datetime(2007,1,10) date1 = datetime.datetime(2007,1,12) -tidegauge.read_gesla_v3(fn_tidegauge, date_start = date0, date_end = date1) +tidegauge.read_gesla(fn_tidegauge, date_start = date0, date_end = date1) ``` A Tidegauge object is a type of Timeseries object, so it has the form: @@ -457,11 +477,11 @@ Coordinates: time (t_dim) datetime64[ns] 2007-01-10 ... 2007-01-12 longitude (id_dim) float64 1.751 latitude (id_dim) float64 52.47 - id_name (id_dim) <U9 'Lowestoft' + site_name (id_dim) <U9 'Lowestoft' Dimensions without coordinates: id_dim, t_dim Data variables: ssh (id_dim, t_dim) float64 2.818 2.823 2.871 ... 3.214 3.257 3.371 - qc_flags (id_dim, t_dim) int64 1 1 1 1 1 1 1 1 1 1 ... 1 1 1 1 1 1 1 1 1 1
        • + + + +You can do the same for BODC data: + + +```python +date0 = np.datetime64("2020-10-11 07:59") +date1 = np.datetime64("2020-10-20 20:21") +tidegauge.read_bodc(fn_tidegauge_bodc, date0, date1) +tidegauge.dataset +``` + + + + +
          + + + + + + + + + + + + + + +
          <xarray.Dataset>
          +Dimensions:    (id_dim: 1, t_dim: 914)
          +Coordinates:
          +    time       (t_dim) datetime64[ns] 2020-10-11T08:00:00 ... 2020-10-20T20:1...
          +    longitude  (id_dim) float64 -3.018
          +    latitude   (id_dim) float64 53.45
          +    site_name  (id_dim) <U25 'liverpool,_gladstone_dock'
          +Dimensions without coordinates: id_dim, t_dim
          +Data variables:
          +    ssh        (id_dim, t_dim) float64 5.369 5.196 5.032 ... 1.668 1.568 1.545
          +    qc_flags   (id_dim, t_dim) <U1 'M' 'M' 'M' 'M' 'M' ... 'M' 'M' 'M' 'M' 'M'
          +Attributes:
          +    port:               p234
          +    site:               liverpool,_gladstone_dock
          +    start_date:         01oct2020-00.00.00
          +    end_date:           31oct2020-23.45.00
          +    contributor:        national_oceanography_centre,_liverpool
          +    datum_information:  the_data_refer_to_admiralty_chart_datum_(acd)
          +    parameter_code:     aslvbg02_=_surface_elevation_(unspecified_datum)_of_t...
          @@ -551,7 +1089,7 @@ tt = xr.open_dataset(fn_tg) obs = coast.Tidegauge(dataset=tt) ``` - Tidegauge object at 0x561eabdbafc0 initialised + Tidegauge object at 0x562173632980 initialised @@ -562,7 +1100,7 @@ obs = coast.Tidegauge(dataset=tt) obs.dataset = obs.dataset.set_coords("time") ``` - Tidegauge object at 0x561eabdbafc0 initialised + Tidegauge object at 0x562173632980 initialised ## Quick plotting to visualise Tidegauge data @@ -574,13 +1112,12 @@ Tidegauge has ready made quick plotting routines for viewing time series and tid fig, ax = obs.plot_on_map() ``` - /usr/share/miniconda/envs/coast/lib/python3.8/site-packages/cartopy/io/__init__.py:241: DownloadWarning: Downloading: https://naturalearth.s3.amazonaws.com/50m_physical/ne_50m_coastline.zip - warnings.warn(f'Downloading: {url}', DownloadWarning) + /usr/share/miniconda/envs/coast/lib/python3.10/site-packages/cartopy/io/__init__.py:241: DownloadWarning: Downloading: https://naturalearth.s3.amazonaws.com/50m_physical/ne_50m_coastline.zip -![png](/COAsT/tidegauge_validation_tutorial_files/tidegauge_validation_tutorial_16_1.png) +![png](/COAsT/tidegauge_validation_tutorial_files/tidegauge_validation_tutorial_18_1.png) @@ -594,7 +1131,7 @@ fig, ax = obs.plot_on_map_multiple([obs,obs], color_var_str="latitude") -![png](/COAsT/tidegauge_validation_tutorial_files/tidegauge_validation_tutorial_18_0.png) +![png](/COAsT/tidegauge_validation_tutorial_files/tidegauge_validation_tutorial_20_0.png) @@ -615,7 +1152,7 @@ plt.show() -![png](/COAsT/tidegauge_validation_tutorial_files/tidegauge_validation_tutorial_20_0.png) +![png](/COAsT/tidegauge_validation_tutorial_files/tidegauge_validation_tutorial_22_0.png) @@ -631,13 +1168,13 @@ obs.isel(id_dim=stn_id).plot_timeseries(date_start=np.datetime64('2007-01-01'), (
          , - ) + ) -![png](/COAsT/tidegauge_validation_tutorial_files/tidegauge_validation_tutorial_22_1.png) +![png](/COAsT/tidegauge_validation_tutorial_files/tidegauge_validation_tutorial_24_1.png) @@ -663,14 +1200,14 @@ obs_lower = obs_cut.subset_indices_lonlat_box(lonbounds = [-9, -3], fig, ax = obs_upper.plot_on_map_multiple([obs_upper, obs_lower], color_var_str="latitude") ``` - Tidegauge object at 0x561eabdbafc0 initialised - Tidegauge object at 0x561eabdbafc0 initialised - Tidegauge object at 0x561eabdbafc0 initialised + Tidegauge object at 0x562173632980 initialised + Tidegauge object at 0x562173632980 initialised + Tidegauge object at 0x562173632980 initialised -![png](/COAsT/tidegauge_validation_tutorial_files/tidegauge_validation_tutorial_24_1.png) +![png](/COAsT/tidegauge_validation_tutorial_files/tidegauge_validation_tutorial_26_1.png) @@ -688,6 +1225,9 @@ nemo.dataset = nemo.dataset.rename({"depth_0": "depth"}) #nemo.dataset = nemo.dataset[["ssh", "landmask"]] ``` + /usr/share/miniconda/envs/coast/lib/python3.10/site-packages/xarray/core/dataset.py:278: UserWarning: The specified chunks separate the stored chunks along dimension "time_counter" starting at index 2. This could degrade performance. Instead, consider rechunking after loading. + + interpolate model onto obs locations ``` tidegauge_from_model = obs.obs_operator(nemo, time_interp='nearest') @@ -716,7 +1256,7 @@ tidegauge_from_model = obs.obs_operator(nemo, time_interp='nearest') Indexing model data at tide gauge locations.. Calculating interpolation distances. Interpolating in time... - Tidegauge object at 0x561eabdbafc0 initialised + Tidegauge object at 0x562173632980 initialised However, the new `tidegauge_from_model` will the same number of time entries as the `obs` data, rather than the model data (so this will include lots of empty values). So, for a more useful demonstration we trim the observed gauge data so it better matches the model data. @@ -729,7 +1269,7 @@ end_date = datetime.datetime(2007, 1, 31) obs = obs.time_slice(start_date, end_date) ``` - Tidegauge object at 0x561eabdbafc0 initialised + Tidegauge object at 0x562173632980 initialised ### Interpolate model data onto obs locations @@ -747,7 +1287,7 @@ model_timeseries.dataset Indexing model data at tide gauge locations.. Calculating interpolation distances. Interpolating in time... - Tidegauge object at 0x561eabdbafc0 initialised + Tidegauge object at 0x562173632980 initialised @@ -1143,7 +1683,7 @@ Attributes: timeStamp: 2019-Dec-26 04:35:28 GMT uuid: 96cae459-d3a1-4f4f-b82b-9259179f95f7 history: Tue May 19 12:07:51 2020: ncks -v votemper,sossheig -d time... - NCO: 4.4.7
        • name :
          AMM7_1d_20070101_20070131_25hourm_grid_T
          description :
          ocean T grid variables, 25h meaned
          title :
          ocean T grid variables, 25h meaned
          Conventions :
          CF-1.6
          timeStamp :
          2019-Dec-26 04:35:28 GMT
          uuid :
          96cae459-d3a1-4f4f-b82b-9259179f95f7
          history :
          Tue May 19 12:07:51 2020: ncks -v votemper,sossheig -d time_counter,0,30,5 AMM7_1d_20070101_20070131_25hourm_grid_T.nc example_data.nc
          NCO :
          4.4.7
        • @@ -1368,7 +1908,7 @@ plt.show() -![png](/COAsT/tidegauge_validation_tutorial_files/tidegauge_validation_tutorial_35_0.png) +![png](/COAsT/tidegauge_validation_tutorial_files/tidegauge_validation_tutorial_37_0.png) @@ -1392,8 +1932,8 @@ tganalysis = coast.TidegaugeAnalysis() obs_new, model_new = tganalysis.match_missing_values(obs.dataset.ssh, model_timeseries.dataset.ssh) ``` - Tidegauge object at 0x561eabdbafc0 initialised - Tidegauge object at 0x561eabdbafc0 initialised + Tidegauge object at 0x562173632980 initialised + Tidegauge object at 0x562173632980 initialised Although we input data arrays to the above routine, it returns two new Tidegauge objects. Now you have equivalent and comparable sets of time series that can be easily compared. @@ -1419,8 +1959,8 @@ model_new = tganalysis.demean_timeseries(model_new.dataset) # easily compared. ``` - Tidegauge object at 0x561eabdbafc0 initialised - Tidegauge object at 0x561eabdbafc0 initialised + Tidegauge object at 0x562173632980 initialised + Tidegauge object at 0x562173632980 initialised @@ -1443,7 +1983,7 @@ plt.show() -![png](/COAsT/tidegauge_validation_tutorial_files/tidegauge_validation_tutorial_44_0.png) +![png](/COAsT/tidegauge_validation_tutorial_files/tidegauge_validation_tutorial_46_0.png) @@ -1626,7 +2166,7 @@ tide_obs = tganalysis.reconstruct_tide_utide(obs_new.dataset.time, ha_obs) prep/calcs ... done. prep/calcs ... done. prep/calcs ... done. - Tidegauge object at 0x561eabdbafc0 initialised + Tidegauge object at 0x562173632980 initialised prep/calcs ... done. prep/calcs ... done. prep/calcs ... done. @@ -1676,7 +2216,7 @@ tide_obs = tganalysis.reconstruct_tide_utide(obs_new.dataset.time, ha_obs) prep/calcs ... done. prep/calcs ... done. prep/calcs ... done. - Tidegauge object at 0x561eabdbafc0 initialised + Tidegauge object at 0x562173632980 initialised Get new TidegaugeMultiple objects containing non tidal residuals: @@ -1690,8 +2230,8 @@ ntr_obs = tganalysis.calculate_non_tidal_residuals(obs_new.dataset.ssh, tide_obs ntr_obs.dataset ``` - Tidegauge object at 0x561eabdbafc0 initialised - Tidegauge object at 0x561eabdbafc0 initialised + Tidegauge object at 0x562173632980 initialised + Tidegauge object at 0x562173632980 initialised @@ -2066,10 +2606,10 @@ Coordinates: time (t_dim) datetime64[ns] 2007-01-01 ... 2007-01-30T23:00:00 longitude (id_dim) float64 1.292 -3.975 -5.158 -5.051 ... 7.567 350.8 8.717 latitude (id_dim) float64 51.95 51.57 57.9 51.71 ... 58.0 51.53 53.87 - site_name (id_dim) object 'Harwich' 'Mumbles' 'Ullapool' ... 'N/A' 'N/A' + site_name (id_dim) <U25 'Harwich' 'Mumbles' 'Ullapool' ... 'N/A' 'N/A' Dimensions without coordinates: t_dim, id_dim Data variables: - ntr (id_dim, t_dim) float64 0.4182 0.4182 0.4182 ... -0.02699 0.2945
          • @@ -2180,7 +2720,7 @@ dx0.dataset ``` - Tidegauge object at 0x561eabdbafc0 initialised + Tidegauge object at 0x562173632980 initialised @@ -2552,13 +3092,28 @@ dl.xr-attrs {
            <xarray.Dataset>
             Dimensions:    (t_dim: 720, id_dim: 61)
             Coordinates:
            -    latitude   (id_dim) float64 51.95 51.57 57.9 51.71 ... 58.0 51.53 53.87
            -    site_name  (id_dim) object 'Harwich' 'Mumbles' 'Ullapool' ... 'N/A' 'N/A'
                 longitude  (id_dim) float64 1.292 -3.975 -5.158 -5.051 ... 7.567 350.8 8.717
            +    latitude   (id_dim) float64 51.95 51.57 57.9 51.71 ... 58.0 51.53 53.87
            +    site_name  (id_dim) <U25 'Harwich' 'Mumbles' 'Ullapool' ... 'N/A' 'N/A'
             Dimensions without coordinates: t_dim, id_dim
             Data variables:
                 time       (t_dim) datetime64[ns] 2007-01-01 ... 2007-01-30T23:00:00
            -    ssh        (id_dim, t_dim) float64 nan nan nan nan nan ... nan nan nan nan
            • @@ -2666,7 +3206,7 @@ plt.show() -![png](/COAsT/tidegauge_validation_tutorial_files/tidegauge_validation_tutorial_57_0.png) +![png](/COAsT/tidegauge_validation_tutorial_files/tidegauge_validation_tutorial_59_0.png) @@ -2695,7 +3235,7 @@ plt.tight_layout() -![png](/COAsT/tidegauge_validation_tutorial_files/tidegauge_validation_tutorial_59_0.png) +![png](/COAsT/tidegauge_validation_tutorial_files/tidegauge_validation_tutorial_61_0.png) @@ -3085,9 +3625,9 @@ dl.xr-attrs {
              <xarray.Dataset>
               Dimensions:                  (t_dim: 720, id_dim: 61, threshold: 40)
               Coordinates:
              -    latitude                 (id_dim) float64 51.95 51.57 57.9 ... 51.53 53.87
              -    site_name                (id_dim) object 'Harwich' 'Mumbles' ... 'N/A' 'N/A'
                   longitude                (id_dim) float64 1.292 -3.975 ... 350.8 8.717
              +    latitude                 (id_dim) float64 51.95 51.57 57.9 ... 51.53 53.87
              +    site_name                (id_dim) <U25 'Harwich' 'Mumbles' ... 'N/A' 'N/A'
                 * threshold                (threshold) float64 -2.0 -1.9 -1.8 ... 1.7 1.8 1.9
               Dimensions without coordinates: t_dim, id_dim
               Data variables:
              @@ -3095,7 +3635,22 @@ Data variables:
                   peak_count_ntr           (id_dim, threshold) float64 40.0 40.0 ... 2.0 1.0
                   time_over_threshold_ntr  (id_dim, threshold) float64 720.0 720.0 ... 5.0 4.0
                   dailymax_count_ntr       (id_dim, threshold) float64 30.0 30.0 ... 2.0 1.0
              -    monthlymax_count_ntr     (id_dim, threshold) float64 1.0 1.0 1.0 ... 1.0 1.0
              • threshold
                PandasIndex
                PandasIndex(Index([                  -2.0,                   -1.9,    -1.7999999999999998,
                +          -1.6999999999999997,    -1.5999999999999996,    -1.4999999999999996,
                +          -1.3999999999999995,    -1.2999999999999994,    -1.1999999999999993,
                +          -1.0999999999999992,    -0.9999999999999991,     -0.899999999999999,
                +          -0.7999999999999989,    -0.6999999999999988,    -0.5999999999999988,
                +         -0.49999999999999867,    -0.3999999999999986,    -0.2999999999999985,
                +          -0.1999999999999984,   -0.09999999999999831, 1.7763568394002505e-15,
                +          0.10000000000000187,    0.20000000000000195,    0.30000000000000204,
                +          0.40000000000000213,     0.5000000000000022,     0.6000000000000023,
                +           0.7000000000000024,     0.8000000000000025,     0.9000000000000026,
                +           1.0000000000000027,     1.1000000000000028,     1.2000000000000028,
                +            1.300000000000003,      1.400000000000003,      1.500000000000003,
                +           1.6000000000000032,     1.7000000000000033,     1.8000000000000034,
                +           1.9000000000000035],
                +      dtype='float64', name='threshold'))
            • @@ -3249,7 +3783,7 @@ plt.ylabel('event count') -![png](/COAsT/tidegauge_validation_tutorial_files/tidegauge_validation_tutorial_63_1.png) +![png](/COAsT/tidegauge_validation_tutorial_files/tidegauge_validation_tutorial_65_1.png) @@ -3271,13 +3805,13 @@ plt.plot(thresh_obs.threshold[22], normalised_event_count[22], 'r+', markersize= - [] + [] -![png](/COAsT/tidegauge_validation_tutorial_files/tidegauge_validation_tutorial_65_1.png) +![png](/COAsT/tidegauge_validation_tutorial_files/tidegauge_validation_tutorial_67_1.png) @@ -3297,8 +3831,8 @@ ssh_diff = tganalysis.difference(obs_new.dataset, model_new.dataset) ntr_diff.dataset ``` - Tidegauge object at 0x561eabdbafc0 initialised - Tidegauge object at 0x561eabdbafc0 initialised + Tidegauge object at 0x562173632980 initialised + Tidegauge object at 0x562173632980 initialised @@ -3671,17 +4205,17 @@ dl.xr-attrs { Dimensions: (t_dim: 720, id_dim: 61) Coordinates: * time (t_dim) datetime64[ns] 2007-01-01 ... 2007-01-30T23:00:00 - site_name (id_dim) object 'Harwich' 'Mumbles' ... 'N/A' 'N/A' + site_name (id_dim) <U25 'Harwich' 'Mumbles' ... 'N/A' 'N/A' longitude (id_dim) float64 1.292 -3.975 -5.158 ... 7.567 350.8 8.717 latitude (id_dim) float64 51.95 51.57 57.9 ... 58.0 51.53 53.87 Dimensions without coordinates: t_dim, id_dim Data variables: diff_ntr (id_dim, t_dim) float64 nan nan nan ... 0.05885 0.3435 abs_diff_ntr (id_dim, t_dim) float64 nan nan nan ... 0.05885 0.3435 - square_diff_ntr (id_dim, t_dim) float64 nan nan nan ... 0.003464 0.118
            • diff --git a/content/en/docs/Examples/Notebooks/Tidegauge/tidetable_tutorial.md b/content/en/docs/Examples/Notebooks/Tidegauge/tidetable_tutorial.md index 8c023734a39..64507a1787d 100644 --- a/content/en/docs/Examples/Notebooks/Tidegauge/tidetable_tutorial.md +++ b/content/en/docs/Examples/Notebooks/Tidegauge/tidetable_tutorial.md @@ -27,6 +27,25 @@ import coast import numpy as np ``` + /usr/share/miniconda/envs/coast/lib/python3.10/site-packages/pydap/lib.py:5: DeprecationWarning: pkg_resources is deprecated as an API. See https://setuptools.pypa.io/en/latest/pkg_resources.html + /usr/share/miniconda/envs/coast/lib/python3.10/site-packages/pkg_resources/__init__.py:2871: DeprecationWarning: Deprecated call to `pkg_resources.declare_namespace('pydap')`. + Implementing implicit namespace packages (as specified in PEP 420) is preferred to `pkg_resources.declare_namespace`. See https://setuptools.pypa.io/en/latest/references/keywords.html#keyword-namespace-packages + /usr/share/miniconda/envs/coast/lib/python3.10/site-packages/pkg_resources/__init__.py:2871: DeprecationWarning: Deprecated call to `pkg_resources.declare_namespace('pydap.responses')`. + Implementing implicit namespace packages (as specified in PEP 420) is preferred to `pkg_resources.declare_namespace`. See https://setuptools.pypa.io/en/latest/references/keywords.html#keyword-namespace-packages + /usr/share/miniconda/envs/coast/lib/python3.10/site-packages/pkg_resources/__init__.py:2350: DeprecationWarning: Deprecated call to `pkg_resources.declare_namespace('pydap')`. + Implementing implicit namespace packages (as specified in PEP 420) is preferred to `pkg_resources.declare_namespace`. See https://setuptools.pypa.io/en/latest/references/keywords.html#keyword-namespace-packages + /usr/share/miniconda/envs/coast/lib/python3.10/site-packages/pkg_resources/__init__.py:2871: DeprecationWarning: Deprecated call to `pkg_resources.declare_namespace('pydap.handlers')`. + Implementing implicit namespace packages (as specified in PEP 420) is preferred to `pkg_resources.declare_namespace`. See https://setuptools.pypa.io/en/latest/references/keywords.html#keyword-namespace-packages + /usr/share/miniconda/envs/coast/lib/python3.10/site-packages/pkg_resources/__init__.py:2350: DeprecationWarning: Deprecated call to `pkg_resources.declare_namespace('pydap')`. + Implementing implicit namespace packages (as specified in PEP 420) is preferred to `pkg_resources.declare_namespace`. See https://setuptools.pypa.io/en/latest/references/keywords.html#keyword-namespace-packages + /usr/share/miniconda/envs/coast/lib/python3.10/site-packages/pkg_resources/__init__.py:2871: DeprecationWarning: Deprecated call to `pkg_resources.declare_namespace('pydap.tests')`. + Implementing implicit namespace packages (as specified in PEP 420) is preferred to `pkg_resources.declare_namespace`. See https://setuptools.pypa.io/en/latest/references/keywords.html#keyword-namespace-packages + /usr/share/miniconda/envs/coast/lib/python3.10/site-packages/pkg_resources/__init__.py:2350: DeprecationWarning: Deprecated call to `pkg_resources.declare_namespace('pydap')`. + Implementing implicit namespace packages (as specified in PEP 420) is preferred to `pkg_resources.declare_namespace`. See https://setuptools.pypa.io/en/latest/references/keywords.html#keyword-namespace-packages + /usr/share/miniconda/envs/coast/lib/python3.10/site-packages/pkg_resources/__init__.py:2871: DeprecationWarning: Deprecated call to `pkg_resources.declare_namespace('sphinxcontrib')`. + Implementing implicit namespace packages (as specified in PEP 420) is preferred to `pkg_resources.declare_namespace`. See https://setuptools.pypa.io/en/latest/references/keywords.html#keyword-namespace-packages + + Load and plot High and Low Water data. @@ -53,7 +72,7 @@ Initiate a TideGauge object, if a filename is passed it assumes it is a GESLA ty tg = coast.Tidegauge() ``` - Tidegauge object at 0x55d4e8c40fc0 initialised + Tidegauge object at 0x56422f0cb980 initialised Specify the data read as a High Low Water dataset. @@ -84,7 +103,7 @@ tg.dataset.plot.scatter(x="time", y="ssh") - + @@ -154,7 +173,7 @@ HT = tg.get_tide_table_times(np.datetime64("2020-10-13 12:48"), method="nearest_ print("HT:", HT.values, "m at", HT.time.values) ``` - HT: [8.01] m at 2020-10-13T07:59:00.000000000 + HT: 8.01 m at 2020-10-13T07:59:00.000000000 The get_tidetabletimes() method can take extra paremeters such as a window size, an integer number of hours to seek either side of the guess. @@ -166,8 +185,3 @@ HLW = tg.get_tide_table_times(np.datetime64("2020-10-13 12:48"), winsize=2, meth HLW = tg.get_tide_table_times(np.datetime64("2020-10-13 12:48"), winsize=1, method="nearest_1") ``` - - -```python - -``` diff --git a/content/en/docs/Examples/Notebooks/_index.md b/content/en/docs/Examples/Notebooks/_index.md index 5b2e92e2673..4ae10b6c4f1 100644 --- a/content/en/docs/Examples/Notebooks/_index.md +++ b/content/en/docs/Examples/Notebooks/_index.md @@ -1,7 +1,8 @@ --- -title: "Notebooks" -linkTitle: "Notebooks" +title: "Tutorials - Notebooks" +linkTitle: "Tutorials - Notebooks" weight: 1 description: > + These tutorials were automatically rendered from the python notebooks in [COAsT:examples_scripts/notebook_tutorials:runnable_notebooks](https://github.com/British-Oceanographic-Data-Centre/COAsT/tree/master/example_scripts/notebook_tutorials/runnable_notebooks). These can be downloaded and run locally with some example data and example configuration files, that you can download following the procedures described on the [Getting Started section](https://british-oceanographic-data-centre.github.io/COAsT/docs/examples/notebooks/). Example scripts rendered from python notebooks [available within the COAsT package](https://github.com/British-Oceanographic-Data-Centre/COAsT/tree/master/example_scripts/notebook_tutorials). --- diff --git a/content/en/docs/Examples/Remote Datasets/Copernicus.md b/content/en/docs/Examples/Remote Datasets/Copernicus.md index 975b80df770..d4f161651f6 100644 --- a/content/en/docs/Examples/Remote Datasets/Copernicus.md +++ b/content/en/docs/Examples/Remote Datasets/Copernicus.md @@ -3,11 +3,12 @@ title: "Copernicus" linkTitle: "Copernicus" weight: 6 date: 2020-09-15 +toc_hide: false +hide_summary: false description: > Examples of access to Copernicus datasets via OPeNDAP. --- -# Intro Remote access to Copernicus Marine Environment Monitoring Service CMEMS datasets is enabled via [OPeNDAP](https://en.wikipedia.org/wiki/OPeNDAP) and [Pydap](https://github.com/pydap/pydap). OPeNDAP allows COAsT to stream data from Copernicus without downloading specific subsets or the dataset as a whole. @@ -16,63 +17,79 @@ In order to access CMEMS data, you must first [create an account](https://resour After you have created your account, or if you already have one, a product ID can be selected from the [product catalogue](https://resources.marine.copernicus.eu/products). -# Example -```python +## Example +```python3 import coast +# Replace with your own credentials +username = "my_username" +password = "my_password" # Authenticate with Copernicus and select a database. -database = coast.Copernicus(USERNAME, PASSWORD, "nrt") +database = coast.Copernicus(username, password, "nrt") -# Instantiate a product with its ID -forecast = database.get_product("global-analysis-forecast-phy-001-024") +# Instantiate a product with its ID. +forecast = database.get_product("cmems_mod_glo_phy-thetao_anfc_0.083deg_PT6H-i") -# Create a COAsT object with the relevant config file +# Create a COAsT object with the relevant config file. nemo_t = coast.Gridded(fn_data=forecast, config="./config/example_cmems_grid_t.json") ``` -Look inside the COAsT gridded object: `nemo_t.dataset` +Look inside the COAsT gridded object: ``` +>>> nemo_t.dataset -Dimensions: (x_dim: 4320, y_dim: 2041, z_dim: 50, t_dim: 912) +Dimensions: (x_dim: 4320, y_dim: 2041, z_dim: 50, t_dim: 4409) Coordinates: - longitude (x_dim) float32 -180.0 -179.9 -179.8 ... 179.8 179.8 179.9 - latitude (y_dim) float32 -80.0 -79.92 -79.83 -79.75 ... 89.83 89.92 90.0 + * longitude (x_dim) float32 -180.0 -179.9 -179.8 ... 179.8 179.8 179.9 + * latitude (y_dim) float32 -80.0 -79.92 -79.83 -79.75 ... 89.83 89.92 90.0 * z_dim (z_dim) float32 0.494 1.541 2.646 ... 5.275e+03 5.728e+03 - time (t_dim) datetime64[ns] 2020-01-01T12:00:00 ... 2022-06-30T12... + * time (t_dim) datetime64[ns] 2020-11-01 ... 2023-11-08 Dimensions without coordinates: x_dim, y_dim, t_dim Data variables: - mlotst (t_dim, y_dim, x_dim) float32 dask.array - ssh (t_dim, y_dim, x_dim) float32 dask.array - bottomT (t_dim, y_dim, x_dim) float32 dask.array - sithick (t_dim, y_dim, x_dim) float32 dask.array - siconc (t_dim, y_dim, x_dim) float32 dask.array - usi (t_dim, y_dim, x_dim) float32 dask.array - vsi (t_dim, y_dim, x_dim) float32 dask.array temperature (t_dim, z_dim, y_dim, x_dim) float32 dask.array - salinity (t_dim, z_dim, y_dim, x_dim) float32 dask.array - uo (t_dim, z_dim, y_dim, x_dim) float32 dask.array - vo (t_dim, z_dim, y_dim, x_dim) float32 dask.array -Attributes: (12/24) - title: daily mean fields from Global Ocean Physics Analysis ... - easting: longitude - northing: latitude - history: 2022/06/21 00:05:41 MERCATOR OCEAN Netcdf creation - source: MERCATOR PSY4QV3R1 - institution: MERCATOR OCEAN - ... - longitude_min: -180.0 - longitude_max: 179.91667 - latitude_min: -80.0 - latitude_max: 90.0 - z_min: 0.494025 - z_max: 5727.917 +Attributes: (12/16) + title: Instantaneous fields for product GLOBAL_AN... + references: http://marine.copernicus.eu + credit: E.U. Copernicus Marine Service Information... + licence: http://marine.copernicus.eu/services-portf... + contact: servicedesk.cmems@mercator-ocean.eu + producer: CMEMS - Global Monitoring and Forecasting ... + ... ... + source: MERCATOR GLO12 + product_user_manual: http://marine.copernicus.eu/documents/PUM/... + quality_information_document: http://marine.copernicus.eu/documents/QUID... + compute_hosts: fidjim01-sihpc,fidjim02-sihpc,fidjim03-sih... + n_workers: 4 + sshcluster_timeout: 2700 ``` -Or plot a snapshot of surface temperature. (This lazy loaded so may take time to render) +View temperature data directly: +``` +>>> nemo_t.dataset.temperature.isel(t_dim=1,z_dim=1) + +dask.array +Coordinates: + * longitude (x_dim) float32 -180.0 -179.9 -179.8 -179.8 ... 179.8 179.8 179.9 + * latitude (y_dim) float32 -80.0 -79.92 -79.83 -79.75 ... 89.83 89.92 90.0 + z_dim float32 1.541 + time datetime64[ns] 2020-11-01T06:00:00 +Dimensions without coordinates: y_dim, x_dim +Attributes: + long_name: Temperature + standard_name: sea_water_potential_temperature + units: degrees_C + unit_long: Degrees Celsius + valid_min: -10 + valid_max: 40 + cell_methods: area: mean + _ChunkSizes: [1, 6, 256, 540] ``` + +Or plot a snapshot of surface temperature (this loaded "lazily" from Copernicus so may take time to render): +```python3 import matplotlib.pyplot as plt -plt.pcolormesh( nemo_t.dataset.temperature.isel(t_dim=1,z_dim=1)) +plt.pcolormesh(nemo_t.dataset.temperature.isel(t_dim=1,z_dim=1)) plt.show() ``` diff --git a/content/en/docs/Examples/Remote Datasets/_index.md b/content/en/docs/Examples/Remote Datasets/_index.md index e7190d796ab..9802c8620ce 100644 --- a/content/en/docs/Examples/Remote Datasets/_index.md +++ b/content/en/docs/Examples/Remote Datasets/_index.md @@ -3,6 +3,8 @@ title: "Remote Datasets" linkTitle: "Remote Datasets" weight: 6 date: 2020-09-15 +toc_hide: true +hide_summary: true description: > Example scripts for access to remote datasets. --- \ No newline at end of file diff --git a/content/en/docs/Examples/_index.md b/content/en/docs/Examples/_index.md index ebbd7825746..17bbd7d7f46 100644 --- a/content/en/docs/Examples/_index.md +++ b/content/en/docs/Examples/_index.md @@ -1,19 +1,13 @@ --- -title: "Examples" -linkTitle: "Examples" +title: "Usage" +linkTitle: "Usage" weight: 4 date: 2020-09-15 description: > Demonstrations and tutorials to help you get to know COAsT. --- +
              +In order to describe some of the usages of this repository, we prepared a list of examples and tutorials. This section is split into: - -The examples in `Notebooks` are tutorials automatically rendered from the python notebooks in [COAsT:examples_scripts/notebook_tutorials](https://github.com/British-Oceanographic-Data-Centre/COAsT/tree/master/example_scripts/notebook_tutorials). -These can be downloaded and run locally with the [example data](https://linkedsystems.uk/erddap/files/COAsT_example_files/). - -Within COAsT, configuration files are used to pass information about the example data files. The configuration files used -with the example data can be [downloaded](https://british-oceanographic-data-centre.github.io/COAsT/docs/getting-started/#example-configuration-files) -or linked to a local version of the [COAsT repository](https://github.com/British-Oceanographic-Data-Centre/COAsT/tree/master/config). -These files should be placed in a ``config`` directory in your working directory, and form a useful template for loading new data files. - -This Examples section is split into: +
              +
              diff --git a/content/en/docs/Examples/configs_gallery/index.md b/content/en/docs/Examples/configs_gallery/index.md index c6abb27b8a5..75e70038bfb 100644 --- a/content/en/docs/Examples/configs_gallery/index.md +++ b/content/en/docs/Examples/configs_gallery/index.md @@ -1,6 +1,6 @@ --- -title: "Configuration Gallery" -linkTitle: "Gallery" +title: "Example scripts and Gallery" +linkTitle: "Example scripts and gallery" date: 2020-09-15 weight: 20 description: > diff --git a/content/en/docs/General Information/_index.md b/content/en/docs/General Information/_index.md new file mode 100755 index 00000000000..84ce8e6377e --- /dev/null +++ b/content/en/docs/General Information/_index.md @@ -0,0 +1,11 @@ + +--- +title: "General Information" +linkTitle: "General Information" +weight: 4 +date: 2017-01-05 +description: > + General information about some characteristics of the package. +--- + +Here you'll discover valuable details regarding the project's libraries, features, tests, and CI/CD setup. \ No newline at end of file diff --git a/content/en/docs/General Information/build_test.md b/content/en/docs/General Information/build_test.md new file mode 100644 index 00000000000..f4aa05d6eac --- /dev/null +++ b/content/en/docs/General Information/build_test.md @@ -0,0 +1,18 @@ +--- +title: "Build test" +linkTitle: "Build test" +weight: 4 +description: > + Build testing. +--- + +In order to run Build Tests locally, you need to follow the procedures of [Getting Started](https://british-oceanographic-data-centre.github.io/COAsT/docs/getting-started/) related to `Development use installation` and `Example data files`. + +After that you can run: + +```shell +pip install . && pytest unit_testing/unit_test.py -s +``` + +It will ask you for the path of your example files. + diff --git a/content/en/docs/contributing_package/dask/index.md b/content/en/docs/General Information/dask/index.md similarity index 93% rename from content/en/docs/contributing_package/dask/index.md rename to content/en/docs/General Information/dask/index.md index c5500689a2a..e46664ea59a 100644 --- a/content/en/docs/contributing_package/dask/index.md +++ b/content/en/docs/General Information/dask/index.md @@ -2,19 +2,16 @@ title: "Dask" linkTitle: "Dask" date: 2021-10-05 -weight: 5 -menu: - documentation: - weight: 20 +weight: 3 description: > - information on using Dask within the COAsT package + Information on using Dask within the COAsT package --- -# What is Dask +## What is Dask Dask is a python library that allows code to be run in parallel based on the hardware your running on. This means Dask works just as well on your laptop as on your large server. -## Using Dask +### Using Dask Dask is included in the xarray library. When loading a data source (file/NumPy array) Dask is automatically initiated with the _chunks_ variable in the config file. However the chunking may not be optimal but you can adjust it before computation are made. ``` python @@ -30,7 +27,7 @@ nemo_t.dataset.chunk(chunks) **chunks** tell Dask where to _break_ your data across the different processor tasks. -### Direct Dask +#### Direct Dask Dask can be imported and used directly @@ -43,7 +40,7 @@ big_array = da.multiple(array1,array2) Dask arrays follow the NumPy API. This means that most NumPy functions have a Dask version. -## Potential Issues +### Potential Issues Dask objects are immutable. This means that the classic approach, pre-allocation follow by modification will not work. The following code will error. @@ -54,7 +51,8 @@ depth_0 = da.zero_like(e3w_0) depth_0[0, :, :] = 0.5 * e3w_0[0, :, :] # this line will error out ``` -#### option 1 +- **Option 1** + Continue using NumPy function but wrapping the final value in a Dask array. This final Dask object will still be in-memory. ``` python @@ -66,7 +64,7 @@ depth_0[1:, :, :] = depth_0[0, :, :] + np.cumsum(e3w_0[1:, :, :], axis=0) depth_0 = da.array(depth_0) ``` -#### option 2 +- **Option 2** Dask offers a feature called [delayed](https://docs.dask.org/en/latest/delayed.html). This can be used as a modifier on your complex methods as follows; @@ -88,7 +86,7 @@ ne.data_variable.compute() Dask will now work out a computing path via all the required methods using as many processor tasks as possible. -### Visualising the Graph +#### Visualising the Graph Dask is fundamentally a computational graph library, to understand what is happening in the background it can help to see these graphs (on smaller/simpler problems). This can be achieved by running; ``` python diff --git a/content/en/docs/contributing_package/dask/mydask.jpg b/content/en/docs/General Information/dask/mydask.jpg similarity index 100% rename from content/en/docs/contributing_package/dask/mydask.jpg rename to content/en/docs/General Information/dask/mydask.jpg diff --git a/content/en/docs/Contributing-Docs/github_actions_flowchart.md b/content/en/docs/General Information/github_actions_flowchart.md similarity index 90% rename from content/en/docs/Contributing-Docs/github_actions_flowchart.md rename to content/en/docs/General Information/github_actions_flowchart.md index 4a6805cbe53..1714eb56f7d 100644 --- a/content/en/docs/Contributing-Docs/github_actions_flowchart.md +++ b/content/en/docs/General Information/github_actions_flowchart.md @@ -1,10 +1,7 @@ --- title: "Github Actions Flowchart" linkTitle: "Github Actions Flowchart" -weight: 3 -menu: - documentation: - weight: 20 +weight: 5 description: > Flowchart of Github actions active on the COAsT and COAsT-Site repositories. --- @@ -37,7 +34,7 @@ graph LR; end; {{< /mermaid >}} -### Verification and Formatting +### Verification, Formatting ans Pylint {{< mermaid align="left">}} graph LR @@ -47,12 +44,19 @@ graph LR C[Check formatting]--> D; D[Apply formatting] end; + + subgraph pylint - runs on pull requests + A1[Setup python]-- 3.9 -->B1; + B1[Install pylint]-->C1; + C1[Check Score]-- if test pass --> D1; + D1[Update Score] + end; subgraph verifiy_package - runs for every push - A1[Setup python]-- 3.8 and 3.9 -->B1; - B1[Install dependencies]-->C1; - C1[Lint]-->D1; - D1[Test] + A2[Setup python]-- 3.8 and 3.9 -->B2; + B2[Install dependencies]-->C2; + C2[Lint]-->D2; + D2[Test] end; click B1 "https://www.github.com" "tooltip" {{< /mermaid >}} diff --git a/content/en/docs/contributing_package/lazy-loading/index.md b/content/en/docs/General Information/lazy-loading/index.md similarity index 91% rename from content/en/docs/contributing_package/lazy-loading/index.md rename to content/en/docs/General Information/lazy-loading/index.md index 0772bfebbd5..7ca11a1e1f7 100644 --- a/content/en/docs/contributing_package/lazy-loading/index.md +++ b/content/en/docs/General Information/lazy-loading/index.md @@ -1,26 +1,23 @@ --- -title: "working Lazily" +title: "Working Lazily" linkTitle: "Lazy" -weight: 4 -menu: - documentation: - weight: 20 +weight: 2 description: > - information on using lazy loading and/or evaluation within the COAsT package + Information on using lazy loading and/or evaluation within the COAsT package --- -# What is lazy... +## What is lazy... -## ...loading +### ...loading Lazy loading determines if data is read into memory straight away (on that line of code execution) or if the loading is delayed until the data is physical altered by some function (normally mathematical in nature) -## ...evaluation +### ...evaluation Lazy evaluation is about delaying the execution of a method/function call until the value is physical required, normally as a graph or printed to screen. Lazy evaluation can also help with memory management, useful with large dataset, by allowing for optimisation on the chained methods calls. Lazy loading and Lazy evaluation are offer used together, though it is not mandatory and always worth checking that both are happening. -# Being Lazy in COAsT +## Being Lazy in COAsT There are two way to be Lazy within the COAsT package. * xarray diff --git a/content/en/docs/contributing_package/push_to_master.md b/content/en/docs/General Information/push_to_master.md similarity index 97% rename from content/en/docs/contributing_package/push_to_master.md rename to content/en/docs/General Information/push_to_master.md index b57d621bd35..315ad1ce245 100644 --- a/content/en/docs/contributing_package/push_to_master.md +++ b/content/en/docs/General Information/push_to_master.md @@ -1,10 +1,7 @@ --- title: "Push to master" linkTitle: "Push to master" -weight: 7 -menu: - documentation: - weight: 20 +weight: 6 description: > Procedure for pushing to master / publishing. --- diff --git a/content/en/docs/contributing_package/python_logging.md b/content/en/docs/General Information/python_logging.md similarity index 90% rename from content/en/docs/contributing_package/python_logging.md rename to content/en/docs/General Information/python_logging.md index ab7fbb20c1a..24e216f35c6 100644 --- a/content/en/docs/contributing_package/python_logging.md +++ b/content/en/docs/General Information/python_logging.md @@ -1,10 +1,7 @@ --- title: "Logging" linkTitle: "Logging" -weight: 3 -menu: - documentation: - weight: 20 +weight: 1 description: > Python logging diagnostics guidance. --- @@ -18,7 +15,7 @@ coast.logging_util.setup_logging() ``` This is all you need to enable full logging output to the console. -By default, setup_logging will use the "DEBUG" logging level, if you want to adjust this, you can use the flags from the logging library. +By default, setup_logging will use the "CRITICAL" logging level, if you want to adjust this, you can use the flags from the logging library. ```python import coast import logging diff --git a/content/en/docs/Getting started/Getting Started at Liverpool/_index.md b/content/en/docs/Getting started/Getting Started at Liverpool/_index.md deleted file mode 100644 index fb7079bc098..00000000000 --- a/content/en/docs/Getting started/Getting Started at Liverpool/_index.md +++ /dev/null @@ -1,129 +0,0 @@ ---- -title: "Getting Started at Liverpool" -linkTitle: "Getting started at Liverpool" -weight: 2 -description: > - Download, install and use. ---- - -![image info](https://github.githubassets.com/images/icons/emoji/unicode/26a0.png) -**For use on Liverpool servers only** - -## Prerequisites - -This package requires; -- python version 3.8+ -- Anaconda version 4.10+ - -Are there any system requirements for using this project? What languages are supported (if any)? Do users need to already have any software or tools installed? - -## Basic use installation via conda or pip - -This package should be installed by run; -```shell -conda install -c bodc coast -``` -However, there is also the option of; -```shell -pip install COAsT -``` - -if you wish to install from source then got to [GitHub](https://github.com/british-oceanographic-data-centre/COAsT) and follow the README instructions - -The base package should now be installed on your system. The following packages might be required for some of the advanced plotting features; - -- cartopy - -## Development use installation - -If you would prefer to work with a clone of the repository in a development -python environment do the following. First clone the repoitory in the place -where you want to work: -``` -git clone https://github.com/British-Oceanographic-Data-Centre/COAsT.git -``` -Then start building a python environment. Here (for example) called ``coast_dev``: - -``` -module load anaconda/5-2021 # or whatever it takes to activate conda -conda config --add channels conda-forge # add conda-forge to your conda channels - -conda create -n coast_dev python=3.8 # create a new environment. E.g. `coast_dev` -conda activate coast_dev # activate new environment -``` -Install packages to the environment: -``` -cd COAsT -conda install --file conda_dev_requirements.txt -``` - - -## Obtaining Example files - -In order to try the Examples, example data files and configuration files are recommended. - -#### Example data files - -Download example files and link them into a new directory: - -```shell -rm -rf coast_demo -mkdir coast_demo -cd coast_demo -wget -c https://linkedsystems.uk/erddap/files/COAsT_example_files/COAsT_example_files.zip && unzip COAsT_example_files.zip -ln -s COAsT_example_files example_files -``` - -#### Example configuration files - -To facilitate loading different types of data, key information is passed to COAsT using configuration files. The config files used in the Examples are in the repository, or can be downloaded as static files: - -```shell -cd ../coast_demo -wget -c https://github.com/British-Oceanographic-Data-Centre/COAsT/archive/refs/heads/master.zip && unzip master.zip -ln -s COAsT-master/config config -``` - -## Preparation for Workshop - -#### Package Installation with conda - -Assuming a linux environment and that you have anaconda on your system: - -```shell -## Fresh build in new conda environment -module load anaconda/5-2021 # or whatever it takes to activate conda -yes | conda env remove --name workshop_env # remove environment 'workshop_env' if it exists -yes | conda create --name workshop_env python=3.8 # create a new environment -conda activate workshop_env # activate new environment -yes | conda install -c bodc coast=2.0.3 # install COAsT within new environment -yes | conda install -c conda-forge cartopy=0.20.2 # install cartopy -``` -Then obtain the Example data and configuration files (as above). - - -## External Requirements -All required packages should be defined in the [environment.yml](https://github.com/British-Oceanographic-Data-Centre/COAsT/blob/develop/environment.yml). - -## Test it! -The below example works best with the COAsT example data. Start by opening a -python terminal and then importing COAsT: -```python -import coast -``` -Before using coast, we will just check that Anaconda has installed correct package versions. In the python console copy the following: -```python -import gsw -import matplotlib -print(gsw.__version__) -print(matplotlib.__version__) -``` -The output should be -```python -3.4.0 -3.5.1 -``` -or later. If it is, great carry on. If it is not, problems may occur with some functionality in coast. Please get in contact using the contacts in the workshop email. - -Take a look at the example pages for more information on -specific objects and methods. diff --git a/content/en/docs/Getting started/_index.md b/content/en/docs/Getting started/_index.md index 21aa0f37076..0efb18a6cf4 100644 --- a/content/en/docs/Getting started/_index.md +++ b/content/en/docs/Getting started/_index.md @@ -11,7 +11,7 @@ description: > This package requires; - a linux environment or [docker](https://docs.docker.com/desktop/install/windows-install/) for Windows - python version 3.8.10 -- [Miniconda](https://docs.conda.io/en/latest/miniconda.html#linux-installers) +- [Miniconda](https://docs.conda.io/en/latest/miniconda.html#linux-installers) (if you are planning to install it using conda) ## Basic use installation via conda or pip @@ -24,6 +24,17 @@ However, there is also the option of; pip install COAsT ``` +### (Optional): Extra python packages +In order to try the [Examples described in this documentation](https://british-oceanographic-data-centre.github.io/COAsT/docs/examples/), you may also need to install the following python packages (as they are not natively part of the COAsT package): + +```bash +# cartopy +pip install cartopy +# xesmf +pip install xesmf +``` + + ## Development use installation If you would prefer to work with a clone of the repository in a development @@ -40,49 +51,39 @@ conda env update --prune --file environment.yml conda activate coast ``` -## Building the docker image and executing an interactive environment -Warning, building the image is resource heavy. -After cloning the repo (as above). -```shell -docker build . --tag coast -docker compose up -d -docker compose exec coast bash -``` -You can now start a python session and `import coast`. -docker compose mounts 3 directories from you host machine onto the docker container: - ./example_files:/example_files - ./config:/config - ./example_scripts:/example_scripts - +The last step is to install the coast package on this environment: +``` +pip install -e . +``` -## Obtaining Example files -In order to try the Examples, example data files and configuration files are recommended. +## Building the docker image and executing an interactive environment -#### Example data files +> **Warning:** +> Building the image is resource heavy -Download example files and link them into a new directory: +After cloning the repo (as above): ```shell -wget -c https://linkedsystems.uk/erddap/files/COAsT_example_files/COAsT_example_files.zip && unzip COAsT_example_files.zip +docker build . --tag coast +docker compose up -d +docker compose exec coast bash ``` +You can now start a python session and `import coast`. Docker compose mounts 3 +directories from you host machine onto the docker container: -#### Example configuration files + ./example_files:/example_files + ./config:/config + ./example_scripts:/example_scripts -To facilitate loading different types of data, key information is passed to COAsT using configuration files. The config files used in the Examples are in the repository, or can be downloaded as static files: - -```shell -wget -c https://github.com/British-Oceanographic-Data-Centre/COAsT/archive/refs/heads/master.zip && unzip master.zip -``` +## Check the installation! -## Test it! -The below example works best with the COAsT example data. Start by opening a -python terminal and then importing COAsT: +Start by opening a python terminal and then importing COAsT: ```python import coast ``` -Before using coast, we will just check that Anaconda has installed correct package versions. In the python console copy the following: +Before using coast, we will just check if the installation process (Anaconda or pip) has installed correct package versions. In the python console copy the following: ```python import gsw import matplotlib @@ -94,7 +95,35 @@ The output should be 3.4.0 3.5.1 ``` -or later. If it is, great carry on. If it is not, problems may occur with some functionality in coast. Please get in contact using the contacts in the workshop email. +or later. If it is, great carry on. If it is not, problems may occur with some functionality in coast. In this case, please update these packages versions. + + +## Test it! + +In order to test the package, example data files and configuration files are recommended. + +### Example data files + +Download example files and link them into a new directory: + +```shell +wget -c https://linkedsystems.uk/erddap/files/COAsT_example_files/COAsT_example_files.zip && unzip COAsT_example_files.zip && rm -f COAsT_example_files.zip +``` + +### Example configuration files + +To facilitate loading different types of data, key information is passed to COAsT using configuration files. The config files used in the Examples are in the repository, or can be downloaded as static files: + +```shell +wget -c https://github.com/British-Oceanographic-Data-Centre/COAsT/archive/refs/heads/master.zip && unzip master.zip && rm -f master.zip +mv COAsT-master/config ./ && rm -rf COAsT-master +``` + +Explore the [API Reference Page](https://british-oceanographic-data-centre.github.io/COAsT/docs/references/) to access detailed information about specific objects and methods. Additionally, you can find practical usage examples on the [example pages](https://british-oceanographic-data-centre.github.io/COAsT/docs/examples/). + +
              + +> **IMPORTANT**: +> If you are utilizing COAsT at the National Oceanography Centre (NOC) on Liverpool Servers, kindly access [this link on the NOC Intranet](https://nocacuk.sharepoint.com/sites/DigitalOcean/SitePages/COAsT-Installation-on-Liverpool-Servers.aspx) for additional details. -Take a look at the example pages for more information on -specific objects and methods. +
              \ No newline at end of file diff --git a/content/en/docs/Overview/_index.md b/content/en/docs/Overview/_index.md index d7d7a8350a1..8e6584ecbce 100644 --- a/content/en/docs/Overview/_index.md +++ b/content/en/docs/Overview/_index.md @@ -6,10 +6,25 @@ description: > What is COAsT? --- -COAsT (Coastal Ocean Assessment Toolkit) is a diagnostics and assessment python -toolbox for kilometric scale regional models. The aim is that this toolbox is -community-ready and flexible. +The Coastal Ocean Assessment Toolbox (COAsT) is a valuable Python package specifically designed to assist in the assessment, management, and analysis of high-resolution regional ocean model outputs. It provides a comprehensive set of tools and functionalities for analyzing and visualizing various aspects of coastal ocean data, delivering novel diagnostics for processes that emerge within these models. + +## Key Features + +- **High-Resolution Ocean Models**: COAsT is tailored to work with high-resolution regional ocean models + +- **NEMO Integration**: The initial focus of COAsT is on delivering a limited number of novel diagnostics for [NEMO](https://www.nemo-ocean.eu) configurations, a widely used ocean model. However, the toolbox is designed to be expanded to include other diagnostics and support for additional ocean models. + +- **xarray Framework**: COAsT leverages the capabilities of the [xarray](http://xarray.pydata.org/en/stable/) library to provide efficient and user-friendly data handling and analysis. + +- **Community-Ready and Flexible**: The aim of COAsT is to create a toolbox that is ready for collaboration with the research community. It is designed to be flexible, allowing users to extend and adapt its functionalities to suit their specific research needs. + +## Functionalities + +- **Observation Data Co-processing and Management**: COAsT includes an expanding array of functions for reading and processing of ocean observational data types for co-analysis with simulation data. These data sources include satellite altimetry, tide gauges and in-situ profile data. + +- **Visualization and Mapping**: COAsT offers tools for creating visual representations of your data through maps, graphs, and charts. It seamlessly integrates with popular libraries such as cartopy and matplotlib + +- **Spatial Analysis**: COAsT provides robust spatial analysis tools for geospatial data analysis and statistical computations. For example flows across contours or transect, and computations over geographic regions using masks. + +- **Statistical Analysis**: The package also offers a suite of statistical analysis capabilities -The initial focus will be on delivering a limited number of novel diagnostics -for [NEMO](https://www.nemo-ocean.eu) configurations, but that the toolbox would -be expanded to include other diagnostics and other ocean models. diff --git a/content/en/docs/Reference/_index.md b/content/en/docs/Reference/_index.md new file mode 100644 index 00000000000..7786da7e99a --- /dev/null +++ b/content/en/docs/Reference/_index.md @@ -0,0 +1,7 @@ +--- +title: "API Reference" +linkTitle: "API Reference" +date: 2022-11-23 +description: > + This page provides an auto-generated summary of COAsT’s API. For more details and examples, refer to the relevant chapters in the main part of the documentation. +--- diff --git a/content/en/docs/Reference/index.md b/content/en/docs/Reference/index_class.md similarity index 100% rename from content/en/docs/Reference/index.md rename to content/en/docs/Reference/index_class.md diff --git a/content/en/docs/_index.md b/content/en/docs/_index.md index d0b7e0b9c16..ae91749653a 100755 --- a/content/en/docs/_index.md +++ b/content/en/docs/_index.md @@ -1,7 +1,7 @@ --- -title: "Documentation" -linkTitle: "Documentation" +title: "COAsT Documentation" +linkTitle: "COAsT Documentation" weight: 20 menu: main: @@ -24,8 +24,11 @@ ________________________________________________________________________________ __________________________________________________________________________________________ ``` -COAsT is a Python package for managing and analysing high resolution NEMO output. Here -you can find information on obtaining, installing and using COAsT as well as guidelines +Coastal Ocean Assessment Toolbox (COAST) is a Python package specifically +designed to assist in the assessment, management and analysis of high resolution +regional ocean models outputs. + +Here you can find information on obtaining, installing and using COAsT as well as guidelines for contributing to the project. This documentation site is still under construction but you can still find guidelines for diff --git a/content/en/docs/contributing/_index.md b/content/en/docs/contributing/_index.md new file mode 100755 index 00000000000..44b29c6b36a --- /dev/null +++ b/content/en/docs/contributing/_index.md @@ -0,0 +1,15 @@ + +--- +title: "Contributing to COAsT" +linkTitle: "Contributing to COAsT" +weight: 4 +date: 2017-01-05 +description: > + Guidelines for contributing to the COAsT Python package, Includes Python style and structure. +--- + +Your contributions to this repository are highly encouraged. We welcome bug reports, bug fixes, documentation enhancements, new features, and creative ideas. + +If you're new to COAsT or open-source development, we recommend visiting the [GitHub "issues" tab](https://github.com/British-Oceanographic-Data-Centre/COAsT/issues) to explore issues that pique your interest. You'll find various issues listed under [Documentation](https://github.com/British-Oceanographic-Data-Centre/COAsT/labels/documentation) and [Good first issues](https://github.com/British-Oceanographic-Data-Centre/COAsT/labels/good%20first%20issue) to help you get started. Once you've identified an issue that intrigues you, return here to set up your development environment. + +If you have questions or need assistance, please refrain from filing an issue. Instead, visit our [Discussion forum](https://github.com/British-Oceanographic-Data-Centre/COAsT/discussions). We're here to help! \ No newline at end of file diff --git a/content/en/docs/contributing/bug_report.md b/content/en/docs/contributing/bug_report.md new file mode 100644 index 00000000000..b8c40b6427a --- /dev/null +++ b/content/en/docs/contributing/bug_report.md @@ -0,0 +1,34 @@ +--- +title: "Bug Report" +linkTitle: "Bug Report" +date: 2021-10-05 +weight: 1 +menu: + documentation: + weight: 20 +description: > + Python object structure guidance. +--- + +Bug reports are an important part of making COAsT more stable. Having a complete bug report will allow others to reproduce the bug and provide insight into fixing. See this [stackoverflow article](https://stackoverflow.com/help/minimal-reproducible-example) for tips on writing a good bug report. + +Trying if the bug is ocurring in the lastest version of the package is worthwhile exercise to confirm the bug still exists. It is also worth searching existing bug reports and pull requests to see if the issue has already been reported and/or fixed. + +Bug reports must: + +1. Include a short, self contained Python snippet reproducing the problem. You can format the code nicely by using GitHub Flavored Markdown: + +``` +.```python +import coast + +fn_data = "" +fn_domain = "" +fn_config = "" +data = coast.Gridded(fn_data, fn_domain, fn_config) +```. +``` + +2. Include the full version string of COAsT and its dependencies. Explain why the current behavior is wrong/not desired and what you expect instead. The issue will then show up to the COAsT community and be open to comments/ideas from others. + +[Click here](https://github.com/British-Oceanographic-Data-Centre/COAsT/issues/new) to open an issue. diff --git a/content/en/docs/contributing/contributing-docs.md b/content/en/docs/contributing/contributing-docs.md new file mode 100644 index 00000000000..fb688096fb6 --- /dev/null +++ b/content/en/docs/contributing/contributing-docs.md @@ -0,0 +1,96 @@ +--- +title: "Contributing: Documentation" +linkTitle: "Contributing: Documentation" +date: 2021-10-05 +weight: 2 +description: > + Guidelines for contributing to the COAsT documentation site. +--- + +If you're not a developer, your contributions to the documentation are still of huge value, even if you're not an expert in COAsT. In fact, some sections of our docs may benefit from your fresh perspective. If you come across something that doesn't make sense to you, updating that section once you figure it out can greatly assist the next person. + +All submissions, including those from project members, require review. We use GitHub pull requests for this purpose. For more information on using pull requests, consult [GitHub Help](https://help.github.com/articles/about-pull-requests/). + +## About COAsT Documentation + +We rely on the following technologies to create our Documentation: + +- [Hugo](https://gohugo.io/) Extended Version for formatting and generating our Documentation website. +- The [Docsy](https://github.com/google/docsy) theme for styling and site structure. +- [GitHub Pages](https://help.github.com/en/github/working-with-github-pages) for site deployment. + +Hugo, an open-source static site generator, provides templates, a standardized content organization, and website generation. You write pages in Markdown (or HTML if you prefer), and Hugo transforms them into a website. + +Here are some key points about our documentation: + +- COAsT documentation consists of three parts: tutorial notebooks within the code itself, docstrings within the code, and the [documentation repository](https://github.com/British-Oceanographic-Data-Centre/COAsT-site). + +- The tutorial notebooks provide guidance on using the code for analysis, docstrings explain individual function usage, and the documentation offers topic-based overviews along with other information (overviews, installation, usage, etc). + +- All functions should contain a docstring, which provides basic information on its usage. For this project, the [reStructuredText docstring format](https://www.python.org/dev/peps/pep-0287/) is suggested. + +## Updating a Single Page + +If you come across something you'd like to change while using the docs, Docsy provides a convenient way to do so: + +1. Click **Edit this page** in the top right-hand corner of the page. + +2. If you don't already have an up-to-date fork of the project repo, you'll be prompted to get one. Click **Fork this repository and propose changes** or **Update your Fork** to obtain an up-to-date version of the project to edit. The relevant page in your fork will be displayed in edit mode. + +3. Make your edits. + +4. Submit a pull request with a summary of the changes. + +## Previewing Your Changes Locally + +To preview your changes locally, run your own Hugo server. Ensure you have the following prerequisites: + +1. **Node.js and npm Installation**: Download and install Node.js, including npm, from the official [Node.js website](https://nodejs.org/). We recommend using version 18 or later. + +2. **Hugo Installation**: You'll need an extended version of Hugo, preferably version 0.120.1 or later, for local builds and previews of sites using Docsy. To ensure you have the correct Hugo version, follow these steps: + + - If you install Hugo from the release page, select the **extended Hugo version** to support SCSS. + + - After installation, verify your Hugo version with `hugo version`. It should resemble the following: + + ```bash + hugo v0.120.2-9c2b2414d231ec1bdaf3e3a030bf148a45c7aa17+extended linux/amd64 BuildDate=2023-10-31T16:27:18Z VendorInfo=gohugoio + ``` + + - Ensure the version name includes "extended." + + - For more details, see [this installation guide](https://gohugo.io/getting-started/installing/). + +Next, fork the [COAsT-site repo](https://github.com/British-Oceanographic-Data-Centre/COAsT-site.git) into your project and create a local copy using `git clone`: + +```bash +git clone --recurse-submodules --depth 1 git@github.com:British-Oceanographic-Data-Centre/COAsT-site.git +cd COAsT-site +``` + +Now, install the necessary dependencies and scripts: + +```bash +npm install # Install package dependencies +npm run prepare # Fetch the submodule used as the theme and install its dependencies +``` + +After cloning the site repository, navigate to the root folder and execute the following command to serve the website locally: + +```bash +hugo server +``` + +The `hugo server` command builds and serves the site at http://localhost:1313/COAsT by default. While serving your site locally, Hugo will monitor content changes and refresh your site automatically. + +Follow the standard GitHub workflow to edit files, commit changes, push them to your fork, and create a pull request. + +## Creating an Issue + +If you've identified a problem in the documentation but aren't sure how to fix it yourself, please create an issue in the [COAsT-site repo](https://github.com/British-Oceanographic-Data-Centre/COAsT-site.git). You can also create an issue about a specific page by clicking the **Create Issue** button in the top right-hand corner of the page. + +## Useful Resources + +- [Docsy User Guide](https://www.docsy.dev/about/): All about Docsy, including navigation, design, and multi-language support. +- [Hugo Documentation](https://gohugo.io/documentation/): A comprehensive reference for Hugo. +- [GitHub Hello World!](https://guides.github.com/activities/hello-world/): A basic introduction to GitHub concepts and workflow. \ No newline at end of file diff --git a/content/en/docs/Contributing-Docs/github_workflow.md b/content/en/docs/contributing/contributing-package/_index.md similarity index 83% rename from content/en/docs/Contributing-Docs/github_workflow.md rename to content/en/docs/contributing/contributing-package/_index.md index d674ac4e0c5..d4fdac08382 100644 --- a/content/en/docs/Contributing-Docs/github_workflow.md +++ b/content/en/docs/contributing/contributing-package/_index.md @@ -1,34 +1,26 @@ --- -title: "Github Workflow" -linkTitle: "Github Workflow" +title: "Contributing to the Package" +linkTitle: "Contributing to the Package" +date: 2021-10-05 weight: 3 -menu: - documentation: - weight: 20 description: > - Guidance on using the Github Workflow. + Guidelines for contributing to the COAsT documentation site. --- -For COAsT development we use a Github workflow to manage version control and collaboration. Git allows use to keep track of changes made to the COAsT code base, avoid breaking existing code and work as a group on a single package. Any contributor needs to use this workflow to add their code. Below is some guidance on using git with COAsT, including a typical workflow and cheat sheet. -For more information on git, see: +Anyone interested in helping to develop COAsT need to have in mind that for COAsT development we use a Github workflow to manage version control and collaboration. Git allows use to keep track of changes made to the COAsT code base, avoid breaking existing code and work as a group on a single package. -Github (https://github.com/) - -The Github page for this package can be found: - -[here](https://github.com/british-oceanographic-data-centre/COAsT) +Before understand more about the workflow of how to contribute to the package, you need to have in mind some key ideas. ## Key Ideas 1. The COAsT repository has two core branches: `master` and `develop`. The `master` branch contains the tested code that you install when using Anaconda. This is updated less frequently, and is the "user-facing" branch of code. Most contributors do not need to edit this branch. The `develop` branch is the 'pre-master' branch, where **working** code is kept. This is the leading branch, with the most up-to-date code, although it is not necessarily user-facing. When writing code into your own branch (see below), it is 'branched' from `develop` and then eventually merged back into `develop`. **You should never make changes directly to either `master` or `develop`**. 2. There is a 'local' and 'remote' copy of the COAsT repository. The local repository exists only on your machine. The remote repository is the one you see on the Github website and exists separately. The two versions of the repository can be synchronised at a single point using commands such as `git pull` `git push` and `git fetch` (see below). After cloning (downloading) the repository, all modifications you make/add/commit will **only be local until you push them to the remote repository**. -## Typical Workflow -A typical workflow for editting COAsT in git might look like: +## Typical Workflow for contribution -1. **Clone Repository:** `git clone git@github.com:British-Oceanographic-Data-Centre/COAsT.git`. This will create a new copy of COAsT on your local system which you can use to interact with git and view/edit the source code. This only needs to be done once. +A typical workflow for editting COAsT in git might look like: -2. **Checkout develop:** `git checkout develop`. Before creating a new branch for your code, you should checkout the develop branch. This will switch your **local** repository to the develop branch. You can check what branch your current local repository is in by entering `git branch` -- it should now say `develop` +1. **Clone Repository:** `git clone git@github.com:British-Oceanographic-Data-Centre/COAsT.git`. This will create a new copy of COAsT on your local system which you can use to interact with git and view/edit the source code. This only needs to be done once. The branch that will be clonned will be the `develop`; 3. **Create/checkout your new branch:** `git checkout -b new_branch_name`. This will create and checkout your new branch -- right now it is an identical copy of `develop`. However, any changes you commit to your local repository will be saved into your branch. Once you have created your branch, you can open it as before, using `git checkout new_branch_name`. @@ -42,10 +34,8 @@ A typical workflow for editting COAsT in git might look like: 8. **Push your local repository to the remote:** `git push origin`. This will upload the changes you have made in the branch you are in (and only this branch) to the remote (website) repository. If this is the first time you have pushed this branch then an error may appear telling you to repush with the `--set-upstream` flag enable. Simply copy and paste this command back into the terminal. This will "create" your branch in the remote repository. Once pushed, github will do some auto-checks to make sure the code works (which it may not, but that is fine). You can continue to modify the code at any point, and push multiple times. This is encouraged if sharing with other collaboraters. - **Once you are satisfied with your changes, move onto the next steps.** - 9. **Make sure your local branch is up to date with the remote:** `git pull origin` when in your branch. This is to ensure that nobody else has changed your branch, or if they have to update your local branch with the changes on the remote. 10. **Update your branch with develop:**. Before requesting that your branch and its changes be merged back into the `develop` branch, it is good practice to first merge develop back into your branch. This is because `develop` may have changed since you started working on your branch and these changes should be merged into your branch to ensure that conflicts are resolved. To do this, first update develop by entering `git checkout develop` and `git pull`. This will update the `develop` branch on your local machine. Then merge `develop` back into your branch by entering `git checkout your_branch` and `git merge develop`. This may say up-to-date (in which case GREAT), or successful (in which case GREAT) or may say there are some conflicts. This happens when more than one person has changed the same piece of code. @@ -54,16 +44,17 @@ A typical workflow for editting COAsT in git might look like: 12. **Create a pull request for your branch**. First your most up to date branch using `git push origin`, even after merging develop in step 9/10. On the website you may then create a 'pull request' which is a formal way of saying you want to merge your branch back into `develop`. A pull request allows you to ask people to 'review' your branch, share your code, view the changes in your branch and other things. To make a pull request, go to the website, click on the pull requests tab and click `Create new pull request`. Then select your branch in the right drop down menu and `develop` in the left. You may then enter a description of the changes you have made and anything else you would like reviewers to see. -13. **Reviewers review the code:** Requested reviewers take a look at your changes and run the unit_test. Once they are satisfied, they will approve the pull request, or add comments about any problems. +13. **Check Github actions results**. Some github actions runs everytime you open a pull request. Please make sure that all of then passed. Otherwise, you will not be able to continue with the pull request. In this step, please pay attention on the code formating and styling, following PEP8 guide. + +14. **Reviewers review the code:** Requested reviewers take a look at your changes and run the unit_test. Once they are satisfied, they will approve the pull request, or add comments about any problems. -14. **Merge branch into develop:** Once reviewers are satisfied, you may click `Merge branch` at the bottom of the pull request. Now your changes will be added into develop! Again, this is fine as the branch has been inspected by reviewers and any change can be reverted using `git revert` (although this is not encouraged for the `develop` branch). +15. **Merge branch into develop:** Once reviewers are satisfied, you may click `Merge branch` at the bottom of the pull request. Now your changes will be added into develop! Again, this is fine as the branch has been inspected by reviewers and any change can be reverted using `git revert` (although this is not encouraged for the `develop` branch). -**Note: After creating a pull request, Github will automatically apply "black formatting" to the code. This will commit new (small) changes to the branch so you should always do a `git pull` on your branch to make sure your local version is up to date with the remote. +**Note: After creating a pull request, Github will automatically apply "black formatting" to the code and update "pylint score". This will commit new (small) changes to the branch so you should always do a `git pull` on your branch to make sure your local version is up to date with the remote. ## Condensed Workflow 1. `git clone git@github.com:British-Oceanographic-Data-Centre/COAsT.git`. -2. `git checkout develop` 3. `git checkout -b new_branch_name` 4. Make changes 5. `git add changed_file` diff --git a/content/en/docs/contributing_package/python_structure.md b/content/en/docs/contributing/contributing-package/code_structure.md similarity index 69% rename from content/en/docs/contributing_package/python_structure.md rename to content/en/docs/contributing/contributing-package/code_structure.md index dcf19d2ec90..24161729cf7 100644 --- a/content/en/docs/contributing_package/python_structure.md +++ b/content/en/docs/contributing/contributing-package/code_structure.md @@ -1,29 +1,35 @@ --- -title: "Python: Structure" -linkTitle: "Python: Structure" -date: 2021-10-05 +title: "Code structure" +linkTitle: "Code structure" weight: 2 -menu: - documentation: - weight: 20 description: > - Python object structure guidance. + Python style guidance. --- -** Notes on Object Structure and Loading (for contributors): - COAsT is an object-orientated package, meaning that data is stored within Python object structures. In addition to data storage, these objects contain methods (subroutines) -which allow for manipulation of this data. An example of such an object is the Gridded -object, which allows for the storage and manipulation of e.g. NEMO output and domain data. It -is important to understand how to load data using COAsT and the structure of the resulting +which allow for manipulation of this data. + +The fundamental concepts of Object-Oriented Programming (OOP) are well-established and thoroughly documented. However, we believe it is important to focus certain guidelines that are particularly relevant to this programming language and its specific application: + +* In Python, all class attributes are technically public, but semantically, attributes can be designated as non-public by including leading underscores in the name. For instance, "my\_variable" becomes "\_my\_variable". These attributes are generally referred to as "protected". + +* When you define a Python class, it is a best practice to inherit from the base object type. This convention stems from Python 2.X, as classes and types were not originally synonymous. This behaviour is implicit in Python 3.X but the convention has persisted nonetheless. Classes defined this way are referred to as "new-style" classes. + +* When defining a class that inherits from another, it is important to remember that overridden methods (in particular, this behaviour is important when dealing with \_\_init\_\_ methods) do not implicitly call the parent method. What this means is that unless you want to deliberately prevent the behaviour of the parent class (this is a very niche use-case), it is important to include a reference to the parent method. An example of this is: super().\_\_init\_\_() +This functionality is advantageous as it prevents unnecessary duplication of code, which is a key tenet of object-oriented software. + + +An example of such an object in COAsT is the Gridded object, which allows for the +storage and manipulation of e.g. NEMO output and domain data. It is important to +understand how to load data using COAsT and the structure of the resulting objects. A Gridded object is created and initialised by passing it the paths of the domain and data files. Ideally, the grid type should also be specified (T, U, V or F in the case of NEMO). For example, to load in data from a file containing data on a NEMO T-grid: -``` +```python import coast fn_data = "" @@ -42,11 +48,12 @@ in this case will be limited. Once loaded, data is stored inside the object using an xarray.dataset object. Following on from the previous code example, this can be viewed by calling: -``` +```python data.dataset ``` This reveals all netcdf-type aspects of the data and domain variables that were loaded, including dimensions, coordinates, variables and attributes. For example: + ``` Dimensions: (axis_nbounds: 2, t_dim: 7, x_dim: 297, y_dim: 375, z_dim: 51) @@ -67,15 +74,17 @@ Data variables: e2 (y_dim, x_dim) float32 ... e3_0 (z_dim, y_dim, x_dim) float32 1.0 1.0 1.0 ... 1.0 1.0 ``` + Variables may be obtained in a number of ways. For example, to get temperature data, the following are all equivalent: -``` + +```python temp = data.dataset.temperature temp = data.dataset['temperature'] temp = data['temperature'] ``` These commands will all return an xarray.dataarray object. Manipulation of this object -can be done using xarray commands, for example indexing using [] or xarray.isel. Be aware +can be done using xarray commands, for example indexing using [] or `xarray.isel``. Be aware that indexing will preserve lazy loading, however and direct access or modifying of the data will not. For this reason, if you require a subset of the data, it is best to index first. diff --git a/content/en/docs/contributing_package/python_style.md b/content/en/docs/contributing/contributing-package/code_styling.md similarity index 69% rename from content/en/docs/contributing_package/python_style.md rename to content/en/docs/contributing/contributing-package/code_styling.md index 6ea6e919b63..ffb826a9ca0 100644 --- a/content/en/docs/contributing_package/python_style.md +++ b/content/en/docs/contributing/contributing-package/code_styling.md @@ -1,10 +1,7 @@ --- -title: "Python: Style" -linkTitle: "Python: Style" +title: "Code styling" +linkTitle: "Code styling" weight: 1 -menu: - documentation: - weight: 20 description: > Python style guidance. --- @@ -13,7 +10,9 @@ Python as a language comes with more stringent recommendations than most when it When it comes to simple code styling, much of what's recommended here will be copied from [Python Enhancement Proposal (PEP) 8](https://www.python.org/dev/peps/pep-0008/), an officially proposed and accepted Python style guide. -# Code Styling Conventions +In our code, we use pylint and black applied on CI/CD codes in order to fix some code styling and to check the code styling. Your pull request will only be accepted if the new code have a styling score equal or higher than the actual code. + +## Code Styling Conventions Let's keep things simple to start with... @@ -45,15 +44,3 @@ PEP 8 advises the following regarding names to avoid: These specific characters should be avoided because they present an accessibility issue, as under many fonts these characters may be difficult to distinguish or completely indistinguishable from numerals one (1) and zero (0). * In the interest of readability, where named iterator variables are required, this document suggests the use of double characters (e.g. "ii" rather than "i"). - -# Object-Oriented Programming - -The general principles of OOP are fairly straightforward and well documented, so I won't waste your precious time by regurgitating that particular wall of text here. Instead, I'll focus on some general pointers specific to this language and use case. - -* In Python, all class attributes are technically public, but semantically, attributes can be designated as non-public by including leading underscores in the name. For instance, "my\_variable" becomes "\_my\_variable". These attributes are generally referred to as "protected". - -* When you define a Python class, it is a best practice to inherit from the base object type. This convention stems from Python 2.X, as classes and types were not originally synonymous. This behaviour is implicit in Python 3.X but the convention has persisted nonetheless. Classes defined this way are referred to as "new-style" classes. - -* When defining a class that inherits from another, it is important to remember that overridden methods (in particular, this behaviour is important when dealing with \_\_init\_\_ methods) do not implicitly call the parent method. What this means is that unless you want to deliberately prevent the behaviour of the parent class (this is a very niche use-case), it is important to include a reference to the parent method. An example of this is: super().\_\_init\_\_() -This functionality is advantageous as it prevents unnecessary duplication of code, which is a key tenet of object-oriented software. - diff --git a/content/en/docs/contributing_package/_index.md b/content/en/docs/contributing_package/_index.md deleted file mode 100755 index 2ea7f5e7cb2..00000000000 --- a/content/en/docs/contributing_package/_index.md +++ /dev/null @@ -1,10 +0,0 @@ - ---- -title: "Contributing: COAsT" -linkTitle: "Contributing: COAsT" -weight: 4 -date: 2017-01-05 -description: > - Guidelines for contributing to the COAsT Python package, Includes Python style and structure. ---- -Here you will find information needed to contribute code changes to the COAsT package. diff --git a/content/en/docs/contributing_package/build_test.md b/content/en/docs/contributing_package/build_test.md deleted file mode 100644 index 09fc16d9b29..00000000000 --- a/content/en/docs/contributing_package/build_test.md +++ /dev/null @@ -1,48 +0,0 @@ ---- -title: "Build test" -linkTitle: "Build test" -weight: 6 -menu: - documentation: - weight: 20 -description: > - Build testing on master branch. ---- - -A short script to install COAsT in a conda environment, download and run some -build tests. - -```shell -# Fresh build -module load anaconda/3-5.1.0 # or whatever it takes to activate conda -yes | conda env remove --name test_env -yes | conda create -n test_env python=3.8 # create a new environment -conda activate test_env -yes | conda install -c conda-forge -c bodc coast -yes | conda install -c conda-forge cartopy=0.18.0 # used for some of the map plotting - -# Download bits and bobs -rm -rf coast_test -mkdir coast_test -cd coast_test -git clone https://github.com/British-Oceanographic-Data-Centre/COAsT.git -wget -c https://linkedsystems.uk/erddap/files/COAsT_example_files/COAsT_example_files.zip && unzip COAsT_example_files.zip -ln -s COAsT/unit_testing/ . -ln -s COAsT_example_files example_files - -# Run unit tests -python COAsT/unit_testing/unit_test.py > coast_test.txt - -## If OK then clean up -cd .. -rm -rf coast_test -``` - -Or, trialling a new (Oct 2022) workflow which seems to dig deeper with useful feedback -```shell -# create a new conda env with: -conda env update --prune --file environment.yml - -# run the unit tests with: -pip install . && pytest unit_testing/unit_test.py -s -``` diff --git a/content/en/feature-background.jpg b/content/en/feature-background.jpg new file mode 100644 index 00000000000..b3a9c759f96 Binary files /dev/null and b/content/en/feature-background.jpg differ diff --git a/content/en/featured-background.jpg b/content/en/featured-background.jpg deleted file mode 100644 index bc012365abb..00000000000 Binary files a/content/en/featured-background.jpg and /dev/null differ diff --git a/layouts/partials/footer.html b/layouts/partials/footer.html new file mode 100644 index 00000000000..6bec4671bff --- /dev/null +++ b/layouts/partials/footer.html @@ -0,0 +1,43 @@ +{{ $links := .Site.Params.links -}} +
              +
              +
              + +
              +
              +
              + +{{- define "footer-links-block" }} + +{{ end -}} diff --git a/layouts/partials/head.html b/layouts/partials/head.html index df839f70f06..a553282d2c0 100644 --- a/layouts/partials/head.html +++ b/layouts/partials/head.html @@ -1,11 +1,16 @@ {{ hugo.Generator }} -{{ if eq (getenv "HUGO_ENV") "production" }} - -{{ else }} - -{{ end }} +{{ range .AlternativeOutputFormats -}} + +{{ end -}} + +{{ $outputFormat := partial "outputformat.html" . -}} +{{ if and hugo.IsProduction (ne $outputFormat "print") -}} + +{{ else -}} + +{{ end -}} -{{ range .AlternativeOutputFormats -}} - -{{ end -}} {{ partialCached "favicons.html" . }} -{{ if .IsHome }}{{ .Site.Title }}{{ else }}{{ with .Title }}{{ . }} | {{ end }}{{ .Site.Title }}{{ end }} -{{- template "_internal/opengraph.html" . -}} -{{- template "_internal/google_news.html" . -}} -{{- template "_internal/schema.html" . -}} -{{- template "_internal/twitter_cards.html" . -}} -{{ if eq (getenv "HUGO_ENV") "production" }} -{{ template "_internal/google_analytics_async.html" . }} -{{ end }} -{{ partialCached "head-css.html" . "asdf" }} - -{{ if .Site.Params.offlineSearch }} + + {{- if .IsHome -}} + {{ .Site.Title -}} + {{ else -}} + {{ with .Title }}{{ . }} | {{ end -}} + {{ .Site.Title -}} + {{ end -}} + + +{{ template "_internal/opengraph.html" . -}} +{{ template "_internal/schema.html" . -}} +{{ template "_internal/twitter_cards.html" . -}} +{{ partialCached "head-css.html" . "asdf" -}} -{{end}} -{{ partial "hooks/head-end.html" . }} + src="https://code.jquery.com/jquery-3.6.3.min.js" + integrity="sha512-STof4xm1wgkfm7heWqFJVn58Hm3EtS31XFaagaa8VMReCXAkQnJZ+jEy8PCC/iT18dFy95WcExNHFTqLyp72eQ==" + crossorigin="anonymous"> +{{ if .Site.Params.offlineSearch -}} + +{{ end -}} + +{{ if .Site.Params.prism_syntax_highlighting -}} + +{{ end -}} + +{{ partial "hooks/head-end.html" . -}} + +{{/* To comply with GDPR, cookie consent scripts places in head-end must execute before Google Analytics is enabled */ -}} +{{ if hugo.IsProduction -}} +{{ $enableGtagForUniversalAnalytics := not .Site.Params.disableGtagForUniversalAnalytics -}} +{{ if (or $enableGtagForUniversalAnalytics (hasPrefix .Site.GoogleAnalytics "G-")) -}} +{{ template "_internal/google_analytics_gtag.html" . -}} +{{ else -}} +{{ template "_internal/google_analytics_async.html" . -}} +{{ end -}} +{{ end -}} diff --git a/layouts/partials/navbar.html b/layouts/partials/navbar.html new file mode 100644 index 00000000000..f84d9942f57 --- /dev/null +++ b/layouts/partials/navbar.html @@ -0,0 +1,63 @@ +{{ $cover := and + (.HasShortcode "blocks/cover") + (not .Site.Params.ui.navbar_translucent_over_cover_disable) +-}} +{{ $baseURL := urls.Parse $.Site.Params.Baseurl -}} + + \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 0d6f8997e20..61f72ef77e0 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,198 +1,231 @@ { "name": "tech-doc-hugo", "version": "0.0.1", - "lockfileVersion": 1, + "lockfileVersion": 3, "requires": true, - "dependencies": { - "@mrmlnc/readdir-enhanced": { + "packages": { + "": { + "name": "tech-doc-hugo", + "version": "0.0.1", + "license": "ISC", + "devDependencies": { + "autoprefixer": "^9.4.6", + "postcss-cli": "^5.0.1" + } + }, + "node_modules/@mrmlnc/readdir-enhanced": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz", "integrity": "sha512-bPHp6Ji8b41szTOcaP63VlnbbO5Ny6dwAATtY6JTjh5N2OLrb5Qk/Th5cRkRQhkWCt+EJsYrNB0MiL+Gpn6e3g==", "dev": true, - "requires": { + "dependencies": { "call-me-maybe": "^1.0.1", "glob-to-regexp": "^0.3.0" + }, + "engines": { + "node": ">=4" } }, - "@nodelib/fs.stat": { + "node_modules/@nodelib/fs.stat": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-1.1.3.tgz", "integrity": "sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw==", - "dev": true + "dev": true, + "engines": { + "node": ">= 6" + } }, - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", - "dev": true + "node_modules/ansi-regex": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.1.tgz", + "integrity": "sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==", + "dev": true, + "engines": { + "node": ">=4" + } }, - "ansi-styles": { + "node_modules/ansi-styles": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "dev": true, - "requires": { + "dependencies": { "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" } }, - "anymatch": { + "node_modules/anymatch": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", "dev": true, - "requires": { + "dependencies": { "micromatch": "^3.1.4", "normalize-path": "^2.1.1" } }, - "argparse": { + "node_modules/anymatch/node_modules/normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==", + "dev": true, + "dependencies": { + "remove-trailing-separator": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/argparse": { "version": "1.0.10", "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", "dev": true, - "requires": { + "dependencies": { "sprintf-js": "~1.0.2" } }, - "arr-diff": { + "node_modules/arr-diff": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", - "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", - "dev": true + "integrity": "sha512-YVIQ82gZPGBebQV/a8dar4AitzCQs0jjXwMPZllpXMaGjXPYVUawSxQrRsjhjupyVxEvbHgUmIhKVlND+j02kA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, - "arr-flatten": { + "node_modules/arr-flatten": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, - "arr-union": { + "node_modules/arr-union": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", - "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", - "dev": true + "integrity": "sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, - "array-union": { + "node_modules/array-union": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", - "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", + "integrity": "sha512-Dxr6QJj/RdU/hCaBjOfxW+q6lyuVE6JFWIrAUpuOOhoJJoQ99cUn3igRaHVB5P9WrgFVN0FfArM3x0cueOU8ng==", "dev": true, - "requires": { + "dependencies": { "array-uniq": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" } }, - "array-uniq": { + "node_modules/array-uniq": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", - "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=", - "dev": true + "integrity": "sha512-MNha4BWQ6JbwhFhj03YK552f7cb3AzoE8SzeljgChvL1dl3IcvggXVz1DilzySZkCja+CXuZbdW7yATchWn8/Q==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, - "array-unique": { + "node_modules/array-unique": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", - "dev": true + "integrity": "sha512-SleRWjh9JUud2wH1hPs9rZBZ33H6T9HOiL0uwGnGx9FpE6wKGyfWugmbkEOIs6qWrZhg0LWeLziLrEwQJhs5mQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, - "arrify": { + "node_modules/arrify": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", - "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", - "dev": true + "integrity": "sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, - "assign-symbols": { + "node_modules/assign-symbols": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", - "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", - "dev": true + "integrity": "sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, - "async-each": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.1.tgz", - "integrity": "sha1-GdOGodntxufByF04iu28xW0zYC0=", - "dev": true + "node_modules/async-each": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.6.tgz", + "integrity": "sha512-c646jH1avxr+aVpndVMeAfYw7wAa6idufrlN3LPA4PmKS0QEGp6PIC9nwz0WQkkvBGAMEki3pFdtxaF39J9vvg==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ] }, - "atob": { + "node_modules/atob": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", - "dev": true + "dev": true, + "bin": { + "atob": "bin/atob.js" + }, + "engines": { + "node": ">= 4.5.0" + } }, - "autoprefixer": { - "version": "9.4.6", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-9.4.6.tgz", - "integrity": "sha512-Yp51mevbOEdxDUy5WjiKtpQaecqYq9OqZSL04rSoCiry7Tc5I9FEyo3bfxiTJc1DfHeKwSFCUYbBAiOQ2VGfiw==", + "node_modules/autoprefixer": { + "version": "9.8.8", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-9.8.8.tgz", + "integrity": "sha512-eM9d/swFopRt5gdJ7jrpCwgvEMIayITpojhkkSMRsFHYuH5bkSQ4p/9qTEHtmNudUZh22Tehu7I6CxAW0IXTKA==", "dev": true, - "requires": { - "browserslist": "^4.4.1", - "caniuse-lite": "^1.0.30000929", + "dependencies": { + "browserslist": "^4.12.0", + "caniuse-lite": "^1.0.30001109", "normalize-range": "^0.1.2", "num2fraction": "^1.2.2", - "postcss": "^7.0.13", - "postcss-value-parser": "^3.3.1" - }, - "dependencies": { - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "dependencies": { - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } - } - }, - "postcss": { - "version": "7.0.14", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.14.tgz", - "integrity": "sha512-NsbD6XUUMZvBxtQAJuWDJeeC4QFsmWsfozWxCJPWf3M55K9iu2iMDaKqyoOdTJ1R4usBXuxlVFAIo8rZPQD4Bg==", - "dev": true, - "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } + "picocolors": "^0.2.1", + "postcss": "^7.0.32", + "postcss-value-parser": "^4.1.0" + }, + "bin": { + "autoprefixer": "bin/autoprefixer" + }, + "funding": { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/autoprefixer" } }, - "balanced-match": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "node_modules/autoprefixer/node_modules/picocolors": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", + "dev": true + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", "dev": true }, - "base": { + "node_modules/base": { "version": "0.11.2", "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", "dev": true, - "requires": { + "dependencies": { "cache-base": "^1.0.1", "class-utils": "^0.3.5", "component-emitter": "^1.2.1", @@ -201,69 +234,57 @@ "mixin-deep": "^1.2.0", "pascalcase": "^0.1.1" }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/base/node_modules/define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", + "dev": true, "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - } + "is-descriptor": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, - "binary-extensions": { - "version": "1.12.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.12.0.tgz", - "integrity": "sha512-DYWGk01lDcxeS/K9IHPGWfT8PsJmbXRtRd2Sx72Tnb8pcYZQFF1oSDb8hJtS1vhp212q1Rzi5dUf9+nq0o9UIg==", - "dev": true + "node_modules/binary-extensions": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", + "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/bindings": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", + "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", + "dev": true, + "optional": true, + "dependencies": { + "file-uri-to-path": "1.0.0" + } }, - "brace-expansion": { + "node_modules/brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dev": true, - "requires": { + "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" } }, - "braces": { + "node_modules/braces": { "version": "2.3.2", "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", "dev": true, - "requires": { + "dependencies": { "arr-flatten": "^1.1.0", "array-unique": "^0.3.2", "extend-shallow": "^2.0.1", @@ -275,35 +296,48 @@ "split-string": "^3.0.2", "to-regex": "^3.0.1" }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } + "engines": { + "node": ">=0.10.0" } }, - "browserslist": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.4.1.tgz", - "integrity": "sha512-pEBxEXg7JwaakBXjATYw/D1YZh4QUSCX/Mnd/wnqSRPPSi1U39iDhDoKGoBUcraKdxDlrYqJxSI5nNvD+dWP2A==", + "node_modules/browserslist": { + "version": "4.22.1", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.22.1.tgz", + "integrity": "sha512-FEVc202+2iuClEhZhrWy6ZiAcRLvNMyYcxZ8raemul1DYVOVdFsbqckWLdsixQZCpJlwe77Z3UTalE7jsjnKfQ==", "dev": true, - "requires": { - "caniuse-lite": "^1.0.30000929", - "electron-to-chromium": "^1.3.103", - "node-releases": "^1.1.3" + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "caniuse-lite": "^1.0.30001541", + "electron-to-chromium": "^1.4.535", + "node-releases": "^2.0.13", + "update-browserslist-db": "^1.0.13" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" } }, - "cache-base": { + "node_modules/cache-base": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", "dev": true, - "requires": { + "dependencies": { "collection-visit": "^1.0.0", "component-emitter": "^1.2.1", "get-value": "^2.0.6", @@ -313,153 +347,204 @@ "to-object-path": "^0.3.0", "union-value": "^1.0.0", "unset-value": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, - "call-me-maybe": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/call-me-maybe/-/call-me-maybe-1.0.1.tgz", - "integrity": "sha1-JtII6onje1y95gJQoV8DHBak1ms=", + "node_modules/call-me-maybe": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-me-maybe/-/call-me-maybe-1.0.2.tgz", + "integrity": "sha512-HpX65o1Hnr9HH25ojC1YGs7HCQLq0GCOibSaWER0eNpgJ/Z1MZv2mTc7+xh6WOPxbRVcmgbv4hGU+uSQ/2xFZQ==", "dev": true }, - "camelcase": { + "node_modules/camelcase": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", - "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", - "dev": true + "integrity": "sha512-FxAv7HpHrXbh3aPo4o2qxHay2lkLY3x5Mw3KeE4KQE8ysVfziWeRZDwcjauvwBSGEC/nXUPzZy8zeh4HokqOnw==", + "dev": true, + "engines": { + "node": ">=4" + } }, - "caniuse-lite": { - "version": "1.0.30000932", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000932.tgz", - "integrity": "sha512-4bghJFItvzz8m0T3lLZbacmEY9X1Z2AtIzTr7s7byqZIOumASfr4ynDx7rtm0J85nDmx8vsgR6vnaSoeU8Oh0A==", - "dev": true + "node_modules/caniuse-lite": { + "version": "1.0.30001559", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001559.tgz", + "integrity": "sha512-cPiMKZgqgkg5LY3/ntGeLFUpi6tzddBNS58A4tnTgQw1zON7u2sZMU7SzOeVH4tj20++9ggL+V6FDOFMTaFFYA==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ] }, - "chalk": { + "node_modules/chalk": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", "dev": true, - "requires": { + "dependencies": { "ansi-styles": "^3.2.1", "escape-string-regexp": "^1.0.5", "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" } }, - "chokidar": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.0.4.tgz", - "integrity": "sha512-z9n7yt9rOvIJrMhvDtDictKrkFHeihkNl6uWMmZlmL6tJtX9Cs+87oK+teBx+JIgzvbX3yZHT3eF8vpbDxHJXQ==", + "node_modules/chokidar": { + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", + "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", + "deprecated": "Chokidar 2 does not receive security updates since 2019. Upgrade to chokidar 3 with 15x fewer dependencies", "dev": true, - "requires": { + "dependencies": { "anymatch": "^2.0.0", - "async-each": "^1.0.0", - "braces": "^2.3.0", - "fsevents": "^1.2.2", + "async-each": "^1.0.1", + "braces": "^2.3.2", "glob-parent": "^3.1.0", - "inherits": "^2.0.1", + "inherits": "^2.0.3", "is-binary-path": "^1.0.0", "is-glob": "^4.0.0", - "lodash.debounce": "^4.0.8", - "normalize-path": "^2.1.1", + "normalize-path": "^3.0.0", "path-is-absolute": "^1.0.0", - "readdirp": "^2.0.0", - "upath": "^1.0.5" + "readdirp": "^2.2.1", + "upath": "^1.1.1" + }, + "optionalDependencies": { + "fsevents": "^1.2.7" } }, - "class-utils": { + "node_modules/class-utils": { "version": "0.3.6", "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", "dev": true, - "requires": { + "dependencies": { "arr-union": "^3.1.0", "define-property": "^0.2.5", "isobject": "^3.0.0", "static-extend": "^0.1.1" }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/class-utils/node_modules/define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", + "dev": true, "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - } + "is-descriptor": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" } }, - "cliui": { + "node_modules/class-utils/node_modules/is-descriptor": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.7.tgz", + "integrity": "sha512-C3grZTvObeN1xud4cRWl366OMXZTj0+HGyk4hvfpx4ZHt1Pb60ANSXqCK7pdOTeUQpRzECBSTphqvD7U+l22Eg==", + "dev": true, + "dependencies": { + "is-accessor-descriptor": "^1.0.1", + "is-data-descriptor": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/cliui": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz", "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==", "dev": true, - "requires": { + "dependencies": { "string-width": "^2.1.1", "strip-ansi": "^4.0.0", "wrap-ansi": "^2.0.0" } }, - "code-point-at": { + "node_modules/code-point-at": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", - "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", - "dev": true + "integrity": "sha512-RpAVKQA5T63xEj6/giIbUEtZwJ4UFIc3ZtvEkiaUERylqe8xb5IvqcgOurZLahv93CLKfxcw5YI+DZcUBRyLXA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, - "collection-visit": { + "node_modules/collection-visit": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", - "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", + "integrity": "sha512-lNkKvzEeMBBjUGHZ+q6z9pSJla0KWAQPvtzhEV9+iGyQYG+pBpl7xKDhxoNSOZH2hhv0v5k0y2yAM4o4SjoSkw==", "dev": true, - "requires": { + "dependencies": { "map-visit": "^1.0.0", "object-visit": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, - "color-convert": { - "version": "1.9.2", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.2.tgz", - "integrity": "sha512-3NUJZdhMhcdPn8vJ9v2UQJoH0qqoGUkYTgFEPZaPjEtwmmKUfNV46zZmgB2M5M4DCEQHMaCfWHCxiBflLm04Tg==", + "node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", "dev": true, - "requires": { - "color-name": "1.1.1" + "dependencies": { + "color-name": "1.1.3" } }, - "color-name": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.1.tgz", - "integrity": "sha1-SxQVMEz1ACjqgWQ2Q72C6gWANok=", + "node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", "dev": true }, - "component-emitter": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", - "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=", + "node_modules/component-emitter": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", + "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==", "dev": true }, - "concat-map": { + "node_modules/concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", "dev": true }, - "copy-descriptor": { + "node_modules/copy-descriptor": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", - "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", - "dev": true + "integrity": "sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, - "core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "node_modules/core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", "dev": true }, - "cosmiconfig": { + "node_modules/cosmiconfig": { "version": "2.2.2", "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-2.2.2.tgz", "integrity": "sha512-GiNXLwAFPYHy25XmTPpafYvn3CLAkJ8FLsscq78MQd1Kh0OU6Yzhn4eV2MVF4G9WEQZoWEGltatdR+ntGPMl5A==", "dev": true, - "requires": { + "dependencies": { "is-directory": "^0.3.1", "js-yaml": "^3.4.3", "minimist": "^1.2.0", @@ -467,145 +552,168 @@ "os-homedir": "^1.0.1", "parse-json": "^2.2.0", "require-from-string": "^1.1.0" + }, + "engines": { + "node": ">=0.12" } }, - "cross-spawn": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", - "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", + "node_modules/cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", "dev": true, - "requires": { - "lru-cache": "^4.0.1", + "dependencies": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", "shebang-command": "^1.2.0", "which": "^1.2.9" + }, + "engines": { + "node": ">=4.8" } }, - "debug": { + "node_modules/debug": { "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dev": true, - "requires": { + "dependencies": { "ms": "2.0.0" } }, - "decamelize": { + "node_modules/decamelize": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", - "dev": true + "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, - "decode-uri-component": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", - "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", - "dev": true + "node_modules/decode-uri-component": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.2.tgz", + "integrity": "sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==", + "dev": true, + "engines": { + "node": ">=0.10" + } }, - "define-property": { + "node_modules/define-property": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", "dev": true, - "requires": { + "dependencies": { "is-descriptor": "^1.0.2", "isobject": "^3.0.1" }, - "dependencies": { - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - } + "engines": { + "node": ">=0.10.0" } }, - "dependency-graph": { + "node_modules/dependency-graph": { "version": "0.7.2", "resolved": "https://registry.npmjs.org/dependency-graph/-/dependency-graph-0.7.2.tgz", "integrity": "sha512-KqtH4/EZdtdfWX0p6MGP9jljvxSY6msy/pRUD4jgNwVpv3v1QmNLlsB3LDSSUg79BRVSn7jI1QPRtArGABovAQ==", - "dev": true + "dev": true, + "engines": { + "node": ">= 0.6.0" + } }, - "dir-glob": { + "node_modules/dir-glob": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-2.0.0.tgz", "integrity": "sha512-37qirFDz8cA5fimp9feo43fSuRo2gHwaIn6dXL8Ber1dGwUosDrGZeCCXq57WnIqE4aQ+u3eQZzsk1yOzhdwag==", "dev": true, - "requires": { + "dependencies": { "arrify": "^1.0.1", "path-type": "^3.0.0" + }, + "engines": { + "node": ">=4" } }, - "electron-to-chromium": { - "version": "1.3.108", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.108.tgz", - "integrity": "sha512-/QI4hMpAh48a1Sea6PALGv+kuVne9A2EWGd8HrWHMdYhIzGtbhVVHh6heL5fAzGaDnZuPyrlWJRl8WPm4RyiQQ==", + "node_modules/electron-to-chromium": { + "version": "1.4.572", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.572.tgz", + "integrity": "sha512-RlFobl4D3ieetbnR+2EpxdzFl9h0RAJkPK3pfiwMug2nhBin2ZCsGIAJWdpNniLz43sgXam/CgipOmvTA+rUiA==", "dev": true }, - "error-ex": { + "node_modules/end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "dev": true, + "dependencies": { + "once": "^1.4.0" + } + }, + "node_modules/error-ex": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", "dev": true, - "requires": { + "dependencies": { "is-arrayish": "^0.2.1" } }, - "escape-string-regexp": { + "node_modules/escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-string-regexp": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", - "dev": true + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } }, - "esprima": { + "node_modules/esprima": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "dev": true + "dev": true, + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } }, - "execa": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", - "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", + "node_modules/execa": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", + "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", "dev": true, - "requires": { - "cross-spawn": "^5.0.1", - "get-stream": "^3.0.0", + "dependencies": { + "cross-spawn": "^6.0.0", + "get-stream": "^4.0.0", "is-stream": "^1.1.0", "npm-run-path": "^2.0.0", "p-finally": "^1.0.0", "signal-exit": "^3.0.0", "strip-eof": "^1.0.0" + }, + "engines": { + "node": ">=6" } }, - "expand-brackets": { + "node_modules/expand-brackets": { "version": "2.1.4", "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", - "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "integrity": "sha512-w/ozOKR9Obk3qoWeY/WDi6MFta9AoMR+zud60mdnbniMcBxRuFJyDt2LdX/14A1UABeqk+Uk+LDfUpvoGKppZA==", "dev": true, - "requires": { + "dependencies": { "debug": "^2.3.3", "define-property": "^0.2.5", "extend-shallow": "^2.0.1", @@ -614,54 +722,53 @@ "snapdragon": "^0.8.1", "to-regex": "^3.0.1" }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expand-brackets/node_modules/define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", + "dev": true, "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } + "is-descriptor": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" } }, - "extend-shallow": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "node_modules/expand-brackets/node_modules/is-descriptor": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.7.tgz", + "integrity": "sha512-C3grZTvObeN1xud4cRWl366OMXZTj0+HGyk4hvfpx4ZHt1Pb60ANSXqCK7pdOTeUQpRzECBSTphqvD7U+l22Eg==", "dev": true, - "requires": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" + "dependencies": { + "is-accessor-descriptor": "^1.0.1", + "is-data-descriptor": "^1.0.1" }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dev": true, "dependencies": { - "is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dev": true, - "requires": { - "is-plain-object": "^2.0.4" - } - } + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" } }, - "extglob": { + "node_modules/extglob": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", "dev": true, - "requires": { + "dependencies": { "array-unique": "^0.3.2", "define-property": "^1.0.0", "expand-brackets": "^2.1.4", @@ -671,753 +778,229 @@ "snapdragon": "^0.8.1", "to-regex": "^3.0.1" }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/extglob/node_modules/define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", + "dev": true, "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - } + "is-descriptor": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, - "fast-glob": { - "version": "2.2.6", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-2.2.6.tgz", - "integrity": "sha512-0BvMaZc1k9F+MeWWMe8pL6YltFzZYcJsYU7D4JyDA6PAczaXvxqQQ/z+mDF7/4Mw01DeUc+i3CTKajnkANkV4w==", + "node_modules/fast-glob": { + "version": "2.2.7", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-2.2.7.tgz", + "integrity": "sha512-g1KuQwHOZAmOZMuBtHdxDtju+T2RT8jgCC9aANsbpdiDDTSnjgfuVsIBNKbUeJI3oKMRExcfNDtJl4OhbffMsw==", "dev": true, - "requires": { + "dependencies": { "@mrmlnc/readdir-enhanced": "^2.2.1", "@nodelib/fs.stat": "^1.1.2", "glob-parent": "^3.1.0", "is-glob": "^4.0.0", "merge2": "^1.2.3", "micromatch": "^3.1.10" + }, + "engines": { + "node": ">=4.0.0" } }, - "fill-range": { + "node_modules/file-uri-to-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", + "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", + "dev": true, + "optional": true + }, + "node_modules/fill-range": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "integrity": "sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==", "dev": true, - "requires": { + "dependencies": { "extend-shallow": "^2.0.1", "is-number": "^3.0.0", "repeat-string": "^1.6.1", "to-regex-range": "^2.1.0" }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } + "engines": { + "node": ">=0.10.0" } }, - "find-up": { + "node_modules/find-up": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "integrity": "sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ==", "dev": true, - "requires": { + "dependencies": { "locate-path": "^2.0.0" + }, + "engines": { + "node": ">=4" } }, - "for-in": { + "node_modules/for-in": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", - "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", - "dev": true + "integrity": "sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, - "fragment-cache": { + "node_modules/fragment-cache": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", - "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", + "integrity": "sha512-GMBAbW9antB8iZRHLoGw0b3HANt57diZYFO/HL1JGIC1MjKrdmhxvrJbupnVvpys0zsz7yBApXdQyfepKly2kA==", "dev": true, - "requires": { + "dependencies": { "map-cache": "^0.2.2" + }, + "engines": { + "node": ">=0.10.0" } }, - "fs-extra": { + "node_modules/fs-extra": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-5.0.0.tgz", "integrity": "sha512-66Pm4RYbjzdyeuqudYqhFiNBbCIuI9kgRqLPSHIlXHidW8NIQtVdkM1yeZ4lXwuhbTETv3EUGMNHAAw6hiundQ==", "dev": true, - "requires": { + "dependencies": { "graceful-fs": "^4.1.2", "jsonfile": "^4.0.0", "universalify": "^0.1.0" } }, - "fs.realpath": { + "node_modules/fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", "dev": true }, - "fsevents": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.7.tgz", - "integrity": "sha512-Pxm6sI2MeBD7RdD12RYsqaP0nMiwx8eZBXCa6z2L+mRHm2DYrOYwihmhjpkdjUHwQhslWQjRpEgNq4XvBmaAuw==", + "node_modules/fsevents": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", + "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", + "deprecated": "The v1 package contains DANGEROUS / INSECURE binaries. Upgrade to safe fsevents v2", "dev": true, + "hasInstallScript": true, "optional": true, - "requires": { - "nan": "^2.9.2", - "node-pre-gyp": "^0.10.0" + "os": [ + "darwin" + ], + "dependencies": { + "bindings": "^1.5.0", + "nan": "^2.12.1" }, + "engines": { + "node": ">= 4.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-caller-file": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz", + "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==", + "dev": true + }, + "node_modules/get-stdin": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-6.0.0.tgz", + "integrity": "sha512-jp4tHawyV7+fkkSKyvjuLZswblUtz+SQKzSWnBbii16BuZksJlU1wuBYXY75r+duh/llF1ur6oNwi+2ZzjKZ7g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "dev": true, "dependencies": { - "abbrev": { - "version": "1.1.1", - "bundled": true, - "dev": true, - "optional": true - }, - "ansi-regex": { - "version": "2.1.1", - "bundled": true, - "dev": true, - "optional": true - }, - "aproba": { - "version": "1.2.0", - "bundled": true, - "dev": true, - "optional": true - }, - "are-we-there-yet": { - "version": "1.1.5", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "delegates": "^1.0.0", - "readable-stream": "^2.0.6" - } - }, - "balanced-match": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "brace-expansion": { - "version": "1.1.11", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "chownr": { - "version": "1.1.1", - "bundled": true, - "dev": true, - "optional": true - }, - "code-point-at": { - "version": "1.1.0", - "bundled": true, - "dev": true, - "optional": true - }, - "concat-map": { - "version": "0.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "console-control-strings": { - "version": "1.1.0", - "bundled": true, - "dev": true, - "optional": true - }, - "core-util-is": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "optional": true - }, - "debug": { - "version": "2.6.9", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "ms": "2.0.0" - } - }, - "deep-extend": { - "version": "0.6.0", - "bundled": true, - "dev": true, - "optional": true - }, - "delegates": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "detect-libc": { - "version": "1.0.3", - "bundled": true, - "dev": true, - "optional": true - }, - "fs-minipass": { - "version": "1.2.5", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "minipass": "^2.2.1" - } - }, - "fs.realpath": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "gauge": { - "version": "2.7.4", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "aproba": "^1.0.3", - "console-control-strings": "^1.0.0", - "has-unicode": "^2.0.0", - "object-assign": "^4.1.0", - "signal-exit": "^3.0.0", - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1", - "wide-align": "^1.1.0" - } - }, - "glob": { - "version": "7.1.3", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "has-unicode": { - "version": "2.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "iconv-lite": { - "version": "0.4.24", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "safer-buffer": ">= 2.1.2 < 3" - } - }, - "ignore-walk": { - "version": "3.0.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "minimatch": "^3.0.4" - } - }, - "inflight": { - "version": "1.0.6", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "inherits": { - "version": "2.0.3", - "bundled": true, - "dev": true, - "optional": true - }, - "ini": { - "version": "1.3.5", - "bundled": true, - "dev": true, - "optional": true - }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "number-is-nan": "^1.0.0" - } - }, - "isarray": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "minimatch": { - "version": "3.0.4", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "minimist": { - "version": "0.0.8", - "bundled": true, - "dev": true, - "optional": true - }, - "minipass": { - "version": "2.3.5", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "safe-buffer": "^5.1.2", - "yallist": "^3.0.0" - } - }, - "minizlib": { - "version": "1.2.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "minipass": "^2.2.1" - } - }, - "mkdirp": { - "version": "0.5.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "minimist": "0.0.8" - } - }, - "ms": { - "version": "2.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "needle": { - "version": "2.2.4", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "debug": "^2.1.2", - "iconv-lite": "^0.4.4", - "sax": "^1.2.4" - } - }, - "node-pre-gyp": { - "version": "0.10.3", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "detect-libc": "^1.0.2", - "mkdirp": "^0.5.1", - "needle": "^2.2.1", - "nopt": "^4.0.1", - "npm-packlist": "^1.1.6", - "npmlog": "^4.0.2", - "rc": "^1.2.7", - "rimraf": "^2.6.1", - "semver": "^5.3.0", - "tar": "^4" - } - }, - "nopt": { - "version": "4.0.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "abbrev": "1", - "osenv": "^0.1.4" - } - }, - "npm-bundled": { - "version": "1.0.5", - "bundled": true, - "dev": true, - "optional": true - }, - "npm-packlist": { - "version": "1.2.0", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "ignore-walk": "^3.0.1", - "npm-bundled": "^1.0.1" - } - }, - "npmlog": { - "version": "4.1.2", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "are-we-there-yet": "~1.1.2", - "console-control-strings": "~1.1.0", - "gauge": "~2.7.3", - "set-blocking": "~2.0.0" - } - }, - "number-is-nan": { - "version": "1.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "object-assign": { - "version": "4.1.1", - "bundled": true, - "dev": true, - "optional": true - }, - "once": { - "version": "1.4.0", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "wrappy": "1" - } - }, - "os-homedir": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "optional": true - }, - "os-tmpdir": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "optional": true - }, - "osenv": { - "version": "0.1.5", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "os-homedir": "^1.0.0", - "os-tmpdir": "^1.0.0" - } - }, - "path-is-absolute": { - "version": "1.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "process-nextick-args": { - "version": "2.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "rc": { - "version": "1.2.8", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "deep-extend": "^0.6.0", - "ini": "~1.3.0", - "minimist": "^1.2.0", - "strip-json-comments": "~2.0.1" - }, - "dependencies": { - "minimist": { - "version": "1.2.0", - "bundled": true, - "dev": true, - "optional": true - } - } - }, - "readable-stream": { - "version": "2.3.6", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "rimraf": { - "version": "2.6.3", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "glob": "^7.1.3" - } - }, - "safe-buffer": { - "version": "5.1.2", - "bundled": true, - "dev": true, - "optional": true - }, - "safer-buffer": { - "version": "2.1.2", - "bundled": true, - "dev": true, - "optional": true - }, - "sax": { - "version": "1.2.4", - "bundled": true, - "dev": true, - "optional": true - }, - "semver": { - "version": "5.6.0", - "bundled": true, - "dev": true, - "optional": true - }, - "set-blocking": { - "version": "2.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "signal-exit": { - "version": "3.0.2", - "bundled": true, - "dev": true, - "optional": true - }, - "string-width": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - } - }, - "string_decoder": { - "version": "1.1.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "safe-buffer": "~5.1.0" - } - }, - "strip-ansi": { - "version": "3.0.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "ansi-regex": "^2.0.0" - } - }, - "strip-json-comments": { - "version": "2.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "tar": { - "version": "4.4.8", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "chownr": "^1.1.1", - "fs-minipass": "^1.2.5", - "minipass": "^2.3.4", - "minizlib": "^1.1.1", - "mkdirp": "^0.5.0", - "safe-buffer": "^5.1.2", - "yallist": "^3.0.2" - } - }, - "util-deprecate": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "optional": true - }, - "wide-align": { - "version": "1.1.3", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "string-width": "^1.0.2 || 2" - } - }, - "wrappy": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "optional": true - }, - "yallist": { - "version": "3.0.3", - "bundled": true, - "dev": true, - "optional": true - } + "pump": "^3.0.0" + }, + "engines": { + "node": ">=6" } }, - "get-caller-file": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz", - "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==", - "dev": true - }, - "get-stdin": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-6.0.0.tgz", - "integrity": "sha512-jp4tHawyV7+fkkSKyvjuLZswblUtz+SQKzSWnBbii16BuZksJlU1wuBYXY75r+duh/llF1ur6oNwi+2ZzjKZ7g==", - "dev": true - }, - "get-stream": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", - "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", - "dev": true - }, - "get-value": { + "node_modules/get-value": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", - "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", - "dev": true + "integrity": "sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, - "glob": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", - "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", + "node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", "dev": true, - "requires": { + "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", "inherits": "2", - "minimatch": "^3.0.4", + "minimatch": "^3.1.1", "once": "^1.3.0", "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "glob-parent": { + "node_modules/glob-parent": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", - "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "integrity": "sha512-E8Ak/2+dZY6fnzlR7+ueWvhsH1SjHr4jjss4YS/h4py44jY9MhK/VFdaZJAWDz6BbL21KeteKxFSFpq8OS5gVA==", "dev": true, - "requires": { + "dependencies": { "is-glob": "^3.1.0", "path-dirname": "^1.0.0" - }, + } + }, + "node_modules/glob-parent/node_modules/is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw==", + "dev": true, "dependencies": { - "is-glob": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", - "dev": true, - "requires": { - "is-extglob": "^2.1.0" - } - } + "is-extglob": "^2.1.0" + }, + "engines": { + "node": ">=0.10.0" } }, - "glob-to-regexp": { + "node_modules/glob-to-regexp": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz", - "integrity": "sha1-jFoUlNIGbFcMw7/kSWF1rMTVAqs=", + "integrity": "sha512-Iozmtbqv0noj0uDDqoL0zNq0VBEfK2YFoMAZoxJe4cwphvLR+JskfF30QhXHOR4m3KrE6NLRYw+U9MRXvifyig==", "dev": true }, - "globby": { + "node_modules/globby": { "version": "8.0.2", "resolved": "https://registry.npmjs.org/globby/-/globby-8.0.2.tgz", "integrity": "sha512-yTzMmKygLp8RUpG1Ymu2VXPSJQZjNAZPD4ywgYEaG7e4tBJeUQBO8OpXrf1RCNcEs5alsoJYPAMiIHP0cmeC7w==", "dev": true, - "requires": { + "dependencies": { "array-union": "^1.0.1", "dir-glob": "2.0.0", "fast-glob": "^2.0.2", @@ -1425,363 +1008,419 @@ "ignore": "^3.3.5", "pify": "^3.0.0", "slash": "^1.0.0" + }, + "engines": { + "node": ">=4" } }, - "graceful-fs": { - "version": "4.1.15", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.15.tgz", - "integrity": "sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA==", + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", "dev": true }, - "has-flag": { + "node_modules/has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true, + "engines": { + "node": ">=4" + } }, - "has-value": { + "node_modules/has-value": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", - "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", + "integrity": "sha512-IBXk4GTsLYdQ7Rvt+GRBrFSVEkmuOUy4re0Xjd9kJSUQpnTrWR4/y9RpfexN9vkAPMFuQoeWKwqzPozRTlasGw==", "dev": true, - "requires": { + "dependencies": { "get-value": "^2.0.6", "has-values": "^1.0.0", "isobject": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, - "has-values": { + "node_modules/has-values": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", - "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", + "integrity": "sha512-ODYZC64uqzmtfGMEAX/FvZiRyWLpAC3vYnNunURUnkGVTS+mI0smVsWaPydRBsE3g+ok7h960jChO8mFcWlHaQ==", "dev": true, - "requires": { + "dependencies": { "is-number": "^3.0.0", "kind-of": "^4.0.0" }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/has-values/node_modules/kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha512-24XsCxmEbRwEDbz/qz3stgin8TTzZ1ESR56OMCN0ujYg+vRutNSiOj9bHH9u85DKgXguraugV5sFuvbD4FW/hw==", + "dev": true, "dependencies": { - "kind-of": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", - "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" } }, - "ignore": { + "node_modules/hasown": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz", + "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/ignore": { "version": "3.3.10", "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.10.tgz", "integrity": "sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug==", "dev": true }, - "inflight": { + "node_modules/inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", "dev": true, - "requires": { + "dependencies": { "once": "^1.3.0", "wrappy": "1" } }, - "inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", "dev": true }, - "invert-kv": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", - "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=", - "dev": true + "node_modules/invert-kv": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-2.0.0.tgz", + "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==", + "dev": true, + "engines": { + "node": ">=4" + } }, - "is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "node_modules/is-accessor-descriptor": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.1.tgz", + "integrity": "sha512-YBUanLI8Yoihw923YeFUS5fs0fF2f5TSFTNiYAAzhhDscDa3lEqYuz1pDOEP5KvX94I9ey3vsqjJcLVFVU+3QA==", "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } + "hasown": "^2.0.0" + }, + "engines": { + "node": ">= 0.10" } }, - "is-arrayish": { + "node_modules/is-arrayish": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", "dev": true }, - "is-binary-path": { + "node_modules/is-binary-path": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", - "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", + "integrity": "sha512-9fRVlXc0uCxEDj1nQzaWONSpbTfx0FmJfzHF7pwlI8DkWGoHBBea4Pg5Ky0ojwwxQmnSifgbKkI06Qv0Ljgj+Q==", "dev": true, - "requires": { + "dependencies": { "binary-extensions": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, - "is-buffer": { + "node_modules/is-buffer": { "version": "1.1.6", "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", "dev": true }, - "is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "node_modules/is-data-descriptor": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.1.tgz", + "integrity": "sha512-bc4NlCDiCr28U4aEsQ3Qs2491gVq4V8G7MQyws968ImqjKuYtTJXrl7Vq7jsN7Ly/C3xj5KWFrY7sHNeDkAzXw==", "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } + "hasown": "^2.0.0" + }, + "engines": { + "node": ">= 0.4" } }, - "is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "node_modules/is-descriptor": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.3.tgz", + "integrity": "sha512-JCNNGbwWZEVaSPtS45mdtrneRWJFp07LLmykxeFV5F6oBvNF8vHSfJuJgoT472pSfk+Mf8VnlrspaFBHWM8JAw==", "dev": true, - "requires": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" - }, "dependencies": { - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true - } + "is-accessor-descriptor": "^1.0.1", + "is-data-descriptor": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" } }, - "is-directory": { + "node_modules/is-directory": { "version": "0.3.1", "resolved": "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz", - "integrity": "sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE=", - "dev": true + "integrity": "sha512-yVChGzahRFvbkscn2MlwGismPO12i9+znNruC5gVEntG3qu0xQMzsGg/JFbrsqDOHtHFPci+V5aP5T9I+yeKqw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, - "is-extendable": { + "node_modules/is-extendable": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", - "dev": true + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, - "is-extglob": { + "node_modules/is-extglob": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", - "dev": true + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, - "is-fullwidth-code-point": { + "node_modules/is-fullwidth-code-point": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", - "dev": true + "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==", + "dev": true, + "engines": { + "node": ">=4" + } }, - "is-glob": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.0.tgz", - "integrity": "sha1-lSHHaEXMJhCoUgPd8ICpWML/q8A=", + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", "dev": true, - "requires": { + "dependencies": { "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" } }, - "is-number": { + "node_modules/is-number": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==", "dev": true, - "requires": { + "dependencies": { "kind-of": "^3.0.2" }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } + "engines": { + "node": ">=0.10.0" } }, - "is-plain-object": { + "node_modules/is-plain-object": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", "dev": true, - "requires": { + "dependencies": { "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" } }, - "is-stream": { + "node_modules/is-stream": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", - "dev": true + "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, - "is-windows": { + "node_modules/is-windows": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, - "isarray": { + "node_modules/isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", "dev": true }, - "isexe": { + "node_modules/isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", "dev": true }, - "isobject": { + "node_modules/isobject": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true + "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, - "js-yaml": { - "version": "3.13.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz", - "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==", + "node_modules/js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", "dev": true, - "requires": { + "dependencies": { "argparse": "^1.0.7", "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" } }, - "jsonfile": { + "node_modules/jsonfile": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", - "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", + "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", "dev": true, - "requires": { + "optionalDependencies": { "graceful-fs": "^4.1.6" } }, - "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", - "dev": true + "node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } }, - "lcid": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", - "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", + "node_modules/lcid": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz", + "integrity": "sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==", "dev": true, - "requires": { - "invert-kv": "^1.0.0" + "dependencies": { + "invert-kv": "^2.0.0" + }, + "engines": { + "node": ">=6" } }, - "locate-path": { + "node_modules/locate-path": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", - "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "integrity": "sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA==", "dev": true, - "requires": { + "dependencies": { "p-locate": "^2.0.0", "path-exists": "^3.0.0" + }, + "engines": { + "node": ">=4" } }, - "lodash": { - "version": "4.17.14", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.14.tgz", - "integrity": "sha512-mmKYbW3GLuJeX+iGP+Y7Gp1AiGHGbXHCOh/jZmrawMmsE7MS4znI3RL2FsjbqOyMayHInjOeykW7PEajUk1/xw==", - "dev": true - }, - "lodash.debounce": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", - "integrity": "sha1-gteb/zCmfEAF/9XiUVMArZyk168=", + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", "dev": true }, - "log-symbols": { + "node_modules/log-symbols": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-2.2.0.tgz", "integrity": "sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==", "dev": true, - "requires": { + "dependencies": { "chalk": "^2.0.1" + }, + "engines": { + "node": ">=4" } }, - "lru-cache": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", - "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", + "node_modules/map-age-cleaner": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz", + "integrity": "sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==", "dev": true, - "requires": { - "pseudomap": "^1.0.2", - "yallist": "^2.1.2" + "dependencies": { + "p-defer": "^1.0.0" + }, + "engines": { + "node": ">=6" } }, - "map-cache": { + "node_modules/map-cache": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", - "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", - "dev": true + "integrity": "sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, - "map-visit": { + "node_modules/map-visit": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", - "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", + "integrity": "sha512-4y7uGv8bd2WdM9vpQsiQNo41Ln1NvhvDRuVt0k2JZQ+ezN2uaQes7lZeZ+QQUHOLQAtDaBJ+7wCbi+ab/KFs+w==", "dev": true, - "requires": { + "dependencies": { "object-visit": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, - "mem": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/mem/-/mem-1.1.0.tgz", - "integrity": "sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y=", + "node_modules/mem": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/mem/-/mem-4.3.0.tgz", + "integrity": "sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w==", "dev": true, - "requires": { - "mimic-fn": "^1.0.0" + "dependencies": { + "map-age-cleaner": "^0.1.1", + "mimic-fn": "^2.0.0", + "p-is-promise": "^2.0.0" + }, + "engines": { + "node": ">=6" } }, - "merge2": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.2.3.tgz", - "integrity": "sha512-gdUU1Fwj5ep4kplwcmftruWofEFt6lfpkkr3h860CXbAB9c3hGb55EOL2ali0Td5oebvW0E1+3Sr+Ur7XfKpRA==", - "dev": true + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true, + "engines": { + "node": ">= 8" + } }, - "micromatch": { + "node_modules/micromatch": { "version": "3.1.10", "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", "dev": true, - "requires": { + "dependencies": { "arr-diff": "^4.0.0", "array-unique": "^0.3.2", "braces": "^2.3.1", @@ -1795,69 +1434,119 @@ "regex-not": "^1.0.0", "snapdragon": "^0.8.1", "to-regex": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" } }, - "mimic-fn": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", - "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", - "dev": true + "node_modules/micromatch/node_modules/extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", + "dev": true, + "dependencies": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/micromatch/node_modules/is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "dependencies": { + "is-plain-object": "^2.0.4" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/micromatch/node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true, + "engines": { + "node": ">=6" + } }, - "minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, - "requires": { + "dependencies": { "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" } }, - "minimist": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", - "dev": true + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, - "mixin-deep": { + "node_modules/mixin-deep": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", "dev": true, - "requires": { + "dependencies": { "for-in": "^1.0.2", "is-extendable": "^1.0.1" }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/mixin-deep/node_modules/is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, "dependencies": { - "is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dev": true, - "requires": { - "is-plain-object": "^2.0.4" - } - } + "is-plain-object": "^2.0.4" + }, + "engines": { + "node": ">=0.10.0" } }, - "ms": { + "node_modules/ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "dev": true }, - "nan": { - "version": "2.12.1", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.12.1.tgz", - "integrity": "sha512-JY7V6lRkStKcKTvHO5NVSQRv+RV+FIL5pvDoLiAtSL9pKlC5x9PKQcZDsq7m4FO4d57mkhC6Z+QhAh3Jdk5JFw==", + "node_modules/nan": { + "version": "2.18.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.18.0.tgz", + "integrity": "sha512-W7tfG7vMOGtD30sHoZSSc/JVYiyDPEyQVso/Zz+/uQd0B0L46gtC+pHha5FFMRpil6fm/AoEcRWyOVi4+E/f8w==", "dev": true, "optional": true }, - "nanomatch": { + "node_modules/nanomatch": { "version": "1.2.13", "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", "dev": true, - "requires": { + "dependencies": { "arr-diff": "^4.0.0", "array-unique": "^0.3.2", "define-property": "^2.0.2", @@ -1869,249 +1558,379 @@ "regex-not": "^1.0.0", "snapdragon": "^0.8.1", "to-regex": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" } }, - "node-releases": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.3.tgz", - "integrity": "sha512-6VrvH7z6jqqNFY200kdB6HdzkgM96Oaj9v3dqGfgp6mF+cHmU4wyQKZ2/WPDRVoR0Jz9KqbamaBN0ZhdUaysUQ==", + "node_modules/nanomatch/node_modules/extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", "dev": true, - "requires": { - "semver": "^5.3.0" + "dependencies": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" } }, - "normalize-path": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", - "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "node_modules/nanomatch/node_modules/is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", "dev": true, - "requires": { - "remove-trailing-separator": "^1.0.1" + "dependencies": { + "is-plain-object": "^2.0.4" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/nanomatch/node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/nice-try": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", + "dev": true + }, + "node_modules/node-releases": { + "version": "2.0.13", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.13.tgz", + "integrity": "sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==", + "dev": true + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, + "engines": { + "node": ">=0.10.0" } }, - "normalize-range": { + "node_modules/normalize-range": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", "integrity": "sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, - "npm-run-path": { + "node_modules/npm-run-path": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", - "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", + "integrity": "sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==", "dev": true, - "requires": { + "dependencies": { "path-key": "^2.0.0" + }, + "engines": { + "node": ">=4" } }, - "num2fraction": { + "node_modules/num2fraction": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/num2fraction/-/num2fraction-1.2.2.tgz", - "integrity": "sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4=", + "integrity": "sha512-Y1wZESM7VUThYY+4W+X4ySH2maqcA+p7UR+w8VWNWVAd6lwuXXWz/w/Cz43J/dI2I+PS6wD5N+bJUF+gjWvIqg==", "dev": true }, - "number-is-nan": { + "node_modules/number-is-nan": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", - "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", - "dev": true + "integrity": "sha512-4jbtZXNAsfZbAHiiqjLPBiCl16dES1zI4Hpzzxw61Tk+loF+sBDBKx1ICKKKwIqQ7M0mFn1TmkN7euSncWgHiQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, - "object-assign": { + "node_modules/object-assign": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", - "dev": true + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, - "object-copy": { + "node_modules/object-copy": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", - "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", + "integrity": "sha512-79LYn6VAb63zgtmAteVOWo9Vdj71ZVBy3Pbse+VqxDpEP83XuujMrGqHIwAXJ5I/aM0zU7dIyIAhifVTPrNItQ==", "dev": true, - "requires": { + "dependencies": { "copy-descriptor": "^0.1.0", "define-property": "^0.2.5", "kind-of": "^3.0.3" }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-copy/node_modules/define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", + "dev": true, "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } + "is-descriptor": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-copy/node_modules/is-descriptor": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.7.tgz", + "integrity": "sha512-C3grZTvObeN1xud4cRWl366OMXZTj0+HGyk4hvfpx4ZHt1Pb60ANSXqCK7pdOTeUQpRzECBSTphqvD7U+l22Eg==", + "dev": true, + "dependencies": { + "is-accessor-descriptor": "^1.0.1", + "is-data-descriptor": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" } }, - "object-visit": { + "node_modules/object-visit": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", - "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", + "integrity": "sha512-GBaMwwAVK9qbQN3Scdo0OyvgPW7l3lnaVMj84uTOZlswkX0KpF6fyDBJhtTthf7pymztoN36/KEr1DyhF96zEA==", "dev": true, - "requires": { + "dependencies": { "isobject": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, - "object.pick": { + "node_modules/object.pick": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", - "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", + "integrity": "sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ==", "dev": true, - "requires": { + "dependencies": { "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" } }, - "once": { + "node_modules/once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", "dev": true, - "requires": { + "dependencies": { "wrappy": "1" } }, - "os-homedir": { + "node_modules/os-homedir": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", - "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", - "dev": true + "integrity": "sha512-B5JU3cabzk8c67mRRd3ECmROafjYMXbuzlwtqdM8IbS8ktlTix8aFGb2bAGKrSRIlnfKwovGUUr72JUPyOb6kQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, - "os-locale": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-2.1.0.tgz", - "integrity": "sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA==", + "node_modules/os-locale": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-3.1.0.tgz", + "integrity": "sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q==", "dev": true, - "requires": { - "execa": "^0.7.0", - "lcid": "^1.0.0", - "mem": "^1.1.0" + "dependencies": { + "execa": "^1.0.0", + "lcid": "^2.0.0", + "mem": "^4.0.0" + }, + "engines": { + "node": ">=6" } }, - "p-finally": { + "node_modules/p-defer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz", + "integrity": "sha512-wB3wfAxZpk2AzOfUMJNL+d36xothRSyj8EXOa4f6GMqYDN9BJaaSISbsk+wS9abmnebVw95C2Kb5t85UmpCxuw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/p-finally": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", - "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", - "dev": true + "integrity": "sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/p-is-promise": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-2.1.0.tgz", + "integrity": "sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg==", + "dev": true, + "engines": { + "node": ">=6" + } }, - "p-limit": { + "node_modules/p-limit": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", "dev": true, - "requires": { + "dependencies": { "p-try": "^1.0.0" + }, + "engines": { + "node": ">=4" } }, - "p-locate": { + "node_modules/p-locate": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", - "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "integrity": "sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg==", "dev": true, - "requires": { + "dependencies": { "p-limit": "^1.1.0" + }, + "engines": { + "node": ">=4" } }, - "p-try": { + "node_modules/p-try": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", - "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", - "dev": true + "integrity": "sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww==", + "dev": true, + "engines": { + "node": ">=4" + } }, - "parse-json": { + "node_modules/parse-json": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", - "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", + "integrity": "sha512-QR/GGaKCkhwk1ePQNYDRKYZ3mwU9ypsKhB0XyFnLQdomyEqk3e8wpW3V5Jp88zbxK4n5ST1nqo+g9juTpownhQ==", "dev": true, - "requires": { + "dependencies": { "error-ex": "^1.2.0" + }, + "engines": { + "node": ">=0.10.0" } }, - "pascalcase": { + "node_modules/pascalcase": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", - "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", - "dev": true + "integrity": "sha512-XHXfu/yOQRy9vYOtUDVMN60OEJjW013GoObG1o+xwQTpB9eYJX/BjXMsdW13ZDPruFhYYn0AG22w0xgQMwl3Nw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, - "path-dirname": { + "node_modules/path-dirname": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", - "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=", + "integrity": "sha512-ALzNPpyNq9AqXMBjeymIjFDAkAFH06mHJH/cSBHAgU0s4vfpBn6b2nf8tiRLvagKD8RbTpq2FKTBg7cl9l3c7Q==", "dev": true }, - "path-exists": { + "node_modules/path-exists": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", - "dev": true + "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", + "dev": true, + "engines": { + "node": ">=4" + } }, - "path-is-absolute": { + "node_modules/path-is-absolute": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", - "dev": true + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, - "path-key": { + "node_modules/path-key": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", - "dev": true + "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", + "dev": true, + "engines": { + "node": ">=4" + } }, - "path-type": { + "node_modules/path-type": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", "dev": true, - "requires": { + "dependencies": { "pify": "^3.0.0" + }, + "engines": { + "node": ">=4" } }, - "pify": { + "node_modules/picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "dev": true + }, + "node_modules/pify": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", - "dev": true + "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", + "dev": true, + "engines": { + "node": ">=4" + } }, - "posix-character-classes": { + "node_modules/posix-character-classes": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", - "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", - "dev": true + "integrity": "sha512-xTgYBc3fuo7Yt7JbiuFxSYGToMoz8fLoE6TC9Wx1P/u+LfeThMOAqmuyECnlBaaJb+u1m9hHiXUEtwW4OzfUJg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, - "postcss": { - "version": "6.0.23", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz", - "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", + "node_modules/postcss": { + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", "dev": true, - "requires": { - "chalk": "^2.4.1", - "source-map": "^0.6.1", - "supports-color": "^5.4.0" - }, "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } + "picocolors": "^0.2.1", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" } }, - "postcss-cli": { + "node_modules/postcss-cli": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/postcss-cli/-/postcss-cli-5.0.1.tgz", "integrity": "sha512-yrvWl8axFdiXlJuVQRIHM4qskvl0F4/fWUUIYyYo0RV6lOdB0Vcyt8Rv7lBvtwVuNa0pClz88LgxzT4ZzC7UWA==", "dev": true, - "requires": { + "dependencies": { "chalk": "^2.1.0", "chokidar": "^2.0.0", "dependency-graph": "^0.7.0", @@ -2124,99 +1943,159 @@ "pretty-hrtime": "^1.0.3", "read-cache": "^1.0.0", "yargs": "^11.0.0" + }, + "bin": { + "postcss": "bin/postcss" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-cli/node_modules/postcss": { + "version": "6.0.23", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz", + "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", + "dev": true, + "dependencies": { + "chalk": "^2.4.1", + "source-map": "^0.6.1", + "supports-color": "^5.4.0" + }, + "engines": { + "node": ">=4.0.0" } }, - "postcss-load-config": { + "node_modules/postcss-load-config": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-1.2.0.tgz", - "integrity": "sha1-U56a/J3chiASHr+djDZz4M5Q0oo=", + "integrity": "sha512-3fpCfnXo9Qd/O/q/XL4cJUhRsqjVD2V1Vhy3wOEcLE5kz0TGtdDXJSoiTdH4e847KphbEac4+EZSH4qLRYIgLw==", "dev": true, - "requires": { + "dependencies": { "cosmiconfig": "^2.1.0", "object-assign": "^4.1.0", "postcss-load-options": "^1.2.0", "postcss-load-plugins": "^2.3.0" + }, + "engines": { + "node": ">=0.12" } }, - "postcss-load-options": { + "node_modules/postcss-load-options": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/postcss-load-options/-/postcss-load-options-1.2.0.tgz", - "integrity": "sha1-sJixVZ3awt8EvAuzdfmaXP4rbYw=", + "integrity": "sha512-WKS5LJMZLWGwtfhs5ahb2ycpoYF3m0kK4QEaM+elr5EpiMt0H296P/9ETa13WXzjPwB0DDTBiUBBWSHoApQIJg==", "dev": true, - "requires": { + "dependencies": { "cosmiconfig": "^2.1.0", "object-assign": "^4.1.0" + }, + "engines": { + "node": ">=0.12" } }, - "postcss-load-plugins": { + "node_modules/postcss-load-plugins": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/postcss-load-plugins/-/postcss-load-plugins-2.3.0.tgz", - "integrity": "sha1-dFdoEWWZrKLwCfrUJrABdQSdjZI=", + "integrity": "sha512-/WGUMYhKiryWjYO6c7kAcqMuD7DVkaQ8HcbQenDme/d3OBOmrYMFObOKgUWyUy1uih5U2Dakq8H6VcJi5C9wHQ==", "dev": true, - "requires": { + "dependencies": { "cosmiconfig": "^2.1.1", "object-assign": "^4.1.0" + }, + "engines": { + "node": ">=0.12" } }, - "postcss-reporter": { + "node_modules/postcss-reporter": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/postcss-reporter/-/postcss-reporter-5.0.0.tgz", "integrity": "sha512-rBkDbaHAu5uywbCR2XE8a25tats3xSOsGNx6mppK6Q9kSFGKc/FyAzfci+fWM2l+K402p1D0pNcfDGxeje5IKg==", "dev": true, - "requires": { + "dependencies": { "chalk": "^2.0.1", "lodash": "^4.17.4", "log-symbols": "^2.0.0", "postcss": "^6.0.8" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-reporter/node_modules/postcss": { + "version": "6.0.23", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz", + "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", + "dev": true, + "dependencies": { + "chalk": "^2.4.1", + "source-map": "^0.6.1", + "supports-color": "^5.4.0" + }, + "engines": { + "node": ">=4.0.0" } }, - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "node_modules/postcss-value-parser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", + "dev": true + }, + "node_modules/postcss/node_modules/picocolors": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", "dev": true }, - "pretty-hrtime": { + "node_modules/pretty-hrtime": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz", "integrity": "sha1-t+PqQkNaTJsnWdmeDyAesZWALuE=", - "dev": true + "dev": true, + "engines": { + "node": ">= 0.8" + } }, - "process-nextick-args": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", - "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==", + "node_modules/process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", "dev": true }, - "pseudomap": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", - "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", - "dev": true + "node_modules/pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dev": true, + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } }, - "read-cache": { + "node_modules/read-cache": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", "integrity": "sha1-5mTvMRYRZsl1HNvo28+GtftY93Q=", "dev": true, - "requires": { - "pify": "^2.3.0" - }, "dependencies": { - "pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", - "dev": true - } + "pify": "^2.3.0" } }, - "readable-stream": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", - "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", + "node_modules/read-cache/node_modules/pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", "dev": true, - "requires": { + "dependencies": { "core-util-is": "~1.0.0", "inherits": "~2.0.3", "isarray": "~1.0.0", @@ -2226,158 +2105,209 @@ "util-deprecate": "~1.0.1" } }, - "readdirp": { + "node_modules/readdirp": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", "dev": true, - "requires": { + "dependencies": { "graceful-fs": "^4.1.11", "micromatch": "^3.1.10", "readable-stream": "^2.0.2" + }, + "engines": { + "node": ">=0.10" } }, - "regex-not": { + "node_modules/regex-not": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", "dev": true, - "requires": { + "dependencies": { "extend-shallow": "^3.0.2", "safe-regex": "^1.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/regex-not/node_modules/extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", + "dev": true, + "dependencies": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/regex-not/node_modules/is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "dependencies": { + "is-plain-object": "^2.0.4" + }, + "engines": { + "node": ">=0.10.0" } }, - "remove-trailing-separator": { + "node_modules/remove-trailing-separator": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", - "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", + "integrity": "sha512-/hS+Y0u3aOfIETiaiirUFwDBDzmXPvO+jAfKTitUngIPzdKc6Z0LoFjM/CK5PL4C+eKwHohlHAb6H0VFfmmUsw==", "dev": true }, - "repeat-element": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz", - "integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==", - "dev": true + "node_modules/repeat-element": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.4.tgz", + "integrity": "sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, - "repeat-string": { + "node_modules/repeat-string": { "version": "1.6.1", "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", - "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", - "dev": true + "integrity": "sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==", + "dev": true, + "engines": { + "node": ">=0.10" + } }, - "require-directory": { + "node_modules/require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", - "dev": true + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, - "require-from-string": { + "node_modules/require-from-string": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-1.2.1.tgz", - "integrity": "sha1-UpyczvJzgK3+yaL5ZbZJu+5jZBg=", - "dev": true + "integrity": "sha512-H7AkJWMobeskkttHyhTVtS0fxpFLjxhbfMa6Bk3wimP7sdPRGL3EyCg3sAQenFfAe+xQ+oAc85Nmtvq0ROM83Q==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, - "require-main-filename": { + "node_modules/require-main-filename": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", - "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", + "integrity": "sha512-IqSUtOVP4ksd1C/ej5zeEh/BIP2ajqpn8c5x+q99gvcIG/Qf0cud5raVnE/Dwd0ua9TXYDoDc0RE5hBSdz22Ug==", "dev": true }, - "resolve-url": { + "node_modules/resolve-url": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", - "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", + "integrity": "sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg==", + "deprecated": "https://github.com/lydell/resolve-url#deprecated", "dev": true }, - "ret": { + "node_modules/ret": { "version": "0.1.15", "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", - "dev": true + "dev": true, + "engines": { + "node": ">=0.12" + } }, - "safe-buffer": { + "node_modules/safe-buffer": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", "dev": true }, - "safe-regex": { + "node_modules/safe-regex": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", - "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", + "integrity": "sha512-aJXcif4xnaNUzvUuC5gcb46oTS7zvg4jpMTnuqtrEPlR3vFr4pxtdTwaF1Qs3Enjn9HK+ZlwQui+a7z0SywIzg==", "dev": true, - "requires": { + "dependencies": { "ret": "~0.1.10" } }, - "semver": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.6.0.tgz", - "integrity": "sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg==", - "dev": true + "node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "dev": true, + "bin": { + "semver": "bin/semver" + } }, - "set-blocking": { + "node_modules/set-blocking": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", + "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", "dev": true }, - "set-value": { + "node_modules/set-value": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", "dev": true, - "requires": { + "dependencies": { "extend-shallow": "^2.0.1", "is-extendable": "^0.1.1", "is-plain-object": "^2.0.3", "split-string": "^3.0.1" }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } + "engines": { + "node": ">=0.10.0" } }, - "shebang-command": { + "node_modules/shebang-command": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", - "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", "dev": true, - "requires": { + "dependencies": { "shebang-regex": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, - "shebang-regex": { + "node_modules/shebang-regex": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", - "dev": true + "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, - "signal-exit": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", - "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", + "node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", "dev": true }, - "slash": { + "node_modules/slash": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", - "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=", - "dev": true + "integrity": "sha512-3TYDR7xWt4dIqV2JauJr+EJeW356RXijHeUlO+8djJ+uBXPn8/2dpzBc8yQhh583sVvc9CvFAeQVgijsH+PNNg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, - "snapdragon": { + "node_modules/snapdragon": { "version": "0.8.2", "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", "dev": true, - "requires": { + "dependencies": { "base": "^0.11.1", "debug": "^2.2.0", "define-property": "^0.2.5", @@ -2387,417 +2317,548 @@ "source-map-resolve": "^0.5.0", "use": "^3.1.0" }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } + "engines": { + "node": ">=0.10.0" } }, - "snapdragon-node": { + "node_modules/snapdragon-node": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", "dev": true, - "requires": { + "dependencies": { "define-property": "^1.0.0", "isobject": "^3.0.0", "snapdragon-util": "^3.0.1" }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon-node/node_modules/define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", + "dev": true, "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - } + "is-descriptor": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, - "snapdragon-util": { + "node_modules/snapdragon-util": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", "dev": true, - "requires": { + "dependencies": { "kind-of": "^3.2.0" }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon/node_modules/define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", + "dev": true, + "dependencies": { + "is-descriptor": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon/node_modules/is-descriptor": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.7.tgz", + "integrity": "sha512-C3grZTvObeN1xud4cRWl366OMXZTj0+HGyk4hvfpx4ZHt1Pb60ANSXqCK7pdOTeUQpRzECBSTphqvD7U+l22Eg==", + "dev": true, "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } + "is-accessor-descriptor": "^1.0.1", + "is-data-descriptor": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" } }, - "source-map": { + "node_modules/snapdragon/node_modules/source-map": { "version": "0.5.7", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true + "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, - "source-map-resolve": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.2.tgz", - "integrity": "sha512-MjqsvNwyz1s0k81Goz/9vRBe9SZdB09Bdw+/zYyO+3CuPk6fouTaxscHkgtE8jKvf01kVfl8riHzERQ/kefaSA==", + "node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true, - "requires": { - "atob": "^2.1.1", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-resolve": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz", + "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==", + "deprecated": "See https://github.com/lydell/source-map-resolve#deprecated", + "dev": true, + "dependencies": { + "atob": "^2.1.2", "decode-uri-component": "^0.2.0", "resolve-url": "^0.2.1", "source-map-url": "^0.4.0", "urix": "^0.1.0" } }, - "source-map-url": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", - "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=", + "node_modules/source-map-url": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.1.tgz", + "integrity": "sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==", + "deprecated": "See https://github.com/lydell/source-map-url#deprecated", "dev": true }, - "split-string": { + "node_modules/split-string": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", "dev": true, - "requires": { + "dependencies": { "extend-shallow": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/split-string/node_modules/extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", + "dev": true, + "dependencies": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/split-string/node_modules/is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "dependencies": { + "is-plain-object": "^2.0.4" + }, + "engines": { + "node": ">=0.10.0" } }, - "sprintf-js": { + "node_modules/sprintf-js": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", "dev": true }, - "static-extend": { + "node_modules/static-extend": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", - "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", + "integrity": "sha512-72E9+uLc27Mt718pMHt9VMNiAL4LMsmDbBva8mxWUCkT07fSzEGMYUCk0XWY6lp0j6RBAG4cJ3mWuZv2OE3s0g==", "dev": true, - "requires": { + "dependencies": { "define-property": "^0.2.5", "object-copy": "^0.1.0" }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/static-extend/node_modules/define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", + "dev": true, "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - } + "is-descriptor": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" } }, - "string-width": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "node_modules/static-extend/node_modules/is-descriptor": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.7.tgz", + "integrity": "sha512-C3grZTvObeN1xud4cRWl366OMXZTj0+HGyk4hvfpx4ZHt1Pb60ANSXqCK7pdOTeUQpRzECBSTphqvD7U+l22Eg==", "dev": true, - "requires": { - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" + "dependencies": { + "is-accessor-descriptor": "^1.0.1", + "is-data-descriptor": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" } }, - "string_decoder": { + "node_modules/string_decoder": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "dev": true, - "requires": { + "dependencies": { "safe-buffer": "~5.1.0" } }, - "strip-ansi": { + "node_modules/string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "dependencies": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/strip-ansi": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "integrity": "sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow==", "dev": true, - "requires": { + "dependencies": { "ansi-regex": "^3.0.0" + }, + "engines": { + "node": ">=4" } }, - "strip-eof": { + "node_modules/strip-eof": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", - "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", - "dev": true + "integrity": "sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, - "supports-color": { + "node_modules/supports-color": { "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", "dev": true, - "requires": { + "dependencies": { "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" } }, - "to-object-path": { + "node_modules/to-object-path": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", - "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", + "integrity": "sha512-9mWHdnGRuh3onocaHzukyvCZhzvr6tiflAy/JRFXcJX0TjgfWA9pk9t8CMbzmBE4Jfw58pXbkngtBtqYxzNEyg==", "dev": true, - "requires": { + "dependencies": { "kind-of": "^3.0.2" }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } + "engines": { + "node": ">=0.10.0" } }, - "to-regex": { + "node_modules/to-regex": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", "dev": true, - "requires": { + "dependencies": { "define-property": "^2.0.2", "extend-shallow": "^3.0.2", "regex-not": "^1.0.2", "safe-regex": "^1.1.0" + }, + "engines": { + "node": ">=0.10.0" } }, - "to-regex-range": { + "node_modules/to-regex-range": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", - "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "integrity": "sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==", "dev": true, - "requires": { + "dependencies": { "is-number": "^3.0.0", "repeat-string": "^1.6.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/to-regex/node_modules/extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", + "dev": true, + "dependencies": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" } }, - "union-value": { + "node_modules/to-regex/node_modules/is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "dependencies": { + "is-plain-object": "^2.0.4" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/union-value": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", "dev": true, - "requires": { + "dependencies": { "arr-union": "^3.1.0", "get-value": "^2.0.6", "is-extendable": "^0.1.1", "set-value": "^2.0.1" + }, + "engines": { + "node": ">=0.10.0" } }, - "universalify": { + "node_modules/universalify": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", - "dev": true + "dev": true, + "engines": { + "node": ">= 4.0.0" + } }, - "unset-value": { + "node_modules/unset-value": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", - "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", + "integrity": "sha512-PcA2tsuGSF9cnySLHTLSh2qrQiJ70mn+r+Glzxv2TWZblxsxCC52BDlZoPCsz7STd9pN7EZetkWZBAvk4cgZdQ==", "dev": true, - "requires": { + "dependencies": { "has-value": "^0.3.1", "isobject": "^3.0.0" }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/unset-value/node_modules/has-value": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", + "integrity": "sha512-gpG936j8/MzaeID5Yif+577c17TxaDmhuyVgSwtnL/q8UUTySg8Mecb+8Cf1otgLoD7DDH75axp86ER7LFsf3Q==", + "dev": true, + "dependencies": { + "get-value": "^2.0.3", + "has-values": "^0.1.4", + "isobject": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/unset-value/node_modules/has-value/node_modules/isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA==", + "dev": true, "dependencies": { - "has-value": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", - "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", - "dev": true, - "requires": { - "get-value": "^2.0.3", - "has-values": "^0.1.4", - "isobject": "^2.0.0" - }, - "dependencies": { - "isobject": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", - "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", - "dev": true, - "requires": { - "isarray": "1.0.0" - } - } - } + "isarray": "1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/unset-value/node_modules/has-values": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", + "integrity": "sha512-J8S0cEdWuQbqD9//tlZxiMuMNmxB8PlEwvYwuxsTmR1G5RXUePEX/SJn7aD0GMLieuZYSwNH0cQuJGwnYunXRQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/upath": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", + "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==", + "dev": true, + "engines": { + "node": ">=4", + "yarn": "*" + } + }, + "node_modules/update-browserslist-db": { + "version": "1.0.13", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz", + "integrity": "sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" }, - "has-values": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", - "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", - "dev": true + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" } + ], + "dependencies": { + "escalade": "^3.1.1", + "picocolors": "^1.0.0" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" } }, - "upath": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/upath/-/upath-1.1.0.tgz", - "integrity": "sha512-bzpH/oBhoS/QI/YtbkqCg6VEiPYjSZtrHQM6/QnJS6OL9pKUFLqb3aFh4Scvwm45+7iAgiMkLhSbaZxUqmrprw==", - "dev": true - }, - "urix": { + "node_modules/urix": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", - "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", + "integrity": "sha512-Am1ousAhSLBeB9cG/7k7r2R0zj50uDRlZHPGbazid5s9rlF1F/QKYObEKSIunSjIOkJZqwRRLpvewjEkM7pSqg==", + "deprecated": "Please see https://github.com/lydell/urix#deprecated", "dev": true }, - "use": { + "node_modules/use": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, - "util-deprecate": { + "node_modules/util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", "dev": true }, - "which": { + "node_modules/which": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", "dev": true, - "requires": { + "dependencies": { "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" } }, - "which-module": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", - "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", + "node_modules/which-module": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.1.tgz", + "integrity": "sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==", "dev": true }, - "wrap-ansi": { + "node_modules/wrap-ansi": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", - "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", + "integrity": "sha512-vAaEaDM946gbNpH5pLVNR+vX2ht6n0Bt3GXwVB1AuAqZosOvHNF3P7wDnh8KLkSqgUh0uh77le7Owgoz+Z9XBw==", "dev": true, - "requires": { + "dependencies": { "string-width": "^1.0.1", "strip-ansi": "^3.0.1" }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/wrap-ansi/node_modules/ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/wrap-ansi/node_modules/is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha512-1pqUqRjkhPJ9miNq9SwMfdvi6lBJcd6eFxvfaivQhaH3SgisfiuudvFntdKOmxuee/77l+FPjKrQjWvmPjWrRw==", + "dev": true, "dependencies": { - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", - "dev": true, - "requires": { - "number-is-nan": "^1.0.0" - } - }, - "string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", - "dev": true, - "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - } - }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dev": true, - "requires": { - "ansi-regex": "^2.0.0" - } - } + "number-is-nan": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, - "wrappy": { + "node_modules/wrap-ansi/node_modules/string-width": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", - "dev": true + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha512-0XsVpQLnVCXHJfyEs8tC0zpTVIr5PKKsQtkT29IwupnPTjtPmQ3xT/4yCREF9hYkV/3M3kzcUTSAZT6a6h81tw==", + "dev": true, + "dependencies": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } }, - "y18n": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", - "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=", + "node_modules/wrap-ansi/node_modules/strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", + "dev": true, + "dependencies": { + "ansi-regex": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", "dev": true }, - "yallist": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", - "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", + "node_modules/y18n": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.2.tgz", + "integrity": "sha512-uGZHXkHnhF0XeeAPgnKfPv1bgKAYyVvmNL1xlKsPYZPaIHxGti2hHqvOCQv71XMsLxu1QjergkqogUnms5D3YQ==", "dev": true }, - "yargs": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-11.1.0.tgz", - "integrity": "sha512-NwW69J42EsCSanF8kyn5upxvjp5ds+t3+udGBeTbFnERA+lF541DDpMawzo4z6W/QrzNM18D+BPMiOBibnFV5A==", + "node_modules/yargs": { + "version": "11.1.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-11.1.1.tgz", + "integrity": "sha512-PRU7gJrJaXv3q3yQZ/+/X6KBswZiaQ+zOmdprZcouPYtQgvNU35i+68M4b1ZHLZtYFT5QObFLV+ZkmJYcwKdiw==", "dev": true, - "requires": { + "dependencies": { "cliui": "^4.0.0", "decamelize": "^1.1.1", "find-up": "^2.1.0", "get-caller-file": "^1.0.1", - "os-locale": "^2.0.0", + "os-locale": "^3.1.0", "require-directory": "^2.1.1", "require-main-filename": "^1.0.1", "set-blocking": "^2.0.0", @@ -2807,12 +2868,12 @@ "yargs-parser": "^9.0.2" } }, - "yargs-parser": { + "node_modules/yargs-parser": { "version": "9.0.2", "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-9.0.2.tgz", - "integrity": "sha1-nM9qQ0YP5O1Aqbto9I1DuKaMwHc=", + "integrity": "sha512-CswCfdOgCr4MMsT1GzbEJ7Z2uYudWyrGX8Bgh/0eyCzj/DXWdKq6a/ADufkzI1WAOIW6jYaXJvRyLhDO0kfqBw==", "dev": true, - "requires": { + "dependencies": { "camelcase": "^4.1.0" } } diff --git a/package.json b/package.json index ce3b9af2e4c..d6b822c268a 100644 --- a/package.json +++ b/package.json @@ -4,6 +4,9 @@ "description": "Hugo theme for technical documentation.", "main": "none.js", "scripts": { + "get:submodule": "git submodule update --init --depth 1", + "_prepare:docsy": "cd themes/docsy && npm install", + "prepare": "npm run get:submodule && npm run _prepare:docsy", "test": "echo \"Error: no test specified\" && exit 1" }, "repository": { diff --git a/static/altimetry_tutorial_files/altimetry_tutorial_15_1.png b/static/altimetry_tutorial_files/altimetry_tutorial_15_1.png index c51b43980ef..be9733e8271 100644 Binary files a/static/altimetry_tutorial_files/altimetry_tutorial_15_1.png and b/static/altimetry_tutorial_files/altimetry_tutorial_15_1.png differ diff --git a/static/altimetry_tutorial_files/altimetry_tutorial_16_0.png b/static/altimetry_tutorial_files/altimetry_tutorial_16_0.png index ff9bfa755b9..e2f0ff2e416 100644 Binary files a/static/altimetry_tutorial_files/altimetry_tutorial_16_0.png and b/static/altimetry_tutorial_files/altimetry_tutorial_16_0.png differ diff --git a/static/altimetry_tutorial_files/altimetry_tutorial_17_0.png b/static/altimetry_tutorial_files/altimetry_tutorial_17_0.png index 02b08bb6506..b33e1bacaa1 100644 Binary files a/static/altimetry_tutorial_files/altimetry_tutorial_17_0.png and b/static/altimetry_tutorial_files/altimetry_tutorial_17_0.png differ diff --git a/static/contour_tutorial_files/contour_tutorial_12_1.png b/static/contour_tutorial_files/contour_tutorial_12_1.png index 08c50411ccb..be5778903fb 100644 Binary files a/static/contour_tutorial_files/contour_tutorial_12_1.png and b/static/contour_tutorial_files/contour_tutorial_12_1.png differ diff --git a/static/eof_tutorial_files/eof_tutorial_12_1.png b/static/eof_tutorial_files/eof_tutorial_12_1.png index 3469eb06a10..9016a58182c 100644 Binary files a/static/eof_tutorial_files/eof_tutorial_12_1.png and b/static/eof_tutorial_files/eof_tutorial_12_1.png differ diff --git a/static/eof_tutorial_files/eof_tutorial_13_1.png b/static/eof_tutorial_files/eof_tutorial_13_1.png index 3c2125addbe..3a4f5528851 100644 Binary files a/static/eof_tutorial_files/eof_tutorial_13_1.png and b/static/eof_tutorial_files/eof_tutorial_13_1.png differ diff --git a/static/images/anaconda.svg b/static/images/anaconda.svg new file mode 100644 index 00000000000..164c5fbd700 --- /dev/null +++ b/static/images/anaconda.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/images/github.svg b/static/images/github.svg new file mode 100644 index 00000000000..cfab4e4eee9 --- /dev/null +++ b/static/images/github.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/images/pypi.svg b/static/images/pypi.svg new file mode 100644 index 00000000000..69435f14468 --- /dev/null +++ b/static/images/pypi.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/introduction_to_gridded_class_files/introduction_to_gridded_class_11_1.png b/static/introduction_to_gridded_class_files/introduction_to_gridded_class_11_1.png index 2130890fdc9..883a5c5856a 100644 Binary files a/static/introduction_to_gridded_class_files/introduction_to_gridded_class_11_1.png and b/static/introduction_to_gridded_class_files/introduction_to_gridded_class_11_1.png differ diff --git a/static/introduction_to_gridded_class_files/introduction_to_gridded_class_20_1.png b/static/introduction_to_gridded_class_files/introduction_to_gridded_class_20_1.png index a04331bde5e..07ce38f5974 100644 Binary files a/static/introduction_to_gridded_class_files/introduction_to_gridded_class_20_1.png and b/static/introduction_to_gridded_class_files/introduction_to_gridded_class_20_1.png differ diff --git a/static/introduction_to_profile_class_files/introduction_to_profile_class_12_1.png b/static/introduction_to_profile_class_files/introduction_to_profile_class_12_1.png new file mode 100644 index 00000000000..996bcc88b35 Binary files /dev/null and b/static/introduction_to_profile_class_files/introduction_to_profile_class_12_1.png differ diff --git a/static/introduction_to_profile_class_files/introduction_to_profile_class_33_1.png b/static/introduction_to_profile_class_files/introduction_to_profile_class_33_1.png new file mode 100644 index 00000000000..f6cc650831f Binary files /dev/null and b/static/introduction_to_profile_class_files/introduction_to_profile_class_33_1.png differ diff --git a/static/introduction_to_profile_class_files/introduction_to_profile_class_34_1.png b/static/introduction_to_profile_class_files/introduction_to_profile_class_34_1.png new file mode 100644 index 00000000000..98b96343ab6 Binary files /dev/null and b/static/introduction_to_profile_class_files/introduction_to_profile_class_34_1.png differ diff --git a/static/introduction_to_profile_class_files/introduction_to_profile_class_38_0.png b/static/introduction_to_profile_class_files/introduction_to_profile_class_38_0.png new file mode 100644 index 00000000000..7177449507c Binary files /dev/null and b/static/introduction_to_profile_class_files/introduction_to_profile_class_38_0.png differ diff --git a/static/introduction_to_profile_class_files/introduction_to_profile_class_44_0.png b/static/introduction_to_profile_class_files/introduction_to_profile_class_44_0.png new file mode 100644 index 00000000000..1ae0657f098 Binary files /dev/null and b/static/introduction_to_profile_class_files/introduction_to_profile_class_44_0.png differ diff --git a/static/introduction_to_profile_class_files/introduction_to_profile_class_46_1.png b/static/introduction_to_profile_class_files/introduction_to_profile_class_46_1.png new file mode 100644 index 00000000000..96b8b55117e Binary files /dev/null and b/static/introduction_to_profile_class_files/introduction_to_profile_class_46_1.png differ diff --git a/static/introduction_to_profile_class_files/introduction_to_profile_class_56_1.png b/static/introduction_to_profile_class_files/introduction_to_profile_class_56_1.png new file mode 100644 index 00000000000..d131749779d Binary files /dev/null and b/static/introduction_to_profile_class_files/introduction_to_profile_class_56_1.png differ diff --git a/static/introduction_to_profile_class_files/introduction_to_profile_class_59_1.png b/static/introduction_to_profile_class_files/introduction_to_profile_class_59_1.png new file mode 100644 index 00000000000..19f1819f590 Binary files /dev/null and b/static/introduction_to_profile_class_files/introduction_to_profile_class_59_1.png differ diff --git a/static/introduction_to_profile_class_files/introduction_to_profile_class_63_1.png b/static/introduction_to_profile_class_files/introduction_to_profile_class_63_1.png new file mode 100644 index 00000000000..b78877b82e4 Binary files /dev/null and b/static/introduction_to_profile_class_files/introduction_to_profile_class_63_1.png differ diff --git a/static/mask_maker_tutorial_files/mask_maker_tutorial_18_0.png b/static/mask_maker_tutorial_files/mask_maker_tutorial_18_0.png index aa5723d6474..7f7a3a76639 100644 Binary files a/static/mask_maker_tutorial_files/mask_maker_tutorial_18_0.png and b/static/mask_maker_tutorial_files/mask_maker_tutorial_18_0.png differ diff --git a/static/mask_maker_tutorial_files/mask_maker_tutorial_20_0.png b/static/mask_maker_tutorial_files/mask_maker_tutorial_20_0.png index c233e027f3c..2ee85dc4a1e 100644 Binary files a/static/mask_maker_tutorial_files/mask_maker_tutorial_20_0.png and b/static/mask_maker_tutorial_files/mask_maker_tutorial_20_0.png differ diff --git a/static/mask_maker_tutorial_files/mask_maker_tutorial_21_1.png b/static/mask_maker_tutorial_files/mask_maker_tutorial_21_1.png index 14c2925f5ca..85d2e197d73 100644 Binary files a/static/mask_maker_tutorial_files/mask_maker_tutorial_21_1.png and b/static/mask_maker_tutorial_files/mask_maker_tutorial_21_1.png differ diff --git a/static/mask_maker_tutorial_files/mask_maker_tutorial_33_1.png b/static/mask_maker_tutorial_files/mask_maker_tutorial_33_1.png index 727fe4b4fc9..792ffea06ed 100644 Binary files a/static/mask_maker_tutorial_files/mask_maker_tutorial_33_1.png and b/static/mask_maker_tutorial_files/mask_maker_tutorial_33_1.png differ diff --git a/static/mask_maker_tutorial_files/mask_maker_tutorial_36_1.png b/static/mask_maker_tutorial_files/mask_maker_tutorial_36_1.png index 9590ebc7756..73e99cfa032 100644 Binary files a/static/mask_maker_tutorial_files/mask_maker_tutorial_36_1.png and b/static/mask_maker_tutorial_files/mask_maker_tutorial_36_1.png differ diff --git a/static/mask_maker_tutorial_files/mask_maker_tutorial_37_1.png b/static/mask_maker_tutorial_files/mask_maker_tutorial_37_1.png index cea3a8a56b4..a2144d7370e 100644 Binary files a/static/mask_maker_tutorial_files/mask_maker_tutorial_37_1.png and b/static/mask_maker_tutorial_files/mask_maker_tutorial_37_1.png differ diff --git a/static/polar_plotting_files/polar_plotting_14_1.png b/static/polar_plotting_files/polar_plotting_14_1.png new file mode 100644 index 00000000000..1d17817779b Binary files /dev/null and b/static/polar_plotting_files/polar_plotting_14_1.png differ diff --git a/static/polar_plotting_files/polar_plotting_17_3.png b/static/polar_plotting_files/polar_plotting_17_3.png new file mode 100644 index 00000000000..644c0ba3d8c Binary files /dev/null and b/static/polar_plotting_files/polar_plotting_17_3.png differ diff --git a/static/potential_energy_tutorial_files/potential_energy_tutorial_11_1.png b/static/potential_energy_tutorial_files/potential_energy_tutorial_11_1.png new file mode 100644 index 00000000000..0ac7756bbde Binary files /dev/null and b/static/potential_energy_tutorial_files/potential_energy_tutorial_11_1.png differ diff --git a/static/potential_energy_tutorial_files/potential_energy_tutorial_21_1.png b/static/potential_energy_tutorial_files/potential_energy_tutorial_21_1.png index 3707a1758d8..60a89225f2f 100644 Binary files a/static/potential_energy_tutorial_files/potential_energy_tutorial_21_1.png and b/static/potential_energy_tutorial_files/potential_energy_tutorial_21_1.png differ diff --git a/static/pycnocline_tutorial_files/pycnocline_tutorial_17_1.png b/static/pycnocline_tutorial_files/pycnocline_tutorial_17_1.png index 907fce604eb..46e4af63bb6 100644 Binary files a/static/pycnocline_tutorial_files/pycnocline_tutorial_17_1.png and b/static/pycnocline_tutorial_files/pycnocline_tutorial_17_1.png differ diff --git a/static/pycnocline_tutorial_files/pycnocline_tutorial_17_2.png b/static/pycnocline_tutorial_files/pycnocline_tutorial_17_2.png new file mode 100644 index 00000000000..163f6fb609a Binary files /dev/null and b/static/pycnocline_tutorial_files/pycnocline_tutorial_17_2.png differ diff --git a/static/quiver_tutorial_files/quiver_tutorial_14_2.png b/static/quiver_tutorial_files/quiver_tutorial_14_2.png new file mode 100644 index 00000000000..f20ee80a17c Binary files /dev/null and b/static/quiver_tutorial_files/quiver_tutorial_14_2.png differ diff --git a/static/quiver_tutorial_files/quiver_tutorial_14_3.png b/static/quiver_tutorial_files/quiver_tutorial_14_3.png new file mode 100644 index 00000000000..2b44942b09c Binary files /dev/null and b/static/quiver_tutorial_files/quiver_tutorial_14_3.png differ diff --git a/static/seasia_dic_example_plot_tutorial_files/seasia_dic_example_plot_tutorial_8_1.png b/static/seasia_dic_example_plot_tutorial_files/seasia_dic_example_plot_tutorial_8_1.png index a04331bde5e..07ce38f5974 100644 Binary files a/static/seasia_dic_example_plot_tutorial_files/seasia_dic_example_plot_tutorial_8_1.png and b/static/seasia_dic_example_plot_tutorial_files/seasia_dic_example_plot_tutorial_8_1.png differ diff --git a/static/seasonal_decomp_example_files/seasonal_decomp_example_17_1.png b/static/seasonal_decomp_example_files/seasonal_decomp_example_17_1.png index 0a636fa348b..5a94651ad07 100644 Binary files a/static/seasonal_decomp_example_files/seasonal_decomp_example_17_1.png and b/static/seasonal_decomp_example_files/seasonal_decomp_example_17_1.png differ diff --git a/static/seasonal_decomp_example_files/seasonal_decomp_example_7_1.png b/static/seasonal_decomp_example_files/seasonal_decomp_example_7_1.png index 3666f814bd3..57d6ba07dd6 100644 Binary files a/static/seasonal_decomp_example_files/seasonal_decomp_example_7_1.png and b/static/seasonal_decomp_example_files/seasonal_decomp_example_7_1.png differ diff --git a/static/seasonal_decomp_example_files/seasonal_decomp_example_9_1.png b/static/seasonal_decomp_example_files/seasonal_decomp_example_9_1.png index 438396837b9..802bf6599b3 100644 Binary files a/static/seasonal_decomp_example_files/seasonal_decomp_example_9_1.png and b/static/seasonal_decomp_example_files/seasonal_decomp_example_9_1.png differ diff --git a/static/tidegauge_validation_tutorial_files/tidegauge_validation_tutorial_16_1.png b/static/tidegauge_validation_tutorial_files/tidegauge_validation_tutorial_16_1.png index f44a4d0f1df..7022becd05c 100644 Binary files a/static/tidegauge_validation_tutorial_files/tidegauge_validation_tutorial_16_1.png and b/static/tidegauge_validation_tutorial_files/tidegauge_validation_tutorial_16_1.png differ diff --git a/static/tidegauge_validation_tutorial_files/tidegauge_validation_tutorial_18_0.png b/static/tidegauge_validation_tutorial_files/tidegauge_validation_tutorial_18_0.png index a821bf51094..0d7defbd16e 100644 Binary files a/static/tidegauge_validation_tutorial_files/tidegauge_validation_tutorial_18_0.png and b/static/tidegauge_validation_tutorial_files/tidegauge_validation_tutorial_18_0.png differ diff --git a/static/tidegauge_validation_tutorial_files/tidegauge_validation_tutorial_18_1.png b/static/tidegauge_validation_tutorial_files/tidegauge_validation_tutorial_18_1.png index 4a27f9ac587..a8af48f4acf 100644 Binary files a/static/tidegauge_validation_tutorial_files/tidegauge_validation_tutorial_18_1.png and b/static/tidegauge_validation_tutorial_files/tidegauge_validation_tutorial_18_1.png differ diff --git a/static/tidegauge_validation_tutorial_files/tidegauge_validation_tutorial_20_0.png b/static/tidegauge_validation_tutorial_files/tidegauge_validation_tutorial_20_0.png index be5d32eb183..506911e212b 100644 Binary files a/static/tidegauge_validation_tutorial_files/tidegauge_validation_tutorial_20_0.png and b/static/tidegauge_validation_tutorial_files/tidegauge_validation_tutorial_20_0.png differ diff --git a/static/tidegauge_validation_tutorial_files/tidegauge_validation_tutorial_22_0.png b/static/tidegauge_validation_tutorial_files/tidegauge_validation_tutorial_22_0.png new file mode 100644 index 00000000000..a8f6f84d356 Binary files /dev/null and b/static/tidegauge_validation_tutorial_files/tidegauge_validation_tutorial_22_0.png differ diff --git a/static/tidegauge_validation_tutorial_files/tidegauge_validation_tutorial_22_1.png b/static/tidegauge_validation_tutorial_files/tidegauge_validation_tutorial_22_1.png index 2d0c0a1e046..3ab4df1c554 100644 Binary files a/static/tidegauge_validation_tutorial_files/tidegauge_validation_tutorial_22_1.png and b/static/tidegauge_validation_tutorial_files/tidegauge_validation_tutorial_22_1.png differ diff --git a/static/tidegauge_validation_tutorial_files/tidegauge_validation_tutorial_24_1.png b/static/tidegauge_validation_tutorial_files/tidegauge_validation_tutorial_24_1.png index af85381be22..060d8d3586a 100644 Binary files a/static/tidegauge_validation_tutorial_files/tidegauge_validation_tutorial_24_1.png and b/static/tidegauge_validation_tutorial_files/tidegauge_validation_tutorial_24_1.png differ diff --git a/static/tidegauge_validation_tutorial_files/tidegauge_validation_tutorial_26_1.png b/static/tidegauge_validation_tutorial_files/tidegauge_validation_tutorial_26_1.png new file mode 100644 index 00000000000..d721bf544b2 Binary files /dev/null and b/static/tidegauge_validation_tutorial_files/tidegauge_validation_tutorial_26_1.png differ diff --git a/static/tidegauge_validation_tutorial_files/tidegauge_validation_tutorial_35_0.png b/static/tidegauge_validation_tutorial_files/tidegauge_validation_tutorial_35_0.png index be0494b54a9..08dfe374217 100644 Binary files a/static/tidegauge_validation_tutorial_files/tidegauge_validation_tutorial_35_0.png and b/static/tidegauge_validation_tutorial_files/tidegauge_validation_tutorial_35_0.png differ diff --git a/static/tidegauge_validation_tutorial_files/tidegauge_validation_tutorial_37_0.png b/static/tidegauge_validation_tutorial_files/tidegauge_validation_tutorial_37_0.png new file mode 100644 index 00000000000..1963eb5b91c Binary files /dev/null and b/static/tidegauge_validation_tutorial_files/tidegauge_validation_tutorial_37_0.png differ diff --git a/static/tidegauge_validation_tutorial_files/tidegauge_validation_tutorial_44_0.png b/static/tidegauge_validation_tutorial_files/tidegauge_validation_tutorial_44_0.png index 51fc750e883..4a71ac934ea 100644 Binary files a/static/tidegauge_validation_tutorial_files/tidegauge_validation_tutorial_44_0.png and b/static/tidegauge_validation_tutorial_files/tidegauge_validation_tutorial_44_0.png differ diff --git a/static/tidegauge_validation_tutorial_files/tidegauge_validation_tutorial_46_0.png b/static/tidegauge_validation_tutorial_files/tidegauge_validation_tutorial_46_0.png new file mode 100644 index 00000000000..0c4416e3db0 Binary files /dev/null and b/static/tidegauge_validation_tutorial_files/tidegauge_validation_tutorial_46_0.png differ diff --git a/static/tidegauge_validation_tutorial_files/tidegauge_validation_tutorial_57_0.png b/static/tidegauge_validation_tutorial_files/tidegauge_validation_tutorial_57_0.png index b10717e3afc..0910e615e68 100644 Binary files a/static/tidegauge_validation_tutorial_files/tidegauge_validation_tutorial_57_0.png and b/static/tidegauge_validation_tutorial_files/tidegauge_validation_tutorial_57_0.png differ diff --git a/static/tidegauge_validation_tutorial_files/tidegauge_validation_tutorial_59_0.png b/static/tidegauge_validation_tutorial_files/tidegauge_validation_tutorial_59_0.png index 2e922c0e7fa..83633a80fbd 100644 Binary files a/static/tidegauge_validation_tutorial_files/tidegauge_validation_tutorial_59_0.png and b/static/tidegauge_validation_tutorial_files/tidegauge_validation_tutorial_59_0.png differ diff --git a/static/tidegauge_validation_tutorial_files/tidegauge_validation_tutorial_59_1.png b/static/tidegauge_validation_tutorial_files/tidegauge_validation_tutorial_59_1.png new file mode 100644 index 00000000000..82b6745c1f0 Binary files /dev/null and b/static/tidegauge_validation_tutorial_files/tidegauge_validation_tutorial_59_1.png differ diff --git a/static/tidegauge_validation_tutorial_files/tidegauge_validation_tutorial_61_0.png b/static/tidegauge_validation_tutorial_files/tidegauge_validation_tutorial_61_0.png new file mode 100644 index 00000000000..d9f5b735e98 Binary files /dev/null and b/static/tidegauge_validation_tutorial_files/tidegauge_validation_tutorial_61_0.png differ diff --git a/static/tidegauge_validation_tutorial_files/tidegauge_validation_tutorial_63_1.png b/static/tidegauge_validation_tutorial_files/tidegauge_validation_tutorial_63_1.png index c8a9ec5523f..d9c798dfedc 100644 Binary files a/static/tidegauge_validation_tutorial_files/tidegauge_validation_tutorial_63_1.png and b/static/tidegauge_validation_tutorial_files/tidegauge_validation_tutorial_63_1.png differ diff --git a/static/tidegauge_validation_tutorial_files/tidegauge_validation_tutorial_65_1.png b/static/tidegauge_validation_tutorial_files/tidegauge_validation_tutorial_65_1.png index daf500a8242..45dbd2a21a9 100644 Binary files a/static/tidegauge_validation_tutorial_files/tidegauge_validation_tutorial_65_1.png and b/static/tidegauge_validation_tutorial_files/tidegauge_validation_tutorial_65_1.png differ diff --git a/static/tidegauge_validation_tutorial_files/tidegauge_validation_tutorial_67_1.png b/static/tidegauge_validation_tutorial_files/tidegauge_validation_tutorial_67_1.png new file mode 100644 index 00000000000..6c094e861ef Binary files /dev/null and b/static/tidegauge_validation_tutorial_files/tidegauge_validation_tutorial_67_1.png differ diff --git a/static/tidetable_tutorial_files/tidetable_tutorial_14_1.png b/static/tidetable_tutorial_files/tidetable_tutorial_14_1.png index 7a27385969d..e5abc2fac9d 100644 Binary files a/static/tidetable_tutorial_files/tidetable_tutorial_14_1.png and b/static/tidetable_tutorial_files/tidetable_tutorial_14_1.png differ diff --git a/static/transect_tutorial_files/transect_tutorial_10_0.png b/static/transect_tutorial_files/transect_tutorial_10_0.png index ac76fb1903d..d8799a55a83 100644 Binary files a/static/transect_tutorial_files/transect_tutorial_10_0.png and b/static/transect_tutorial_files/transect_tutorial_10_0.png differ diff --git a/static/transect_tutorial_files/transect_tutorial_20_0.png b/static/transect_tutorial_files/transect_tutorial_20_0.png index 481aa4b54fc..86281d4101c 100644 Binary files a/static/transect_tutorial_files/transect_tutorial_20_0.png and b/static/transect_tutorial_files/transect_tutorial_20_0.png differ diff --git a/static/transect_tutorial_files/transect_tutorial_22_0.png b/static/transect_tutorial_files/transect_tutorial_22_0.png index 8648d0ba006..6f326a195af 100644 Binary files a/static/transect_tutorial_files/transect_tutorial_22_0.png and b/static/transect_tutorial_files/transect_tutorial_22_0.png differ diff --git a/static/wod_bgc_ragged_example_files/wod_bgc_ragged_example_17_0.png b/static/wod_bgc_ragged_example_files/wod_bgc_ragged_example_17_0.png index 0d2c5263994..1bc088abe5e 100644 Binary files a/static/wod_bgc_ragged_example_files/wod_bgc_ragged_example_17_0.png and b/static/wod_bgc_ragged_example_files/wod_bgc_ragged_example_17_0.png differ diff --git a/static/wod_bgc_ragged_example_files/wod_bgc_ragged_example_17_1.png b/static/wod_bgc_ragged_example_files/wod_bgc_ragged_example_17_1.png index 0125728effb..89084ea5acf 100644 Binary files a/static/wod_bgc_ragged_example_files/wod_bgc_ragged_example_17_1.png and b/static/wod_bgc_ragged_example_files/wod_bgc_ragged_example_17_1.png differ diff --git a/themes/docsy b/themes/docsy index dd303fd19cc..9f4b873da46 160000 --- a/themes/docsy +++ b/themes/docsy @@ -1 +1 @@ -Subproject commit dd303fd19cc13ffc01bcbe86ff54f21e423d04de +Subproject commit 9f4b873da468ccadaaa54d30c6aba71954508c4a