Node creation sample

#13 Node creation sample. Please review if it is good for a merge.

Hey @AmbicaY! Thanks so much for the PR. The first part looks good where it creates the node but then you have to add all the pollers which is where things can get confusing. If you're adding a Windows machine it's easy enough to get a distinct list of pollers that have been set to enabled in Orion.Pollers with this query:
SELECT DISTINCT PollerType
FROM Orion.Nodes AS Nodes
INNER JOIN Orion.Pollers AS Pollers ON Nodes.NodeID = Pollers.NetObjectID
WHERE Nodes.Vendor = 'Windows'
AND Pollers.NetObjectType = 'N'
AND Pollers.Enabled = 'True'
AND Nodes.ObjectSubType = 'SNMP'

That should produce this list:
N.AssetInventory.Snmp.Generic
N.Cpu.SNMP.HrProcessorLoad
N.Details.SNMP.Generic
N.Memory.SNMP.HrStorage
N.ResponseTime.ICMP.Native
N.Routing.SNMP.Ipv4RoutingTable
N.Routing.SNMP.Ipv6RoutingTable
N.Status.ICMP.Native
N.Topology_Layer3.SNMP.ipNetToMedia
N.Uptime.SNMP.Generic

The fields that are required to create a new poller are these:

PollerType (example, "N.Uptime.SNMP.Generic")
NetObject (example, "N:2")
NetObjectType (example, "N")
NetObjectID (example, 2)
Enabled (example, "True")

This is the entire process in PowerShell for reference.
https://github.com/solarwinds/OrionSDK/blob/master/Samples/PowerShell/CRUD.AddNode.ps1
You want to make some changes to it and send me a note when you want me to review it again? I promise I won't wait weeks this time! :)


F# Azure Functions don't get all values initialized

Not all F# values are initialized, possibly due to the Run() method being invoked via reflection.
E.g.,
let list = []
let Run(myTimer: TimerInfo, log: TraceWriter) =
    log.Info(sprintf "value=%A" list)

Results in the output of value=[], but placing a value inside the list causes it to be null:
let list = [0]
let Run(myTimer: TimerInfo, log: TraceWriter) =
    log.Info(sprintf "value=%A" list)

Results in the output of value=<null>.  Similar behavior can be observed with let list = new System.Text.StringBuilder().
Workaround:
Replace the value with a function, e.g., let list = [0] -> let getList() = [0].

related: https://github.com/Azure/azure-webjobs-sdk-script/issues/1247 ?

Good call, that looks like the same issue: reference types are being defaulted to null and value types are getting zeros.  Closing this in favor of the other.


Keep Memory cache when notebook cell changes

#1214 modifies get_func_name function to prevent invalidating the cache when jupyter notebook kernel restarts.
This PR further modifies get_func_name to prevent invalidating cache, when the notebook cell, which contains the cached function, changes.
This is desirable, because we only want to invalidate the cache when the function code changes, rather than arbitrary code in the cell where the function is defined.
Tracking the function code change is already properly implemented via get_func_code.
I have tested the change manually by monkey-patching get_func_name and using Memory(verbose=True) to see, what name is assigned to the function cache, and whether cache is hit or not.
Cache is invalidated on jupyter kernel restart:

before this change: No
after this change: No

Cache is invalidated on code change in notebook cell outside the cached function

before this change: Yes
after this change: No

Cache is invalidated on code change within the cached function

before this change: Yes
after this change: Yes

sorry, wrong target repository

No worries, thanks for tackling the issue!


Add manual refresh option

Due to issues with the API calls - vendor doesn't like too many and has recently blocked many accounts.
Please setup an option for manual API pull instead of auto-refresh as it's done by default currently.

How do you know when your account is blocked? I am having issues re-setuping this integration

Resurrecting this issue since I'm facing it as well.
The API starts responding with HTTP 429 Too many requests. Stopping the integration for some time and enabling later helps.
Small code change in custom_components/iqua_softener/sensor.py should help UPDATE_INTERVAL = timedelta(minutes=60).
I can imagine storing the error into a new sensor to present to the user in HASS, along with some auto-suspend of the integration.

Resurrecting this issue since I'm facing it as well.
The API starts responding with HTTP 429 Too many requests. Stopping the integration for some time and enabling later helps.
Small code change in custom_components/iqua_softener/sensor.py should help UPDATE_INTERVAL = timedelta(minutes=60).
I can imagine storing the error into a new sensor to present to the user in HASS, along with some auto-suspend of the integration.

I have this exact same issue.  I have never been able to figure out why it is happening.


Can't collect more than 213947 tweets

Initial Check
Make sure you've checked the following.

[y] Python version is 3.5 or higher.
[y] Using the latest version of Tweep.

Command
tweep.py -s #metoo --since 2017-10-01 --stats --count -o metoo_data.csv --csv
Description of Issue
I am trying to collect tweets containing #MeToo since 1 October 2017, however the scraper always stops when it gets to about 213947 tweets. This means that the scraper begins at the current date, starts to scrape backwards in time, but it never gets past a few weeks of tweets because it hits the (apparent) limit.
I have tried to exclude 2018, which means that the scraper begins at 31 December 2017, but again it only manages to scrape a few weeks of tweets before it hits the limit.
Any possible solutions much appreciated.
OS Details
Windows 10; completely up to date.

Thank you, I'll look into this when I can

If the tweet limit is consistent,

Twitter could be blocking requests after x amount of requests
That's an actual limit

For now, you could probably iterate the date as a working solution e.g. scraping in weekly chunks.
If the tweet limit is consistent, I'll add a chunking function to iterate the date in the script.

Hi Cody,
Thanks for the reply and suggested solutions.

you could probably iterate the date as the working solution e.g. scraping in weekly chunks.

Could you please elaborate on which parameters I would use to achieve this? I know that there is a “since” parameter but wasn’t sure about a “to”, i.e. being able to specify a time range.
Thanks,
Tim
Get Outlook for iOShttps://aka.ms/o0ukef

From: Cody Zacharias<EMAIL_ADDRESS>Sent: Friday, March 30, 2018 7:42 am
Subject: Re: [haccer/tweep] Can't collect more than 213947 tweets (#48)
To: haccer/tweep<EMAIL_ADDRESS>Cc: Timothy Graham<EMAIL_ADDRESS>Author<EMAIL_ADDRESS>If the tweet limit is consistent,

Twitter could be blocking requests after x amount of requests
That's an actual limit

For now, you could probably iterate the date as the working solution e.g. scraping in weekly chunks.
If the tweet limit is consistent, I'll add a chunking function to iterate the date in the script.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHubhttps://github.com/haccer/tweep/issues/48#issuecomment-377365978, or mute the threadhttps://github.com/notifications/unsubscribe-auth/AKw5r3QEFklnkNB264AdArA_Gt8lBjcIks5tjUdFgaJpZM4S57dg.

Tim,
I've added a new --until option which is similar to --since except it's the opposite.
So scraping it in weekly chunks would work like:
python3 tweep.py -s "#metoo" --until 2017-10-07 --since 2017-10-01
Which will collect from that week, then the next scrape would be:
python3 tweep.py -s "#metoo" --until 2017-10-14 --since 2017-10-07
So on and so forth.
I'll be working on this project a lot today, and will work towards adding a function to automate this.

Hi Cody,
This is great - thanks for implementing the new ‘--until’ option. I’m giving it a go now and seems to do the trick.
I am collecting data to do some comparisons of data collected via the free API versus the ground truth data. I am interested in issues relating to sampling and statistical properties of the data.
Thanks again,
Tim
Get Outlook for iOShttps://aka.ms/o0ukef

From: Cody Zacharias<EMAIL_ADDRESS>Sent: Saturday, March 31, 2018 1:33 am
Subject: Re: [haccer/tweep] Can't collect more than 213947 tweets (#48)
To: haccer/tweep<EMAIL_ADDRESS>Cc: Timothy Graham<EMAIL_ADDRESS>Author<EMAIL_ADDRESS>Tim,
I've added a new --until option which is similar to --since except it's the opposite.
So scraping it in weekly chunks would work like:
python3 tweep.py -s "#metoo" --until 2017-10-07 --since 2017-10-01
Which will collect from that week, then the next scrape would be:
python3 tweep.py -s "#metoo" --until 2017-10-14 --since 2017-10-07
So on and so forth.
I'll be working on this project a lot today, and will work towards adding a function to automate this.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHubhttps://github.com/haccer/tweep/issues/48#issuecomment-377536809, or mute the threadhttps://github.com/notifications/unsubscribe-auth/AKw5r_Us0OeV2wHF9M1Pl3n7VBtnBgRAks5tjkIdgaJpZM4S57dg.


how the decoder instance recv the kv cache from the prefill instance??

in the prefill phase，when each layer finish, ParallelGptContextDecoder.cc
copy_kv_cache_ubatch_layer() function will call steam_out send the layer kv cache to the decode instance
but i can't see any code for how to recv the kv cache from the prefill instance ??

Hi, thank you for your comment!
Whenever the token generation worker needs a new prompt:

It checks if there are any new "slots" available: https://github.com/msr-fiddle/dejavu/blob/master/src/fastertransformer/models/multi_gpu_gpt/ParallelGptDVFT.cc#L3098 (note that the prefill worker marks slots in the token worker's memory when about to send a new prompt)
As soon as a new slot becomes available, the token worker calls the receive_cache_ubatch function, which will call the stream_in function which will eventually call a fetch function.

Next, the way that receive is happening in the token generation worker depends on whether we use MPI RDMA or BOOST send-recv for communication:

In the case of MPI: the prefill worker will use MPI_Put to write the KV cache to the CPU memory of the the token generation worker.  In that case, the token generation worker will just copy the KV cache from its CPU to GPU memory
In the case of BOOST:

The fetch itself is again a memcpy
But since now we use boost read/write for communication, we define a background thread that is responsible for receiving prompts as shown here

I hope that answers your question!


SQOOP-3427 Add Travis badge to the README

We all love badges: https://jira.apache.org/jira/browse/SQOOP-3427

Thanks for looking into this @fszabo2
I've removed the old README. I think we should get rid of it since it is almost the same as the new one.

I also took the liberty to include Koen's work in https://github.com/apache/sqoop/pull/31 into this PR.

Hi @Fokko,
Sorry for my late responses, I have quite limited bandwidth these days for Sqoop.
Anyway, could you please rebase this on the current trunk, so we can see if your fix for the CI took effect?

Thanks for taking the time. I've rebased the PR.
Probably I'll do a couple of more PR's in the upcoming days to fix the compiler warnings, make better use of try-with-resources and bumping some of the dependencies to fix security issues.

Hi @Fokko,
I have submitted a PR for your branch with my suggestions: https://github.com/Fokko/sqoop/pull/1/files
I basically renamed COMPILING.txt to COMPILING.adoc so GitHub will format it by default and I refer it from README.md.

Thanks @szvasas
Sorry for taking so long, I was a bit busy lately.


Scope is not persisted on Windows

Affected versions: >= 0.12.1
Not sure how I missed this before but in both 0.12.1 and 0.13, scope.json is not getting saved in the sentry directory within the app userData directory.

'@sentry/utils/store' .flush() is failing and the error is silently swallowed here.
When running the e2e tests, the ignored error is below and I'm guessing the issue is the leading forward slash:
Error: ENOENT: no such file or directory, mkdir '/C:\Users\tim\AppData\Local\Temp\tmp-cjnzaurx00000xslxs26x5zxe\sentry'
    at fs.mkdirSync (fs.js:872:3)
    at Object.fs.mkdirSync (ELECTRON_ASAR.js:727:16)
    at Object.mkdirpSync (C:\Users\tim\Documents\Repositories\sentry-electron\node_modules\@sentry\utils\fs.js:151:18)
    at Store.flush (C:\Users\tim\Documents\Repositories\sentry-electron\node_modules\@sentry\utils\store.js:68:12)
    at Immediate._onImmediate (C:\Users\tim\Documents\Repositories\sentry-electron\node_modules\@sentry\utils\store.js:33:15)
    at runCallback (timers.js:696:18)
    at tryOnImmediate (timers.js:667:5)
    at processImmediate (timers.js:649:5)
    at process.topLevelDomainCallback (domain.js:121:23)

I think it was broken by this commit (cc. @kamilogorek) because this is not compatible with Windows.

#140 Added a failing test

Related: https://github.com/getsentry/sentry-javascript/pull/1712

This was fixed in v0.14.0.


[C++] Parquet reading performance regressions

Looking at some of the Parquet read benchmarks we have (https://conbench.ursa.dev/c-benchmarks/file-read), there are two small regressions to be observed the last months.
For example, zooming in on that time for nyctaxi_2010 with snappy compression (https://conbench.ursa.dev/benchmark-results/0653775157e07b6980005bce6e59a2ad/):

And for fanniemae (https://conbench.ursa.dev/benchmark-results/0653774cc429733d8000b2db91fa63fa/); here only the first bump is noticeable:

There are two small bumps, which I think are caused by the following two PRs, in order of the bumps:

https://github.com/apache/arrow/pull/14341
This PR added a new encoding option, but so my expectation is that it shouldn't have to slow down the default (the new encoding isn't used)? (cc @rok)
https://github.com/apache/arrow/pull/37854
While this change is mostly useful for cloud filesystems, and could be detrimental for fast local disk, the general assumption was that this effect for local disk would not be significant, so we could simply enable it for all filesystems. But based on this benchmark it seems the impact might actually not be fully insignificant? Should we consider making the default for pre_buffer depend on the type of filesystem?

Although I have to add that we also have "dataset-read" benchmarks (https://conbench.ursa.dev/c-benchmarks/dataset-read), which also benchmark Parquet reading, and there I don't directly see any visible regressions (although those are reading from S3, and might be less sensitive to small regressions in the reading part)
Also, the "file-read" benchmark is actually using pq.read_table, which already did set pre_buffer=True for the default for some time. So it can't be that change in default (on the dataset side)  that causes the slowdown. The other change in that PR is changing CacheOptions::Defaults() to LazyDefaults()

@jorisvandenbossche I can't seem to find the exact benchmark that is producing this metric.
Is it possible that the new encoding added by #14341 is now used as default for the benchmark or added as another codepath?

No, that benchmark is just using a default pq.read_table (https://github.com/voltrondata-labs/benchmarks/blob/93a57ba1019f65a4cea124d17772b0e8c60ac5ce/benchmarks/file_benchmark.py#L84), which should not use any of the newer encodings by default AFAIK

Emmm any profiling message between the benchmark? Or what's the simplest way to  re-produce this problem?
I think it might related to cache, since pre-buffer on a SSD might not a good way. I don't think encoding is related.

I don't think encoding is related.

To be clear, there are potentially two separate issues (maybe it was not the best idea to open a single issue for it). One related to the encoding change, and one related to the pre_buffer/caching change.

I'll try to run micro-benchmark with https://github.com/apache/arrow/pull/14341/files

I found DictDecodingByteArray benchmark become slightly slower (about 2% or less). not sure thats the reason or this is just unstable benchmark...

Looking at the commits in vicinity it seems most likely #14341 has caused this and looking at the timeline it doesn't seem like it's noise (except if something changed with the benchmarking infra). Conbench comparison.

https://github.com/apache/arrow/pull/38437
@rok @jorisvandenbossche Would you mind run same benchmark here? I've trying to change the logic of ArrowBinaryBuilder as before. But I'm not sure would it helps.

On eba5044687372787c88ba800d580b2183eae3325 I ran:
archery benchmark run --output=run-head-1.json HEAD~1 --benchmark-filter=DictDecodingByteArray
archery benchmark diff HEAD run-head-1.json --benchmark-filter=DictDecodingByteArray
---

And actually got a small regression (but could be noise):
--------------------------------------------------------------------------------------------------------------------------
Benchmark                                                                Time             CPU   Iterations UserCounters...
--------------------------------------------------------------------------------------------------------------------------
BM_DictDecodingByteArray/max-string-length:8/batch-size:512           2750 ns         2750 ns       257429 bytes_per_second=1.3859G/s items_per_second=186.194M/s
BM_DictDecodingByteArray/max-string-length:64/batch-size:512          3405 ns         3405 ns       207141 bytes_per_second=5.05129G/s items_per_second=150.383M/s
BM_DictDecodingByteArray/max-string-length:1024/batch-size:512       10643 ns        10642 ns        67129 bytes_per_second=23.1467G/s items_per_second=48.1097M/s
BM_DictDecodingByteArray/max-string-length:8/batch-size:2048          7744 ns         7744 ns        90086 bytes_per_second=1.96492G/s items_per_second=264.454M/s
BM_DictDecodingByteArray/max-string-length:64/batch-size:2048        10882 ns        10882 ns        63705 bytes_per_second=6.29198G/s items_per_second=188.207M/s
BM_DictDecodingByteArray/max-string-length:1024/batch-size:2048      56034 ns        56034 ns        14860 bytes_per_second=17.5095G/s items_per_second=36.5494M/s
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Non-regressions: (5)
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
                                                     benchmark       baseline      contender  change %                                                                                counters
  BM_DictDecodingByteArray/max-string-length:8/batch-size:2048  1.951 GiB/sec  1.965 GiB/sec     0.706   {'family_index': 0, 'per_family_instance_index': 3, 'run_name': 'BM_DictDecodingByteArray/max-string-length:8/batch-size:2048', 'repetitions': 1, 'repetition_index': 0, 'threads': 1, 'iterations': 86664}
BM_DictDecodingByteArray/max-string-length:1024/batch-size:512 23.075 GiB/sec 23.147 GiB/sec     0.310 {'family_index': 0, 'per_family_instance_index': 2, 'run_name': 'BM_DictDecodingByteArray/max-string-length:1024/batch-size:512', 'repetitions': 1, 'repetition_index': 0, 'threads': 1, 'iterations': 69531}
 BM_DictDecodingByteArray/max-string-length:64/batch-size:2048  6.302 GiB/sec  6.292 GiB/sec    -0.154  {'family_index': 0, 'per_family_instance_index': 4, 'run_name': 'BM_DictDecodingByteArray/max-string-length:64/batch-size:2048', 'repetitions': 1, 'repetition_index': 0, 'threads': 1, 'iterations': 64627}
  BM_DictDecodingByteArray/max-string-length:64/batch-size:512  5.097 GiB/sec  5.051 GiB/sec    -0.901  {'family_index': 0, 'per_family_instance_index': 1, 'run_name': 'BM_DictDecodingByteArray/max-string-length:64/batch-size:512', 'repetitions': 1, 'repetition_index': 0, 'threads': 1, 'iterations': 205168}
   BM_DictDecodingByteArray/max-string-length:8/batch-size:512  1.410 GiB/sec  1.386 GiB/sec    -1.730   {'family_index': 0, 'per_family_instance_index': 0, 'run_name': 'BM_DictDecodingByteArray/max-string-length:8/batch-size:512', 'repetitions': 1, 'repetition_index': 0, 'threads': 1, 'iterations': 259846}

----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Regressions: (1)
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
                                                      benchmark       baseline      contender  change %                                                                                counters
BM_DictDecodingByteArray/max-string-length:1024/batch-size:2048 21.256 GiB/sec 17.510 GiB/sec   -17.626 {'family_index': 0, 'per_family_instance_index': 5, 'run_name': 'BM_DictDecodingByteArray/max-string-length:1024/batch-size:2048', 'repetitions': 1, 'repetition_index': 0, 'threads': 1, 'iterations': 15530}

Because DictDecodingByteArray itself is un-stable...T_T

Benchmark runs are scheduled for commit https://github.com/apache/arrow/commit/eba5044687372787c88ba800d580b2183eae3325. Watch https://buildkite.com/apache-arrow and https://conbench.ursa.dev/ for updates. A comment will be posted here when the runs are complete.

After revert some change seems the dataset-read doesn't become faster. Maybe we can try to profile the two runing for detail..

I posted on the PR as well (https://github.com/apache/arrow/pull/38437#issuecomment-1782469556), but from what I can see, the file-read benchmark did significantly improve with the PR.


Input: Fix default text not being set when input doesnt immediately get focus

Basically, I had this issue where I had a Layout consisting of 3 Inputs, all of which had default texts. However only the last Input (The one that received focus) Would set its own default text. That was an issue for me. So I fixed it.
Potential issues

I havent tested this with prompts much

Yeah, GitHub actions is not showing the whole output. You can run it locally using ./scripts/test.sh. One of the tests for input is failing.

I have my doubts

Might be something with my environment. However even then I kind of doubt that Github actions truncated the output

Hmmm... weird. I'll look into it.

I haven't tried out the PR yet. Will do that as soon as possible.

Thats some very weird behaviour, considering the changes I made shouldnt really affect this test.
It seems like somehow there is a nil value or empty string for the first element in one of the tables? I am really confused as to how it gets there...


CSE UI/UX: Animations & UI improvements

Description
The PR introduces many new animations to the CSE machine and some UI improvements.
Changes

TODO

Pull Request Test Coverage Report for Build<PHONE_NUMBER>
Details

74 of 689 (10.74%)  changed or added relevant lines in 40 files are covered.
11 unchanged lines in 8 files lost coverage.
Overall coverage decreased (-1.0%) to 34.271%

Changes Missing Coverage
Covered Lines
Changed/Added Lines
%

src/commons/utils/JsSlangHelper.ts
0
1
0.0%

src/features/cseMachine/components/Frame.tsx
3
4
75.0%

src/features/cseMachine/CseMachineLayout.tsx
3
5
60.0%

src/features/cseMachine/CseMachineUtils.ts
13
15
86.67%

src/features/cseMachine/components/ArrayUnit.tsx
2
4
50.0%

src/features/cseMachine/components/Text.tsx
2
5
40.0%

src/features/cseMachine/components/arrows/GenericArrow.tsx
3
6
50.0%

src/features/cseMachine/animationComponents/base/Animatable.tsx
1
5
20.0%

src/features/cseMachine/components/values/GlobalFnValue.tsx
3
7
42.86%

src/features/cseMachine/components/values/ArrayValue.tsx
3
8
37.5%

Files with Coverage Reduction
New Missed Lines
%

src/features/cseMachine/components/values/GlobalFnValue.tsx
1
64.71%

src/features/cseMachine/animationComponents/BinaryOperationAnimation.tsx
1
0.0%

src/features/cseMachine/components/Text.tsx
1
73.17%

src/features/cseMachine/components/StashItemComponent.tsx
1
60.78%

src/features/cseMachine/components/ControlItemComponent.tsx
1
53.66%

src/features/cseMachine/animationComponents/UnaryOperationAnimation.tsx
1
0.0%

src/features/cseMachine/components/values/FnValue.tsx
2
74.32%

src/features/cseMachine/CseMachineAnimation.tsx
3
14.65%

Totals

Change from base Build<PHONE_NUMBER>:
-1.0%

Covered Lines:
5216

Relevant Lines:
14245

💛  - Coveralls


IIFE "Variable declared more than once"

What's the issue?
When compiling a Rollup Svelte project with format: 'iife' and name: 'app' there is an error ERROR - [JSC_VAR_MULTIPLY_DECLARED_ERROR] Variable app declared more than once.
How do we reproduce the issue?
Rollup config:
import svelte from 'rollup-plugin-svelte';
import resolve from 'rollup-plugin-node-resolve';
import commonjs from 'rollup-plugin-commonjs';
import compiler from '@ampproject/rollup-plugin-closure-compiler';

export default {
	input: 'src/main.js',
	output: {
		sourcemap: true,
		format: 'iife',
		name: 'app',
		file: 'public/bundle.js'
	},
	plugins: [
		svelte({
			css: css => {
				css.write('public/bundle.css');
			}
		}),

		resolve({
			browser: true,
			dedupe: importee => importee === 'svelte' || importee.startsWith('svelte/')
		}),
		commonjs(),

		compiler({
			compilationLevel: 'ADVANCED',
			languageOut: 'ECMASCRIPT5_STRICT',
			warningLevel: 'VERBOSE',
		})
	],
};

Run the command
rollup -c
Additional context
Changing the format to format: 'umd' compiles successfully.
Any ideas where the issue might be?

Could you attach the source before compiler sees the output? (remove compiler from rollup and run once, then attach to this bug).

Created a gist here: (https://gist.github.com/kristoferbaxter/aa44140f4186d5b1236d9a11f3b27def)
Wasn't able to reproduce the issue when using Closure Compiler directly. What am I missing?

It seems the issue is when running svelte and closure compiler one after the other. When I run rollup with just svelte it works. If I copy the output and then run rollup with only closure it also works. When they are both in the plugins (first svelte, then closure) it gives this error.
Maybe something to do with the way the code is passed between plugins?

Interesting, will take a look at the interaction.

@tomasmcm – Can you provide a simple repo with all the necessary source to reproduce? I'd like to take a look at this soon.

@kristoferbaxter 🙏 https://gist.github.com/tomasmcm/c414c4d2ec98a17f0449be311669b01a
This is all you should need to replicate the issue

Resolved with #254, released with 0.16.0.


Get ssh identity file from ssh config and ssh agent

Description

Support default ssh behaviors of IdentityFile
SSH Config code is a copy of https://github.com/jeanp413/open-remote-ssh/blob/master/src/ssh/sshConfig.ts
Related Issue(s)

Fixes https://github.com/gitpod-io/gitpod/issues/11467
How to test

Follow this doc to run extension locally https://github.com/gitpod-io/gitpod-vscode-desktop/blob/master/docs/CONTRIBUTING.md
Make sure debug vscode window is actived
Create a workspace and open with desktop vscode, it should back to the debug window
Start test with cases below

IdentityFile

Setup your ~/.ssh/config (mac) with gitpod host and custom identity file
Add an ssh key to the ssh agent with ssh-add
Run extension with this branch
Open Gitpod workspace with Desktop VSCode and connect using your debug vscode window
See if your custom identify file works

IdentityAgent

Follow the doc to add and turn on 1Password ssh-agent, i.e. id_ed25519

# you can gen one by command below, which is recommend by 1password
ssh-keygen -t ed25519 -b 4096

Remove related ssh key files in your computer. i.e. id_ed25519 id_ed25519.pub
Upload that ssh key to https://gitpod.io/keys and make sure only that one exists in https://gitpod.io/keys
Run extension locally and make sure debug one is activated
Open a new workspace with desktop VSCode
Check if we can access without copy password modal

Errors
Fill up incorrect identityFile and identityAgent

@mustard-mh I also added logic to read ssh key from the ssh agent so we can completely close https://github.com/gitpod-io/gitpod/issues/11467

Please add [1] to How to test to prove that code is reliable for all kind of use cases. If not we need a way to enable not captured use cases.

Also cc @loujaybee we will need to update docs and the announcement blog about expectations.

I updated IdentityAgent in How to test section. cc @akosyakov

Could you help test and review 🙏 ? @felladrin @iQQBot

@mustard-mh I think latest commit is not necessary so would say just revert it and do a 1 line change in line 645 adding the untildify call

I'll go ahead and address the comments as I want to test on windows as I won't be available tomorrow/friday because holidays :slightly_smiling_face:

@mustard-mh I think latest commit is not necessary so I would say just revert it and do a 1 line change in line 465 adding the untildify call

Ahh, just realized that untildify is working for this 🌴

I tested (MacOS) with IdentityFile and IdentityAgent, works well.
Note that:

.pub file can be deleted, fingerprint calc in default ssh behavior works well, but not in our extension because we use .pub file to calc the fingerprint
Tried not to use .pub but the package we are using (ssh2) does not support calc fingerprint for private key with password, maybe find another package that can resolve it

They are not the reasons to block this PR, but we can mark it

I just finished testing in windows, did a fix and it's working 🎉

.pub file can be deleted, fingerprint calc in default ssh behavior works well, but not in our extension because we use .pub file to calc the fingerprint

what's the point of deleting the .pub file?

what's the point of deleting the .pub file?

No, just said it can be deleted, and in case users have this habit (😅) and face it in the future

I tested (MacOS) with IdentityFile and IdentityAgent, works well.

I tested on windows and linux and looks there are no regression, so I'll go ahead and merge it and release and a pre-release version, I'll ask tarun to try it (he's using with 1password integration) and a user in discord who is reporting some issues with previous behavior


⚠ Fortnite has degraded performance

In 8549daf, Fortnite (https://fortnite.com) experienced degraded performance:

HTTP code: 200
Response time: 1583 ms

Resolved: Fortnite performance has improved in ea8e757.


Docsting cannot be displayed correctly after pylance is upgraded to v2021.3.1-pre.1

Environment data

Language Server version: Pylance language server v2021.3.1-pre.1
OS and version: Windows_NT x64 10.0.19042
Python version: Python 3.8.6
Torch version: 1.7.1+cu110

Expected behaviour
As shown in the figure below, we can see the docstring of MNIST when the mouse hovers over it.

We can also see the docstring of load_iris() when the mouse hovers over it.

Actual behaviour
When the mouse hovers over MNIST, only the docstring of the superclass can be seen.

And we can’t see the docstring of load_iris(). This happened after I upgraded pylance to v2021.3.1-pre.1

Code Snippet
import torchvision
from sklearn.datasets import load_iris

train_set = torchvision.datasets.MNIST()
X, y = load_iris()

This issue is older, but I'm going to close this as a duplicate of #1047, which has a more constrained repro (and I've retitled it to be more clear).


Improve ChecksumCapabilities for a IPv4/IPv6 environment

The ChecksumCapabilities struct currently contains the members udpv4 and tcpv4 that will be used for IPv6 packets as well as IPv4 packets. These members should be changed to udp and tcp if they should be used for both IPv6 and IPv4. If it is possible that we can only offload udp or tcp checksums for one IP version and not the other, the udpv6 and tcpv6 members should be added and the UdpRepr::parse and TcpRepr::parse functions should be updated accordingly.

Let's just rename those to udp and tcp. If some hardware supports checksums for IPv4 but not IPv6, the driver can just disable offload to both. I feel like simplicity is more important than supporting such crap in an optimal way.


Implement basic elements of RMW API

Implement all functions in rmw.h. This issue comprises all the simple ones, there will be others with their own issues (detailed below).

[x] rmw_get_implementation_identifier - Returns "rmw_hazcat" string
[x] rmw_get_serialization_format - Research this
[ ] rmw_create_node - Define node handle for this rmw (should be simple as we don't care about nodes at this level)
[ ] rmw_destroy_node - Remove handle from whatever list we stored it in above
[ ] rmw_publisher_get_actual_qos - self-explanatory
[ ] rmw_get_serialized_message_size - measures size of serialized message
[ ] rmw_serialize - Copy from someone else, probably
[ ] rmw_deserialize - Copy from someone else
[ ] rmw_subscription_get_actual_qos - Self-explanatory
[ ] rmw_get_node_names - Gets name
[ ] rmw_get_node_names_with_enclaves - Above but more so
[x] rmw_compare_gids_equal - Equal operation, One line
[ ] rmw_context_fini - Destroy context
[ ] rmw_init - Initialize middleware
[ ] rmw_shutdown - Shutdown middleware, cleanup

Covered after topic ring buffer is implemented: #7
Advanced publisher/subscriber functionality: #8
Service/client/waitable/guard condition functionality: #9
Implemented when networking is done:

[ ] rmw_publisher_assert_liveliness - Returns RMW_RET_OK until we implement networking
[ ] rmw_publisher_wait_for_all_acked - Returns RMW_RET_OK until we implement networking

Possibly never implemented:

[ ] rmw_service_set_on_new_request_callback - May relate to event executor
[ ] rmw_client_set_on_new_response_callback - May relate to event executor
[ ] rmw_event_set_callback - May relate to event executor

Implemented 3 calls. Placed dummy holders for all others
a67145fe7667d9e8e5f1c7f6a02d73475fdde15b

2ea8feec4e1f41a5e94516b43522deea273b8cb7


Spelling

This PR corrects misspellings identified by the check-spelling action.
The misspellings have been reported at https://github.com/jsoref/simdzone/actions/runs/5498219655#summary-14886605692
The action reports that the changes in this PR would make it happy: https://github.com/jsoref/simdzone/actions/runs/5498219695#summary-14886606009

Hi @jsoref. Thanks! These are all good spelling fixes. Currently simdzone is not yet production quality and there's no documentation yet, but once we reach that point. It'd be very good to run this on a regular basis. Any way to have this included with the project eventually (possibly with some manual overrides?).

Certainly. I'd be happy to make a PR for it. The commit would look something like this: https://github.com/jsoref/simdzone/commit/61ceb58588d735f2603ccaff13be0618b0767b73
I generally make a couple of changes when I make a PR for projects to use check-spelling… you can see that the workflow file in this commit is using prerelease, and I'd change that to the current release.
I also tend to restrict the update feature to forks.
And yes, the tool expects that any project will need overrides, they're generally contained in expect.txt. The README file for the configuration directory is designed to help people understand how to tune it.
I've started working on a user friendly view of the documentation for check-spelling: https://docs.check-spelling.dev/
And, of course, if you have questions, you can @ me and I'll try to answer them.

Thanks! I'll review the PR when it comes in :+1:


feat(inputs) Add defaults to inputs that allow less input from end users, defaulting github token and default branch similar to other actions

Allow using the built-in secrets and variables from the actions environment.
TODO: Please make sure this is correct as github.respository.default_branch, it might need to be github.event.repository.default_branch
How can I test this easily?
Removed require: false when setting defaults, because when you have a default set they are automatically not required. They can be added back if you think it looks clearer.
Signed-off-by: miigotu<EMAIL_ADDRESS>

Defaulting the github_token input is great; I didn't know about github.secret! Re release_branch, altering the default value would be a breaking change. I'm in favor of leaving it explicit, with main being a reasonable default. I like the explicit required flags, hence keeping them too.


Fix development mode i image name in Tiltfile.dev

JIRA link
N/A
Change description
Development mode ws not picking up changes due to the image name not matching the docker image name in Tiltfile.dev
Work checklist

[ ] Tests added where applicable

Merge instructions
We are committed to keeping commit history clean, consistent and linear.  A BREAKING CHANGE can be part of commits of any type,
types other than fix: and feat: are allowed, for example build:, chore:, ci:, docs:, style:, refactor:, perf:, test:, and others,
footers other than BREAKING CHANGE: <description> may be provided.

CI: No security warnings found


Add note about musl libc

Documents the issue opened on https://github.com/dunglas/frankenphp/issues/484 about the standalone binaries using musl libc instead of glibc.

I searched the PHP docs for musl and alpine, but the only other relevant result is about strftime, which is deprecated anyway.


Implement helper method and more tests for MemberEvent.

Closes #35
Part of #31 solving.

Currently this is blocked on merging of #54 . I will move the macro for testing into test_utils module after it.

@poljar Do you want to review this?

Sure, I'll take a look tomorrow.

Thanks!


Fix docker build

Despite the fact that the package 'browserslist' is a transitive dependency of:

<EMAIL_ADDRESS><EMAIL_ADDRESS>
It needs to be added manually to our package.json to be installed in the docker environment. This issue doesn't seem related to 'optionalDependencies' since the chain of dependencies from cssnano is compulsory all the way (not even a single 'devDependency').

And for completion's sake, here the output of npm ls browserslist (reversed dependency tree), after doing npm install on this commit.
Please note the unmet dependency for @bahmutov/add-typescript-to-cypress, it depends on an outdated version of browserslist.
<EMAIL_ADDRESS>[...]/angular-seed
├─┬<EMAIL_ADDRESS>│ └─┬<EMAIL_ADDRESS>│   └─┬<EMAIL_ADDRESS>│     └── UNMET DEPENDENCY<EMAIL_ADDRESS>├─┬<EMAIL_ADDRESS>│ └──<EMAIL_ADDRESS>├──<EMAIL_ADDRESS>└─┬<EMAIL_ADDRESS>  └─┬<EMAIL_ADDRESS>    ├─┬<EMAIL_ADDRESS>    │ └──<EMAIL_ADDRESS>    ├─┬<EMAIL_ADDRESS>    │ └─┬<EMAIL_ADDRESS>    │   └──<EMAIL_ADDRESS>    ├─┬<EMAIL_ADDRESS>    │ ├──<EMAIL_ADDRESS>    │ └─┬<EMAIL_ADDRESS>    │   └──<EMAIL_ADDRESS>    └─┬<EMAIL_ADDRESS>      └──<EMAIL_ADDRESS>


Ubuntu: rez selftest tests failing due to default shell resolving to tcsh

Thought I would test REZ on my personal machine. After installing rez and running rez self, 12 tests fail from:

rez.tests.test_build.TestBuild
rez.tests.test_release.TestRelease
rez.tests.test_shells.TestShells

rez-selftest errors.log
I have the bash shell installed as per Ubuntu and haven't configured REZ at all, though it seems to be resolving the default shell as tcsh :frowning:
$ rez-python
>>> from rez.config import config
>>> config.default_shell
`tcsh`

Example Traceback
Traceback (most recent call last):
  File "/home/johno-dev/rez/rez-2.28.0/lib/python2.7/site-packages/rez-2.28.0-py2.7.egg/rez/tests/util.py", line 176, in wrapper
    func(self, *args, **kwargs)
  File "/home/johno-dev/rez/rez-2.28.0/lib/python2.7/site-packages/rez-2.28.0-py2.7.egg/rez/tests/util.py", line 187, in _fn
    fn(self, *args, **kwargs)
  File "/home/johno-dev/rez/rez-2.28.0/lib/python2.7/site-packages/rez-2.28.0-py2.7.egg/rez/tests/test_build.py", line 135, in test_build_whack
    self.assertRaises(BuildError, builder.build, clean=True)
  File "/home/johno-dev/rez/rez-2.28.0/lib/python2.7/site-packages/rez-2.28.0-py2.7.egg/rez/vendor/unittest2/case.py", line 475, in assertRaises
    callableObj(*args, **kwargs)
  File "/home/johno-dev/rez/rez-2.28.0/lib/python2.7/site-packages/rez-2.28.0-py2.7.egg/rezplugins/build_process/local.py", line 37, in build
    install=install)
  File "/home/johno-dev/rez/rez-2.28.0/lib/python2.7/site-packages/rez-2.28.0-py2.7.egg/rez/build_process_.py", line 197, in visit_variants
    result = func(variant, **kwargs)
  File "/home/johno-dev/rez/rez-2.28.0/lib/python2.7/site-packages/rez-2.28.0-py2.7.egg/rezplugins/build_process/local.py", line 227, in _build_variant
    install=install)
  File "/home/johno-dev/rez/rez-2.28.0/lib/python2.7/site-packages/rez-2.28.0-py2.7.egg/rezplugins/build_process/local.py", line 167, in _build_variant_base
    build_type=build_type)
  File "/home/johno-dev/rez/rez-2.28.0/lib/python2.7/site-packages/rez-2.28.0-py2.7.egg/rezplugins/build_system/bez.py", line 97, in build
    actions_callback=callback)
  File "/home/johno-dev/rez/rez-2.28.0/lib/python2.7/site-packages/rez-2.28.0-py2.7.egg/rez/resolved_context.py", line 871, in _check
    return fn(self, *nargs, **kwargs)
  File "/home/johno-dev/rez/rez-2.28.0/lib/python2.7/site-packages/rez-2.28.0-py2.7.egg/rez/resolved_context.py", line 1238, in execute_shell
    executor = self._create_executor(sh, parent_environ)
  File "/home/johno-dev/rez/rez-2.28.0/lib/python2.7/site-packages/rez-2.28.0-py2.7.egg/rez/resolved_context.py", line 1554, in _create_executor
    parent_variables=parent_vars)
  File "/home/johno-dev/rez/rez-2.28.0/lib/python2.7/site-packages/rez-2.28.0-py2.7.egg/rez/rex.py", line 1087, in __init__
    self.manager.shebang()
  File "/home/johno-dev/rez/rez-2.28.0/lib/python2.7/site-packages/rez-2.28.0-py2.7.egg/rez/rex.py", line 415, in shebang
    self.interpreter.shebang()
  File "/home/johno-dev/rez/rez-2.28.0/lib/python2.7/site-packages/rez-2.28.0-py2.7.egg/rez/shells.py", line 397, in shebang
    self._addline("#!%s" % self.executable)
  File "/home/johno-dev/rez/rez-2.28.0/lib/python2.7/site-packages/rez-2.28.0-py2.7.egg/rezplugins/shell/tcsh.py", line 19, in executable
    cls._executable = Shell.find_executable('tcsh')
  File "/home/johno-dev/rez/rez-2.28.0/lib/python2.7/site-packages/rez-2.28.0-py2.7.egg/rez/shells.py", line 124, in find_executable
    raise RuntimeError("Couldn't find executable '%s'." % name)
RuntimeError: Couldn't find executable 'tcsh'.

- Rez version:

2.28.0

- Platform and operating system you were using:
johno-dev@johnodev-VirtualBox:~$ cat /etc/os-release
NAME="Ubuntu"
VERSION="18.04.2 LTS (Bionic Beaver)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 18.04.2 LTS"
VERSION_ID="18.04"
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
VERSION_CODENAME=bionic
UBUNTU_CODENAME=bionic
johno-dev@johnodev-VirtualBox:~$ lsb_release -a
No LSB modules are available.
Distributor ID:	Ubuntu
Description:	Ubuntu 18.04.2 LTS
Release:	18.04
Codename:	bionic
johno-dev@johnodev-VirtualBox:~$ hostnamectl
   Static hostname: johnodev-VirtualBox
         Icon name: computer-vm
           Chassis: vm
        Machine ID: caf4827aa85442238fa3060310e82c9f
           Boot ID: bd714a0133834208998ee80260928e88
    Virtualization: oracle
  Operating System: Ubuntu 18.04.2 LTS
            Kernel: Linux 4.18.0-16-generic
      Architecture: x86-64
johno-dev@johnodev-VirtualBox:~$  uname -r
4.18.0-16-generic

- Contextual information (what were you trying to do using Rez);
Validate rez build/install via selftest
- Simplest possible steps to reproduce.

python2 install.py -v "$HOME/rez"
rez selftest

Had a look at this again tonight and the default_shell value returns an empty string :confused:
$ rez-python
>>> from rez.config import config
>>> config.default_shell
``

sudo apt install tcsh allows the selftest to succed further, though test_rex_code_alias fails with the bellow traceback:
======================================================================
FAIL: test_rex_code_alias (rez.tests.test_shells.TestShells)
Ensure PATH changes do not influence the alias command.
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/johno-dev/rez/rez-2.28.0/lib/python2.7/site-packages/rez-2.28.0-py2.7.egg/rez/tests/util.py", line 176, in wrapper
    func(self, *args, **kwargs)
  File "/home/johno-dev/rez/rez-2.28.0/lib/python2.7/site-packages/rez-2.28.0-py2.7.egg/rez/tests/test_shells.py", line 327, in test_rex_code_alias
    _execute_code(_alias_after_path_manipulation)
  File "/home/johno-dev/rez/rez-2.28.0/lib/python2.7/site-packages/rez-2.28.0-py2.7.egg/rez/tests/test_shells.py", line 312, in _execute_code
    self.assertEqual(p.returncode, 0)
AssertionError: 2 != 0

-----------------------------------------------------n't -----------------
Ran 124 tests in 73.247s

FAILED (failures=1)

Note: This isn't stopping me from tinkering with rez in my environ, but just flaging this odd anomolly :man_shrugging:

Hmm yeah I do believe there is a tcsh bug or two. As to why it's defaulting
to tcsh, I'm not sure..
On Thu, Mar 21, 2019 at 5:49 PM Johnny Cochrane<EMAIL_ADDRESS>wrote:

Had a look at this again tonight and the default_shell value returns an
empty string 😕
$ rez-python

from rez.config import config

config.default_shell
``

sudo apt install tcsh allows the selftest to succed further, though
test_rex_code_alias fails with the bellow traceback:
======================================================================
FAIL: test_rex_code_alias (rez.tests.test_shells.TestShells)
Ensure PATH changes do not influence the alias command.
Traceback (most recent call last):
File "/home/johno-dev/rez/rez-2.28.0/lib/python2.7/site-packages/rez-2.28.0-py2.7.egg/rez/tests/util.py", line 176, in wrapper
func(self, *args, **kwargs)

File "/home/johno-dev/rez/rez-2.28.0/lib/python2.7/site-packages/rez-2.28.0-py2.7.egg/rez/tests/test_shells.py", line 327, in test_rex_code_alias
_execute_code(_alias_after_path_manipulation)

File "/home/johno-dev/rez/rez-2.28.0/lib/python2.7/site-packages/rez-2.28.0-py2.7.egg/rez/tests/test_shells.py", line 312, in _execute_code
self.assertEqual(p.returncode, 0)

AssertionError: 2 != 0
-----------------------------------------------------n't -----------------
Ran 124 tests in 73.247s
FAILED (failures=1)
Note: This isn't stopping me from tinkering with rez in my environ, but
just flaging this odd anomolly 🤷♂
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/nerdvegas/rez/issues/584#issuecomment-475127558, or mute
the thread
https://github.com/notifications/unsubscribe-auth/ABjqSk62PCG-A-1Z9RzPYb4seTZHxpohks5vYytkgaJpZM4b9dVo
.

Can you try again with the latest release on a fresh install?


GNOME - Use Gtk.FileDialog for GTK 4.9+

Hello a ton of marshalling, long time no see 😄
The problem
When running with GTK 4.9+, Gtk.FileChooserNative becomes unusable (missing labels and icons - screenshot - trying to blindly open a file crashes the app).
I'm not entirely sure what causes the problem, but I guess it's somehow related to gir.core because I didn't find any other app other than Denaro and TC that has this bug. But I think gir.core devs have more important stuff than fixing deprecated things, so I didn't report it.
Temporary solution
Gtk.FileChooserNative and Gtk.FileChooserDialog are deprecated in favor of Gtk.FileDialog added in GTK 4.9.1. In this PR Denaro uses this new widget when running with supported GTK version.
I tested this PR in Fedora 37 (GTK 4.8.3), Fedora 38 Beta (GTK 4.9) and in Arch distrobox (GTK 4.10).
Long-term solution
When GNOME 44 Platform runtime will be released with GTK 4.10 I suggest to use it and completely remove Gtk.FileChooserNative. This will make 4.10 minimum required version of GTK, but I think people who use distros with old libraries should use Flatpak anyway, so this will not be a problem. And when gir.core will support GTK 4.10 we'll get rid of marshalling.
Because the code will be changed, I don't think we should copy everything to Application now. But after accepting this PR I will open a new PR for TC.
A new small issue
Gtk.FileDialog when used to open a file has a checkbox to open a file in read-only mode that can't be hidden. This doesn't break Denaro, because we only use resulting Gio.File to get the path and then Denaro opens the file read-write anyway. But this can be misleading for users, so maybe we should consider adding read-only mode to Denaro in the future.

Will test tonight when I get home on WSL, make sure it's ok then merge :)

Will test tonight when I get home on WSL

LGTM. If you could just test the latest commits to see if that opening file on startup is fixed.

https://github.com/nlogozzo/NickvisionMoney/releases/tag/2023.3.0-beta1


Characters break code highlighting randomly.

Characters are highlighted with different colors or even become transparent randomly.

disable tree-sitter in your neovim config.

I just have vanilla Neovim installed. No plugins are installed. I don't even have a custom config.

There are existing issues covering display quirks.
The highlighting support is currently best-effort.


Make GT_RowId unnassasary for every component

I've tried this version and the two bugs I found are both fixed. Thank you so much!


Update version of the swift

Description
We need to provide wider support for swift versions in order to allow SDK to work with different Swift versions.

I don't think you need this.
Xcode 9 (required by Apple for submissions since April) can work with both Swift 3 and Swift 4 on the same project, and doesn't work with older versions.


Question on ConditionalContainers

Hey,
I am playing with filters/HSplit/VSplit
I roughly have a
HSplit([
     ... long list
    ConditionalContainer(.., a_filter)
    ... long list
])

I was expecting the ConditionalContainer to get a height of 0 when "hidden", which apparently is not the case. The current behavior make sens with respect to the doc, and and see its use with floats.
But would it make sens to have the dimension set to zero when hidden ?
(I'm basically creating a list of 1 line editable buffer that can be filter based on some rules, I might be attacking the problem in a completely incorrect way.)

Actually, it should have a height of zero, when it's hidden.
When hidden (When the filter returns False), it returns LayoutDimension.exact(0)
https://github.com/jonathanslenders/python-prompt-toolkit/blob/master/prompt_toolkit/layout/containers.py#L1507
 def preferred_height(self, cli, width, max_available_height):
        if self.filter(cli):
            return self.content.preferred_height(cli, width, max_available_height)
        else:
            return LayoutDimension.exact(0)

I just did a test, and it works for me. Could you maybe test again and email me the code if that's possible?

I just did a test, and it works for me. Could you maybe test again and email me the code if that's possible?

Hum, ok I'll retry, and make a smaller example.
I'm likely not familiar enough with how to do thing.
here is what I have for now.


Complete rewrite for HTML5 spec compatiblity

Hey there,
it started out as an attempt to make this shim work with an existing html5 drag and drop library we use in our angular project and ended up as a rewrite that is as close as possible to the HTML5 spec and support for all mobile browsers, making it a polyfill that aims to fill the gap for all browsers currently not implementing the spec natively.
Are you interested in pulling this back in?

Dang.
:clap:
It's weird how those little projects can turn into something much larger :)
I haven't had the opportunity to look this over, but I am 100% interested in expanding the scope of this project to be more useful. @timruffles , what's your take?

Looks interesting, will have a look ASAP!

Thanks for taking the time. I removed the template stuff from the *.gitignore
Yesterday I was in a hurry and pressed enter too soon, leaving the pull request without any message so I did just a quick edit afterwards, not explaining all the things I did and why but I think its best you leave a comment here on any things that look strange to you.
I did a few rounds of explorative testing, comparing desktop Safari, Firefox and Chrome output directly with a connected iPad(iOS8), Nexus(Lollipop) and also have a MS Surface at hand that I used to convince Chrome with enabled touches to play with me. Some bugs are still hiding but for now it looks quite solid to me. Only thing I couldn't test right now is MS Edge but a VM with Windows 10 is already setup and IEMobile.
Right now I just added a few bugfixes and a first stab for a feature: scrolling when dragging close to a viewport edge. I'm also thinking about combining it with an optional zoom out/zoom in like some mobile browsers do already when something is dragged close to the right edge of the viewport unless you stop them from doing so with the meta viewport tag by set initial, min and max zoom to 1.

Continued to improve and fix bugs.
Most recent addition is a debug mode that highlights the dispatched events, current drop target and immediate user selection. Check out the lightshow: http://reppners.github.io/ios-html5-drag-drop-shim/spec-compliance/
Right now the demo page is not really a demo page but rather my development playground so forgive me any rough edges :D

Looks amazing work :) Amazing job on getting into the detail of the spec.
Let me know what you think needs to be done to make it ready for release, and I'll pitch in where I can. I guess the most important bit is to identify any breaking changes from 1.0?

Thanks :)
Today I fixed the last bugs that prevented me from using it in a bigger project and so far I did not discover any greater issues, but a bit more testing/beta phase would be a good thing.
Detecting breaking changes is very important. Has anybody suggestions on how to tackle this? Write down a list of tests? Automated tests?
Thinking about a release a few other things come to my mind:

Does the term "mobile" still apply? Because desktop Chrome is also patched and this polyfill aims to be universal.
Any concerns about the file size?
It has grown quite a bit, maybe we can try the best to reduce it, by excluding drop zone support (does any DnD supporting browser support it? its not tested in this poly either)
Providing demos from simple to complex with nested draggables/dropzones and the different combinations of effectAllowed and dropEffect.
Does anybody have an idea how we can introduce tests that aim to discover changes in browsers as quick as possible? SauceLabs is free for open source projects so if we are able to write some tests that could help in detecting breaking changes and keep us up-to-date about any browser changes would be quite nice.

@reppners

Detecting breaking changes is very important. Has anybody suggestions on how to tackle this? Write down a list of tests? Automated tests?

Wouldn't be too bad using nightwatch to connect to sauceLab's mobile selenium driver. The test would be something like:
'drag-drop' : function(browser) {
   //init stuff
   browser
   .moveToElement('.draggable', 0, 0)
   .mouseButtonDown(0)
   .moveToElement('.drag-zone', 10, 10)
   .mouseButtonUp(0)
   .asset(...)
}

Also, your debug stuff adds a lot of bloat to the script. Best practice is to use
if(typeof DEBUG === 'undefined') {
   var DEBUG = false;
}
doSomethingNonDebug();
if(DEBUG) {
  //debug code here
}

so people with var replacement and dead-code removal can have that removed from the code upon minification. After running through a DefinePlugin and UglifyJS the above becomes:
if(typeof false === 'undefined') {
   var DEBUG = false;
}
doSomethingNonDebug();
if(false) {
   log('Debug thing')
}

Which then becomes
doSomethingNonDebug();

Minifiers won't touch this.config.debug because it has no way of knowing that's safe to remove.

Another thing I'm thinking about is modularity and how supporting browserify/webpack/etc. can be established as I have no experience on how this is done.

Polyfills generally don't need a UMD or shim since they don't need to export anything. require()ing the polyfill should run the polyfill and that's about it. If you want to get super fancy, I'd split the IsDragAndDropSupportedNatively into a separate module so you can require() that test and then require() the rest of the module in a separate async chunk/payload along with other polyfills.
Personally though, your code is super clean and well documented, but you went totally overboard with the TypeScript, build system, separate CSS files, embedded FontAwesome Icons, Utility classes

@JonDum thx for your feedback. I realize that there is some bloat due to debug code and didn't know about the possibility to have dead code removed by UglifyJS and will try to get that incorporated. As a long term goal I would like to make the code simpler and more concise where possible without losing maintainability and of course functionality. Having tests is a precondition for starting work on this.
Sounds like setting up a demo page which can also be used as a test page is the way to go. Then define selenium tests to get the expected behavior covered.
I understand the added tools and separations can feel a bit "too much" but I really like maintainable, easy to contribute stuff and even more I like compilers yelling at me if I do something wrong. TypeScript does a pretty good job in giving support while still being able to leverage all the duck-typing freedom that JS offers.

@reppners I would also ask that we move as much as possible back to plain, free-standing function declarations. They're really easy to unit test and understand, unlike objects that need to be created in a certain way.

Actually its 1,030 lines without comments when looking at the pure js. The ts-file is filled with comments and interfaces so its length is not really representable. I did keep all commented out parts of the spec included in case it would be ever needed to push support for spec-related things further. Also there is a lot of code related to "dropzone"-attribute support that maybe can be commented out until browsers start to support it if they will ever.
DragAndDropInitializer-class is purely static, listening on events that can start a drag operation and if an event turns out to not start a drag operation make the default behavior happen like click events or putting focus in an input field. There are some bugs left in this part, but I don't have much time left to spend on this atm. You are right about the config object not being needed in TryFindDraggableTarget, its a leftover that I did not remove yet. The DragAndDropInitializer also limits the simultaneous operations to one.
The DragOperationController is what was the DragDrop-class in your implementation. It implements the drag and drop processing model, fires events, contains instances of DataTransfer and related DragDataStore. It contains methods that implement various algorithms defined by the spec (dragAndDropProcessModelIteration, DragOperationEnded, DetermineDropEffect, DetermineDragOperation, FindDropzoneElement, GetOperationForMatchingDropzone). In addition there is code related to firing the events. That sums up to about 340 lines of pure js.
DataTransfer is implemented as class, as well as DragDataStore with the goal of being close to the spec. They take about 120 lines of pure js, most of it being logic in property getters/setters on the DataTransfer class.
About 130 lines of pure js-code are added for snapback transitions and scrolling when dragging close to edges. Thats code purely for "cosmetics" and usability.
So thats about 460 LOC spec related implementations, 130 LOC of new features regarding snapback and scrolling, 100 LOC on utils, and the rest is setup/cleanup/touch event handling/drag image handling.
Can you elaborate what you mean by plain, free-standing functions? I would like to keep a certain level of separation of concerns.
I'm totally open to get it more succinct but for the company project the primary goal was getting it working as defined by spec and desktop browser behavior so I did not put much effort in keeping it small in the first place.

I took a stab at removing unneeded code, removing "dropzone" related stuff, make logging and debug code disappear on minification and refactor some things that we're not too involved in the dnd process model iteration.
Its in a separate branch: https://github.com/reppners/ios-html5-drag-drop-shim/commit/0856424ed182ee7f06b3835040a4a72b97450eb9
before:

js: 50.96KB (7.34KB gzipped), 1029 lines
min.js: 25.02KB (5.74KB gzipped)

after:

js: 37.79KB (6.01KB gzipped), 767 lines
min.js: 16.88KB (4.07KB gzipped)

@reppners,
I'm going to try out your branch on some production code. Drag-and-drop is an essential feature of our app, hence this is very useful. (@timruffles's lib stopped working on iOS 8.4.1).
The size of the lib is a problem though.
The lib can be minified further by rewriting the private methods as simple functions. The problem is TypeScript puts them on the prototype, which means the minifier cannot tell if they are being used elsewhere. For example, there are 11 references to dispatchDragEvent.
Another alternative is to try the Google Closure Compiler with advanced options - although some preparation will need to be done to ensure essential symbols and identifiers are preserved.

Yes - another reason I think it'd make a lot of sense to move all functions
(e.g not methods that need access to state) back be free standing again,
private to the module.
On Thu, Aug 27, 2015 at 11:17 AM, nabog<EMAIL_ADDRESS>wrote:

@reppners https://github.com/reppners,
I'm going to try out your branch on some production code. Drag-and-drop is
an essential feature of our app, hence this is very useful. (@timruffles
https://github.com/timruffles's lib stopped working on iOS 8.4.1).
The size of the lib is a problem though.
The lib can be minified further by rewriting the private methods as simple
functions. The problem is TypeScript puts them on the prototype, which
means the minifier cannot tell if they are being used elsewhere. For
example, there are 11 references to dispatchDragEvent.
Another alternative is to try the Google Closure Compiler
https://closure-compiler.appspot.com/home with advanced options -
although some preparation will need to be done to ensure essential symbols
and identifiers are preserved.
—
Reply to this email directly or view it on GitHub
https://github.com/timruffles/ios-html5-drag-drop-shim/pull/44#issuecomment-135371894
.

Makes sense. I will spend some time on this :)
@NoelAbrahams Further refactorings will land in the refactoring-branch mentioned in my previous comment. As far as iOS 8.4.1 support is concerned it should be working, but if not let me know so we can fix it.

As you've done a heap of work, I wanted to get involved a bit. I made a quick stab at moving all methods that don't rely on internal state to stand-alone functions. Cuts down the compiled code size and simplifies the code, keeping stuff that potentially read/writes from mutable state to a minimum.
I've never written a line of TypeScript so this is probably a mess :)
One other request - if you're hoping to have the original maintainers involved - is to strip out the tautological @param style comments, e.g
    /** ...
        * @param e
        * @constructor
        */
    function OnTouchstart( e:TouchEvent ) {

It's noisy and kills readability for me. The JS community's style is very minimalist when it comes to commenting. Especially with TypeScript's richer type system, the Javadoc style comments don't seem justified.
I still feel there is a leaner, meaner version of the typescript code we could squeeze out. Right now I can't navigate the code to get a feel for it due to the comment blizzard :)

Cool, thx :)

I've never written a line of TypeScript so this is probably a mess :)

No worries, TypeScript is only a superset of javascript so its all valid ;)
You're right about the comments containing too much noise, Those bits are auto-generated from Webstorm and I will strip them out. Also there is a lot of comments that contain "copy-paste" stuff from the html5 spec and I'd like to keep those things as a reference. Maybe they can be shortened to just reference/link to somewhere so the code is not hidden in a jungle of comments.
Apart from that there are those fold, endfold comment statements which act as collapsible markers and I hope every editor is capable of handling those. They act as a kind of a separator of different blocks to aid readability. Much like #pragma mark in objective-c or region in jetbrains-stuff like when doing Java or C#. They should help a lot to get an overview by first collapsing all and then step into those parts that are currently relevant to you.

@timruffles I did another round of refactoring where I merged in your changes. Check the refactoring branch. Reported size of uglifyJS is 13836 bytes. Next up step would be to reduce the comment blizzard by removing spec related comments as much as possible by rather reference the spec instead of citing it.
@NoelAbrahams You can try with the current state of the refactoring branch, the demo is fully working on my iPhone running iOS 8.4.1 - so it should also in a production app. DragImage not snapping back should not occur (anymore). Drag operations not finishing should absolutely not occur, but you need to provide more details on this if it is still happening.

@reppners,
The problems have not gone away with the latest in the refactoring branch.
Here's a fiddle that doesn't work in iOS 8.4.1. The drop operation never succeeds.
Here's a fiddle using @timruffles lib that does work in iOS 8.4.1.

@NoelAbrahams
Thx for your feedback.
According to the spec you need to preventDefault() the drop-event. See the updated fiddle
Now the interesting part is that desktop browsers (tested on Safari and Chrome) seem to accept the drop without preventDefault() as soon as you access the dataTransfer prop. You can try it out by disabling the line where you access the dataTransfer-object in the drop-handler. Then the drag operation will silently fail/cancel.
Maybe the polyfill can be further be optimized to behave like desktop browsers, though thats not possible for every case. See a related issue https://github.com/marceljuenemann/angular-drag-and-drop-lists/pull/118

I did further work on refactoring and minification and was able to reach around 10kB minified size. Will commit in the next few days since I just arrived from vacation.

@reppners,
That's helpful to know. However, in spite of setting preventDefault() on the drop event, the lib is not working as expected. I was trying to reproduce the problem, but I seem to have ended up with a red herring. I say this, because in our actual code preventDefault does exist on the drop event.
But let me try out your latest code and I'll get back with more details.
Also do you know if problem #48 has been resolved in your lib?

@NoelAbrahams
#48 should be resolved. Drag will only start after first touch move and if none happens the default action is initiated. However there still might be some bugs and cross-browser/platform issues on triggering the default action on input/form elements but simple clicks should be no problem.

@reppners,
I am experiencing the following problems (using the minified version dated 30-Aug-2015):

The drag-and-drop stops working if the item is not dropped into the target. For example, if I have two items A and B, and A is touched and moved slightly, but not dropped into the drop target, then attempting to move A or B thereafter fails.
After the failure described above, tapping on any element (e.g. a page tab) that causes the page to be redrawn (not reloaded, but redrawn in the SPA-sense, i.e. the DOM element containing A is removed dynamically), the image for A becomes detached and moves to the top left corner. Here is a screenshot of the effect:

As far as I can tell, the drag-and-drop seems to be working correctly otherwise.

@NoelAbrahams
Must be a problem with the snapback transition not working correctly which then results in a hanging drag and drop operation, the operation never ends and the drag image keeps lingering around. Do you have the css file included containing the css rule for the snapback transition and can you tell if the rule is applied? I suspect the snapback transition that should be triggered by adding the css class containing the transition rule is never applied, therefore the transitioned event is never called and the drag operation keeps hanging around.

@reppners, I do have the CSS included. There is no conflict with the CSS classnames so it should be applied. I think this is more than just a CSS issue, because the drag stops working after the first time.

@NoelAbrahams Can you try out the non-minified version? Because the minified version should be the same but it is rather untested and I was experimenting with minification config at that time.

@NoelAbrahams So far I could not reproduce, minified version also seems not to be the culprit. Can you give me more info about the element you're dragging? Is it happening for every element in your app or just some specific kind of elements?

@reppners, the markup is similar to this

Institute Of Contemporary Arts

And the CSS:
.draggable {
    cursor: grab;
    cursor: -webkit-grab;
}

    .draggable:active {
        cursor: grabbing;
        cursor: -webkit-grabbing;
    }

.det {
    position: relative;
    width: 100%;
    outline: 0.1em solid #d9d9d9;
    background-color: #fff;
    box-sizing: border-box;
}

.det-icon {
    display: inline-block;
    width: 36%;
    padding: 1% 2%;
    box-sizing: border-box;
    height: 100%;
    min-height:210px;
}

.oic {
    width: 100%;
    height: 100%;
    cursor: pointer;
    font-size: 0.8em;
    text-align: center;
    position: relative;
}

.oic-image {
    width: 100%;
    padding: 5% 0 0 0;
}

The drag start and end events are bound like this
root.addEventListener('dragstart', event => {

    this.isInProgress = true;  // Progress styling
    event.dataTransfer.effectAllowed = 'move';
    event.dataTransfer.setData('text', 'foo');

   this.onDragStart.trigger(event); // Custom event
});

root.addEventListener('dragend', event => {

    this.isInProgress = false; // Progress styling
    const dropOccurred = event.dataTransfer.dropEffect !== 'none';

    this.onDragEnd.trigger(event.create(dropOccurred)); // Custom event
});

Perhaps the point of interest here is that both '.det' and '.oic' are draggable. This works fine on desktop browsers.

@NoelAbrahams
The issue you're experiencing I was not able to reproduce, though I had issues like you are describing whenever I had errors with the transition/transitionend. To debug this further I would ask you to include the non-minified script and look at the console output. This should at least give us a hint in what state the drag operation is hanging when it happens.
I put your markup into my development playground and pushed it with the recent changes to the gh-pages: http://reppners.github.io/ios-html5-drag-drop-shim/spec-compliance/

The size now is at 10kB minified and around 3.4kB gzipped.

@NoelAbrahams
Finally was able to get hold of your issue. It happens for me when I activate the debug mode by defining DEBUG = true. This starts some transitions that are triggered in a fast sequence and cause the transitionEnd on the snapback transition to fail on the second drag operation. I hacked it by using setTimeout() instead of listening for the transitionEnd event and this way it works reliably. This lead me to the thought that you might do some kind of DOM manipulation in your drag and drop operations that also caused the transitionEnd to never get fired.
Also caught another bug when issuing the default action on an element when not doing a drag operation that caused the whole polyfill to stop working after it happened once.
https://github.com/reppners/ios-html5-drag-drop-shim/tree/refactoring

@reppners, that sounds rather promising.
I'll be able to try out the changes and provide some feedback by the end of this week. :+1:

@reppners,
We've been trying out the latest changes. I'm no longer seeing the problem, so that appears to be fixed. Here are some side-effects and related issues.

The single tap no longer works. This should trigger the click event.
The pinch zoom fails on draggable items. The item gets dragged by the action, rather than zooming.
Sometimes I want to scroll the page by touching and moving the page down (or up). When the touched item is a draggable item this action is ineffective; the item gets dragged rather than the page scrolling.

I'm not sure if some of these issues can actually be resolved. For example for the last item, it's not clear how it will be possible to distinguish a scrolling action vs a dragging action.
These issues certainly affect the usability of our app, so if they cannot be fixed, we may have to reconsider the whole design.

@NoelAbrahams
The first two are bugs and we should be able to fix them.
Is it the same elements that emit no click as you have posted above? On what exact element are you expecting the click? I never had any problems yet with the click event yet so I'm curious what the problem could be there.
For the pinch zoom I can filter the initial touch event on the number of touches so that should be easily fixed.
As for the last point, I think it is the application that has to provide some sort of drag handle so the user clearly knows where he can drag an item. It is certainly a problem, but none that I think should or can be fixed at the polyfill layer. Internet Explorer on MS Surface for example does Drag and Drop after a sustaining touch and you have to pull the element in a certain direction to make it work. I don't think the polyfill should do any of those things. The most it can do is providing an interface so an application can decide itself what kind of touch/gesture initiates a drag and drop operation. Didn't you have the same effect with the shim yet?

@reppners,

Is it the same elements that emit no click as you have posted above

Yes. Also perhaps the issue may have been misunderstood: it's not the click event, it's that the touch event should trigger the click event. Obviously, that snippet is part of a bigger picture and it's possible that the interaction with other elements is causing the click to fail.

I think it is the application that has to provide some sort of drag handle so the user clearly knows where he can drag an item.

That's certainly a good suggestion and I think we'll look into that. One case that we have is of drag-and-drop being effected where the source is an image. When we have a page full of images it becomes impossible to scroll down. For this case if we can prevent drag being effected when pulled up or down (i.e. only works left or right) then that would solve the problem. I think we might look into doing that.

@NoelAbrahams
I pushed a commit to the refactoring branch that filters the initial touches to allow pinching and other gestures and hopefully more accurately detects when to initiate a default click.
I was not able to reproduce the missing click event. Can you provide a fiddle that demonstrates the bug?

@reppners, just to provide some feedback: the click even does not work still. I'm currently not able to spend time on reproducing the problem, because of other priorities. I hope to revisit this in December.

@xStrom  @jmeas what do you two think about this? I'm leaning towards merging in these changes, but using a cleaned up version of the compiled JS. I think it over-complicates such a simple project, and cuts down our contributor base too much.

I like the concept of making this library behave more closely to the spec. Most of my own work here has been towards that goal.
Regarding the specific code and the state that it is in, I haven't done a proper review/test yet. I should do that. I'm not a fan of regression bugs and wouldn't recommend merging unless we're reasonably sure there aren't any major regressions. I'll see if I can find the the time for a proper review this week.
Regarding TypeScript, I don't have any problems with it personally. I've used it in my own projects as well. Being a superset, it's much closer to JavaScript than something like CoffeeScript, so I think the effect on potential contributors shouldn't be too large. Of course some people may get confused, but the same could be said about prototype usage, as most JavaScript programmers are familiar with only some subset of the language. Editing functions with limited JavaScript knowledge would still be possible. I don't really have a strong opinion on this topic, but I like static typing, so if anything I'll lean a bit towards supporting TypeScript.

Spent the last couple weeks evaluating various drag and drop libraries, including this one. I'm curious as to the planned direction regarding this pull request.
Specifically I noticed that this pull request seemingly takes the project from being implemented in javascript to being implemented in typescript. This is not a concern that I have, but I want to properly account for such complexity before making my own final selection.
I spent a good day reviewing the proposed branch from @reppners. I didn't notice any obvious regressions while using that branch vs the main branch, however I did notice that it was still not possible to drag items from a main document into an iFrame, something that I had hoped would magically start working once the library moved closer to the specification. Any comments there @reppners?

@kamelkev
I never tried to make it work with an iFrame. After taking a look at examples it seems there is nothing special to do when using the html5 DnD api so you are right in your assumption that it should just work. Unfortunately I don't have enough spare time to further investigate this right now. I'll try to spin up an example and take a look at it in the next few weeks.
Regarding typescript I think it doesn't add complexity. Its just ES6/ES7 features + type checking. In the long run its more self-documenting and easier to maintain. Comparing ES6 and TypeScript I'd say they are very close, its just adding (optional, flexible) type declarations.

@reppners thanks for the follow up. Yeah I understand the nature of typescript, but I still need to account for the time in becoming familiar with it. I'm not against it if it improves the quality of a product, so non-issue there.
@timruffles Which direction are you planning? I see a note a few months ago, and seemingly nothing after that.

I think the most likely scenario is that some adaptation of this branch will go into master.
Unfortunately I still haven't managed to properly review it all. All the time I've had for this project has gone into maintaining the current master branch.

Ok, that sounds promising. Thanks for the follow up.

Ok - does anyone have the time to push this forward? We'd need to roll in all the good stuff people have committed to the JS version too.
@reppners @xStrom

Time is certaintly scarce currently. However as you mentioned, the JS branch has been getting some nice polish over these last months and so the amount of work that needs to be done here keeps increasing. Thus it certainly makes sense to get this over with sooner rather than later.
I guess I can commit to doing a serious code review & parity check before the end of the month.
What's the decision on the TypeScript situation? Like I mentioned earlier, I don't have strong feelings here however I would rather keep it in TypeScript for the static typing benefits.

I'd be happy to go with TypeScript, especially now @reppners did such a great job on making a lean version.
@reppners any ideas on how to proceed?

BTW @reppners you're now a contributor - thanks again for doing such an awesome job with the TS code! :)

BTW @reppners you're now got collaborator/commit access - thanks again for doing such an awesome job with the TS code! :)

Thx! I really appreciate that you made me a collaborator for this project.
Much work did go in the refactoring-branch so I think it makes sense to make a new pull request based on that branch.
To get all the stuff thats in the JS version I think we have to make a checklist to be sure we don't miss anything. I scanned the latest commits and merges and there were a few bugs fixed that we have to make sure are either not existing in the rewrite or will be fixed there as well.
So here is a checklist for things that I would like to do:

[ ] use tsconfig.json for TS config instead of grunt task config
[ ] introduce TSLint
[ ] implement setDragImage() in rewrite
[ ] make sure latest bugfixes either are not needed in first place or are applied to rewrite
[ ] find solution for Safari 9 zooming the whole webpage when a drag item reaches right edge of the viewport (they changed something from v8 to v9 that I couldn't come up with a solution yet)
[ ] refactor code to allow hook for customizing drag start conditions
[ ] refactor code to allow hook for default action when drag was not started
[ ] refactor code to allow hook for scrolling a container or viewport when dragging close to an edge

The last points became increasingly important to me. Instead of having the polyfill implement all kinds of use-cases that users of the polyfill might have a need for we should provide a few hooks so they can implement their own solutions. Even browsers are not behaving all the same when deciding on when to start a drag operation. Internet Explorer for example requires a sustaining touch and horizontal movement to start a drag operation.
If we are able to provide these hooks we can shrink the size of the library and everybody can implement it in a way that feels and works good for their specific product/use-case. Of course a certain level of basic functionality should be provided by the polyfill.
To get started we could merge the refactoring-branch to a new branch in this repository and work on from there until we are satisfied to make a beta-phase, where we try to fix all regression bugs that might occur.
Thoughts?

Merging refactoring as a new unstable branch here seems like a very good idea to me. We can then open separate issues for that branch and save on some potential confusion.
Create a new pull request that does this merger as a new branch, and lets get this party started.

closing this in favor of #61


Keyboard Manager Num Lock Remap sending both remapped key and numlock

Environment
Windows build number: Microsoft Windows [Version 10.0.18363.836]
PowerToys version: v0.18.0
PowerToy module for which you are reporting the bug (if applicable): Keyboard Manager
Lenovo Legion Y530

Steps to reproduce

Remap numlock to 0
Remap other key to numlock
Remap numpad 0 to period
Press numlock key
Press numpad 0
Press numlock key
Press numpad 0

Expected behavior

I expect when I remap numlock to a different key that just the remapped key is sent when pressed. I do not expect it to also toggle numlock.
Actual behavior

When I press numlock it is both toggling numlock and sending the remapped key.
Screenshots

Can repro. Looks like Num Lock doesn't get suppressed by low level hooks. Need to look a bit more into why.

@saahmedm since we know a workaround for this bug, I think we should get this in for 0.19, since it shouldn't be too complicated

Fixed in 0.19.0, please visit https://github.com/microsoft/PowerToys/releases/ for the latest release


Could not load import xxx from '@/utils/xxx

The following error in yarn build
 ERROR  [vite:load-fallback] Could not load /project_path/utils/getBreakpointProps (imported by ../../node_modules/bootstrap-vue-3/src/components/BCol.vue): ENOENT: no such file or directory, open '/project_path/utils/getBreakpointProps'

 ERROR  Could not load /project_path/utils/getBreakpointProps (imported by ../../node_modules/bootstrap-vue-3/src/components/BCol.vue): ENOENT: no such file or directory, open '/project_path/utils/getBreakpointProps'

Shouldn't it be specified as a relative path, as pointed out in #5?

I'm not sure how you're doing this but I have no issue with a test library on building and/or running dev with the latest version

@VividLemon It may work if it is defined in tsconfig.json-> compilerOptions-> paths.
However, npm install bootstrap-vue-3 does not include tsconfig.json.

Should be fixed in 0.1.16


Cross-version API compatibility - Context APIs Tests

What this PR does / why we need it
Add cross-version API compatibility tests for Context API methods

These Tests are handled in https://github.com/vmware-tanzu/tanzu-plugin-runtime/pull/15


Allow addition of custom stylesheets and scripts

This MR allows authors to add custom stylesheets and javascript scripts to the <header> tags.
The customization is achieved by overriding the layouts/partials/header.html partial that, by default, is empty.
Fixes #3

@chrisdoherty4 thank you for pull request. I'll merge it.


{Branch Management} Merge release 2.17.1 back to dev

Merge release back to dev.
🛑 Don't squash merge but merge it locally and push.

Branch Management


Only chsh to zsh if zsh is not the shell

I use the homebrew supplied zsh shell instead of the default /bin/zsh so it was important for me to figure out exactly what is the current default shell.
I found any of the following three commands to be quite useful in determining this:
dscl localhost -read /Local/Default/Users/$USER UserShell | awk '{ print $2 }'
dscl . -read /Users/$USER/ UserShell | awk '{ print $2 }'
dscl localhost -read /Local/Default/Users/$USER shell | awk '{ print $2 }'

I use it as thus:
REALSHELL=$(dscl . -read /Users/$USER/ UserShell | awk '{ print $2 }')
if [ $REALSHELL != "/usr/local/bin/zsh" ]; then
     fancy_echo "Changing your $REALSHELL shell to /usr/local/bin/zsh ..."
     chsh -s "$(which zsh)"
fi

I see this issue has been approached before: https://github.com/thoughtbot/laptop/pull/312
I find the dscl solution to be much more robust for my needs. Thoughts?

Are you saying the current approach is not working for you? What is the value of $SHELL?

Actually, I realize the issue. Laptop changes the shell but $SHELL doesn't update until a new parent shell is opened. I think this method is able to immediately reflect the changes of chsh which was important when I was trying to change the shell twice during a single script run.
I'm going to close this issue.


Update delegate-metrics.md

This updates a file that was hastily published yesterday with changes that would have been made if there'd been time for a more careful review. Small changes.
THIS NEEDS TO BE READY REPUBLISHED TODAY FOR A TRAINING TOMORROW.
Harness Developer Pull Request
Thanks for helping us make the Developer Hub better. The PR will be looked at
by the maintainers.
What Type of PR is This?

[ ] Issue
[ ] Feature
[ x] Maintenance/Chore

If tied to an Issue, list the Issue(s) here:

Issue(s)

House Keeping
Some items to keep track of. Screen shots of changes are optional but would help the maintainers review quicker.

[ ] Tested Locally
[ ] Optional Screen Shoot.

Preview environment: https://ci.pr.harness.io/pr-573

Thanks Doug.

Preview environment: https://ci.pr.harness.io/pr-573


Clarify readme

The phrase "forbids disconnections" (in two places) should I think be "forbids connections"

Thanks!


NoSuchFieldError: LOCALE on Spigot 1.19 when calling BukkitAudiences#create(Plugin)

Apologies if I'm missing something obvious because this is the first time I've used this library.
java.lang.NoSuchFieldError: LOCALE
        at net.kyori.adventure.platform.bukkit.BukkitAudience.contributePointers(BukkitAudience.java:117) ~[?:?]
        at net.kyori.adventure.platform.facet.FacetAudience.pointers(FacetAudience.java:453) ~[?:?]
        at net.kyori.adventure.pointer.Pointered.getOrDefault(Pointered.java:65) ~[?:?]
        at net.kyori.adventure.platform.facet.FacetAudienceProvider.addViewer(FacetAudienceProvider.java:113) ~[?:?]
        at net.kyori.adventure.platform.bukkit.BukkitAudiencesImpl.<init>(BukkitAudiencesImpl.java:99) ~[?:?]
        at net.kyori.adventure.platform.bukkit.BukkitAudiencesImpl$Builder.lambda$build$1(BukkitAudiencesImpl.java:175) ~[?:?]
        at java.util.HashMap.computeIfAbsent(HashMap.java:1220) ~[?:?]
        at java.util.Collections$SynchronizedMap.computeIfAbsent(Collections.java:2760) ~[?:?]
        at net.kyori.adventure.platform.bukkit.BukkitAudiencesImpl$Builder.build(BukkitAudiencesImpl.java:173) ~[?:?]
        at net.kyori.adventure.platform.bukkit.BukkitAudiencesImpl.instanceFor(BukkitAudiencesImpl.java:89) ~[?:?]
        at net.kyori.adventure.platform.bukkit.BukkitAudiences.create(BukkitAudiences.java:53) ~[?:?]

Server is running CraftBukkit version 3539-Spigot-56be6a8-82f7574 (MC: 1.19) (Implementing API version 1.19-R0.1-SNAPSHOT)
Output of java --version
openjdk <IP_ADDRESS> 2022-04-22
OpenJDK Runtime Environment (build <IP_ADDRESS>+2)
OpenJDK 64-Bit Server VM (build <IP_ADDRESS>+2, mixed mode)

OS is Arch Linux x64

Is it properly shaded? Copying the standard response from Discord:
Why am I getting a NoSuchFieldError, NoSuchMethodError, ClassNotFoundException or similar when updating/using adventure-platform-*, adventure-text-minimessage, adventure-api or other related libraries/tools?
You need to ensure that you are properly shading and relocating your dependencies. Issues like this can be caused by:

Not shading the correct version of adventure-api. You can check your dependency tree to see what or why your build tool is not including the correct version of the API that matches the one used by the platform version you are using.
Not relocating your dependencies. If you are running on a platform that includes an older version of the API, or another mod/plugin is also not properly relocating their dependencies, you will use their out-of-date version of the API, causing errors.
Building/running against a native implementation of adventure-api.  If you are running on a platform that includes an older version of the API, this could cause issues if the library depends on newer features that are not available in the outdated version of the API, your library will not be able to find these methods, causing errors.
Relocating adventure-api and trying to use native/library methods. If you relocate the API, you will not be able to use any methods that the API in native implementations or libraries as method signatures will differ. Either shade and relocate this software, or do not use native methods. Alternatively, if you are shading and relocating a library but want to use the the API, make sure you are only relocating the packages that you are shading.

Please consult the documentation for your build tool for more information on how to shade, relocate and manage your dependencies.

The above message is correct, this is a build issue. For more support you can jump into our discord #off-topic channel or consult your build tool docs!


UF-333: Stored values are not correctly presented

Fix + tests
@manstis Can you review please?

+1 to merge (when green)


Spans have become inaccurate somehow

I discovered this seems to be related to comments, where every comment makes things off by 2 spaces, and those 2 spaces start to accumulate over time to yield crazy looking highlights.

Looking into this ☝


[REF] Changes data directory locator for abagen data

Closes #44.
Adapts functionality from nilearn to accept a more liberal data_dir specification in abagen.datasets.fetch_microarray(). If data_dir is not provided the function now defaults to storing datasets in $HOME/abagen-data.

Pull Request Test Coverage Report for Build 246

47 of 57 (82.46%)  changed or added relevant lines in 2 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage decreased (-0.8%) to 95.02%

Changes Missing Coverage
Covered Lines
Changed/Added Lines
%

abagen/datasets.py
24
34
70.59%

Totals

Change from base Build 244:
-0.8%

Covered Lines:
973

Relevant Lines:
1024

💛  - Coveralls


VIM-780: Basic multiple carets implementations for action.motion.leftright

Closing this PR in favor of #147.


Fix user storage formatting and storage

<@user> was being added in impractical place. It's a message formatting concern. Not how it should be stored.

They're not new lines Mr. sonarcloud, those are renamed files 🤔


[SPARK-33035][SQL][3.0] Updates the obsoleted entries of attribute mapping in QueryPlan#transformUpWithNewOutput

What changes were proposed in this pull request?
This PR intends to fix corner-case bugs in the QueryPlan#transformUpWithNewOutput that is used to propagate updated ExprIds in a bottom-up way. Let's say we have a rule to simply assign new ExprIds in a projection list like this;
case class TestRule extends Rule[LogicalPlan] {
  override def apply(plan: LogicalPlan): LogicalPlan = plan.transformUpWithNewOutput {
    case p @ Project(projList, _) =>
      val newPlan = p.copy(projectList = projList.map { _.transform {
        // Assigns a new `ExprId` for references
        case a: AttributeReference => Alias(a, a.name)()
      }}.asInstanceOf[Seq[NamedExpression]])

      val attrMapping = p.output.zip(newPlan.output)
      newPlan -> attrMapping
  }
}

Then, this rule is applied into a plan below;
(3) Project [a#5, b#6]
+- (2) Project [a#5, b#6]
   +- (1) Project [a#5, b#6]
      +- LocalRelation <empty>, [a#5, b#6]

In the first transformation, the rule assigns new ExprIds in (1) Project (e.g., a#5 AS a#7, b#6 AS b#8). In the second transformation, the rule corrects the input references of (2) Project  first by using attribute mapping given from (1) Project (a#5->a#7 and b#6->b#8) and then assigns new ExprIds (e.g., a#7 AS a#9, b#8 AS b#10). But, in the third transformation, the rule fails because it tries to correct the references of (3) Project by using incorrect attribute mapping (a#7->a#9 and b#8->b#10) even though the correct one is a#5->a#9 and b#6->b#10. To fix this issue, this PR modified the code to update the attribute mapping entries that are obsoleted by generated entries in a given rule.
This is the backport of https://github.com/apache/spark/pull/29911.
Why are the changes needed?

bugfix.
Does this PR introduce any user-facing change?

No.
How was this patch tested?

Added tests in QueryPlanSuite.

Test build #129442 has started for PR 29953 at commit 668fc9f.

Kubernetes integration test starting
URL: https://amplab.cs.berkeley.edu/jenkins/job/SparkPullRequestBuilder-K8s/34049/

Kubernetes integration test status failure
URL: https://amplab.cs.berkeley.edu/jenkins/job/SparkPullRequestBuilder-K8s/34049/

Merged build finished. Test FAILed.

Test FAILed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder-K8s/34049/
Test FAILed.

Test build #129442 has finished for PR 29953 at commit 668fc9f.

This patch fails PySpark unit tests.
This patch merges cleanly.
This patch adds no public classes.

Merged build finished. Test FAILed.

Test FAILed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/129442/
Test FAILed.

Re-triggered Github Actions.

retest this please

Test build #129476 has started for PR 29953 at commit 8b8d91a.

Kubernetes integration test starting
URL: https://amplab.cs.berkeley.edu/jenkins/job/SparkPullRequestBuilder-K8s/34083/

Kubernetes integration test status failure
URL: https://amplab.cs.berkeley.edu/jenkins/job/SparkPullRequestBuilder-K8s/34083/

Merged build finished. Test FAILed.

Test FAILed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder-K8s/34083/
Test FAILed.

I reverted the commit causing test failure.

retest this please

Test build #129481 has started for PR 29953 at commit 8b8d91a.

Kubernetes integration test starting
URL: https://amplab.cs.berkeley.edu/jenkins/job/SparkPullRequestBuilder-K8s/34087/

Kubernetes integration test status failure
URL: https://amplab.cs.berkeley.edu/jenkins/job/SparkPullRequestBuilder-K8s/34087/

Merged build finished. Test FAILed.

Test FAILed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder-K8s/34087/
Test FAILed.

K8s R failure is irrelevant to this.
- Run SparkR on simple dataframe.R example *** FAILED ***
  The code passed to eventually never returned normally. Attempted 70 times over 2.0004431273166667 minutes. Last failure message: false was not true. (KubernetesSuite.scala:315)

Test build #129476 has finished for PR 29953 at commit 8b8d91a.

This patch fails PySpark unit tests.
This patch merges cleanly.
This patch adds no public classes.

Merged build finished. Test FAILed.

Test FAILed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/129476/
Test FAILed.

@maropu can you rebase and see if tests pass?

Test build #129489 has started for PR 29953 at commit 6f0031d.

Kubernetes integration test starting
URL: https://amplab.cs.berkeley.edu/jenkins/job/SparkPullRequestBuilder-K8s/34095/

Kubernetes integration test status failure
URL: https://amplab.cs.berkeley.edu/jenkins/job/SparkPullRequestBuilder-K8s/34095/

Merged build finished. Test FAILed.

Test FAILed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder-K8s/34095/
Test FAILed.

Test build #129481 has finished for PR 29953 at commit 8b8d91a.

This patch passes all tests.
This patch merges cleanly.
This patch adds no public classes.

Merged build finished. Test PASSed.

Test PASSed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/129481/
Test PASSed.

Merged to branch-3.0.

Thanks, all!

Test build #129489 has finished for PR 29953 at commit 6f0031d.

This patch fails due to an unknown error code, -9.
This patch merges cleanly.
This patch adds no public classes.

Merged build finished. Test FAILed.

Test FAILed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/129489/
Test FAILed.