Add Automated Screenshot (E2E) Tests with Playwright

Fixes https://github.com/CesiumGS/cesium/issues/11068
This PR adds automated "end-to-end" testing with Playwright. Playwright allows us to set up automated screenshot testing runnable in NodeJS, and is used in some of our other internal projects.
Running Tests
Tests are runnable with the following commands:
npm run test-e2e
npm run test-e2e-report

For running the tests against release code:
npm run test-e2e-release
npm run test-e2e-report

See Documentation/TestingGuide/README.md for a full descriptions of the added commands.
Tests
The majority of tests added in this PR are tests for each sandcastle, automated in sandcastle.spec.js. It pulls all examples and runs them in standalone mode (no surrounding Sandcastle UI).
I did tweak a few sandcastle so that the initial view resolves faster. This benefits the automated testing, but I think it also helps users get to the important parts of the example faster.
The rest are a few illustrative examples, testing certain features by evaluating CesiumJS code more directly. There are a few "dirt simple" examples like the Viewer, but also a few that were a bit more difficult to test through a raw sandcastle example snapshot, like picking and model animations.
Screenshots
Screenshots are saved to disk and committed to the repo. Since there are many, I set the viewport size fairly small.
If screenshots ever need to be updated, such as when a new sandcastle is added or behavior intentionally changes, test-e2e-update can be used to run the relevant E2E tests and generate any new screenshots.
Config
The setup required a fairly basic configuration, specified in Specs/e2e/playwright.config.json.
The biggest notable adjustment to get playwright working on CesiumJS examples is time. Time is often taken into account for things like the timeline rendering, animations, positions of the skybox relative to the rotation of the earth-- All critical to ensuring a consistant render for screenshot testing. To account for this, we use Sinon to mock system time, ensuring consistency for all end to end tests. It allows us to set a specific datetime to use for all tests without modifying any test code, and advance system time as needed for specific tests. This is configured in Specs/e2e/test.js. This is the current recommended workaround until playwright directly supports time emulation.
For sandcastle tests especially, we use super lenient timeouts here, and rely on network idle event (which is discouraged in the playwright docs) since a comparable screenshot needs to ensure all the imagery is loaded in. If we phase away from Sandcastle examples, and move to more test-oriented examples and more offline data, it'll be possible to better optimize these so that we don't rely on these longer timeouts. Hence there's a difference in the default config vs the sandcastle tests in terms of timeouts.
The visual threshold though are still fairly conservative, since once the data is actually loaded in, there should be a fairly low tolerance for differences in rendering given the set parameters.
Given the long timeouts and network loading, these do take a few minutes to execute. I would recommend only running these locally or in the main branch for CI to avoid the overhead in regular CI runs.
TODO:

[x] Cleanup commit history
[x] Update release guide to include e2e step before release
[x] ~Running in CI~
[ ] Coverage task?

The additional install step is set up to run on postinstall.

<EMAIL_ADDRESS>postinstall
playwright install

It works for me from a clean install. apt-get isn't available for me on a non-linux system. @jjhembd Does either playwright install or playwright install-deps work for you at all, or only apt-get?

Screenshots differ between browsers and platforms due to different rendering, fonts and more, so you will need different snapshots for them. If you use multiple projects in your configuration file, project name will be used instead of chromium.

Is is possible to drop the suffix, but I'm concerned we'll still see minor differences:
I think the main difference we will end up seeing across systems is differences in font. We could hide all UI elements, but that means we are getting further away from what things actually look like.

I set the default viewport smaller, but this was actually being overridden by the device configuration. Updated so we're using 960x540. Any smaller, and there starts to be issues with the UI cluttering the rendered scene.
This does bring up the question of storage in general. As more tests or sandcastles get added and the screenshots get updated, plus maintaining a version for each system, this will quickly bloat the size of the repo. Normally, the solution here would be to use git-lfs, but doing so in a popular public repo can affect the bandwidth quota for the entire Cesium organization.
Given that, the fact we plan to use this mostly for release testing, and the answer to 2, I think the simplest thing to do for the time being is to skip committing the screenshot to the repo. This does result in not being able to run the tests as easily in CI. However, the tests take ~7 minutes to run on my machine, are network dependent, and somewhat system dependent since we're not running in docker. This also requires developers to run the tests once locally against main as a baseline to generate local versions of the screenshots.
If we do want to enable CI, at that point I think it may make sense to have CI run the test in the proper environment and upload and compare results to files stored externally, such as in a S3 bucket. Plus probably only run it in the main branch due to the length of time it takes to run.
To sum up, given these test are still useful to accelerate local testing such as during releases or when testing wide reaching PRs like moving WebGL2 by default, I think we keep things simple and skip committing the screenshot and CI. I'll update the guides to describe the local workflow. If we find the test useful over time and want to add them to the CI workflow, we'll want write a custom script which generates any missing screenshot in the specific environment and handles storage separately.

Thanks @jjhembd! Besides the particle system examples, I added improvements to the Sandcastle examples themselves, or fixed bugs in the standalone versions.
For particles systems (and other animations) we now tick time forward a few times to ensure they get a few frames of execution before capturing the screenshot.

@jjhembd I reduced the number of workers to 1. Any luck with better consistency?

Thanks @ggetz, the tests are now running sequentially, one at a time. I'm getting an error with one Sandcastle when I run npm run test-e2e-update from a clean install:
  1) [chromium] › picking.spec.js:3:1 › Shows cartographic position on mouse over ──────────────────

    Error: page.evaluate: TypeError: Cannot read properties of undefined (reading 'tickAsync')

        at eval (eval at evaluate (:197:30), <anonymous>:1:22)
        at UtilityScript.evaluate (<anonymous>:199:17)
        at UtilityScript.<anonymous> (<anonymous>:1:44)
        at eval (/home/jhembd/CesiumGS/cesium/eval at evaluate (:197:30), <anonymous>:1:22)
        at UtilityScript.evaluate (/home/jhembd/CesiumGS/cesium/<anonymous>:199:17)
        at UtilityScript.<anonymous> (/home/jhembd/CesiumGS/cesium/<anonymous>:1:44)
        at CesiumPage.tick (/home/jhembd/CesiumGS/cesium/Specs/e2e/CesiumPage.js:25:21)
        at /home/jhembd/CesiumGS/cesium/Specs/e2e/picking.spec.js:51:20

  Slow test file: [chromium] › sandcastle.spec.js (32.5m)
  Consider splitting slow test files to speed up parallel execution
  1 failed
    [chromium] › picking.spec.js:3:1 › Shows cartographic position on mouse over ───────────────────
  185 passed (32.8m)

I see that the problematic .tickAsync reference is from CesiumPage.js, but I didn't trace back how this causes the failure.
 For example, here's the snapshot for the "Time Dynamic Wheels" Sandcastle:

I'm not sure how much of an issue this is, since the key parts of the demo (which are loaded from local files) rendered correctly.

 For example, here's the snapshot for the "Time Dynamic Wheels" Sandcastle:
@jjhembd Are you running npm run test-e2e-update with a clean screenshot directory, or did you have the previous screenshots captured before you re-ran the command?

Ah, I think I've found the problem with tick and tickAsync. This was the mock time-based functions that should have been installed for each test. Turns out beforeEach shouldn't be used in a helper file, as the behavior is undefined. I've updated the tests so that these are installed via default test fixtures instead.


go: Improve efficiency with zlib in THeaderTransport

When enabled zlib in THeaderTransport we observed very high cpu overhead, use a pool for zlib writers to improve efficiency.

[ ] Did you create an Apache Jira ticket?  (Request account here, not required for trivial changes)
[ ] If a ticket exists: Does your pull request title follow the pattern "THRIFT-NNNN: describe my issue"?
[ ] Did you squash your changes to a single commit?  (not required, but preferred)
[ ] Did you do your best to avoid breaking changes?  If one was needed, did you label the Jira ticket with "Breaking-Change"?
[ ] If your change does not involve any code, include [skip ci] anywhere in the commit message to free up build resources.

Did some internal test, this version certainly improved efficiency from the previous version


fix: Ensure tense uniformity in log messages

Updated log messages to consistently use the past tense, ensuring grammatical correctness and improving readability. This change affects the messages related to conformer generation outcomes.

thanks with this


[1.10.2] Not Working With IE power?

EnderIO power does not seem to interoperate with Immersive Engineering power.
What happens:
No power is transferred between the blocks.
What you expected to happen:
Power should be transferred.
Steps to reproduce:

Attach LV connectors and LV cabling between two EnderIO capacitors or similar.
Observe minor energy loss from cable (-2 RF/t in my setup) but no power transfer.

OR -

Attach EIO conduit to two IE capacitors or similar.
Observe no power transfer.

Affected Versions (Do not use "latest"):
EnderCore <IP_ADDRESS>
EnderIO <IP_ADDRESS>
Immersive Engineering 0.10-44
Minecraft 1.10.2
Forge <IP_ADDRESS>4

see #3758


Bullet charts to show cluster free space

Note: This depends on:
~~https://github.com/project-koku/koku/issues/1396~~
~~https://github.com/project-koku/koku/issues/1232~~
As a user, I want the details view to include the free space of clusters (i.e., what is not being used).
Mockup: https://marvelapp.com/1jj511j6/screen/64401384

https://marvelapp.com/1jj511j6/screen/64067025

@nlcwong Making some assumptions based on your fit-n-finish notes from https://docs.google.com/spreadsheets/d/1Bt65TNx_L9U2EXz0xgbk3zcB4_19nvmsdnkC-n8FUL0/edit#gid=0

The mock is for Ocp cloud infrastructure details, but will add to Ocp details as well
Fit-n-finish notes suggest this is for group_by cluster only
The bullet chart will show capacity for group_by cluster only

Note that we can easily add the feature for any group_by, if desired?

The mock appears to show incorrect percentages. When the "Unused CPU capacity" drops to zero, it would read "0 core-hours (0% of capacity)". Perhaps the label should read (0% of capacity remaining)?
In the example below, the usage is 2143 and capacity is 8572. Calculating (2143 / 8572) * 100 is 25%. Therefore, I believe the "Unused CPU capacity" should read "6429 core-hours (25% of capacity)", which would better match the dark blue, primary measure bar.

Making the assumption that we must handle the following special use cases regarding requests.


Implement general evaluator

[ ] For any type of comparison, unique, bidirectional or not, lowercase, ...whatever
[ ] Evaluate by normalization id (==)
[ ] Evaluate by GO norm id following tree

One should change:

[ ] Relation
[ ] unique_relations
[ ] is_relation

Seriously, this is too much. Now I also found that the previous evaluation of unique relations per documents also had bugs.
We better test the code for evaluation

See: a8a1ba80647058bffaf4dd8046672f6b26b452b1 and https://github.com/Rostlab/nalaf/commit/1c5c70620339d635c48ae040652a020134eae392


Core Loss models are missing m modification in coreParameters declaration

This changed from 3.2.1.  The models Modelica.Electrical.Machines.Losses.DCMachines.Core and ...InductionMachines.Core should use
parameter Machines.Losses.CoreParameters coreParameters(final m=1);
and
parameter Machines.Losses.CoreParameters coreParameters(final m=m)
respectively, in the declaration of coreParameters.
Actually, InductionMachines.Core seems to have a related error. I think it should be
       parameter Machines.Losses.CoreParameters coreParameters(final m=m);
       final parameter Integer m=3 "Number of phases";
As it is, the parameter m is declared as
final parameter Integer m=coreParameters.m;
but no modification is passed to coreParameters, so the value is undecided.

As far as  I see, the parameter m is taken from parameter coreParameters.m but not used.
coreParameters are propagated in Interfaces.PartialBasicInductionMachine and Interfaces.PartialBasicDCMachine from the machine's parameter records, and coreParameters.m is set final
parameter Machines.Losses.CoreParameters statorCoreParameters(final m=3, ...
parameter Machines.Losses.CoreParameters coreParameters(final m=1, ...
so I can't figure out the problem?

The problem is that the m parameter is used in CoreParameters, in the GcRef parameter. It needs a value.

model Core "Model of core losses"
parameter Machines.Losses.CoreParameters coreParameters;
final parameter Integer m=coreParameters.m "Number of phases";
...
I see nothing that assigns the value of m. It's not assigned in CoreParameters.

In Modelica.Electrical.Machines.Losses.InductionMachines.Core the parameter Machines.Losses.CoreParameters coreParameters has no default value assigned. That is correct, as a default value is not required.
In Modelica.Electrical.Machines.Interfaces.PartialBasicInductionMachine there is a parameter defined
  parameter Machines.Losses.CoreParameters statorCoreParameters(
    final m=3,
    VRef(start=100),
    wRef=2*pi*fsNominal);

which is then propagated to the instance of the core loss model
  Machines.Losses.InductionMachines.Core statorCore(
    final coreParameters=statorCoreParameters,
    final useHeatPort=true,
    final turnsRatio=1);

The same method is applied in Modelica.Electrical.Machines.Interfaces.PartialBasicDCMachine where
  parameter Machines.Losses.CoreParameters coreParameters(
    final m=1,
    VRef=ViNominal,
    wRef=wNominal);

is declared and propagated to the instance of the core loss model
  Machines.Losses.DCMachines.Core core(final coreParameters=coreParameters,
      final useHeatPort=true)

So in each case, DC and induction machine, there is obviously a parameter propagated to the instance core with a strictly assigned parameter value.
I cannot see an open issue here.

The usual approach in this case where no particular default is necessarily right is to chose one that is at least plausible, set it as the parameter's start value instead of its actual value (retaining the default fixed=false). In that case, a tool is supposed to give a warning that no value was supplied, but that it is using the default. This is what is done, for example, for the R parameter of Modelica.Electrical.Analog.Basic.Resistor, which has a default of 1.
The current situation, whether you think it is right or not, is a regression from 3.2.1.

I compared the actual code of Modelica master with tag v3.2.1+build.2. Somewhere on the way from v3.2.1 to master there was a change introduced which is NOT backwards compatible. I have no idea why this change was performed. I cannot see any obvious benefit from the new implementation. Therefore, I am rolling back to the implementation of v3.2.1.
@AHaumer is this change OK with you?
@JoeRiel is there anything left from your point of view or can we close this ticket?

I checked the packages Machines, Magnetic.FundamentalWaves and QuasiStatic.FundamentalWaves and they check all OK with the "old" implementation.


Add debugging option to find problems when running the script...

...more easily.
Add friendlier error message for common case when users don't have gpt4 available.

Do I need to rewrite my commits with the "signed-off" thingy or can you merge them anyway?

Hmm, this got lost somehow. Can you reopen the PR? Ideally a sign-off would be great.


DOCU-2803 - AppReg for multi RGs GA

Summary
changelog for DOCU-2803
Reason

Testing

Will follow https://github.com/Kong/docs.konghq.com/pull/4806


Instead of emulating Vim...

I'd recommend starting up a headless instance of neovim and letting Atom's text area be a view controlled by both neovim and Atom.
Send all keystrokes to neovim and let neovim decide what needs to happen to the text buffer from those keystrokes, then receive neovim's view update and update Atom's text area. When a combination is not recognized by or mapped in neovim, neovim can send that back and Atom can take over (for example, command+c can be sent back to Atom, and Atom can send neovim a y or yy depending on the mode, etc. Or, if the keystroke combo comes back to Atom and would do a normal Atom operation, then do the operation on the Atom's text area, then send the the update to neovim.
One of neovim's main goals is to make a clean separation of core and view, so that anyone can easily integrate part or all of neovim's text-manipulation functionality into their own GUIs. But even though that's not finished yet, it's still possible to subscribe to neovim's (vim's) old GUI mechanism just like Gvim, MacVim, and several Qt-based vim GUIs do.
I've tried each and every vim emulation out there and I cannot leave vim for any of them. Emulators cannot compete with the customizations of my vimrc.
It would be so much awesome if you guys decided to support neovim's movement. As you said, this vim emulation is "far from finished (Vim wasn't built in a day)", and from what I've observed of every other emulation attempt, it might remain far from finished. Adopting neovim will get you closer to the end result faster, ultimately.
I'm not familiar with how Atom's plugin system works. Is it flexible enough to allow neovim integration as an Atom plugin?

I'm going to close this; I think it could be interesting, but should definitely be a separate package.


feature: flexvolume

i might be able to even get to this at some point, but it would be nice to enable flexvolumes for kubernetes during installation. i've been working with coreos bare metal this weekend, and torus. here are some useful docs:
flexvolumes (kubernetes):
https://github.com/kubernetes/kubernetes/blob/release-1.2/examples/flexvolume/README.md
torus (coreos):
https://github.com/coreos/torus/tree/master/contrib/kubernetes#installing-the-torus-flexvolume-plugin-on-generic-kubernetes-installations
for most OS flavors, it wouldn't be too hard to write to /usr/libexec/kubernetes/kubelet-plugins/, but this is an issue for CoreOS. kubespray could possibly work around this during installation, but i'll have to dig a little deeper (my experience is only surface deep at the moment).

+1 I've also played with torus and more generaly it would be nice to handle plugins with kargo

i agree. what OS were you attempting to load it on? on coreos i am getting the following error (and not finding much resolution). i may have to reach out to those guys for more detail:
    Unable to mount volumes for pod "postgres-torus-1754447054-uf809_default(e30e6b13-3bda-11e6-afba-001fc69b97d0)": attach command failed, status: Failure, reason: Unit torus-dev-nbd0.service already exists.

Yes that would be awesome if kargo could handle torus and more generally flexvolumes

I am not sure, however I found some progress on that issue here: https://github.com/kubernetes-incubator/kubespray/pull/2132/files

as pointed by @perunb
it seems fixed by  https://github.com/kubernetes-incubator/kubespray/pull/2132/


[2.5] Backport: Listing many large resources can be slow on the ember UI

https://github.com/rancher/rancher/issues/25487

Test Environment:
Rancher version: v2.5-6ff6d08b210f5ce59f4c8dac817ae63af75a5d76-head | 2.5.11 was used for comparison
Rancher cluster type: HA
Downstream cluster type: ec2 node cluster
Downstream K8s version: v1.20.13 for 2.5-head | 1.20.12 for 2.5.11

Testing:
deployed 1500 pods, 500 services, 500 ingresses, 500 secrets, 500 config map
Config maps: on average ~2x faster response time
Secrets: on average ~20-25% faster response time

didn't notice any improvements for other resources
confirmed that resources are listed correctly
confirmed that pages load faster after upgrade from 2.5.11 to 2.5-head


Add detectable output for puzzle completion

Note: May need to iterate this in the future depending on data required. Currently works via tellraw output


Added new Countries

Added new Countries as discussed on #39 .Sorry about closing last two pull requests,I'm new to this.

Thanks @ganes1410! This is what I asked for, but can I ask for a few changes?

I recognised I said "a few countries" but I think it would be best to just include all of them.
Could you sort them in alphabetical order? (That means moving the previous entries too)
(This is very minor) Our projects follow git commit guidelines, could you change the commit message to the present tense? And you can also add a bit more information about where the countries were picked from, if you used the country register.

@tvararu  I changed the things you asked for and this is where i pciked the countries from.

@tvararu  can i write commit messages this long?

@tvararu can i write commit messages this long?

@ganes1410 You sure can! How to do it depends on which way you are writing the commits.
If you are using an editor like Vim or Sublime Text, you can separate the parts of the commit message with double carriage returns, like this:
Header

Body

Body

And so on. You can write as much as you want.
If you are using the command line interface, you can specify separate -m sections for every part:
git commit -m "Header" -m "Body" -m "Body"

To write the commit I illustrated above, you can write:
git commit -m "Add full list of countries to examples" -m "The list is taken from https://en.wikipedia.org/wiki/List_of_national_capitals_in_alphabetical_order"

But using a git editor is probably easier, and it's how I do it.

@tvararu  is everything ok now ??

@ganes1410 yes! Thank you. 👏

@tvararu  I need to thank you for your guidance


Mixer runtime error: invalid memory address or nil pointer dereference

Describe the bug

Mixer blocks connections on service mesh. On Mixer log (attached) there is a recurrent message: error	panic during handler dispatch: runtime error: invalid memory address or nil pointer dereference
goroutine 378 [running]:

Expected behavior

Mixer should not reference a nil address memory

Steps to reproduce the bug

Deploy Istio

Deploy any operator which has a complex workflow with istio-sidecar (eg: https://github.com/gbaufake/kiali-test-mesh/tree/ansible-to-operator/operator/kiali-test-mesh-operator - make operator-k8s-deployment would do the work)

The mixer will block connections on the mesh and answers with 500

Logs

mixer.log

kiali-traffic-generator.log

Version

Istio.1.1.0-Snapshot.6

Installation

On-Premise and on AWS

Environment

Openshift (Kubernetes 1.12.4)
Openshift (Kubernetes 1.11.0)

Looks like ref.Controller could be nil here https://github.com/istio/istio/blob/master/mixer/adapter/kubernetesenv/cache.go#L147

@douglas-reid @bianpengyuan   I thought it was related to traffic generator, but I retested my operator by removing the traffic generator and it presented the same issue, now I noticed the problem is when I deploy the operator with sidecar.
Maybe the number of the operations on operator is overflowing the mixer somehow.

I think your operator does not run with any types of controller? Could you run kubectl get pods your-operator-pod -o jsonpath={.metadata.ownerReferences} to check that?

@gbaufake Any updates?

[map[controller:true blockOwnerDeletion:true apiVersion:apps/v1 kind:ReplicaSet name:kiali-test-mesh-operator-5ddf9d5c5d uid:496c6946-3f4e-11e9-807f-069b57c43aec]]%

@gbaufake The metadata looks good and should not cause any panic.
By not working do you mean your operator would not work with sidecar injected, or do you mean traffic generator always returns 500 when it has sidecar injected? Could you provide more details about your set up?

@bianpengyuan  by not working. I mean all the connections that go to istio-policy pod returns 503. I will retest this on Istio 1.1.0-rc2 because I was told it could be a race issue on the mixer.

I tested again rc.4 and it didn't to appear to be an issue anymore

Ok, thanks. I will close this issue then.


use django without making the whole project a django application

I have followed your example and the reference repository and I have written a new test file called test_djangodemo.py where I created two object using django model and then queried them.

@faysal-ishtiaq if we had two completely different CDMSs that were both using Django (let's assume one has an SQLite back-end and the other is using PostgreSQL) ...
Is there a straight-forward way that we can have connections open to both systems at the same time? What if there were three or more systems in use at the same time using Django ORM?
It seems like we're forced to use a single central Django settings instance (that is intended for a single Django project). If we must use this single instance - is there some way that we can add and remove database sessions dynamically?
The seems that the answer may require us to run django.setup() multiple times (but if we did, would this affect connections that are currently in use)?

In my opinion, most straight forward way is to use multiple database connection in a single Django instance. I think this link will explain better than I can
https://docs.djangoproject.com/en/3.2/topics/db/multi-db/

Agreed - but the current design of the library allows connection details to be added dynamically, e.g.
from opencdms import Clide, Climsoft

db1 = Clide('postgresql://admin:postgres@localhost:5432/clidedb')
# do some stuff to get some data from db1
db2 = Climsoft('mysql://admin:admin@localhost/climsoft'
# store data from db1 in db2

Imagine both are using Django and we don't know beforehand what connection details will be supplied. We have to django.setup() for Clide() before we start a second engine for Climsoft() - is there a way it could be done?

Agreed - but the current design of the library allows connection details to be added dynamically, e.g.
from opencdms import Clide, Climsoft

db1 = Clide('postgresql://admin:postgres@localhost:5432/clidedb')
# do some stuff to get some data from db1
db2 = Climsoft('mysql://admin:admin@localhost/climsoft'
# store data from db1 in db2

Imagine both are using Django and we don't know beforehand what connection details will be supplied. We have to django.setup() for Clide() before we start a second engine for Climsoft() - is there a way it could be done?

Django discourages altering settings at runtime. (https://docs.djangoproject.com/en/dev/topics/settings/#altering-settings-at-runtime) But a few people has done it. Here is a reference https://stackoverflow.com/questions/6585373/django-multiple-and-dynamic-databases . It's basically equivalent to creating a new instance of django. I guess we can do it in the provider. Such as the following -
from opencdms import Clide, Climsoft

db1 = Clide('postgresql://admin:postgres@localhost:5432/clidedb')
# in the Clide constructor we might spawn a new django instance with given database detail
db2 = Climsoft('mysql://admin:admin@localhost/climsoft'
# similar approach here

Should I look into it?

I agree that the likely outcome of investigating this is that we would take the safest option and terminate the existing instance of django and then rerun django.setup() with the new configuration for multiple databases.
Instead, let's treat Django systems as a special case for now where the user has to set up multiple databases in their settings configuration at the outset.
Closes #24


Updates

fixes:  source encoding problem - for irregular utf-8 codes in output  - causes fatal crash
update:  output cleanup, with error and success counters

Hi, I the solution proposed works for Python 3, but throws errors with Python 2. Also, I would like to keep the current output method, as it allows for quick identification of errors, indicated by [!].
Could you please add a commit with the requested changes?

Please wait, I have execution success for 2.7 and 3, recommended we also implement --limit argument for download_image.delta so that we can reduce travis-cli build time for testing the additional command-line arguments.

Working on the way that the program handles relative paths to be multiplatform.  (2.7 is experiencing an additional issue in relation to relative path construction)

Hi I appreciate the extra changes, however this changes the original scope of the PR. Please open another PR for other features/changes. As per your title, this PR is addressing issues in #5.

I have added a limit argument in both the bing and google scraper in https://github.com/rushilsrivastava/image-scrapers/commit/86effe9d6246756d34b50f50fed030aba54cd6d7


Users (GET/POST)

Endpoint /users

Since GitHub is being used for users therefore this ticket can be closed.


📝 Help us improve our release notes on GitHub

Hey Prisma friends 👋
We want to ensure our release notes are as helpful as possible to all of you. If you want to help us improve the release notes, it would be great if you could answer the questions below!
Also, if you have any other questions or comments about our release notes or general inspiration and suggestions for improvements, feel free to drop them in this issue as a comment!

How often do you read Prisma's release notes on GitHub?

How thoroughly do you read Prisma's release notes on GitHub?

Do you generally prefer longer or shorter release notes?

How do you learn about new releases?

I have to say I really like your release notes. Providing examples is a very good thing. Also separating the changes into major stuff and Fixes & Improvements is great.
One thing I would improve is to provide a little introduction. Maybe write one sentence about what your focus with the release was or what the most important feature you added is (e.g. "This release mainly focuses on migrations").
Then provide a brief list of the major changes. That list should just be bullet points with the headings from the major changes section. Pretty much the same thing you already have on Twitter but at the top of the release notes as well.


Update references to in-tree provider to k8s.io/legacy-cloud-providers

Signed-off-by: Stephen Augustus<EMAIL_ADDRESS>What type of PR is this?
/kind cleanup
What this PR does / why we need it:
This is part of the first phase of removing in-tree cloud providers (staging to k8s.io/legacy-cloud-providers). Reference: https://github.com/kubernetes/enhancements/blob/master/keps/sig-cloud-provider/20190125-removing-in-tree-providers.md#phase-1---moving-cloud-provider-code-to-staging
Which issue(s) this PR fixes:

Related: https://github.com/kubernetes/kubernetes/pull/77038
Special notes for your reviewer:
This is a first pass, which will be updated once https://github.com/kubernetes/kubernetes/pull/77038 merges and the in-tree provider has been published to https://github.com/kubernetes/legacy-cloud-providers.
It should not be merged until then.
/hold
Release note:
NONE

(tests are expected to fail here as the new import path "k8s.io/legacy-cloud-providers/azure" does not exist yet.)

/hold cancel

/test pull-cloud-provider-azure-unit
/test pull-cloud-provider-azure-e2e-ccm

/assign @feiskyer @andyzhangx


Node can't find globally installed packages

If this is a question about how to use NVM4W, please use stackoverflow instead.
If this is an issue regarding antivirus, make sure you search the existing issues first.
My Environment

[ ] Windows 7 or below (not truly supported due to EOL - see wiki for details)

[ ] Windows 8

[ ] Windows 8.1

[x] Windows 10

[ ] Windows 10 IoT Core

[ ] Windows Server 2012

[ ] Windows Server 2012 R2

[ ] Windows Server 2016

[ ] My Windows installation is non-English.

I'm using NVM4W version:

[x] 1.1.7
[ ] 1.1.6
[ ] 1.1.5
[ ] 1.1.4
[ ] 1.1.3
[ ] 1.1.2
[ ] 1.1.1
[ ] Older
[ ] OTHER (Please Specify)

I have already...

[x] read the README to be aware of npm gotchas & antivirus issues.
[x] reviewed the wiki to make sure my issue hasn't already been resolved.
[x] verified I'm using an account with administrative privileges.
[x] searched the issues (open and closed) to make sure this isn't a duplicate.
[x] made sure this isn't a question about how to use NVM for Windows, since gitter is used for questions and comments.

My issue is related to (check only those which apply):

[ ] settings.txt
[ ] proxy support (Have you tried version 1.1.0+?)
[ ] 32 or 64 bit support (Have you tried version 1.1.3+?)
[ ] Character escaping (Have you tried version 1.1.6+?)
[x] A standard shell environment (terminal/powershell)
[x] A non-standard shell environment (Cmder, Hyper, Cygwin, git)

Expected Behavior
Running a script using node from the command line should work with globally installed npm modules.
Actual Behavior
Error: Cannot find module xxxxxxx from scripts as well as the node REPL for any globally installed modules.
Steps to reproduce the problem:
Hi All,
I installed nvm-windows v1.1.7 along with node v10.15.1. I was even able to upgrade npm to v6.8.0 following the workarounds in other issues. Installing packages both globally and per project works as expected, and the global packages are installed to C:\Program Files\nodejs\node_modules. The npm cli works correctly and recognizes the packages:
C:\
λ nvm version
1.1.7

C:\
λ node --version
v10.15.1

C:\
λ npm --version
6.8.0

C:\
λ npm -g ls --depth=0
C:\Program Files\nodejs
+--<EMAIL_ADDRESS>+--<EMAIL_ADDRESS>+--<EMAIL_ADDRESS>+--<EMAIL_ADDRESS>+--<EMAIL_ADDRESS>+--<EMAIL_ADDRESS>+--<EMAIL_ADDRESS>`--<EMAIL_ADDRESS>
However, if I try to require any of these packages in a script or using the node REPL, I get the following errors:
λ node convert.js
internal/modules/cjs/loader.js:583
    throw err;
    ^

Error: Cannot find module 'neat-csv'
    at Function.Module._resolveFilename (internal/modules/cjs/loader.js:581:15)
    at Function.Module._load (internal/modules/cjs/loader.js:507:25)
    at Module.require (internal/modules/cjs/loader.js:637:17)
    at require (internal/modules/cjs/helpers.js:22:18)
    at Object.<anonymous> (C:\Users\Jeff\Documents\VSCode\Trade Log\convert.js:6:13)
    at Module._compile (internal/modules/cjs/loader.js:689:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:700:10)
    at Module.load (internal/modules/cjs/loader.js:599:32)
    at tryModuleLoad (internal/modules/cjs/loader.js:538:12)
    at Function.Module._load (internal/modules/cjs/loader.js:530:3)

λ node
> const Linter = require('eslint').Linter;
{ Error: Cannot find module 'eslint'
    at Function.Module._resolveFilename (internal/modules/cjs/loader.js:581:15)
    at Function.Module._load (internal/modules/cjs/loader.js:507:25)
    at Module.require (internal/modules/cjs/loader.js:637:17)
    at require (internal/modules/cjs/helpers.js:22:18) code: 'MODULE_NOT_FOUND' }
>

Even stranger -- I have the eslint and prettier extensions installed for vscode, and they both work using the global packages.
Both NVM_HOME and NVM_SYMLINK are defined in my environment variables and there is a correct settings.txt file in NVM_HOME. Everything else works great! For whatever reason, node can't find the global packages. If I install the package in the project directory, it works.
Am I missing something? This is a vanilla install to the default locations. I have tried running the script and REPL in both the Windows Terminal and Cmder.
Any help would be appreciated!

I have the same issue

This sounds less like an NVM4W issue, and more of a "how to use npm" issue.
Global modules aren't accessible within a project unless you install them locally. For example, you can't run npm i -g somemodule and then in your code use require('somemodule'). Node scripts do not look for global modules. They only look in the local project root and up the directory chain. Global modules are typically for installing CLI utilities or running npm scripts.
Instead, just run npm i somemodule in your project root, then you can require it in your script.

Hi @coreybutler,
Thanks for the response.  It may well be a  "how to use npm" as I had never touched node/npm until a few weeks ago, but I believe that I followed the installation instructions to the letter.
Prior to installation I uninstalled NPM, deleted 'program files\nodejs', '\appdata\npm', all the path entries and any other reference to node stuff I could find and deleted 'node_modules' folder in  the project.
I installed NVM,installed NPM, and installed 'yarn' attempting , however, thinking about it as I read your message I can't say hand on heart that a) I didn't use 'npm i -g' or that I didn't make a mistake.
I'll go over it again today.  Have a good day

Just in case anybody else comes across this issue in their googling, it's because you're missing (or have misconfigured) NODE_PATH

after global installing package, you have two ways:

require('/path/to/global/node_modules/global-package-name.js')
npm link global-package-name - this command creates symlink in local node_modules directory


Fix deepseeed crash with Sentence Transformer Trainer

Loss model override logic updated and model save overridden for gaudi to handle state_dict.
Update training_nli.py:
...
args = SentenceTransformerGaudiTrainingArguments(
...
        deepspeed="deepspeed_zero_2.json",
    )

command line:
python ../../gaudi_spawn.py --world_size 2 --use_deepspeed training_nli.py
Fixes the following crashes when using deepspeed zero2
[rank0]: Traceback (most recent call last):
[rank0]:   File "/root/optimum-habana/examples/sentence-transformers-training/nli/training_nli.py", line 125, in <module>
[rank0]:     main()
[rank0]:   File "/root/optimum-habana/examples/sentence-transformers-training/nli/training_nli.py", line 106, in main
[rank0]:     trainer.train()
[rank0]:   File "/usr/local/lib/python3.10/dist-packages/optimum/habana/transformers/trainer.py", line 553, in train
[rank0]:     return inner_training_loop(
[rank0]:   File "/usr/local/lib/python3.10/dist-packages/optimum/habana/transformers/trainer.py", line 978, in _inner_training_loop
[rank0]:     tr_loss_step = self.training_step(model, inputs)
[rank0]:   File "/usr/local/lib/python3.10/dist-packages/optimum/habana/transformers/trainer.py", line 1575, in training_step
[rank0]:     loss = self.compute_loss(model, inputs)
[rank0]:   File "/usr/local/lib/python3.10/dist-packages/optimum/habana/sentence_transformers/st_gaudi_trainer.py", line 325, in compute_loss
[rank0]:     loss = loss_fn(features, labels)
[rank0]:   File "/usr/local/lib/python3.10/dist-packages/torch/nn/modules/module.py", line 1535, in _wrapped_call_impl
[rank0]:     return self._call_impl(*args, **kwargs)
[rank0]:   File "/usr/local/lib/python3.10/dist-packages/torch/nn/modules/module.py", line 1544, in _call_impl
[rank0]:     return forward_call(*args, **kwargs)
[rank0]:   File "/usr/local/lib/python3.10/dist-packages/sentence_transformers/losses/SoftmaxLoss.py", line 107, in forward
[rank0]:     reps = [self.model(sentence_feature)["sentence_embedding"] for sentence_feature in sentence_features]
[rank0]:   File "/usr/local/lib/python3.10/dist-packages/sentence_transformers/losses/SoftmaxLoss.py", line 107, in <listcomp>
[rank0]:     reps = [self.model(sentence_feature)["sentence_embedding"] for sentence_feature in sentence_features]
[rank0]:   File "/usr/local/lib/python3.10/dist-packages/torch/nn/modules/module.py", line 1535, in _wrapped_call_impl
[rank0]:     return self._call_impl(*args, **kwargs)
[rank0]:   File "/usr/local/lib/python3.10/dist-packages/torch/nn/modules/module.py", line 1585, in _call_impl
[rank0]:     result = forward_call(*args, **kwargs)
[rank0]:   File "/usr/local/lib/python3.10/dist-packages/deepspeed/utils/nvtx.py", line 15, in wrapped_fn
[rank0]:     ret_val = func(*args, **kwargs)
[rank0]:   File "/usr/local/lib/python3.10/dist-packages/deepspeed/runtime/engine.py", line 1856, in forward
[rank0]:     if self.module.training:
[rank0]:   File "/usr/local/lib/python3.10/dist-packages/deepspeed/runtime/engine.py", line 484, in __getattr__
[rank0]:     return getattr(self, name)
[rank0]:   File "/usr/local/lib/python3.10/dist-packages/deepspeed/runtime/engine.py", line 484, in __getattr__
[rank0]:     return getattr(self, name)
[rank0]:   File "/usr/local/lib/python3.10/dist-packages/deepspeed/runtime/engine.py", line 484, in __getattr__
[rank0]:     return getattr(self, name)
[rank0]:   [Previous line repeated 486 more times]
[rank0]:   File "/usr/local/lib/python3.10/dist-packages/deepspeed/runtime/engine.py", line 483, in __getattr__
[rank0]:     if name in dir(self):
[rank0]:   File "/usr/local/lib/python3.10/dist-packages/torch/nn/modules/module.py", line 2546, in __dir__
[rank0]:     module_attrs = dir(self.__class__)
[rank0]: RecursionError: maximum recursion depth exceeded while calling a Python object

[rank0]: Traceback (most recent call last):
[rank0]:   File "/root/optimum-habana/examples/sentence-transformers-training/nli/training_nli.py", line 125, in <module>
[rank0]:     main()
[rank0]:   File "/root/optimum-habana/examples/sentence-transformers-training/nli/training_nli.py", line 106, in main
[rank0]:     trainer.train()
[rank0]:   File "/usr/local/lib/python3.10/dist-packages/optimum/habana/transformers/trainer.py", line 553, in train
[rank0]:     return inner_training_loop(
[rank0]:   File "/usr/local/lib/python3.10/dist-packages/optimum/habana/transformers/trainer.py", line 1052, in _inner_training_loop
[rank0]:     self._maybe_log_save_evaluate(tr_loss, _grad_norm, model, trial, epoch, ignore_keys_for_eval)
[rank0]:   File "/usr/local/lib/python3.10/dist-packages/optimum/habana/transformers/trainer.py", line 1269, in _maybe_log_save_evaluate
[rank0]:     self._save_checkpoint(model, trial, metrics=metrics)
[rank0]:   File "/usr/local/lib/python3.10/dist-packages/optimum/habana/transformers/trainer.py", line 1327, in _save_checkpoint
[rank0]:     self.save_model(output_dir, _internal_call=True)
[rank0]:   File "/usr/local/lib/python3.10/dist-packages/optimum/habana/transformers/trainer.py", line 1630, in save_model
[rank0]:     self._save(output_dir, state_dict=state_dict)
[rank0]:   File "/usr/local/lib/python3.10/dist-packages/optimum/habana/sentence_transformers/st_gaudi_trainer.py", line 724, in _save
[rank0]:     self.model.save_pretrained(output_dir, safe_serialization=self.args.save_safetensors)
[rank0]:   File "/usr/local/lib/python3.10/dist-packages/sentence_transformers/SentenceTransformer.py", line 1072, in save_pretrained
[rank0]:     self.save(
[rank0]:   File "/usr/local/lib/python3.10/dist-packages/sentence_transformers/SentenceTransformer.py", line 1037, in save
[rank0]:     module.save(model_path, safe_serialization=safe_serialization)
[rank0]:   File "/usr/local/lib/python3.10/dist-packages/sentence_transformers/models/Transformer.py", line 180, in save
[rank0]:     self.auto_model.save_pretrained(output_path, safe_serialization=safe_serialization)
[rank0]:   File "/usr/local/lib/python3.10/dist-packages/transformers/modeling_utils.py", line 2691, in save_pretrained
[rank0]:     state_dict_split = split_torch_state_dict_into_shards(
[rank0]:   File "/usr/local/lib/python3.10/dist-packages/huggingface_hub/serialization/_torch.py", line 330, in split_torch_state_dict_into_shards
[rank0]:     return split_state_dict_into_shards_factory(
[rank0]:   File "/usr/local/lib/python3.10/dist-packages/huggingface_hub/serialization/_base.py", line 108, in split_state_dict_into_shards_factory
[rank0]:     storage_id = get_storage_id(tensor)
[rank0]:   File "/usr/local/lib/python3.10/dist-packages/huggingface_hub/serialization/_torch.py", line 359, in get_torch_storage_id
[rank0]:     unique_id = storage_ptr(tensor)
[rank0]:   File "/usr/local/lib/python3.10/dist-packages/huggingface_hub/serialization/_torch.py", line 410, in storage_ptr
[rank0]:     return tensor.storage().data_ptr()
[rank0]:   File "/usr/local/lib/python3.10/dist-packages/torch/storage.py", line 956, in data_ptr
[rank0]:     return self._data_ptr()
[rank0]:   File "/usr/local/lib/python3.10/dist-packages/torch/storage.py", line 960, in _data_ptr
[rank0]:     return self._untyped_storage.data_ptr()
[rank0]: RuntimeError: Attempted to access the data pointer on an invalid python storage.

Fixes # (issue)
Before submitting

[ ] This PR fixes a typo or improves the docs (you can dismiss the other checks if that's the case).
[ ] Did you make sure to update the documentation with your changes?
[ ] Did you write any new necessary tests?

@nngokhale  after checking the eval results you may need setup the learning rate like 1e-7 you can get the reasonable results. All others seem ok...
args = SentenceTransformerGaudiTrainingArguments(
# Required parameter:
learning_rate=1e-7,
output_dir=output_dir,
...

@nngokhale I tested with your newly updated the results seems all reasonable. Thanks for your update!

@nngokhale, thanks for addressing the comment. I will finish the review in a bit

@nngokhale with the new addition and using peft. It is missing from the default oh installation. Please add a requirements.txt file and add the correct version

@nngokhale

please run make style and fix the errors.
@nngokhale, It will be good if you can add a test or update/complete the available ones.

Please also run
make test_installs
python -m pytest tests/sentence_transformers/test_training_nli.py
python -m pytest tests/sentence_transformers/test_training_stsbenchmark.py

@nngokhale with the new addition and using peft. It is missing from the default oh installation. Please add a requirements.txt file and add the correct version.

Surprisingly PEFT is already installed by the gaudi pytorch docker. I didn't need to install it. Should I still create a requirements.txt?

@nngokhale

please run make style and fix the errors.
It will be great if you can add a test or update/complete the available ones and integrate them with test_sentence_transformers

Please also run
make test_installs
python -m pytest tests/sentence_transformers/test_training_nli.py
python -m pytest tests/sentence_transformers/test_training_stsbenchmark.py

Added peft test to each of the above tests.
Test Results:
=============================================================================================================================== test session starts ================================================================================================================================
platform linux -- Python 3.10.12, pytest-7.4.4, pluggy-1.5.0
rootdir: /root/optimum-habana
configfile: setup.cfg
collected 2 items
tests/sentence_transformers/test_training_nli.py ..                                                                                [100%]
================================================================================================================================= warnings summary =================================================================================================================================
tests/sentence_transformers/test_training_nli.py::test_training_nli[False]
/usr/local/lib/python3.10/dist-packages/torch/distributed/distributed_c10d.py:366: UserWarning: torch.distributed.reduce_op is deprecated, please use torch.distributed.ReduceOp instead
warnings.warn(
tests/sentence_transformers/test_training_nli.py::test_training_nli[False]
/usr/local/lib/python3.10/dist-packages/transformers/deepspeed.py:24: FutureWarning: transformers.deepspeed module is deprecated and will be removed in a future version. Please import deepspeed modules directly from transformers.integrations
warnings.warn(
tests/sentence_transformers/test_training_nli.py::test_training_nli[False]
tests/sentence_transformers/test_training_nli.py::test_training_nli[True]
/root/optimum-habana/optimum/habana/transformers/training_args.py:296: FutureWarning: --use_hpu_graphs is deprecated and will be removed in a future version of 🤗 Optimum Habana. Use --use_hpu_graphs_for_training or --use_hpu_graphs_for_inference instead.
warnings.warn(
tests/sentence_transformers/test_training_nli.py::test_training_nli[False]
tests/sentence_transformers/test_training_nli.py::test_training_nli[True]
/usr/local/lib/python3.10/dist-packages/huggingface_hub/file_download.py:1150: FutureWarning: resume_download is deprecated and will be removed in version 1.0.0. Downloads always resume when possible. If you want to force a new download, use force_download=True.
warnings.warn(
-- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html
==================================================================================================================== 2 passed, 6 warnings in 117.77s (0:01:57) =====================================================================================================================
=============================================================================================================================== test session starts ================================================================================================================================
platform linux -- Python 3.10.12, pytest-7.4.4, pluggy-1.5.0
rootdir: /root/optimum-habana
configfile: setup.cfg
collected 2 items
tests/sentence_transformers/test_training_stsbenchmark.py ..                                                                                [100%]
================================================================================================================================= warnings summary =================================================================================================================================
tests/sentence_transformers/test_training_stsbenchmark.py::test_training_stsbenchmark[False]
/usr/local/lib/python3.10/dist-packages/torch/distributed/distributed_c10d.py:366: UserWarning: torch.distributed.reduce_op is deprecated, please use torch.distributed.ReduceOp instead
warnings.warn(
tests/sentence_transformers/test_training_stsbenchmark.py::test_training_stsbenchmark[False]
/usr/local/lib/python3.10/dist-packages/transformers/deepspeed.py:24: FutureWarning: transformers.deepspeed module is deprecated and will be removed in a future version. Please import deepspeed modules directly from transformers.integrations
warnings.warn(
tests/sentence_transformers/test_training_stsbenchmark.py::test_training_stsbenchmark[False]
tests/sentence_transformers/test_training_stsbenchmark.py::test_training_stsbenchmark[True]
/root/optimum-habana/optimum/habana/transformers/training_args.py:296: FutureWarning: --use_hpu_graphs is deprecated and will be removed in a future version of 🤗 Optimum Habana. Use --use_hpu_graphs_for_training or --use_hpu_graphs_for_inference instead.
warnings.warn(
tests/sentence_transformers/test_training_stsbenchmark.py::test_training_stsbenchmark[False]
tests/sentence_transformers/test_training_stsbenchmark.py::test_training_stsbenchmark[True]
/root/optimum-habana/optimum/habana/transformers/training_args.py:366: FutureWarning: evaluation_strategy is deprecated and will be removed in version 4.46 of 🤗 Transformers. Use eval_strategy instead
warnings.warn(
tests/sentence_transformers/test_training_stsbenchmark.py::test_training_stsbenchmark[False]
tests/sentence_transformers/test_training_stsbenchmark.py::test_training_stsbenchmark[True]
/usr/local/lib/python3.10/dist-packages/huggingface_hub/file_download.py:1150: FutureWarning: resume_download is deprecated and will be removed in version 1.0.0. Downloads always resume when possible. If you want to force a new download, use force_download=True.
warnings.warn(
-- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html
==================================================================================================================== 2 passed, 8 warnings in 127.43s (0:02:07) =====================================================================================================================

@nngokhale  confirmed with your two testcases and all passed. Thanks for adding the test!
tests/sentence_transformers/test_training_nli.py ..
================================================================== 2 passed, 7 warnings in 141.40s (0:02:21)
tests/sentence_transformers/test_training_stsbenchmark.py ..
================================================================== 2 passed, 9 warnings in 174.33s (0:02:54) =======

@nngokhale with the new addition and using peft. It is missing from the default oh installation. Please add a requirements.txt file and add the correct version.

Surprisingly PEFT is already installed by the 1.17 gaudi pytorch docker. I didn't need to install it. This may be due inclusion of neural compressor. (Required-by: neural_compressor_3x_pt) Should I still create a requirements.txt?

No need, thanks

The docs for this PR live here. All of your documentation changes will be reflected on that endpoint. The docs are available until 30 days after the last update.


field label case

Form fields with multiple words mix up title case and non-title case. For example, "Interval length" (lower case l) and "Interval Label" (upper case L). Should carefully go through the templates to catch these issues.

Is the preference that these all be changed to non-title case?

yes


Process part of the columns, instead of giving an error?

When the number of columns is above 1000, we don't process the split. See https://github.com/huggingface/datasets-server/issues/1143.
Should we instead "truncate", and only process the first 1000 columns, and give a hint to the user that only the first 1000 columns were used?

reopen. Discussed here: https://huggingface.slack.com/archives/C3XM337MW/p1707931408008379?thread_ts=1707928074.147239&cid=C3XM337MW (internal)

possibly we should truncate and show a subset of columns, instead of nothing

for https://huggingface.co/datasets/LargeWorldModel/ultrachat_qa_mix_1M

It currenlty affects 2281 splits (split-first-rows step)


README and dev doc updates

Consolidate all dev docs into CONTRIBUTING.md
Document the release process (such as I understand it)

Just one nit, otherwise LGTM. Thanks.

Just to clarify—is the nit your comment above about how to publish docs, or was there another one?


For us, the problem was that there was no write permissions to /var/www/.python-eggs. If that's the problem, you just need to add permissions there.

The attempted writing failure could be seen in the Apache logs. Check here to see if that's your error too.
Originally posted by @golmschenk in https://github.com/cvondrick/vatic/issues/24#issuecomment-114936611
Hi,I think I have the same problem that '/var/www/.'did not have '.python-eggs',So what can I do? Please help me.I am green hand,and do not understand 'add permissions'.Thank you very much.

sudo

I am also experiencing this; my '/var/www/' folder does not contain '.python-eggs'

Plesse re-install it carefully，or my QQ:1329844541,I sent ‘.python-eggs’ to you. My blog SCDN ‘https://blog.csdn.net/qq_26572229/article/details/83505123’   error2  wrote how to solve.

I am also experiencing this; my '/var/www/' folder does not contain '.python-eggs'

If it help,please 'give a thumb' for me.

I am also experiencing this; my '/var/www/' folder does not contain '.python-eggs'

If it help,please 'give a thumb' for me.

The link you posted returns error 404. Could you tell me the way to fix this problem? Thank you!

@ShiJunnan Have you solved that problem? Could you tell me ? Thank you very much!


Increate .travis.yml consistency between repos

aspnet/Universe#349
minimize dotnet setup time; no need for caching

:shipit:

6eec856


how to change the icons ?

Hello,
Could you explain how to change the icon marker and, according to the issue #7, how to change the image size by using divId.
Thank you,

For your second question, I believe this is how you specify the divId:
{% leaflet_map { "zoom" : 9,
                 "divId" : "mydiv123" } %}

    {% leaflet_marker { "latitude" : 41.881832,
                        "longitude" : -87.623177,
                        "popupContent" : "Hello World from Chicago!" } %}

{% endleaflet_map %}

You would then specify the CSS for that particular id:
 #mydiv123 {
  height: 600px;
}

Let me know if that doesn't work. For your first question, I will have to look a bit deeper into specifying of customer marker images...

Yesssss that works !

I came across this issue while trying to find out how to set custom marker icons. Is this available nowadays?


Exceptions/variables still visible after stopping debugging and unresponsive variables window

VSCode Version: 0.10.12-alpha
OS Version: Windows 10

Steps to Reproduce:

Start debugging a Node.js project that will throw an exception
Click on an item in the Call Stack

It will show a loading icon next to Exceptions in the variables list.

Stop debugging before it loads the exception

Actual:
Variables list still tries to load exceptions after stopping debugging and the variables windows becomes unresponsive even after stopping and restarting debugging.

Fixed yesterday


Update Jawn and Shapeless

Current coverage is 77.40%

Merging #205 into master will decrease coverage by -2.12% as of 7edd024

Powered by Codecov. Updated on successful CI builds.


Bugfix/js/regex with undefined value

prevent regex() from returning true when value is undefined
if key is not defined or if value is undefined, the regex should not evaluate it because it can lead
to false positive.
The undefined type is evaluated as a string 'undefined',\i undefined should be
evaluated with the "exist" operator

Ah, yes, totally, you're right.
I won't have access to my computer until this weekend so feel free to add the needed change.


Sequential composition continues after cancel

Software version
metasync: 0.3.26
Node: 8.11.3
NPM: 5.6.0
The functions in a sequential composition is called after the cancellation.
For example, the next code ...
const metasync = require('metasync')

let mutable

function fn1 (data, cb) {
  mutable = 'fn1'
  setTimeout(() => {
    console.log(`fn1 has been processed (data: ${data})`)
    cb(null, 1)
  }, 300)
}

function fn2 (data, cb) {
  mutable = 'fn2'
  setTimeout(() => {
    console.log(`fn2 has been processed (data: ${data})`)
    fc.cancel()
    cb(null, 2)
  }, 300)
}

function fn3 (data, cb) {
  mutable = 'fn3'
  setTimeout(() => {
    console.log(`fn3 has been processed (data: ${data})`)
    cb(null, 3)
  }, 200)
}

function fn4 (data, cb) {
  mutable = 'fn4'
  setTimeout(() => {
    console.log(`fn4 has been processed (data: ${data})`)
    cb(null, 4)
  }, 300)
}
const fc = metasync([fn1, fn2, fn3, fn4])

fc([0], (err, data) => {
  if (err) {
    console.log(err.message, 'data:', data)
  } else {
    console.log('Process finished. data:', data)
  }
})

setTimeout(() => {
  console.log('mutable:', mutable)
}, 2000)

... outputs
fn1 has been processed (data: 0)
fn2 has been processed (data: 0,1)
Metasync: asynchronous composition canceled data: undefined
fn3 has been processed (data: 0,1)
fn4 has been processed (data: 0,1)
mutable: fn4

I assume that the output should be
fn1 has been processed (data: 0)
fn2 has been processed (data: 0,1)
Metasync: asynchronous composition canceled data: undefined
mutable: fn2

Thanks for your contribution, @igorgo, fixed in Version 0.3.27


Fix isPrime method.

If number is divisible, it should return NO.
Reference #94.

Merged.

Thanks.

And you :)

@EvgenyKarkan , @ahanmal
I believe this error was introduced during "bulk upload" process when EKAlgorithms was in process of creation and setup. I think it would be great if in future we could add more test coverage to prevent things like this one in a future.

@stanislaw Adding some test coverage doesn't sound like a bad idea. I will add some. I remember adding this method to the repo when it was young, and then I guess during refactoring, it broke.
Expect a PR soon.

See #96


Contributor Addition?

Grammar and contributor request

This list is auto-generated from the commits. If you have submitted code, your alias or name should end up in the next release notes automatically.


Replace conventional commits recommendation

Commit Description
Replace conventional commits recommendation with overall suggestions. An optional template is provided alongside examples.
View Rendered Documents

Preparing Your Changes
Contributing Guide

GIF

bors merge


Introduce a monomorphization cache

Instead of creating one monomorphized copy per expression, we should create a monomorphization cache to keep track of monomorphized copies that we have created in the past, so that we can eliminate duplicate computation

See this closed PR description for additional context and insight into a possible design: https://github.com/FuelLabs/sway/issues/2723#issue-1361870315

Closing this issue based on chatting with @IGI-111 as it will be included in the implementation for #1267.


Contribute vscode-trace-extension repository to the Eclipse CDT-cloud project

Hello,
The Trace Compass team would like to contribute the vscode-trace-extension to the Eclipse CDT.cloud project [1] so that the further development can be done under the Eclipse open source foundation. The Eclipse CDT.cloud is already the home of the main components that are used by the vscode-trace-extension.
The goal of this project is to provide the trace-viewer capabilities as VS Code plugin so that all VS Code compatible editors like Theia, VSCodium, VS Code etc. can install and take advantage of the trace viewer functionality and not "just" Theia based products. There has been also an increasing interest of this VS Code plug-in in the community.
The vscode-trace-extension repository only contains code to integrate with VS Code APIs. All core, trace-viewing source code are provided by the Theia-independent components of theia-trace-extension [2] which are deployed to NPM [3] and [4].
I'd like to start the contribution process in the coming week(s). Please let me know if you have any questions and concerns.
Best Regards
Bernd
[1] https://github.com/eclipse-cdt-cloud
[2] https://github.com/eclipse-cdt-cloud/theia-trace-extension
[3] https://www.npmjs.com/package/traceviewer-base
[4] https://www.npmjs.com/package/traceviewer-react-components

@ngondalia FYI

I've notified the eclipse-cdt-cloud project about this intention on the following discussion page:
https://github.com/eclipse-cdt-cloud/cdt-cloud/discussions/26

I started the contribution process by opening an issue at IPLab for IP checks:
https://gitlab.eclipse.org/eclipsefdn/emo-team/iplab/-/issues/6928

Ticket to change GitHub organizations: https://gitlab.eclipse.org/eclipsefdn/helpdesk/-/issues/2617


Generate library on 'npm install' and 'npm publish' automatically

This allow to build automatically the lib folder when code is downloaded from GitHub and just before to upload it to npm. Also it removes empty dependencies objects.

This is highly error prone and requires a lot of extra dependencies which is why I removed it from the other PR. Not the route we want to go.

It good to have it on development environments, but it's ok if you don't want it.


fix: pin the kubernetese-client version

there is an issue when using kube-client 8.3.7

Pull Request Test Coverage Report for Build 8

0 of 0   changed or added relevant lines in 0 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage remained the same at 100.0%

Totals

Change from base Build 7:
0.0%

Covered Lines:
65

Relevant Lines:
65

💛  - Coveralls


Update 311-DEV.yaml

This PR resolves #407

But spopt does not seem to depend on esda... Am I missing anything? Is that a dependency via another package?

But spopt does not seem to depend on esda... Am I missing anything? Is that a dependency via another package?

Yes, spaghetti.

Not sure how deep we need to go but it won't hurt for sure.

Yeah, if the failure wasn't in the PySAL ecosystem then I wouldn't be as for this.


electron_12: 12.0.5 -> 12.0.6

Motivation for this change
https://github.com/electron/electron/releases/tag/v12.0.6
Things done

[x] Tested using sandboxing (nix.useSandbox on NixOS, or option sandbox in nix.conf on non-NixOS linux)
Built on platform(s)

[x] NixOS

[x] Tested execution of all binary files (usually in ./result/bin/)
[x] Fits CONTRIBUTING.md.

https://github.com/NixOS/nixpkgs/pull/121582#issuecomment-831311499

Result of nixpkgs-review pr 121862 at 1d0bf51a run on x86_64-linux 1

7 packages built successfully:

electron (electron_12)
element-desktop
freetube
jitsi-meet-electron
nix-tour
obsidian
stretchly


Unexpected "No such variable at line ..." and "Syntax error at line ..." error messages when BASIC DATA statement has a colon character

When run, the following code results in a No such variable at line 110 error:
100 REPEAT
110   READ A%
120 UNTIL A% = 255
130 DATA 1:REM
140 DATA 255

If you remove the REM from line 130 and re-run the program, then the "Syntax error at line 110` error message gets displayed instead.
If you next remove the : character from line 130 and re-run the program, then the program completes successfully as expected.
If you next remove line 140 and re-run the program, then the expected "Out of DATA at line 110" error message is displayed.
Within a DATA statement with valid data, if the BBC BASIC interpreter should encounter an : character, then the colon and all text that appears after should be ignored like a comment, except when the colon is enclosed within double quotation marks, as that colon is embedded within a string of text which happens to be an entry of String DATA.
I previously reported this as an issue in the Agon BBC Basic repo; as expected, this issue exists in the 24-bit ADL version of Agon BBC BASIC as well.

Note: Check whether this is a quirk of BBC BASIC for Z80 first.


Filter doesnt seem to be respecting the hash still

I think its because the if statement should be if (Object.keys(hash).length > 2 && hashFilter === undefined) {
return;
}
Need to test


More informative dump_tree(): always display class_name and control_type

Summary:
Enabling class_name and control_type always display in dump_tree() helps finding Qt5 application windows with UIA.
Detailed description:
Some elements named GroupBox, Custom, Thumb, ListBox may appear without class_name in dump_tree() when control_type is known.
Some such elements (depending on the Qt application itself) can be opened and defined as WindowSpecification using child_window() by specific class_name:
child_window(class_name="prop::PropertyParamsWidget", control_type="Group")
But when dumping the active window through dump_tree(), we will not see either the class_name or the control_type, although pywinauto can successfully interact with them.
child_window text will also not show up in the output from dump_tree():
Control Identifiers:

GroupBox - ''    (L1359, T257, R1664, B275)
['GroupBox']

This is not comfortable, and I would like dump_tree() to provide complete information with which we can use to interact with the application.
The print_control_identifiers() function explicitly states that class_name = None if control_type was found:
pywinauto\base_application.py:
if control_type:
    class_name = None  # no need for class_name if control_type exists
else:
    control_type = None  # if control_type is empty, still use class_name instead

Removing these rules from the source code makes it possible to see all the necessary parameters for our window:
Control Identifiers:

GroupBox - ''    (L1359, T257, R1664, B275)
['GroupBox']
child_window(class_name="prop::PropertyParamsWidget", control_type="Group")

The dump is more informative and we can use it to get information about the GroupBox, Custom, Thumb, ListBox elements as windows.
Environment:
OS: Windows 10
Python: 3.9.1
pywinauto: 0.6.8
pywinauto application settings :
backend='uia'
allow_magic_lookup=False

allow_magic_lookup = False helps to gain in performance and the examples provide code specifically for this case.

Thanks for detailed explanation. It makes sense definitely. Merged.