Exclude unnecssary data from pvlib packaging

Most of the data in the data folder are only used for testing and not useful for any examples. However, they add up a considerable amount of space (MBs) relative to the pvlib package itself. For applications such as WASM (code running in the browser), all this clutter slows down loading significantly. The data folder is currently 57 MB out of a total of 63 MB.
Of course, there are data files that we want to keep such as the Linke turbidity and CEC database. However, a rough estimation shows that removing unused data files can reduce the pvlib package but half!
Excluding/including data files can be specified in the pyproject.toml file, for example:
[tool.setuptools.packages.find]
where = ["src"]  # list of folders that contain the packages (["."] by default)
include = ["my_package*"]  # package names should match these glob patterns (["*"] by default)
exclude = ["my_package.tests*"]  # exclude packages matching these glob patterns (empty by default)

This can also be done in the MANIFEST.in file, which is pvlib's current approach, and seems to have finer control.
The pvlib/tests folder can also be excluded, and save 2.5 MB.

Good initiative.  Is it common to exclude the tests from a package?

scipy and pandas both include their tests in their distribution files (although some pandas maintainers have agreed that it would be better to exclude them, https://github.com/pandas-dev/pandas/issues/30741).
I see little value in including the tests in the wheels.  If we exclude most data files, then the test functions become even less useful to include.  It may make sense to continue including the tests in the sdist distributions, I am not sure.

Few more thoughts:

@AdamRJensen is it really the volume in MB that is slowing down WASM?  63 MB isn't much nowadays.
Some (many?) files could be reduced in size by truncation (e.g. trailing zeros) and/or compression (e.g., zip)
Perhaps some files could serve their purpose with fewer records.

I've finished classifying the files in #1056's spreadsheet and the result shows the pvlib/data folder would reduce to 24MB (41% of the original) if only necessary files for the API code are shipped in that folder.
Although I understand facilitating the tests can be a source of easing and validating the working environments, it is a driving bottleneck in the installation process. I would just remove them from wheels due to that.

Some (many?) files could be reduced in size by truncation (e.g. trailing zeros) and/or compression (e.g., zip)

That would add extra time at running tests and adding/maintaining them. Last alternative does not sound too bad, but it's not a small effort considering the amount of files used in the tests (58) and that an unknown amount of expected results are hardcoded, I can't quantify how many.

If we remove data files for tests from the distribution, does that mean that pytest test_xxxx.py will return a bunch of errors unrelated to the contributor's new tests?

If we remove data files for tests from the distribution, does that mean that pytest test_xxxx.py will return a bunch of errors unrelated to the contributor's new tests?

No since pytest.yml workflow already checks out the repo, so all files are available at run time, it's just a matter of telling the distribution builder whether to include them or not before posting it to PyPI.
https://github.com/pvlib/pvlib-python/blob/c52e600b996733a4a3371623a3784ccda5667e68/.github/workflows/pytest.yml#L33C1-L36C27
I just wonder if the conda recipe will need to be changed, IDK how conda-forge recipes work in the background:
https://github.com/conda-forge/pvlib-python-feedstock/blob/f37d40d81becdb025578d0e09ca44ebe3cbeb466/recipe/meta.yaml#L60C1-L62C16

Ah I see, you refer to that if I install pvlib (non editable mode, either from the cloned repo or PyPI), then go to the package folder in Python's site-packages/pvlib/tests and run that. Yeah, you are right, it would fail. For that [edge-]case Adam's statement:

The pvlib/tests folder can also be excluded, and save 2.5 MB.

would solve it by not allowing any tests to be run from the distribution installation. I personally support that.

I understand my own question better. Excluding the test files from the distribution wouldn't affect running tests locally on a fork, since the fork clones the repository rather than installs from the distribution. I don't have a concern here.

@AdamRJensen is it really the volume in MB that is slowing down WASM?  63 MB isn't much nowadays.
I'd like to develop widgets that can run using WASM, and these need to be relatively fast so as not to annoy the user with a wait time. As long as there is no downsides to the package, I think it's preferred to have it as small as possible.
Some (many?) files could be reduced in size by truncation (e.g. trailing zeros) and/or compression (e.g., zip)
I don't think the required files have significant trailing zeros (at least not the files I inspected). The big culprit is the LinkeTurbidities.h5 file(15.3 MB), so if we were to do something, it should start with this file.
Perhaps some files could serve their purpose with fewer records.
This predominantly applies to test files, which can just be excluded.

My strong impression is that the suggestion to remove all tests is being suggested and implemented much too rapidly.  Why the furious flurry of activity?

Order of operations here should be something like this:

Merge #2278, and update #2277 accordingly, so the CI can check that the "official" wheel file sizes are reduced as expected and that the resulting wheel is still installable
Manual inspection/verification of the resulting wheel & sdist, similar to what we have done in other PRs that change our packaging (#1910, https://github.com/pvlib/twoaxistracking/pull/58)
If automated and manual checks look good, merge #2277
Sometime before the next release (mid December), make a pre-release to verify that the new wheels don't run into any issues downstream of us with PyPI/conda.

the suggestion to remove all tests

Just to clarify for anyone reading this issue: the proposed changes to pvlib's tests is to exclude them only from distribution bundles, i.e. the python files delivered when running pip install pvlib.  Tests will not be removed from the repository itself, and they will continue to be a central aspect of pvlib's development.

By the way, a fun estimate: reducing wheel size by 1/3 (as suggested by #2277), multiplied by 14k pvlib downloads per day, eliminates >100GB/day data transfer from PyPI.  Maybe not world-changing, but if there is no downside...

A problem: how can we automatically verify that all the "necessary" data files are included in the wheels?  For example, if somehow someone introduced a bug into pyproject.toml that caused the CEC tables to be excluded from the wheel, is there any way we can have a CI failure to alert us?
We cannot really use the tests for this, since if we exclude the test data files from the wheels, then we cannot run the pytests on an installation that came from a wheel.  The only thing I can think of is to have an optional environment variable that sets the TESTS_DATA_DIR to point to the source tree location, which I guess could work, but is a bit messy.

You can create a source distribution or sdist which is a *.tar.gz or zip file that has everything in the manifest, but doesn’t have the same package data as in the wheel or bdist. Check out PVmismatch for an example, the CI builds and deploys both a wheel with package data and a source distribution with everything in the manifest. You can check it on PyPI or GitHub.

A problem: how can we automatically verify that all the "necessary" data files are included in the wheels? For example, if somehow someone introduced a bug into pyproject.toml that caused the CEC tables to be excluded from the wheel, is there any way we can have a CI failure to alert us?

@kandersolar , I think it would be very rare to overlook changes that:

Affect MANIFEST.in or pyproject.toml, or
Use files in the test data folder both in the examples and in API code

But I understand that any overhead in maintenance seems as a problem, and if I were you I would be concerned about that too. Ya know, I'm just a contributor 🎀
Some brainstorming:
(1.) We can rely on the users as the beta testers and yank versions if needed.
(2.) Some script that compares what gets into site-packages/pvlib against the local clone of the repo could be made, but I doubt if it really adds something to the rare case somebody messes these files or uses incorrect paths.

I think just cloning the tests folder and running them, given pvlib is already installed would work.
(2.1.) This could be a script bundled in all distros, maybe just for linux-based OS's
(2.2.) Or a new job / step.

(3.) if making a heavier distinction between the package folder and the excluded folders (including tests/) works for you, we can change to a flat repo layout:

...
pvlib/

data/
...

tests/

data/
...

...

From all these options, I would pick (3.); (2.) may over-engineer things too much and be a burden to maintain in the future. Personally, I find (3.) easy enough, makes the code more intuitive for people not used to the new feature, and is no different from all these years that if someone used a file outside of pvlib/ in API code then tests would pass but an installation would be wrong. The difference now is that if a file under pvlib/tests/ is used or the rare case a file for the distro is not included, then that would fail on use.
(1.) is not much different from (3.), as neither of them detect these errors prior to publishing.

We cannot really use the tests for this, since if we exclude the test data files from the wheels, then we cannot run the pytests on an installation that came from a wheel. The only thing I can think of is to have an optional environment variable that sets the TESTS_DATA_DIR to point to the source tree location, which I guess could work, but is a bit messy.

(4.) It's also an option I wouldn't have thought of.

Echedey,
Did you consider using
https://pypi.org/project/check-manifest/?
It’s unclear to me if this would catch the situations that you’re
concerned about.
Mark Campanelli
LinkedIn https://www.linkedin.com/in/markcampanelli/
Intelligent Measurement Systems LLC
https://intelligentmeasurementsystems.com
Try PVfit https://pvfit.app today!
On Wed, Nov 6, 2024 at 12:52 Echedey Luis @.***> wrote:

A problem: how can we automatically verify that all the "necessary" data
files are included in the wheels? For example, if somehow someone
introduced a bug into pyproject.toml that caused the CEC tables to be
excluded from the wheel, is there any way we can have a CI failure to alert
us?
@kandersolar https://github.com/kandersolar , I think it would be very
rare to overlook changes that:

Affect MANIFEST.in or pyproject.toml, or
Use files in the test data folder both in the examples and in API
code

But I understand that any overhead in maintenance seems as a problem, and
if I were you I would be concerned about that too. Ya know, I'm just a
contributor 🎀
Some brainstorming:
(1.) We can rely on the users as the beta testers and yank versions if
needed.
(2.) Some script that compares what gets into site-packages/pvlib against
the local clone of the repo could be made, but I doubt if it really adds
something to the rare case somebody messes these files or uses incorrect
paths.

I think just cloning the tests folder
https://stackoverflow.com/questions/600079/how-do-i-clone-a-subdirectory-only-of-a-git-repository
and running them, given pvlib is already installed would work.
(2.1.) This could be a script bundled in all distros, maybe just for
linux-based OS's
(2.2.) Or a new job / step.

(3.) if making a heavier distinction between the package folder and the
excluded folders (including tests/) works for you, we can change to a
flat repo layout:

...
pvlib/

data/
...

tests/

data/
...

...

From all these options, I would pick (3.); (2.) may over-engineer things
too much and be a burden to maintain in the future. Personally, I find (3.)
easy enough, makes the code more intuitive for people not used to the new
feature, and is no different from all these years that if someone used a
file outside of pvlib/ in API code then tests would pass but an
installation would be wrong. The difference now is that if a file under
pvlib/tests/ is used or the rare case a file for the distro is not
included, then that would fail on use.
(1.) is not much different from (3.), as neither of them detect these
errors prior to publishing.
We cannot really use the tests for this, since if we exclude the test data
files from the wheels, then we cannot run the pytests on an installation
that came from a wheel. The only thing I can think of is to have an
optional environment variable that sets the TESTS_DATA_DIR to point to the
source tree location, which I guess could work, but is a bit messy.
(4.) It's also an option I wouldn't have thought of.
—
Reply to this email directly, view it on GitHub
https://github.com/pvlib/pvlib-python/issues/2271#issuecomment-2460646127,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AAISX46N27R4SA6MARS3WOLZ7JXO3AVCNFSM6AAAAABQIROZS6VHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDINRQGY2DMMJSG4
.
You are receiving this because you are subscribed to this thread.Message
ID: @.***>

That's an interesting package @markcampanelli , but I doubt it's useful in this case, since that checks the sdist and not the bdist. The latter excludes the tests since it's the one that gets installed via a normal pip install pvlib/. Tests are still being included in sdist.
Source: https://pypi.org/project/check-manifest/ , only sdist is mentioned, bdist is nowhere in that page:
$ check-manifest -u -v
listing source files under version control: 6 files and directories
building an sdist: check-manifest-0.7.tar.gz: 4 files and directories
lists of files in version control and sdist do not match!
missing from sdist:
  tests.py
  tox.ini
suggested MANIFEST.in rules:
  include *.py
  include tox.ini
updating MANIFEST.in

$ cat MANIFEST.in
include *.rst

# added by check_manifest.py
include *.py
include tox.ini

Another consideration: pvlib tutorial/example code often assumes that the 723170TYA.CSV TMY3 file will be available via something like:
DATA_DIR = pathlib.Path(pvlib.__file__).parent / 'data'
df_tmy, meta_dict = pvlib.iotools.read_tmy3(DATA_DIR / '723170TYA.CSV', coerce_year=1990)

I count ten pages in our example gallery that expect it to be available: https://pvlib-python.readthedocs.io/en/latest/reference/generated/pvlib.iotools.read_tmy3.html#examples-using-pvlib-iotools-read-tmy3
This pattern also shows up in other tutorial material, e.g.: https://pv-tutorials.github.io/PVSC50/Tutorial 1 - TMY Weather Data.html#reading-a-tmy-dataset-with-pvlib
In some sense, we've elevated that file (originally included for testing) to be a de-facto member of the pvlib API.  Removing it from distribution bundles would be disruptive to users, and we would need to rework all of those tutorials somehow.
Would it make sense to treat 723170TYA.CSV as a special case and retain it in the distribution?  I lean towards yes, but perhaps there is some creative alternative I'm not considering.

Ironically, I (re)used that file in order to avoid making pvlib bigger!

Would it make sense to treat 723170TYA.CSV as a special case and retain it in the distribution? I lean towards yes, but perhaps there is some creative alternative I'm not considering.

The file is small enough (1.7 MB) relative to the pvlib package, that I am in favor of including it as a special file for now.

@wholmgren I'm curious as to your opinion on @echedey-ls's proposal for a flat structure. I recall that you had an strong opinion on something similar a long time ago.

I did a quick search and didn't find the strong opinion that you're referring to. In any case, Python tooling, packaging, testing, and layout recommendations have evolved a lot even in the last few years and I don't feel that I've kept up well enough to add much to what's already discussed above. So I don't object to the flat structure. What's the latest community thinking on using src/package instead of just package?


Added handle upload files

Fixes #26

Coverage decreased (-9.3%) to 65.741% when pulling 8e58f221a10a8a430a8121ca09b2bba4bbb99d9e on uploads_files into 0f0456977e8f0126959e72edaee5231044fae7e0 on master.


Remove hard-coding of UseSqlServer() in non-provider-specific templates

@ErikEJ @natemcmaster
Fix for part of issue #2465 - remove hard-coding of UseSqlServer() in non-provider-specific templates.

LGTM!

We need to also add the OnConfiguringConfigurations for SQLite

@natemcmaster - yep - you are right. This was also addressed by the 2nd commit.

:shipit:

:shipit:

Checked in with commit c29a9a6


A dive into Iterators in C++

Proposed title of the article
[Languages] A dive into Iterators in C++
Proposed article introduction
With the Iterator in C++, a standard template library component, traversing through your very complex data stored in various kinds of containers such as an Array or Vector takes the least amount of time feasible during execution. As a pointer, it's nothing more than that. It makes your algorithm independent of the container type you choose by providing a standard interface for all kinds of container, like a bridge between algorithm and container. Iterators don't only simplify programs; they also speed up their execution.
Iterator enables generic Algorithms to be applied to data structures straightforwardly. Data structures may use an Iterator to expose a variety of components.
Key takeaways
By the end of this tutorial, the reader will understand:

What are iterators and the various categories
Various operations using the Iterators in C++
Implementation of iterators in C++
Advantages and disadvantages of iterators in C++
Purposes of iterators in C++

Article quality
I will ensure a simple language throughout the tutorial, making it easier for the reader to understand.
To make it practicable, I will include practical implementation of the same.
References
N/A

Unfortunately, this topic appears to be over saturated. We focus more on unique projects. Feel free to suggest another topic. Thanks


Update build tool configurations

adventure isn't hosted on central, it's hosted on sonatype. the compile keyword is also deprecated in gradle, for this specific use case, implementation should be used instead. Not sure if maven repository declarations require an id or name; I don't use maven.

I'm afraid the READMEs are just outdated -- we're moving our documentation over to https://docs.adventure.kyori.net/, which already contains this information.


Send major item details across the multiworld

Option 1: Show the locations of my partners' major in my world
Option 2: Show the locations of all my majors, even if it's not in my world

Option 1 is likely better, but ideally we implement both


versions: Upgrade to cloud-hypervisor release v0.14.1

Cloud-hypervisor now has a stable release v0.14.1 in addition to the
v0.14.0 release last week. Let's keep updated with it, given it contains
several bug fixes.
Details: https://github.com/cloud-hypervisor/cloud-hypervisor/releases/tag/v0.14.1
Fixes: #3151
Signed-off-by: Bo Chen<EMAIL_ADDRESS>

@jodh-intel @cmaf I think this PR is ready for merging. Can you please take a look? Thank you.


Unable to compare exact nested classes

Godot version:
3.2.2
OS/device including version:
Fedora 32
Issue description:
I am unable to compare exact classes that are not script resources themselves
Steps to reproduce:
# First set up a class hierarchy
class Animal extends Spatial:
    pass

class Primate extends Animal:
    pass

class Human extends Primate:
    pass

# Store a reference to the last animal we collided with
var last_animal : Animal = null

# We only want to update the "last_animal" reference if it's a new type
func on_body_entered(new_animal : Node):
    if new_animal is Animal == false:
        return

    if !last_animal:
        last_animal = new_animal
        return

    # Will always be true, since they are both "Spatial"
    if last_animal.is_class(new_animal.get_class()):
        return

    last_animal = new_animal

Proposed solution:
A way to get the exact class of an object
if last_animal.get_constructor() == new_animal.get_constructor():
    pass

This should ideally also work with the "is" logic, like so:
human is primate.get_constructor() # Should be true
human.get_constructor() == primate.get_constructor() # Should be false

...but I understand if we can only get class names as strings, i.e. get_class(), then get_constructor() could just return the exact class name.
Workaround:
A hacky way to solve this is to keep a "constructor" reference in the script itself:
class Animal:
    var constructor : GDScript = null

class Primate extends Animal:
    pass

var primate : Primate = Primate.new()
primate.constructor = Primate

The issue does not mention Object.get_script(), which sounds exactly like what the proposed get_constructor would do.
In addition, if you want to check both the base type and the script, consider one of those:
static func get_type_of(object): # -> Script | str
  if object.get_script() != null:
    return object.get_script()
  return object.get_class()

static func are_same_type(a, b) -> bool:
  if a == null or b == null:
    return a == b
  return a.get_class() == b.get_class() and a.get_script() == b.get_script()

Of course get_script() works, d'oh. I had for some reason assumed that it only worked on separate script files.

Maybe this would be worth documenting in a clearer way? (Moving to godot-docs.)


zoomMargin doesn't seem to be respected

Issue Type

[x] Question / support request

Description
Hey there! 👋 We've recently started using react-medium-image-zoom on Vercel and Next.js documentation sites, so first of all, thank you for building an awesome component! ❤ It seems to work well, but it doesn't seem to zoom in that much. You can see what I mean using the url below (click the first image you see in the main content area).
https://nextjs.org/docs/getting-started/react-essentials#thinking-in-server-components
I started digging around our implementation and your source code a bit to see what's going on. We have specified zoomMargin={45} for our implementation. Reading through the source, it looks like you're not calculating from any sort of container, but from window's innerHeight and innerWidth, which should work.
https://github.com/rpearce/react-medium-image-zoom/blob/4aa448a477553a10e296850027292d60b3914c74/source/utils.ts#L28-L33
Which leads me to believe it's some sort of user error on our part since your docs and Storybook tell different story. Or maybe there's something else in the source code that is being factored into the calculation that I'm not seeing right now. Regardless, there's nothing that jumps out to me as incorrect, so I thought I'd ask. 😊 We're just using a Zoom wrapper around a next/image.
import NextImage from 'next/image';
import Zoom from 'react-medium-image-zoom';

...

<Zoom zoomMargin={45}>
    <NextImage
        alt={alt}
        src={srcLight}
    />
</Zoom>

@rpearce thanks for taking a look. All of that makes sense. Let me digest that and get back to you. Unfortunately, the Next.js site itself is not OSS, but if I am able to see something, I'll attempt a minimal reproduction repo. Thanks for what you've laid out thus far. 🙏

I'm glad I was able to help! Have a great one.


Connect to the OpenVPN Server over IPv6

Adds the ability for users to connect to the OpenVPN Server over IPv6.

Thanks!


[Bug/Feature]: Background export setting isn't saved

Debug log ID
EV5FB9CK-refs-euc/6.7.116-6
What happened?
Upon checking "Keep updated" when exporting a library, the "Background export" checkbox is automatically checked. However, upon revisiting the menu, the "Background export" checkbox is unchecked.
Steps to reproduce:
Right-click on My Library -> Export Library... -> select Better BibTeX
Check "Keep updated". If it's already checked, uncheck and check again.
Export the library
Reboot Zotero / Export again
Notice that "Background export" is automatically unchecked.

This was previously also reported here: https://github.com/retorquere/zotero-better-bibtex/issues/2598

New release build is running. Apologies it took so long -- it's been incredibly busy.

Confirmed to be working. The exporting at least. Background export checkbox remains checked after exporting. The 'Keep updated' checkbox idoesn't, but the export works so I assume it's intentional? As long as the auto-export is doing it's job I'm satisfied.

Also: no apologies required.

The 'Keep updated' checkbox idoesn't, but the export works so I assume it's intentional?

That is indeed intentional. I don't want people to be setting up auto-exports accidentally.


Choreo gives internal parsing error when opening file

We are having an issue where the attached choreo file will not open. It is giving an error seen below. This occurred after attempting to duplicate a path. It did not work, so we restarted it and it has been giving the error since.
Opening file error: Internal parsing error: Error:[mbox-state-tree] No matching type for union ("first" | "last" | {uuid: string})

choreo file

Same file hosted on GitHub:
internal-parsing-error.chor.txt

The problem is that the duplicated choreo path contained a marker associated to a waypoint that was deleted in the duplicate path. Choreo chokes when a marker’s target field (i.e. waypoint index) is deserialized as null.
Manually removing the marker with "target": null from the .chor file fixed this for us.


feat: create related prompts module

Pull request template

The Related Prompts module. Includes:

The Related Prompts store including query, status, and extra params.
The RelatedPrompt component. Including three slots: header, next queries, and query-preview.
The RelatedPromptList component. Same functionality as the NextQueriesList component. (Injects related prompts in the results list)

Motivation and context

[ ] Dependencies. If any, specify:
[ ] Open issue. If applicable, link:

Type of change

[ ] Bug fix (non-breaking change that fixes an issue)
[X] New feature (non-breaking change that adds functionality)
[ ] Breaking change (fix or feature that causes existing functionality to not work as expected)
[ ] Change requires a documentation update

What is the destination branch of this PR?

[ ] Main
[X] Other. Specify: https://github.com/empathyco/x/tree/feat/add-related-prompts-adapter

How has this been tested?

Tests performed according to testing guidelines:
Checklist:

[x] My code follows the style guidelines of this project.
[x] I have performed a self-review on my own code.
[x] I have commented my code, particularly in hard-to-understand areas.
[x] I have made corresponding changes to the documentation.
[x] My changes generate no new warnings.
[x] I have added tests that prove my fix is effective or that my feature works.
[x] New and existing unit tests pass locally with my changes.

Hi @victorcg88! Great job!
I've added some suggestions, & I miss the generic component description above the defineComponent f() in related-prompt.vue.


register latest version

@JuliaRegistrator register

Registration pull request created: JuliaRegistries/General/45283
After the above pull request is merged, it is recommended that a tag is created on this repository for the registered package version.
This will be done automatically if the Julia TagBot GitHub Action is installed, or can be done manually through the github interface, or via:
git tag -a v1.0.0 -m "<description of version>" 9f153e9a0ff8f23a544e3105c6b261014cd99e00
git push origin v1.0.0


Update right nav bar and log position

Can we use more impressive icons for Search Space and Config ?

Can we use more impressive icons for Search Space and Config ?

had updated new icon for Search space and Config


Wrong link to "4 Exposure Notification Google API" inside wiki and README.md

Where to find the issue & description of the issue
Within the table of contents on the wiki page and inside README.md the link to "4 Exposure Notification Google API" is wrong.
Suggested change
Both links should be set to:
https://github.com/corona-warn-app/cwa-app-android/wiki/4-Google-Exposure-Notifications-API
and not
https://github.com/corona-warn-app/cwa-app-android/wiki/4-Exposure-Notification-Google-API

Wiki ToC is fixed.

Closing this issue as fixed. Thanks for the hint, @derhelge !
MC
Your Corona Warn-App Open Source Team


updating LS telemetry

appending language server package name to ls telemetry so that we can filter out different servers
For #

[x] Pull request represents a single change (i.e. not fixing disparate/unrelated things in a single PR).
[x] Title summarizes what is changing.
[ ] Has a news entry file (remember to thank yourself!).
[x] Appropriate comments and documentation strings in the code.
[ ] Has sufficient logging.
[x] Has telemetry for enhancements.
[x] Unit tests & system/integration tests are added/updated.
[ ] Test plan is updated as appropriate.
[ ] package-lock.json has been regenerated by running npm install (if dependencies have changed).
[ ] The wiki is updated with any design decisions/details.

Codecov Report

Merging #10666 into master will decrease coverage by 0.01%.
The diff coverage is 100.00%.

@@            Coverage Diff             @@
##           master   #10666      +/-   ##
==========================================
- Coverage   60.64%   60.62%   -0.02%
==========================================
  Files         583      583
  Lines       31551    31552       +1
  Branches     4487     4487
==========================================
- Hits        19133    19128       -5
- Misses      11446    11450       +4
- Partials      972      974       +2

Impacted Files
Coverage Δ

src/client/telemetry/index.ts
87.38% <ø> (ø)

src/client/activation/common/downloader.ts
67.32% <100.00%> (+0.32%)
:arrow_up:

src/datascience-ui/react-common/arePathsSame.ts
75.00% <0.00%> (-12.50%)
:arrow_down:

src/client/common/utils/platform.ts
64.70% <0.00%> (-11.77%)
:arrow_down:

src/client/linters/pydocstyle.ts
86.66% <0.00%> (-2.23%)
:arrow_down:

src/client/datascience/debugLocationTracker.ts
76.56% <0.00%> (-1.57%)
:arrow_down:

src/client/common/process/proc.ts
14.49% <0.00%> (-0.73%)
:arrow_down:

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update 6438bee...0727a45. Read the comment docs.


Create Contact Us Form Page

Goal of Contact Us Form

Question from members
Messages from potential sponsors

Summary
As a [user role], I want to [complete action] so that I can [achieve outcome]
Acceptance Criteria
Scenario: User supplies supplies valid email, name, and message
Given that I want to contact BDUK
When I enter my name, email and message
And click ‘Submit/Send’
Then my message is sent to BDUK Organising team
Additional context
Add any other context or screenshots for the user story here.

Get in Touch!
If you would like more information about BDUK or have any queries fill out the form below and a member of team will be in touch.
Not sure how much more we want to include on this page. Will the contact form have dropdown options for enquiry types


Vienna RSS should never ever implicitly modify feed URL for HTTP 301 responses

The long story short - I've just lost my entire RSS database because of that implicit behavior and I have no idea how to restore it. I was at Cisco office and they have weird network rules so for all HTTP requests they do transparent proxying and send HTTP 301 as a response code. In a matter of seconds after I turned on my WiFI I've lost everything. All feed URLs look the same now with internal Cisco domain names, etc. If there is HTTP 301, you're better to ask for confirmation first. I'm sorry, but I'm really upset now, but I still like the project.
https://github.com/ViennaRSS/vienna-rss/blob/d46d3143b245353adde8695fda467e9dad7a1af4/src/RefreshManager.m#L624

@xaka what do you think about having something in the preferences? e.g. "Ignore permanent redirects - useful for those who use wifi hotspots in hotels etc"

Another approach:
As Vienna, when I start refreshing feeds:

I refresh a feed and get a 301 status code
I prompt the user with the following options:

Update this feed's location
Do not update this feed's location
Do not update ANY feeds in this session
Never update feeds (this could be the same as triggering the preferences option in my previous comment

cc @barijaona

@josh64x2 Having an option in preferences is always a good idea as it improves overall flexibility. What I'm not sure about is enabling redirects by default as that's exactly what happened in my case without my knowledge or expectation. The damage it does would make bigger impact on a user than bug him/her with a message about subscription, which has been moved to different location and solution could be as simple as confirmation dialog with new URL and Apply/Cancel buttons. Such dialog would appear to user after clicking on a warning icon next to subscription.

@xaka some users have over a thousand subscriptions, so we need to be mindful of that with the dialog.
I agree that by default we should not destroy user data!

Exactly, which is why I'm suggesting to display a warning icon as right now, for instance when subscription cannot be retrieved, and after clicking on it, display a dialog. I don't expect it to happen very often and usually it's one-time operation, and you won't be bothered for another year. Actually option might become a key for pandora box and you would end up with another affected user, probably not so friendly :) So I personally would vote against it being part of preferences.

@xaka If I send you a test build, are you able to test this functionality?
Thanks!

I think I could try. Let's see :)

great! please try the build here http://josh.auspore.com/pub/Vienna.zip
md5sum is 02d9f0bd5510f9c3fafc5e30b3a0fc10
I haven't tested this build at all other than to make sure the preference is recorded in user defaults correctly. I'll try and get a VM running later with some sort of dodgy proxy to test this.

Another thought: how about storing the previous URL when it is changed due to a 301/302 redirect? That way, if the redirect broke the feed, the user can restore it easily by just going into the feed's preferences and recovering the old URL.

@kpfleming Very interesting idea, but it is relevant for 301 redirects only, as there is no update to the database after a 302 redirect.
I am still undecided on the adequate user interface for this issue… which is much more geekier than the average user.
Ideally, Vienna should handle everything under the hood, testing back the previous URL in case of problem and restoring in case of success.

@josh64x2 It works! I've used https://mitmproxy.org/doc/index.html to play around with requests/responses. We should turn on that preference by default ;)

oh excellent! thanks for the link!
Well yes, we have a preference that works now - we just need to work out what to do around defaults etc which is the hard part ;)

Same here.
Example (adium.im/blog/feed):
https://auth.netpoint.com/ocs/redirect.asp?port=pp918&host=95067753&mac=6003089766a6&group=*&origurl=adium.im%2Fblog%2Ffeed%2F&actasrouter=no&seq=8505bf893f0c59dfa0922360bd731a99&zone=0&sig=76fece621d05ea924db45de77c7c6ff3

the same just happened to me :(
it looks like the original URLs are stored somewhere in the Vienna database  because when I double click on any of my RSS feeds inside Vienna it directs me just right to the desired page but Vienna itself tries to update its RSS feeds using a single wrong address.
is there a way to automatically replace the wrong URLs Vienna uses to update the feeds by URLs it uses after double clicking on the feeds? i have hundreds of RSS feeds so it is almost impossible to replace the URLs by hands... :(

@josh64x2 Hello. I understand that you worked at this 301 redirect problem, but you haven't pushed any branch in your Github repository for examination.
My opinion is that very technical issue should remain under the hood. Vienna should not ask the user what to do but guess if the context of the redirection attempt is right.
As a follow-up on one of your proposals, we could test if a call to http://www.example.com/ is also being redirected. If so, the redirection attempt should be considered highly suspicious (section 6.5 of rfc6761

@barijaona I have updated my code and created PR #462 for discussion.
Currently my code uses a flag (ignoreHTTP301Redirect in the Preference model) to decide whether or not to updated a feed's URL.
We could have Vienna check a test URL (probably best to use http://vienna-rss.org) and use the result of the test to set the value for ignoreHTTP301Redirect.
Now we have to decide if Vienna must check the test URL at the beginning of every refresh or if Vienna must only check the test URL on start up.
I prefer checking the test URL at the beginning of every refresh. Consider the following scenario if we only test the URL and set ignoreHTTP301Redirect at start up:

I am at home with a normal internet connection
I open Vienna and the test URL is OK. Vienna sets ignoreHTTP301Redirect to NO
I put my laptop to sleep without closing Vienna
I go to a cafe and wake my computer from sleep
I connect to the bad cafe WiFi
Vienna starts automatically refreshing feeds and gets an HTTP 301 redirect due to the cafe proxy
Vienna checks the value for ignoreHTTP301Redirect and sees it is still set to NO from Step 2.
Vienna automatically updates all feed URLs with the wrong URL
:sob: :angry:

My only concerns are that checking the test URL at the beginning of every refresh will create delays in refreshing and create a lot of traffic to the test URL.
Thoughts?

See my branch proposal380 (untested, and still a bit incomplete)

Once I have detected a bad network, I consider that all 301 redirects should be considered unsafe for a fixed time (the current implementation is 24 hours ; I think less than 3 hours might be considered abusive as the number of test requests could be )
I chose to use www.example.com as the test server, because even vienna-rss.org might be down or redirected one day. According to RFC6761, this is very unlikely with example.com, and applications are allowed to use this URL if adequate precautions are taken.

Additional thought :

some redirections might be considered safe and bypass the timer : notably, redirection within the same host
we could detect when the machine wakes from sleep (with an observer of NSWorkspaceDidWakeNotification) and subsequently reset the timer

Additional thought :

some redirections might be considered safe and bypass the timer : notably, redirection within the same host
we could detect when the machine wakes from sleep (with an observer of NSWorkspaceDidWakeNotification) and subsequently reset the timer


Issue downloading videos with youtube-dl from udemy course

Please follow the guide below

You will be asked some questions and requested to provide some information, please read them carefully and answer honestly
Put an x into all the boxes [ ] relevant to your issue (like that [x])
Use Preview tab to see how your issue will actually look like

Make sure you are using the latest version: run youtube-dl --version and ensure your version is 2<IP_ADDRESS>. If it's not read this FAQ entry and update. Issues with outdated version will be rejected.

[x] I've verified and I assure that I'm running youtube-dl 2<IP_ADDRESS>

Before submitting an issue make sure you have:

[ ] At least skimmed through README and most notably FAQ and BUGS sections
[x] Searched the bugtracker for similar issues including closed ones

What is the purpose of your issue?

[x] Bug report (encountered problems with youtube-dl)
[ ] Site support request (request for adding support for a new site)
[ ] Feature request (request for a new functionality)
[ ] Question
[ ] Other

The following sections concretize particular purposed issues, you can erase any section (the contents between triple ---) not applicable to your issue

If the purpose of this issue is a bug report, site support request or you are not completely sure provide the full verbose output as follows:
Add -v flag to your command line you run youtube-dl with, copy the whole output and insert it here. It should look similar to one below (replace it with your log inserted between triple ```):
$ youtube-dl -v <your command line>
[udemy:course] Downloading login popup
[udemy:course] Logging in as<EMAIL_ADDRESS>[udemy:course] draft: Downloading webpage
[udemy:course] 138926: Downloading course curriculum
[download] Downloading playlist: 138926
[udemy:course] playlist 138926: Collected 58 video ids (downloading 58 of them)
[download] Downloading video 1 of 58
[udemy] Downloading login popup
[udemy] 850438: Downloading webpage
[udemy] 850438: Downloading lecture JSON
[udemy] 850438: Downloading lecture JSON
ERROR: Unable to download JSON metadata: HTTP Error 403: FORBIDDEN (caused by HTTPError()); please report this issue on https://yt-dl.org/bug . Make sure you are using the latest version; see https://yt-dl.org/update on how to update. Be sure to call youtube-dl with the --verbose flag and include its complete output.
ERROR: 'NoneType' object has no attribute 'copy'

Please look into the issue and let me know , when this will fix ??

If the purpose of this issue is a site support request please provide all kinds of example URLs support for which should be included (replace following example URLs by yours):

Single video: https://www.youtube.com/watch?v=BaW_jenozKc
Single video: https://youtu.be/BaW_jenozKc
Playlist: https://www.udemy.com/draft/138926/learn/v4/t/lecture/850438

Description of your issue, suggested solution and other information
$youtube-dl --version
2<IP_ADDRESS>

Post the full output of youtube-dl when run with -v, i.e. add -v flag to your command line, copy the whole output and post it in the issue body wrapped in ``` for better formatting. It should look similar to this:
$ youtube-dl -v <your command line>
[debug] System config: []
[debug] User config: []
[debug] Command-line args: [u'-v', u'http://www.youtube.com/watch?v=BaW_jenozKcj']
[debug] Encodings: locale cp1251, fs mbcs, out cp866, pref cp1251
[debug] youtube-dl version 2015.12.06
[debug] Git HEAD: 135392e
[debug] Python version 2.6.6 - Windows-2003Server-5.2.3790-SP2
[debug] exe versions: ffmpeg N-75573-g1d0487f, ffprobe N-75573-g1d0487f, rtmpdump 2.4
[debug] Proxy map: {}
...

Do not post screenshots of verbose log only plain text is acceptable.
The output (including the first lines) contains important debugging information. Issues without the full output are often not reproducible and therefore do not get solved in short order, if ever.

[debug] System config: ['--prefer-free-formats']
[debug] User config: []
[debug] Command-line args: ['-u', 'PRIVATE', '-p', 'PRIVATE', 'https://www.udemy.com/draft/138926/learn/v4/t/lecture/850438', '--verbose']
[debug] Encodings: locale UTF-8, fs utf-8, out UTF-8, pref UTF-8
[debug] youtube-dl version 2<IP_ADDRESS>
[debug] Python version 3.4.5 - Linux-2.6.32-642.6.1.el6.x86_64-x86_64-with-centos-6.8-Final
[debug] exe versions: ffmpeg 2.2.1, ffprobe 2.2.1
[debug] Proxy map: {}
[udemy:course] Downloading login popup
[udemy:course] Logging in as<EMAIL_ADDRESS>[udemy:course] draft: Downloading webpage
[udemy:course] 138926: Downloading course curriculum
[download] Downloading playlist: 138926
[udemy:course] playlist 138926: Collected 58 video ids (downloading 58 of them)
[download] Downloading video 1 of 58
[udemy] Downloading login popup
[udemy] 850438: Downloading webpage
[udemy] 850438: Downloading lecture JSON
[udemy] 850438: Downloading lecture JSON
ERROR: Unable to download JSON metadata: HTTP Error 403: FORBIDDEN (caused by HTTPError()); please report this issue on https://yt-dl.org/bug . Make sure you are using the latest version; see  https://yt-dl.org/update  on how to update. Be sure to call youtube-dl with the --verbose flag and include its complete output.
File "/usr/lib/python3.4/site-packages/youtube_dl/extractor/common.py", line 404, in _request_webpage
return self._downloader.urlopen(url_or_request)
File "/usr/lib/python3.4/site-packages/youtube_dl/YoutubeDL.py", line 2001, in urlopen
return self._opener.open(req, timeout=self._socket_timeout)
File "/usr/lib64/python3.4/urllib/request.py", line 470, in open
response = meth(req, response)
File "/usr/lib64/python3.4/urllib/request.py", line 580, in http_response
'http', request, response, code, msg, hdrs)
File "/usr/lib64/python3.4/urllib/request.py", line 508, in error
return self._call_chain(*args)
File "/usr/lib64/python3.4/urllib/request.py", line 442, in _call_chain
result = func(*args)
File "/usr/lib64/python3.4/urllib/request.py", line 588, in http_error_default
raise HTTPError(req.full_url, code, msg, hdrs, fp)

Warning: The Amazon Web Services Certified Solutions Architect - AL course is no longer available to purchase on the Udemy platform. We apologize for any inconvenience. If you have already purchased this course, please log in to your Udemy account to access it.

I already purchased this course from Udemy but I need to download this course for offline. So for this I need your help to fix this issue ASAP.

For any further investigations you have to provide credentials of account capable to access the course.

I have this same issue. if it can be fixed by providing account, I will allow access to my account to one of the developers

I have a 404 error only on this particular course: https://www.udemy.com/react-redux/learn/v4/content
I will not give my credentials (of course), but I'll try to solve the problem somehow and submit a PR when I can


isNumber Now Returns False on NaN

Changes the isNumber function to return false when given a value of NaN. Baseically it was failing because NaN is technically an instance of Number.

:+1:


LSPS0 - Feature bit

Implement the groundwork for enabling the LSP0 feauture bit.
The following is copied from LSP0 LDK
`LDK as of 0.0.114 requires that you create a delegating implementation of the RoutingMessageHandler trait in order to change the init and node_announcement feature bits for LSPS LSP implementations. You should implement a type that contains an instance of the LDK-provided P2PGossipSync object (or if you want something for more general use, itself contains an instance of another object with the RoutingMessageHandler), and whose implementation of RoutingMessageHandler simply forwards most of the function calls to the contained instance.
The only non-delegating functions would be provided_node_features and provided_init_features. The delegating function would call the corresponding function on the contained instance, then serialize the returned Features object via Writeable::encode. The serialized vector of bytes encodes the 16-bit big-endian length, followed by the feature bits vector. The feature bits vector needs to be extended to at least 92 bytes, packing 0x00 bytes at the front of the vector if its length is increased, and the byte at length - 92 should be ORed with 0x2. Then if the length was changed, the 16-bit big-endian length needs to be updated. The 16-bit big-endian length is concatenated with the feature bits vector, then fed into a Read object, then a new InitFeatures or NodeFeatures is Readable::read from the modified feature bits serialization vector.`
Some new automated tests will be required. If its possible to run the MessageHandlers independently then that should be sufficient otherwise the end to end smoke tests should be used (with the feature enabled).

I don't think all that is necessary.
LiquidityManager implements CustomMessageHandler. Our type alias LdkPeerManager points to SimpleArcPeerManager which has a hardcoded generic parameter IgnoringMessageHandler. We want to use LiquidityManager as our CHM instead of IgnoringMessageHandler. So we just need to combine the generic parameters from SimpleArcPeerManager into our LdkPeerManager.
We should not need to rewrite our other PeerManager, implement any MessageHandlers or rewrite the logger.

Hmm, I find out the point I missed and why I think we need ChannelMessageHandler and so on.
The functions to enable feature bit areprovided_node_features and provided_init_features.  These are not in the CustomMessageHandler of the current latest version.
https://docs.rs/lightning/0.0.115/lightning/ln/msgs/trait.ChannelMessageHandler.html#tymethod.provided_node_features
https://docs.rs/lightning/0.0.115/lightning/ln/msgs/trait.ChannelMessageHandler.html#tymethod.provided_init_features
https://docs.rs/lightning/0.0.115/lightning/ln/peer_handler/trait.CustomMessageHandler.html
The way only use a CustomMessageHandler to provide an LSP handler needs an unstable version after https://github.com/lightningdevkit/rust-lightning/pull/2204 (which will be release in 0.0.116, it now is 57% complete)
We can do that, we need to use unstable commit first, and then use a CustomMessageHandler with LSP will be easy.

Adding: #342, #343

In the unstable version, the good things are the provided_node_features and provided_init_features already moved in the customized handler.
But the things I mentioned in https://github.com/kuutamolabs/lightning-knd/issues/341#issuecomment-1596753330 are almost the same in unstable.
We are using SimpleArcPeerManager (which is using IgnoringMessageHandler not a customized handler).
If we only change the customized handler here.
https://github.com/kuutamolabs/lightning-knd/blob/e4358864d602560aae9c92a85b3eb11bef81fd4f/kld/src/ldk/controller.rs#L656-L657
We can not compile because the type does not match in SimpleArcPeerManager here.
https://github.com/kuutamolabs/lightning-knd/blob/e4358864d602560aae9c92a85b3eb11bef81fd4f/kld/src/ldk/controller.rs#L659-L660
Eventually, We still implement and eliminate the SimpleArc* type.


Add New Imaging Request button on visits page

🚀 Feature Proposal
There should be a new button added to the patient visits page which allows a user to make a new imaging request quickly.
This button should navigate the user to the Imaging Request page when clicked and auto-populate the patient and visit information.

Can i be assigned for this ?

Yes, @Fibii! I've assigned this to you!

There are two ways to do this, since when we view a patient, the patient state will store that patient, we can just use that state to populate the info for the imaging request
in NewImagingRequest
const { patient } = useSelector((state: RootState) => state.patient)

will get us the last patient that we we viewed, which is the patient we wanted to add an imaging for
The other way would be passing the patient as props to NewImagingRequest and populate the fields with the passed props
which way should it be @jackcmeyer, i'm also interested in new ideas.

I think the best way is to pass the current patient id using react-router.
When doing history.push you can pass state with the second param.
history.push('/imagings/new', { patientId: currentPatientId })

Then on the new imaging request we can read it like:
...
const location = useLocation()
const { patientId } = location.state

Hi @jackcmeyer  , If no one is working currently, I would like to work on this.

Hi @Fibii , compliments of the season and best wishes for 2021!
Just checking how this work is going.

Hi @Fibii , compliments of the season and best wishes for 2021!
Just checking how this work is going.

Hi @blestab, i added a PR #2550 (tests are not implemented yet), i want a review on the changes before implementing the tests since the proposal didn't include any details
If everything's fine, maybe @dev-script can implement the tests if they want to?
have a nice day y'all and sorry for the late PR :)

Hi @blestab, i added a PR #2550 (tests are not implemented yet), i want a review on the changes before implementing the tests since the proposal didn't include any details
If everything's fine, maybe @dev-script can implement the tests if they want to?
have a nice day y'all and sorry for the late PR :)

Thank you @Fibii
I have some feedback for the PR, do you want to tackle it or should i ask if @dev-script can take it over

Thank you @Fibii
I have some feedback for the PR, do you want to tackle it or should i ask if @dev-script can take it over

@blestab @dev-script can take over if they want to

@blestab @dev-script can take over if they want to

@blestab can you please assign me

@dev-script sure

@tehKapa can you please confirm once where to place the Imaging Request button exactly.

I would put it instead of "Add visits" button (that is redundant) when I open the detail of the visit

@dev-script Hello. Are you still working on this issue?

@baoqchau you can take over

I have a lot of work recently so I can no longer work on this issue. Anyone else feel free to take it

@tehKapa @blestab @jackcmeyer Hello, could I be assigned this?

@gcrt0701 yes :)

Which fields should be auto-populated in the New Imaging Request form? The patient name seems obvious but I don't understand how to Visits field should be filled in.


feat(dispatch-api): extract files to s3 and replace combine archive file extraction endpoint

The combine archive is extracted to the s3 bucket, giving a url in the files domain. The thumbnails
and project files url are updated to directly point to the file rather than point to the combine
service
closes #2945

:tada: This PR is included in version 5.0.0 :tada:
The release is available on GitHub release
Your semantic-release bot :package::rocket:


[Bug]: Fody BadImageFormatException When Using Trimming

Describe the bug 🐞
If my project contains ReactiveUI.Fody, .NET 7 and
<PublishTrimmed>true</PublishTrimmed>

Compiling throws this
  Fody: An unhandled exception occurred:
Exception:
Format of the executable (.exe) or library (.dll) is invalid.
Type:
System.BadImageFormatException
StackTrace:
   at Mono.Cecil.PE.ImageReader.ReadImage() in C:\projects\fody\cecil\Mono.Cecil.PE\ImageReader.cs:line 48
   at Mono.Cecil.PE.ImageReader.ReadImage(Disposable`1 stream, String file_name) in C:\projects\fody\cecil\Mono.Cecil.PE\ImageReader.cs:line 766
   at Mono.Cecil.ModuleDefinition.ReadModule(Disposable`1 stream, String fileName, ReaderParameters parameters) in C:\projects\fody\cecil\Mono.Cecil\ModuleDefinition.cs:line 1146
   at Mono.Cecil.ModuleDefinition.ReadModule(String fileName, ReaderParameters parameters) in C:\projects\fody\cecil\Mono.Cecil\ModuleDefinition.cs:line 1115
   at InnerWeaver.ReadModule(String assemblyFilePath, IAssemblyResolver assemblyResolver) in C:\projects\fody\FodyIsolated\ModuleReader.cs:line 30
   at InnerWeaver.ReadModule() in C:\projects\fody\FodyIsolated\ModuleReader.cs:line 10
   at InnerWeaver.Execute() in C:\projects\fody\FodyIsolated\InnerWeaver.cs:line 100
Source:
Mono.Cecil
TargetSite:
Void ReadImage()

Step to reproduce

Set PublishTrimmed = true
Add ReactiveUI.Fody (and use it?)
Compile

Reproduction repository
No response
Expected behavior
It should compile.
Screenshots 🖼
No response
IDE
Rider Windows
Operating system
Linux
Version
Garuda
Device
laptop
ReactiveUI Version
18.4.22
Additional information ℹ
Note that I'm using Avalonia.ReactiveUI

Issue is not related to trimming, it's still throwing it without it. I will close this until I have a better idea what it's related to.

I really need to finish up the source generator replacement for fody, we don't really support it anymore due to it being really hard to maintain in comparison.

I created a repo of BadImageFormatException in Avalonia using CompileBinding.
Looks like you're fine :)


nvm use  exit status 1: Access is denied. after nvm install

Issue:
After a clean install of NVM due to the mismanagement of the previous version, now I have an issue where calling for nvm use on a fresh nvm install gives me the following error message.
exit status 1: Access is denied.
How To Reproduce:
Under windows 10.

Uninstall completely the previous version of NVM
Install the newest version double clicking on the icon.
Answer yes to the prompt to allow nvm-setup to continue
The installation continues correctly (Next, next...)
Open a PowerShell and issue nvm install 16
nvm installs the latest (16.14.0 at the moment)
after it's finished, issue nvm use 16.14.0

Expected Behavior:
nvm should make node version 16.14.0 available as the node installation.
Observed Behavior:
An error message is shown saying that:
exit status 1: Access is denied.
Desktop:

OS: Windows 10 latest

Additional context:
This is a blocking issue.
One should not need to use elevated administration rights to set the version.

Have you gone through the common issues guide?
Windows requires elevated privileges to change the install (i.e. change a symlink)... just like any installation. Enable developer mode if you need less restrictive permissions.

What if someone don't have this kind of control over their equipment due to company policies... :(
I mean, I didn't use to need to run PowerShell as an Administrator to get to change the version of node before.
Is this something new?

@coreybutler On the previous version of nvm I was using (I think 1.1.7?) it would bring up two separate UAC dialogues when I ran the commands in a non-elevated cmd. Today I updated to 1.1.9 and now I have to manually run cmd as admin beforehand, otherwise I just get the same access is denied errors of the OP. This is somewhat inconvenient, though luckily I don't use nvm that often.

@squidjam - admin privileges aren't required to execute node, but they've always been required to switch the active version if you use a Windows protected directory (like C:\Program Files\Nodejs). Windows requires admin or developer privileges to create symlinks, which is how NVM4W implements version changes.
To @Clonkex's point, what's "new" since 1.1.7 is that the UAC prompt is no longer triggered. This behavior was changed due to a high volume of user requests to use developer mode instead of UAC prompts. At the time, nobody expressed opposition to this change. However; many users are requesting the old functionality. I don't have time to implement both approaches, so I am going to leave it as is for now and focus on a better approach for the future. In rt, I am planning to either give users the choice or (if possible) auto-detect the environment to accommodate both UAC and developer mode options.

developer mode instead of UAC prompts

Developer mode of what? Windows? Do you mean we're expected to enable developer mode to use nvm-w? That would be strange.

At the time, nobody expressed opposition to this change.

This is a common flaw with requests for change. Only the people that actually want the change to occur will seek out communication channels (negative bias). It may only be a minority that want the change, but since everyone else is already happy with the current state and don't regularly review communication channels, it appears as though the majority want the change. Only after the change is made does the real majority speak up.
I don't think there's a good solution unless your software has a notification system to request comments, but it's worth keeping in mind at least.

Yes, developer mode of Windows. It's the only non-admin way to be granted permissions to create symlinks without UAC prompts.
The support was based on a survey where people could but didn't oppose. Still, your point stands. This project gets many contradictory requests, so it's a bit of balancing act. This particular split of preferences is something I think can be handled though, in the successor project.


Create an ILogger<> directly

This is a feature request.
Most of my code and probably everyone else's code only depends on ILogger<> such as this:
class MyController(ILogger<MyController> logger)
In order to test this code I need to do this:
var loggerFactory = TestLoggerFactory.Create();
new MyController(loggerFactory.CreateLogger<MyController>());
// Assert loggerFactory.Sink here

I think that I would be great if there is a shorthand for directly creating an ILogger since most code under test only depends on ILogger<>.
var logger = TestLogger.Create<MyController>();
new MyController(logger);
// Assert logger.Sink here

This makes the test code shorter.
Edit: And thanks for making the library.

Hello,
it is a valid point and I will have a look at it.
Thanks for the feedback.


fix: Azure Cosmos DB network settings ignored if child resources are not created

Description
Update publicNetworkAccess so it works even if you don't configure child resources (NoSQL, MongoDB, Gremlin, or Table)

Closes #3816

Pipeline Reference

Pipeline

Type of Change

[ ] Update to CI Environment or utilities (Non-module affecting changes)
[x] Azure Verified Module updates:

[x] Bugfix containing backwards-compatible bug fixes, and I have NOT bumped the MAJOR or MINOR version in version.json:

[x] Someone has opened a bug report issue, and I have included "Closes #{bug_report_issue_number}" in the PR description.
[ ] The bug was found by the module author, and no one has opened an issue to report it yet.

[ ] Feature update backwards compatible feature updates, and I have bumped the MINOR version in version.json.
[ ] Breaking changes and I have bumped the MAJOR version in version.json.
[ ] Update to documentation

Checklist

[x] I'm sure there are no other open Pull Requests for the same update/change
[x] I have run Set-AVMModule locally to generate the supporting module files.
[x] My corresponding pipelines / checks run clean and green without any errors or warnings

@avm-res-documentdb-databaseaccount-module-owners-bicep
This is ready for review


Training a fine-tuned AI model Problem

Hello, why do I always receive this error when using the Training a fine-tuned AI model method from
https://github.com/charonn0/Xojo-OpenAI/wiki/Examples#training-a-fine-tuned-ai-model
as shown in the attached image?

Shared Function Create(TrainingFile As FolderItem, Overwrite As Boolean = False) As OpenAI.FineTuneData
Dim bs As BinaryStream = BinaryStream.Create(TrainingFile, Overwrite)
bs.Close
Return New FineTuneData(TrainingFile)
End Function
I am trying to train ChatGPT with my own information to customize the responses based on my documents.

An IOException on BinaryStream.Create(TrainingFile, Overwrite) where Overwrite=False suggests that the specified file already exists.
The example code uses FineTuneData.Create()to create a new, blank file. To load an existing file, modify the example code to use FineTuneData.Load():
 Dim trainer As OpenAI.FineTuneData = OpenAI.FineTuneData.Load(datafile)


Add Tests for PAssert.IterableAssert#empty()

Be sure to do all of the following to help us incorporate your contribution
quickly and easily:

[x] Make sure the PR title is formatted like:
[BEAM-<Jira issue #>] Description of pull request
[x] Make sure tests pass via mvn clean verify. (Even better, enable
Travis-CI on your fork and ensure the whole test matrix passes).
[x] Replace <Jira issue #> in the title with the actual Jira issue
number, if there is one.
[x] If this contribution is large, please file an Apache
Individual Contributor License Agreement.

These tests demonstrate that an empty PCollection has no elements, and
that the empty() assertion affirmatively fails when there are elements
within the PCollection.

R: @kennknowles

Maybe less fancy empty PCollections or comments about why?

Done.


Appstudio update test-component-pac-eici

Pipelines as Code configuration proposal
To start the PipelineRun, add a new comment with content /ok-to-test
For more detailed information about running a PipelineRun, please refer to Pipelines as Code documentation Running the PipelineRun
To customize the proposed PipelineRuns after merge, please refer to Build Pipeline customization

Pipelines as Code CI/test-component-pac-eici-on-pull-request has successfully validated your commit.

StatusDurationName

✅ Succeeded
6 seconds
init

✅ Succeeded
20 seconds
clone-repository

✅ Succeeded
27 seconds
build-container

✅ Succeeded
20 seconds
deprecated-base-image-check

✅ Succeeded
22 seconds
inspect-image

✅ Succeeded
4 minutes
clair-scan

✅ Succeeded
50 seconds
clamav-scan

✅ Succeeded
21 seconds
sbom-json-check

✅ Succeeded
18 seconds
label-check

✅ Succeeded
5 seconds
show-summary

✅ Succeeded
4 seconds
show-sbom

Pipelines as Code CI/test-component-pac-eici-on-pull-request has successfully validated your commit.

StatusDurationName

✅ Succeeded
5 seconds
init

✅ Succeeded
13 seconds
clone-repository

✅ Succeeded
36 seconds
build-container

✅ Succeeded
18 seconds
inspect-image

✅ Succeeded
17 seconds
deprecated-base-image-check

✅ Succeeded
8 seconds
clair-scan

✅ Succeeded
8 seconds
sbom-json-check

✅ Succeeded
34 seconds
clamav-scan

✅ Succeeded
29 seconds
label-check

✅ Succeeded
7 seconds
show-sbom

✅ Succeeded
6 seconds
show-summary


ENG-3296 sats-connect repeat-inscriptions

@teebszet  Thanks for addressing these issues 🙌 all looks well regarding your updates


OSOE-84: Migrate to Node.js Extensions

OSOE-84

I think you weren't supposed to delete the Lombiq.DataTables/wwwroot/.placeholder file too?

I think you weren't supposed to delete the Lombiq.DataTables/wwwroot/.placeholder file too?

Why would we keep them?

For some reason that .placeholder existed well before we started committing the built files.
I just assumed it was a good reason. Maybe it's not.

I haven't needed it ever since I've removed it.


[BUG] ISM CRD allocation action is broken

What is the bug?
I can't create an ISM policy with only one allocation parameter, though I can do it via api or Opensearch dashboards.
I get the following error:
one or more objects failed to apply, reason: OpenSearchISMPolicy.opensearch.opster.io "delete-more-30d" is invalid: [spec.states[1].actions[0].allocation.exclude: Required value, spec.states[1].actions[0].allocation.include: Required value, spec.states[1].actions[0].allocation.waitFor: Required value]

Seems that the problem is in required field in ISM CRD
How can one reproduce the bug?
Try to create ISM CRD like that
---
apiVersion: opensearch.opster.io/v1
kind: OpenSearchISMPolicy
metadata:
   name: delete-more-30d
   namespace: devops-opensearch-infra
spec:
   opensearchCluster:
      name: opensearch-prod
   description: Delete indices older than 30 days
   policyId: delete_more_30d
   defaultState: open
   ismTemplate:
      priority: 1
      indexPatterns:
         - "testindex-*"
   states:
      - name: open
        actions:
           - open: {}
        transitions:
           - stateName: cold
             conditions:
                minIndexAge: "15d"
      - name: cold
        actions:
           - allocation:
                require: "temp: cold"
        transitions:
           - stateName: delete
             conditions:
                minIndexAge: "30d"
      - name: delete
        actions:
           - delete: {}
---

What is the expected behavior?
I expect to create an ISM policy with only one parameter
What is your host/environment?
OS 2.14, operator 2.6.0
Do you have any additional context?
I noticed confusing information on os docs about allocation action
It says that all parameters are required, though you can create an ISM policy with only one of them (include, exclude, required)
I also noticed wrong description of crd fields there

[Triage]
Hey @cthtrifork can you please check this, I assume your contribution in this PR https://github.com/opensearch-project/opensearch-k8s-operator/pull/788 should fix the error.
Thanks
@getsaurabh02

Similiar issue related to this topic https://github.com/opensearch-project/opensearch-k8s-operator/issues/812#issuecomment-2181387505.

From a quick look at the code, it looks like the ism policy object does not require all 4 to be set so I believe it's just in the CRD which should be a quick fix. I might do it on monday

I am hitting this same issue on 2.7.0.

I am also facing the similar issue with 2.7.0.

Added the below config and did nnot notice any issue during the deployment.

name: "warm"
actions:
- allocation:
require: "temp: warm"
include: ""
exclude: ""
waitFor: "1m"
transitions:
- stateName: "cold"
conditions:
minIndexAge: "15d"

name: "cold"
actions:

allocation:
require: "temp: warm"
include: ""
exclude: ""
waitFor: "1m"
transitions:
stateName: "delete"
conditions:
minIndexAge: "30d"

Thanks @rameshar16 can you please create a PR to update the docs and some examples?

Hi @prudhvigodithi ,
I did not see any see after I added the below data for allocation along with the require field.
include: ""
exclude: ""
waitFor: "1m"
Below is the completed template:
`ismPolicies:

name: hot-warm-cold-delete-policy
defaultState: "hot"
description: hot-warm-cold-delete-policy
states:

name: "hot"
actions: []
transitions:

stateName: "warm"
conditions:
minIndexAge: "7d"

name: "warm"
actions:

allocation:
require: "temp: warm"
include: ""
exclude: ""
waitFor: "1m"
transitions:
stateName: "cold"
conditions:
minIndexAge: "15d"

name: "cold"
actions:

allocation:
require: "temp: warm"
include: ""
exclude: ""
waitFor: "1m"
transitions:
stateName: "delete"
conditions:
minIndexAge: "30d"

name: "delete"
actions:

delete: {}
transitions: []
ismTemplate:
priority: 0
indexPatterns:
"log-*"`

I did not see any error during the deployment with above configurations, but the ISM Polices did not create with the below configs.
      # - allocation:
      #     require: "temp: warm"
      #     include: ""
      #     exclude: ""
      #     waitFor: "1m"

Have removed and redeployed.

I am getting the below error with below config.

name: "hot"
actions:
- allocation:
require:
temp: "hot"
include: {}
exclude: {}
waitFor: "1m"
transitions:
- stateName: "warm"
conditions:
minIndexAge: "7d"

W1224 00:31:34.676507   43198 warnings.go:70] unknown field "spec.states[0].actions[0].allocation.require.temp"
Error: UPGRADE FAILED: cannot patch "hot-warm-cold-delete-policy" with kind OpenSearchISMPolicy: OpenSearchISMPolicy.opensearch.opster.io "hot-warm-cold-delete-policy" is invalid: [spec.states[0].actions[0].allocation.require: Invalid value: "object": spec.states[0].actions[0].allocation.require in body must be of type string: "object", spec.states[0].actions[0].allocation.exclude: Invalid value: "object": spec.states[0].actions[0].allocation.exclude in body must be of type string: "object", spec.states[0].actions[0].allocation.include: Invalid value: "object": spec.states[0].actions[0].allocation.include in body must be of type string: "object"]


Valves for manual control of zones

Manual valves for 4/7mm hoses. This allows for manual control of zones (i.e. separate cultivation boxes) over longer times.

Ordered


<style> affects all slides

Since https://github.com/slidevjs/slidev/commit/d2a5b96be5a454a791052815ec5c2369673f1e68 <style> tags at the end of a slide will affect every slide, not only the one where the style is located.

Fixed in 0.9.4


docs: publish as ebook/plain html/pdf or other formats

As discussed on discord, would the team please consider generating ebook versions of the documentation as an additional artifact of the site build?
I've tested manual conversion with pandoc which looks promising, but obviously the output needs tweaking and the process is not nice. e.g. I had to manually parse sidebar.json to get the correct ordering of the articles.
Whereas this might get closer to the right thing:
https://www.gatsbyjs.org/packages/gatsby-plugin-ebook/#gatsby-plugin-ebook
thanks all.  stay safe-
UPDATE: Jump to https://github.com/iterative/dvc.org/issues/1167#issuecomment-621604958

So. This need has recently surfaced again as a relatively easy way to start keeping an archive of versions of the docs that match different core DVC releases. So either a PDF eBook or a simple standalone static HTML website of dvc.com/doc would be ideal, if that's something we can build relatively easily with Gatsby.
Thoughts @shcheklein @fabiosantoscode @iAdramelk ? Cc @dmpetrov and @rogermparent
Thanks!

With the Models PR separating Doc nodes from others, something like this should be pretty painless to implement as long as there's a way to generate the required formats in Node.
A simple HTML output is obviously the easiest route because it can just be done as another page, but for non-HTML formats we can take the same approach gatsby-plugin-sitemap does and output a file from within the onPostBuild hook using data sourced from GraphQL.
There's also the different ways such a page could be formatted like choosing if we keep the sidebar, use another more page-friendly form of index, or skip the index altogether. I can also see the need for some slight schema changes to get every page accessible in sidebar order, but that wouldn't be a big deal for me to implement.

Since the website is already a set of static files, keeping an archive of HTML shouldn't be too hard to accomplish.
Remember that most of what's good for epub, is also good for PDF and print. A lot of it also applies to AMP. So we can deal with all of those at once if need be.

Of course there's the joining all the pages together, which depends on how epub works (I don't know anything about it!), but if we use a print-to-PDF tool we can control page breaks with CSS, and the rest (removing sidebars, top bar) with print CSS.

Thanks for the answers guys! Sounds promising! But I'm wondering how to keep this as simple as possible. We have all the content in Markdown so in theory this should not be a tough problem, let's not even force it to be done via Gatsby if it's too invovled.

A simple HTML output is obviously the easiest route

Lets focus on this format for now. What I'm imagining is:

A special build process that produces an archive e.g. a ZIP or TAR file.
The archive contains a directory that basically matches the content/docs/ dir tree, but with .html files instead of .md.
The index.html file has the content of https://dvc.org/doc, and so on. You just open this file from file explorer to browse the docs archive.
All web pages use the same layout (and basic CSS) as the actual site, including the navigation sidebar, yes.
The nav bar is generated from sidebar.json (same as in the actual site).
In this kind of "build" (let's call it plain doc static site), there's no JS, so links are actual <a href=... tags to the other HTML files, so we need a way to resolve these paths.

Possible approaches
a) I haven't studied Gatsby yet unfortunately, but since it's a SSG these goals should pretty much be it's most basic behavior anyway? Except we have so many other layers of complexity, pages, blog, etc... Is there a way to create a special build that ignores everything except the contents/docs/ dir?

the website is already a set of static files...
...joining all the pages together, which depends on how epub works

@fabiosantoscode sounds like you're saying we basically already have the archive, but there are some server-side elements that don't let us just release current builds as a plain site, right? Again, there'll be no server (i.e. gatsby serve for plan site builds).

epub, is also good for PDF and print... So we can deal with all of those at once

You may be right but let's keep this super simple for now and think only on HTML for now.
b) And if that's complicated, what about a completely custom script (not Gatsby) that uses some other tool to build the plain site explained above? I.e. a hand-written HTML layout (and CSS) and a Node.js script that uses some library to "compile" MD to HTML. It could be run manually or as part of the CI/CD (even list the archive as an asset in https://github.com/iterative/dvc.org/releases).

For whatever it's worth, I really did mean epub or similar in my request. So I'm all for you getting your static html archive issue solved because it seems like a pressing need, but also if you could keep epub format in your sights I would appreciate it.

Gotcha. Yes, in a second iteration on this, formats like epub and pdf could be addresses. We'll keep this issue open. Thanks

@jorgeorpinel I'm 99% sure we can achieve what you want pretty easily with Gatsby.
We're probably going to need to post-process the resulting HTML to:

remove script tags
make URLs relative to the current file (you can't link to /foo/bar in file://)
make links to other pages point to actual HTML files (currently they point to pretty paths without the /index.html suffix).

To process HTML we can use something like cheerio which is easy to use.
Besides the above, correct me if I'm wrong @rogermparent but I think we should be able to create a new createPages function which renders the same that's under /doc, but places it in a different prefix (say /doc-static) and adds some React context so the underlying components can render the subtle differences @jorgeorpinel wants us to have.
For local development, one can visit /doc-static in their browser and have hot reload while they adjust the differences we need. In production, this folder is removed from the build result, its HTML files preprocessed and placed into a zip file which we can then host from anywhere we like.

My approach is to cut down from the current site, but @jorgeorpinel's idea of building up from the markdown is equally valid. I just wonder which approach represents less work and less maintenance cost.

@jorgeorpinel @fabiosantoscode @rogermparent Sorry for late answer. Technically generating either epub, pdf or single html file should be relatively easy. But we also have another problem to solve here: How to maintain and index docs from different versions of dvc.
If I understand the basic problem correctly we don't just want to create static version, we also want to store generated versions for previous docs and probably have some way to access them in the site's UI. So we need to either store all versions in md explicitly and rebuild all of them every time, or to have some way to save generated artifacts between builds and add their results to the next build.
There are different ways to solve this problem. Simplest is probably just to add command to cli that generate folder/file and to add it to git manually, but there are other automated ways to do it.

gatsby-plugin-ebook is a little outdated and doesn't have great customization options, but the logic is quite simple and it makes epubs so I'm going to make a quick fork that can be shaped to our current schema.
I don't have anything to show yet, I just wanted to confirm epub generation is at least possible. I also need to make it so docs are accessible and guaranteed sidebar order.
The version archive is a separate, but interesting issue. At first brush I'd suggest explicitly storing each version. The docs build much faster than the blog so I don't see adding more docs pages being a big issue. It's certainly something I'd like to solve from within Gatsby, but I'll have to hammer out the exact implementation later.
My primary goal right now is to get docs pages accessible in sidebar order through a custom resolver, as that is required before we do anything with alternate doc formats.

@iAdramelk

Technically generating either epub, pdf or single html file should be relatively easy.

Any hints on things to try for this effect would be greatly appreciated.

How to maintain and index docs from different versions of dvc

Git tags that match those in https://github.com/iterative/dvc/tags? The archives could be setup as artifacts in the Github release history same as old versions of DVC itself. It's a secondary problem, but important yes.

Any hints on things to try for this effect would be greatly appreciated.

@jorgeorpinel we have similar task for our internal handbook. We solved it using pandoc. In simplest case you can generate epub or pdf from a folder of markdown files with one cli command, see examples at: https://pandoc.org/demos.html or ebook tutorial here https://pandoc.org/epub.html
We can add syntax highlighting, title page, our own css, etc.
But AFAIR it will not work with remark plugins for markdown and we still need to read file order and titles from sidebar.json.
If we want to use plugins and sidebar.json we will need to generate correct html page with all docs and meta and then convert it to pdf of epub with pandoc.
We can do it two ways:

Use gatsby to build single static page with all docs.

PROS:

Fast, around 2-3h to create html.
All our installed and custom plugins for markdown would work out of the box.

CONS:

We have a lot of unneeded js in the html file so we can't just distribute it as is. We will need to remove unneeded stuff with rehype or some html sanitizer.
We don't really want ALL plugins to work. For example our linker plugin that replace dvc commands with links should be either updated to local urls or removed, etc.

Write simple nodejs script that generates static html page using rework and simple string concatenation. Optionally webpack html template plugin to simplify things a little.

PROS:

We control everything about html and only include stuff we need, so we can also distribute html version as well as epub or pdf.
We can use remark plugins.

CONS:

Gatbsy plugins for remark have somewhat different wrapper from the normal remark plugins. For our plugins we can write simple wrapper in 5-10 loc. But for plugins we use from npm we will need to look for remark analogues.

TLDR:

If we don't need plugins and only need sidebar.json for ordering: Write script that generated list of pathnames from sidebar.json, send in to pandoc with custom css path -> get epub or pdf.
If we want titles from sidebar.json and/or some simple rework plugins: Write simple nodejs script that generates static html, send it to pandoc -> get epub or pdf.
If we want to use some custom gatsby plugins for remark and can't find alternatives for them in remark -> generate html with gatsby, sanitize it, send it to pandoc -> get epub or pdf.

Pandoc looks great if we go for a custom shell script that just generates HTML files from the Markdown ones, thanks for the tip! No React plugins or navigation.

Use gatsby to build single static page with all docs.
around 2-3h to create html

2-3 hours? Takes a few minutes 🙂
Yeah guys actually I ran build and looked at the HTML files in public/doc/ and they're basically almost ready for this! Images and links are all broken but they look perfect:

Other than the more complex processes outlines above by some of you, can we pass this directory through a custom script that will just fix links and images? I think most images are in public/img/

Also, for the record, I think the first PR for DVC 1.0 is in https://github.com/iterative/dvc.org/pull/1215#issuecomment-623182656 so we could tag the commit before that as the last 0.9x in order to produce the last pre-1.0 docs archive.

p.s. 0.94.0 is out with all the optimizations and bug fixes so we would probably want to apply those to the pre 1.0 docs as well...

I assigned myself to this issue because I'm working with the sidebar, but if someone wants to try getting a working pandoc script going I'd be happy to let them take it.
I already have a branch that integrates sidebar.json into the GraphQL API and allows more control over the sidebar in general, but my main stopper now is how to take that data and turn it into an ebook. epub-gen from the Gatsby plugin accepts one layer of "chapters", but doesn't seem to support the kind of multi-level tree hierarchy we have.
I'm thinking I could use rehype to make each top-level category a chapter that contains all its children, then implement the custom HTML ToC option from epub-gen.

my main stopper now is how to take that data and turn it into an ebook. epub-gen from the Gatsby plugin accepts one layer of "chapters

How about just a simple html web site like we mentioned? Would that be a better first step? It would cover our first use case here which is having an archive of older doc versions.

@jorgeorpinel kind of, but it runs into the same problems. Epub is very close to HTML, after all.
Because of specifically how our content is structured hierarchically but written as individual pages, making any single page that contains all the docs becomes an issue that requires some sort of transformation of the content to make nesting visible.
The simplest viable transform that I can think of in this regard is something that prepends a sort of chapter ID before the title of each page.
These IDs would be generated in a way that keeps both order and hierarchy, like the following example:
( { "intro": ["tut1", "tut2"] } => { "1: intro": ["1.1: tut1", "1.2: tut2"] })

(Not our actual content structure, but you get the point)
There's also other ways to go about it, like plugins for Rehype to shift all headings of a document in a level so child headings will "nest", but that opens up questions like "how deep do our docs go with headings without this?" and "what do we do with a heading that gets pushed past h6?".
I'd suggest we go for the title prepend solution first as it's simplest, then open ourselves up to other, possible better-looking changes in the book formatting afterward because there's much less drawback to change on a new feature that's as inside baseball as this one compared to something like the docs home where each change brings up SEO questions.

Epub is very close to HTML, after all.

OK but is epub easier than HTML? We already have HTML to work with, so the priority here would be HTML. Most people, I assume, will be more comfortable with this format too: you can simply extract the archive and browse the local docs with your browser.

making any single page that contains a doc page with its children

I wasn't suggesting boiling everything down to a single page. Just replace the links so you can navigate the static site locally over file:// as explained in https://github.com/iterative/dvc.org/issues/1167#issuecomment-624338998 🙂
I like your ideas but unless I'm getting something wrong, I think we're overengineering this. Have you ran yarn build and checked out the contents of public/doc/ @rogermparent?

I'd suggest we go for the title prepend solution first as it's simplest

If you think the build process can add some metadata to these html files so we can easily transform them with a custom script, that sounds good to me.
Alternatively, have you checked out pandoc? See https://github.com/iterative/dvc.org/issues/1167#issuecomment-623059036
Thanks

I was really thinking as simple as a script that does this:
pandoc -i index.md dvc-files-and-directories.md dvc-file-format.md dvcignore.md [...] -o dvc-v0.94.0-user-guide.epub

More sophistication isn't strictly needed as a first MVP, and if you decide to do something nicer later you can always go back and regenerate the legacy docs.
What does need to be fixed are paths to image resources, and  whatever you're using to handle the "Expand to learn about ..." sections in your tutorials also doesn't convert properly.
For example if you look at the AWS documentation in html and pdf/mobi formats side by side, you can see they're not sweating over the details very much at all...

Agreed, and thanks for bringing out about those expandable sections! They should probably just get fixed open (expanded) somehow before transforming to the final html/epub

Would be nice to prioritize this if possible cc @efiop (per https://github.com/iterative/dvc.org/issues/593#issuecomment-637211745) and @shcheklein
BTW is this kind of a duplicate of #593?

@jorgeorpinel Doesn't seem like a duplicate to me.

@jorgeorpinel I think these should be separate issues. This one's initial concept is a legitimate concern that got informally usurped in the comments by what #593 addresses.
The two may have some overlap depending on how either is implemented, but at their core the issues are totally different. I think the best course going forward is to discuss and prioritize docs versioning at #593 and leave this issue to be specifically alternate formats like ebooks.
Sorry @gonewest818, lots other other stuff has gotten in the way of this issue! I'm going to unassign myself from this issue so others may be more inclined to take it and/or #593 on.

OK but I think this is much easier to implement and covers the basic need of #593: "having docs for different DVC versions".

@rogermparent please decide whether this is still a need, prioritize, etc. Transferring to the engine repo...


Expose duration in UI

I'd like to know how long the overall build took to run. Exposed in the build list and in the individual build pages themselves.
Timestamping output in the build log itself would also be useful (to help narrow down slow build sections).
There's a great Jenkins plugin called Timstamper which provides these timestamps, but also a sidebar toggle that lets you switch between absolute and relative.

subscribe to #1298

btw, meant to mention that similar to timestamper, docker eposes a timestamp to each line in the logs which I'm hoping to capture in the 0.5 release

Curse me for searching on "duration" and not finding it! Thanks.

heh, no worries. I did the same thing and couldn't find it when I search for duration. Luckily I remembered who opened the original issue :)


JSON Output

Can this library add a JSON format output report?

Do you mean from the CLI or JS API? The JS API already outputs a result that's JSON-serializable.

Thank you very much. I didn't notice the "javascript usage" line at first.


Update config_template.yaml

I removed the space characters preceding 'static_root:' in line 132 and 'media_root:' in line 129 as they cause a YAML parsing error if not removed when uncommenting these options.

@IncompleteIntegers good catch, thanks for the patch.


Create sample invitation language for personal invites

Need reg page to link to .

We have two documents started in the Marketing folder already
https://docs.google.com/document/d/1aCPzDkE_hnL3ZAHJDJY_7vXw_xLVrueT8WCLNlMS7AQ/edit?usp=sharing
https://docs.google.com/document/d/1MfvfuT1CoN4ZE4DTtt92Hy0IJItHpnxW1trVkeqAGzs/edit?usp=sharing
Can we combine and reuse what is in these documents?
On Mon, Aug 27, 2018 at 9:58 PM Jason Hibbets<EMAIL_ADDRESS>wrote:

Need reg page to link to .
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/ncopenpass/NCOpenPass/issues/1164, or mute the thread
https://github.com/notifications/unsubscribe-auth/AK4rplYFLuzd-Nq8ccAInT8kbMm5U6V-ks5uVKPIgaJpZM4WOx72
.

http://ncopenpass.com/civic-camp/civic-camp-registration/

Updated this document now that schedule and speakers are set https://docs.google.com/document/d/1MfvfuT1CoN4ZE4DTtt92Hy0IJItHpnxW1trVkeqAGzs/edit?usp=sharing


Testing To Do list: part 2

Added testing files for editing, clearing, and completing

Added testing files for editing, clearing, and completing
Fixed linter errors


Massive power loss when using with Mekanism universal cables

When putting an industrial forgoing machine (the latex processor) on a Mekanism universal cable it will sink all power offered by the cable without increasing the internal power storage of the machine itself (it stays at 0) - basically deleting all the energy.
Same happens when putting in energy storage items (but in this case it could be a bug of the latex processor?).
tesla-core-lib-1.12-1.0.11.jar
industrialforegoing-1.12.2-1.5.10-98.jar

Not an issue related to Mekanism cables at all: The machine just wanted to get nearly infinite power: https://github.com/Buuz135/Industrial-Foregoing/issues/127


Add Support For Base Impl

[ ] Open spec
[ ] Testing
[ ] Database Configuration - Mongo
[ ] Validation
[ ] Tracing with request id
[ ] Caching
[ ] logging

Looking into it


[MGDOBR-335] Shell scripts update

Mainly avoid calls to other scripts assuming script is run in a specific folder and some other tweaks
MGDOBR-335
Please make sure that your PR meets the following requirements:

[ ] Your code is properly formatted according to this configuration
[ ] Your commit messages are clear and reference the JIRA issue e.g: "[MGDOBR-1] - $clear_explanation_of_what_you_did"
[ ] All new functionality is tested
[ ] Pull Request title is properly formatted: MGDOBR-XYZ Subject
[ ] Pull Request contains link to the JIRA issue
[ ] Pull Request contains link to any dependent or related Pull Request
[ ] Pull Request contains description of the issue
[ ] Pull Request does not include fixes for issues other than the main ticket

How to trigger pipelines and use the bots:

Run the end to end pipeline
Annotate the pull request with the label: safe to test. If you want to run the pipeline again, remove and add it again.

Rebase the pull request
Comment with: /rebase.

@radtriste Unfortunately it looks like https://github.com/5733d9e2be6485d52ffa08870cabdee0/sandbox/pull/340 has broken your PR.

tested ok. Ready to be merged :)


Angular CLI New project creation issue

Please provide us with the following information:

OS?

Windows 7,

Versions.

angular-cli: 1.0.0-beta.28.3
node: 6.9.5
os: win32 x64

Repro steps.

After running the command "ng new MyTestProject", I am getting the below error.

The log given by the failure.
6223 error Windows_NT 6.1.7601
6224 error argv "C:\Program Files\nodejs\node.exe" "C:\Program Files\nodejs\node_modules\npm\bin\npm-cli.js" "install" "node-sass"
6225 error node v6.9.5
6226 error npm  v3.10.10
6227 error code ELIFECYCLE
6228 error<EMAIL_ADDRESS>postinstall: node scripts/build.js
6228 error Exit status 1
6229 error Failed at the<EMAIL_ADDRESS>postinstall script 'node scripts/build.js'.
6229 error Make sure you have the latest version of node.js and npm installed.
6229 error If you do, this is most likely a problem with the node-sass package,
6229 error not with npm itself.
6229 error Tell the author that this fails on your system:
6229 error     node scripts/build.js
6229 error You can get information on how to open an issue for this project with:
6229 error     npm bugs node-sass
6229 error Or if that isn't available, you can get their info via:
6229 error     npm owner ls node-sass
6229 error There is likely additional logging output above.
6230 verbose exit [ 1, true ]
Mention any other details that might be useful.

Thanks! We'll be in touch soon.

I have the same issue on Linux

+1

This stems from some incompatibility between node-sass and your system.
https://github.com/angular/angular-cli/pull/5282 would fix it... in a way. It would let you use everything but sass.

One advise I can give for now is that you can actually force an install.
This isn't usually a good idea, and even npm will tell you so:
kamik@T460p MINGW64 /d/sandbox/master-project (master)
$ npm install --force
npm WARN using --force I sure hope you know what you are doing.

But it can bypass the node-sass issues. You'll have a broken node-sass install but everything else will still work.

There seems to be a workaround for Chinese users, courtesy of @aijingsun6 in https://github.com/angular/angular-cli/issues/5360#issuecomment-285601458:

I found the solution:
1.add sass_binary_site=https://npm.taobao.org/mirrors/node-sass/ to npmrc file
2.npm install -g @augular/cli

If you are like me, and had this problem on one of the ubuntu instances in an EC2, installing node doing this here helped me:
curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -
sudo apt-get install -y nodejs


Delete option in context menu is mispelled

I'm not sure why this is occurring for me, but I am not able to see the "D" in the "Delete" string in the context menu. I searched the source but didn't see any references to this spelling, so I'm not sure what the issue is here.

Thanks, weird that I didn't notice that.
You didn't find it because it is trimmed, for cases like Alt+1, where the original key name is D1, and I forgot to check for digits after the D.


Chi square

The README refers to a chi square test in the stats module - but it doesn't appear to be there.
FYI I found this lib while searching for one specifically that contains a chi square test.

well that's awkward. I'll try to do this in the next week (terribly busy atm)

No prob. Just thought I'd drop you a note about it.

@oliver-moran Did you find a library that has a chi square test?

Hi @MarkusPint
Could you try statistical-js to say me if tje chiSquared corresponding with tou expectation.


chore(main): release 0.1.1

:robot: I have created a release beep boop
0.1.1 (2023-04-17)
Initial release

This PR was generated with Release Please. See documentation.

:robot: Release is at https://github.com/BLSQ/openhexa-sdk-python/releases/tag/0.1.1 :sunflower: