LocalSmappee restart error 404

The method LocalSmappee.restart() has been reported to raise 404-errors. There is probably something wrong with the URL: http://<ip address>/gateway/apipublic/restartEMeter.
I'm looking for someone to verify the bug, and perhaps provide me with the answer. I have no documentation, all methods were inspired by issue #7.

I can confirm the error with ls.restart() and I remember there was some documentation somewhere... I will search.
$ python3
Python 3.5.2 (v3.5.2:4def2a2901a5, Jun 26 2016, 10:47:25)
[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> from smappy import LocalSmappee
>>> ls = LocalSmappee(ip='<IP_ADDRESS>')
>>> ls.logon(password='XXX‘)
{'success': 'Logon successful!', 'header': 'Logon to the monitor portal successful...'}
>>> ls.report_instantaneous_values()
{'report': 'Instantaneous values:
voltage=229.7 Vrms
FFTComponents:
Phase 1:
\tcurrent=0.355 A, activePower=30.738 W, reactivePower=75.645 var, apparentPower=81.652 VA, cosfi=36, quadrant=0, phaseshift=0.0, phaseDiff=0.0
\tFFTComponents:
Phase 2:
\tcurrent=0.988 A, activePower=172.133 W, reactivePower=148.239 var, apparentPower=227.167 VA, cosfi=75, quadrant=0, phaseshift=0.0, phaseDiff=0.0
\tFFTComponents:
Phase 3:
\tcurrent=0.178 A, activePower=36.222 W, reactivePower=19.399 var, apparentPower=41.09 VA, cosfi=87, quadrant=0, phaseshift=0.0, phaseDiff=0.0
\tFFTComponents:

Load[555075] state[0] power: 0.0 on Sun Oct 23 07:37:08 GMT 2016
Load[545894] state[0] power: 0.0 on Fri Oct 21 09:42:00 GMT 2016
Load[553872] state[0] power: 0.0 on Sun Oct 23 07:37:08 GMT 2016
Load[657445] state[0] power: 0.0 on Sun Oct 23 07:37:08 GMT 2016
Load[707410] state[0] power: 0.0 on Fri Oct 21 11:12:13 GMT 2016
Load[545897] state[0] power: 0.0 on Sun Oct 23 14:51:38 GMT 2016
Load[581323] state[0] power: 0.0 on Fri Oct 21 09:35:19 GMT 2016
Load[579206] state[0] power: 0.0 on Thu Oct 20 17:35:18 GMT 2016
Load[545893] state[0] power: 0.0 on Fri Oct 21 09:41:13 GMT 2016
Load[608840] state[0] power: 0.0 on Sun Oct 23 07:37:08 GMT 2016
Load[645565] state[0] power: 0.0 on Sun Oct 23 13:32:13 GMT 2016
Load[588906] state[0] power: 0.0 on Sun Oct 23 11:41:23 GMT 2016
Load[562900] state[0] power: 0.0 on Sun Oct 23 13:32:13 GMT 2016
Load[551500] state[0] power: 0.0 on Sun Oct 23 07:37:08 GMT 2016
Load[561431] state[0] power: 0.0 on Sat Oct 22 21:15:18 GMT 2016
Load[553875] state[0] power: 0.0 on Sat Oct 22 09:40:54 GMT 2016
Load[556393] state[0] power: 0.0 on Sat Oct 15 19:34:35 GMT 2016
Load[545896] state[0] power: 0.0 on Sun Oct 23 15:41:16 GMT 2016
Load[648471] state[0] power: 0.0 on Sun Oct 23 11:30:39 GMT 2016
Load[570223] state[0] power: 0.0 on Sun Oct 09 12:49:28 GMT 2016
Load[618144] state[0] power: 0.0 on Sun Oct 23 10:52:55 GMT 2016
Load[628724] state[0] power: 0.0 on Sun Oct 23 07:37:08 GMT 2016
Load[549199] state[0] power: 0.0 on Sun Oct 23 11:26:09 GMT 2016
Load[553874] state[0] power: 0.0 on Sun Oct 23 07:37:08 GMT 2016
Load[545895] state[0] power: 0.0 on Fri Oct 21 12:24:18 GMT 2016
Load[704509] state[1] power: 55.0 on Sun Oct 23 15:37:01 GMT 2016
Load[549200] state[0] power: 0.0 on Fri Oct 21 13:42:35 GMT 2016
Load[556394] state[0] power: 0.0 on Fri Oct 21 18:55:07 GMT 2016
Load[653335] state[0] power: 0.0 on Fri Sep 30 13:02:00 GMT 2016
Load[551498] state[0] power: 0.0 on Fri Oct 21 09:36:06 GMT 2016
Load[594652] state[0] power: 0.0 on Sun Oct 16 11:39:16 GMT 2016
Load[553873] state[0] power: 0.0 on Fri Oct 21 09:05:21 GMT 2016
Load[547700] state[0] power: 0.0 on Sun Oct 23 13:32:13 GMT 2016
Load[581324] state[0] power: 0.0 on Sun Oct 23 07:37:08 GMT 2016
Load[574732] state[0] power: 0.0 on Sun Oct 23 09:39:01 GMT 2016
Load[550464] state[0] power: 0.0 on Fri Oct 21 19:29:24 GMT 2016
Load[550466] state[0] power: 0.0 on Fri Oct 21 19:44:25 GMT 2016
Load[547694] state[0] power: 0.0 on Sat Oct 22 16:10:33 GMT 2016
Load[589961] state[0] power: 0.0 on Sun Oct 23 10:28:54 GMT 2016
Load[547699] state[0] power: 0.0 on Sun Oct 23 11:24:42 GMT 2016
Load[550465] state[0] power: 0.0 on Sun Oct 23 07:37:08 GMT 2016
Load[557781] state[0] power: 0.0 on Thu Oct 20 11:15:42 GMT 2016
Load[547698] state[0] power: 0.0 on Sun Oct 09 15:29:55 GMT 2016
Load[550463] state[0] power: 0.0 on Sun Oct 23 07:37:08 GMT 2016
Load[592660] state[0] power: 0.0 on Sun Oct 23 13:50:59 GMT 2016
Load[614615] state[0] power: 0.0 on Sat Oct 22 20:17:50 GMT 2016
Load[551501] state[0] power: 0.0 on Sat Oct 22 03:25:31 GMT 2016
Load[740748] state[0] power: 0.0 on Sun Oct 23 13:51:45 GMT 2016
Load[733827] state[0] power: 0.0 on Sun Oct 23 15:34:26 GMT 2016
Load[579205] state[0] power: 0.0 on Mon Oct 17 10:04:15 GMT 2016
Load[679987] state[0] power: 0.0 on Sun Oct 23 08:37:44 GMT 2016
Load[754521] state[0] power: 0.0 on Sun Oct 23 07:37:08 GMT 2016
Load[727850] state[0] power: 0.0 on Sat Oct 15 16:15:05 GMT 2016
Load[547697] state[0] power: 0.0 on Sun Oct 23 13:32:13 GMT 2016
Load[568665] state[0] power: 0.0 on Sun Oct 23 10:56:33 GMT 2016
Load[551499] state[0] power: 0.0 on Sun Oct 23 07:37:08 GMT 2016
Load[551502] state[0] power: 0.0 on Sun Oct 23 11:55:23 GMT 2016
Load[547696] state[0] power: 0.0 on Sun Oct 23 10:56:53 GMT 2016
Load[547695] state[0] power: 0.0 on Sun Oct 23 15:36:20 GMT 2016
Load[627020] state[0] power: 0.0 on Fri Oct 21 11:50:03 GMT 2016

Phase 1, peak active power 5323.626 W at 22/04/2016 09:38:00
Phase 2, peak active power 6459.089 W at 01/04/2016 12:23:35
Phase 3, peak active power 4628.469 W at 14/05/2016 17:33:00
active energy RMS per phase mapping combination
phase mapping 210=1085.04 kWh [ 1/1]
phase mapping 12=1213.511 kWh [ -1/1]
phase mapping 21=2600.062 kWh [* 1/3]
phase mapping 102=1736.609 kWh [ 1/0]
phase mapping 120=937.823 kWh [ 1/1]
phase mapping 201=987.557 kWh [ 1/2]

active energy RMS (solar) per phase mapping combination
phase mapping 210=0.0 kWh [ 1/1]
phase mapping 12=0.0 kWh [ -1/1]
phase mapping 21=0.0 kWh [* 1/3]
phase mapping 102=0.0 kWh [ 1/0]
phase mapping 120=0.0 kWh [ 1/1]
phase mapping 201=0.0 kWh [ 1/2]

'}
>>> ls.load_instantaneous()
[{'value': '1', 'key': 'meterReaderRestart'}, {'value': '30998', 'key': 'phase0ActivePower'}, {'value': '36', 'key': 'phase0Cosfi'}, {'value': '0', 'key': 'phase0Quadrant'}, {'value': '168871', 'key': 'phase1ActivePower'}, {'value': '74', 'key': 'phase1Cosfi'}, {'value': '0', 'key': 'phase1Quadrant'}, {'value': '36234', 'key': 'phase2ActivePower'}, {'value': '87', 'key': 'phase2Cosfi'}, {'value': '0', 'key': 'phase2Quadrant'}, {'value': '2', 'key': 'autoCommissioningCandidate'}, {'value': '0', 'key': 'autoCommissioningRunning'}, {'value': '1', 'key': 'autoCommissioningValidation'}, {'value': '0', 'key': 'voltageReversed'}]
**>>> ls.restart()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/smappy/smappy.py", line 496, in restart
    r.raise_for_status()
  File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/requests/models.py", line 862, in raise_for_status
    raise HTTPError(http_error_msg, response=self)
requests.exceptions.HTTPError: 404 Client Error: Not Found for url: http://<IP_ADDRESS>/gateway/apipublic/restartEMeter**
>>>

Here is another code sample for this aborting with a similar error message:
>>> import json, requests, shed
>>> smappeeIP = '<IP_ADDRESS>'
>>> smappeePwd = 'XX'
>>> headers = {'Content-Type': 'application/json;charset=UTF-8'}
>>> payload = smappeePwd
>>> r = requests.post('http://'+smappeeIP+'/gateway/apipublic/logon', data = payload, headers=headers)
>>> print(r.content)
b'{"success":"Logon successful!","header":"Logon to the monitor portal successful..."}'
>>> payload = "loadInstantaneous"
>>> r = requests.post('http://'+smappeeIP+'/gateway/apipublic/instantaneous',  headers=headers, data=payload )
>>> print(r.content)
b'[{"value":"1","key":"meterReaderRestart"},{"value":"33517","key":"phase0ActivePower"},{"value":"38","key":"phase0Cosfi"},{"value":"0","key":"phase0Quadrant"},{"value":"183537","key":"phase1ActivePower"},{"value":"76","key":"phase1Cosfi"},{"value":"0","key":"phase1Quadrant"},{"value":"35764","key":"phase2ActivePower"},{"value":"87","key":"phase2Cosfi"},{"value":"0","key":"phase2Quadrant"},{"value":"2","key":"autoCommissioningCandidate"},{"value":"0","key":"autoCommissioningRunning"},{"value":"1","key":"autoCommissioningValidation"},{"value":"0","key":"voltageReversed"}]'
>>> r = requests.post('http://'+smappeeIP+'/gateway/apipublic/restartEMeter', headers=headers)
>>> print(r.content)
b'{"errorMessage":"The server has not found anything matching the request URI"}'

We are missing another parameter. I copied the following API from here:
http://xxx.xxx.xxx.xxx/gateway/apipublic/logon
http://xxx.xxx.xxx.xxx/gateway/apipublic/statisticsPublicReport
http://xxx.xxx.xxx.xxx/gateway/apipublic/reportInstantaneousValues
http://xxx.xxx.xxx.xxx/gateway/apipublic/restartEMeter?action=2 (careful! not sure what it does)
http://xxx.xxx.xxx.xxx/gateway/apipublic/commandControlPublic

My smappee is up again. Here I downloaded the http://<IP_ADDRESS>/smappee.html html code and took out the function. It restarts smappee metering (see screenshot):
		function restartEMeter() {

			if (!authenticated) setHeaderError("Error not authenticated. Use Logon first!");
			else {

	        	console.log("restartEMeter()");

				var url = baseURL + "/restartEMeter?action=2";
				$.ajax(
						{
							 async : true,
							 type:'GET',
							 contentType: 'application/json',
							 url: url,
							 data: '',
							 dataType: 'son',

							 success: function(data) {
								console.log("restart success");

								if (data.error) setHeaderError(data.error);
								else {
									setHeaderSuccess("Restart monitor, wait 1 minute, refresh webportal and logon again...");
									setAuthenticated(false);

									$("#contentArea").children().remove();
									$("#contentArea").empty();
								}
							 },

							 error: function(data) {
								 console.log("report error");
								 alert("Error, "+data.responseText);
							 }
						 }
					 );
			}
		}

strange... still an error message
>>> r = requests.post('http://'+smappeeIP+'/gateway/apipublic/restartEMeter?action=2', headers=headers)
>>> print(r.content)
b'{"errorMessage":"The server has not found anything matching the request URI"}'

while looking around in the above html code I found some more commands which might have appropriate API too:

Advanced action

						Restart monitor

			 				<input type="button" class="btn btn-warning small" id="restartSmappee" name="restartSmappee" value="apply" onclick="restartSmappee()">

						Clear all data (historical data + appliances data)
and restart monitor

			 				<input type="button" class="btn btn-warning small" id="clearData" name="clearData" value="apply" onclick="clearData()">

						Clear only appliances data
and restart monitor

			 				<input type="button" class="btn btn-warning small" id="clearAppliances" name="clearAppliances" value="apply" onclick="clearAppliances()">

						Reset active power peak values

			 				<input type="button" class="btn btn-warning small" id="resetActivePowerPeaks" name="resetActivePowerPeaks" value="apply" onclick="resetActivePowerPeaks()">

						Reset sensor cache

			 				<input type="button" class="btn btn-warning small" id="resetSensorCache" name="resetSensorCache" value="apply" onclick="resetSensorCache()">

						Autocommissioning validation

			 				<input type="button" class="btn btn-warning small" id="stopAutoCommissioningValidation" name="stopAutoCommissioningValidation" value="stop" onclick="autoCommissioningValidation('stopAutoCommissioningValidation')">
			 				<input type="button" class="btn btn-warning small" id="startAutoCommissioningValidation" name="startAutoCommissioningValidation" value="start" onclick="autoCommissioningValidation('startAutoCommissioningValidation')">
			 				<input type="button" class="btn btn-warning small" id="resetAutoCommissioningValidation" name="resetAutoCommissioningValidation" value="reset values" onclick="autoCommissioningValidation('resetAutoCommissioningValidation')">

						Restart autocommissioning cyclus

			 				<input type="button" class="btn btn-warning small" id="restartAutoCommissioningCyclus" name="restartAutoCommissioningCyclus" value="instant+validation" onclick="restartAutoCommissioningCyclus('restartAutoCommissioningInstantAndValidation')">
			 				<input type="button" class="btn btn-warning small" id="restartAutoCommissioningCyclus" name="restartAutoCommissioningCyclus" value="instant" onclick="restartAutoCommissioningCyclus('restartAutoCommissioningInstant')">
			 				<input type="button" class="btn btn-warning small" id="restartAutoCommissioningCyclus" name="restartAutoCommissioningCyclus" value="validation" onclick="restartAutoCommissioningCyclus('restartAutoCommissioningValidation')">

						Enable/disable green breathing

			 				<input type="checkbox" class="btn btn-warning small" id="enableGreenBreathing" name="enableGreenBreathing" onclick="enableGreenBreathing()">

						Enable/disable command control look ahead schedule recover

			 				<input type="checkbox" class="btn btn-warning small" id="enableLookAheadScheduleRecover" name="enableLookAheadScheduleRecover" onclick="enableLookAheadScheduleRecover()">

						Enable/disable MAC address arp-scan

			 				<input type="checkbox" class="btn btn-warning small" id="enableMacAddressScanning" name="enableMacAddressScanning" onclick="enableMacAddressScanning()">

						Reset MAC address scanning cache

			 				<input type="button" class="btn btn-warning small" id="resetIPScanCache" name="resetIPScanCache" value="apply" onclick="resetIPScanCache()">

but as I do not want to loose all my data I do not play around with them...

I don't know if it changes anything, but would you try specifying the extra parameter separately?
import requests
url = 'http://'+smappeeIP+'/gateway/apipublic/restartEMeter'
headers = {'Content-Type': 'application/json;charset=UTF-8'}
payload = {'action': 2}
r = requests.get(url, params=payload, headers=headers)
print(r.status_code, r.content)

Maybe leave out the headers and see what that gives.
As for the other requests: might be nice to include them in the code too. Would you mind opening a new issue for this?
It seems as though each button has a JavaScript function attached to it, see onclick="enableGreenBreathing()". Take a look in the  section of the html-page: you'll most likely find something like this , check out that file to see what the functions do. You can also use your browser's development console to navigate these things.

still does not work:
>>> import requests
>>> headers = {'Content-Type': 'application/json;charset=UTF-8'}
>>> payload = {'action': 2}
>>> url = 'http://<IP_ADDRESS>/gateway/apipublic/restartEMeter'
>>> r = requests.get(url, params=payload, headers=headers)
>>> print(r.status_code, r.content)
404 b'{"errorMessage":"The server has not found anything matching the request URI"}'

we are somehow missing this part:
                             data: '',
                             dataType: 'son',

what do you think?

Error 404 indicates that something is wrong with the URL we are using. If it had something to do with the headers or the payload we would be getting different errors...
The ajax call is var url = baseURL + "/restartEMeter?action=2";. I suspect that maybe this specific request uses a different base URL than the other requests. Could you figure out what that baseURL parameter is that the ajax is referring to?

I found the baseURL in #16, it seems to be the one we've been using.
I'll first add all those new requests, we'll see if any more errors pop up

I checked. The baseURL is always the same
var baseURL = "/gateway/apipublic";

$ grep baseURL *.html
Smappee monitor.html:    	var baseURL = "/gateway/apipublic";
Smappee monitor.html:				var url = baseURL + "/statisticsPublicReport";
Smappee monitor.html:				var url = baseURL + "/restartEMeter?action=2";
Smappee monitor.html:				var url = baseURL + "/reportInstantaneousValues";
Smappee monitor.html:    	var baseURL = "/gateway/apipublic";
Smappee monitor.html:			var url = baseURL + "/resetActivePowerPeaks";
Smappee monitor.html:			var url = baseURL + "/resetIPScanCache";
Smappee monitor.html:			var url = baseURL + "/resetSensorCache";
Smappee monitor.html:			var url = baseURL + "/clearData";
Smappee monitor.html:			var url = baseURL + "/clearAppliances";
Smappee monitor.html:			var url = baseURL + "/restartSmappee?action=2";
Smappee monitor.html:    		var url = baseURL + "/advancedConfigPublic";
Smappee monitor.html:    	   	var url = baseURL + "/advancedConfigPublic";
Smappee monitor.html:    	   	var url = baseURL + "/advancedConfigPublic";
Smappee monitor.html:		   	var url = baseURL + "/advancedConfigPublic";
Smappee monitor.html:		   	var url = baseURL + "/advancedConfigPublic";
Smappee monitor.html:	 		var url = baseURL + "/advancedConfigPublic";
Smappee monitor.html:	 		var url = baseURL + "/advancedConfigPublic";
Smappee monitor.html:	 		var url = baseURL + "/advancedConfigPublic";
advancedpublic.html:    	var baseURL = "/gateway/apipublic";
advancedpublic.html:			var url = baseURL + "/resetActivePowerPeaks";
advancedpublic.html:			var url = baseURL + "/resetIPScanCache";
advancedpublic.html:			var url = baseURL + "/resetSensorCache";
advancedpublic.html:			var url = baseURL + "/clearData";
advancedpublic.html:			var url = baseURL + "/clearAppliances";
advancedpublic.html:			var url = baseURL + "/restartSmappee?action=2";
advancedpublic.html:    		var url = baseURL + "/advancedConfigPublic";
advancedpublic.html:    	   	var url = baseURL + "/advancedConfigPublic";
advancedpublic.html:    	   	var url = baseURL + "/advancedConfigPublic";
advancedpublic.html:		   	var url = baseURL + "/advancedConfigPublic";
advancedpublic.html:		   	var url = baseURL + "/advancedConfigPublic";
advancedpublic.html:	 		var url = baseURL + "/advancedConfigPublic";
advancedpublic.html:	 		var url = baseURL + "/advancedConfigPublic";
advancedpublic.html:	 		var url = baseURL + "/advancedConfigPublic";
commandcontrolpublic.html:    	var baseURL = "/gateway/apipublic";
commandcontrolpublic.html:    		var url = baseURL + "/commandControlPublic";
commandcontrolpublic.html:    	   	var url = baseURL + "/commandControlPublic";
commandcontrolpublic.html:    	   	var url = baseURL + "/commandControlPublic";
commandcontrolpublic.html:    	   	var url = baseURL + "/commandControlPublic";
commandcontrolpublic.html:    	   	var url = baseURL + "/commandControlPublic";
commandcontrolpublic.html:    	   	var url = baseURL + "/commandControlPublic";
commandcontrolpublic.html:    	   	var url = baseURL + "/commandControlPublic";
configpublic.html:    	var baseURL = "/gateway/apipublic";
configpublic.html:    		var url = baseURL + "/instantaneous";
configpublic.html:    		var url = baseURL + "/configPublic";
configpublic.html:    	   	var url = baseURL + "/configPublic";
configpublic.html:    	   	var url = baseURL + "/configPublic";
waveformdisplay.html:    	var baseURL = "/gateway/apipublic";
waveformdisplay.html:    		var url = baseURL + "/waveformDisplay";

@stefferber I noticed that the restart function in the javascript code uses a get method, while we were using a post. I fixed it in f80b59c, maybe try it again?

hello @JrtPec - the local smappee restart function works fine now

Great, thanks!


Firefox/IE only clears cookie and not sessions on reset, tear-down an…

…d instantiate between tests is needed.

Shouldn't we be looking to tear down and reset the sessions by default for all browsers, for consistency?
Presume this doesn't affect local or grid performance, since a new session is pretty quick/easy to get, but does it adversely affect (for example) the performance of tests on browserstack or sauce (particularly the ones where VMs have to be stood up on the fly)

This is my biggest worry. I can imagine with browsers like Firefox it won't impact BS/Sauce as much as it would do locally. With Android/iOS I can imagine the impact would be larger between tests due to it having to boot up the emulator. I'll change it to tear down globally, and see what happens. It may be handled gracefully inside.

Review status: 0 of 3 files reviewed at latest revision, all discussions resolved, all commit checks successful.

Comments from the review on Reviewable.io


add name to index.html

Thnx for contributing @s1gr1d  make sure you follow me and star this repo so that you don't miss the updates and contribute during Hacktoberfest 2020.
Also, resolve the conflicts.
Also, I saw you know React, you can check the current issues and you may get an extra bunch of swags from me.


added copy to clipboard to troubleshooting page

fixes #3042

This change is

http://cockroach-docs-review.s3-website-us-east-1.amazonaws.com/48016fa4bdadc7678b1a1b686c5be52689564003/

Review status: 0 of 3 files reviewed at latest revision, all discussions resolved, all commit checks successful.

v2.1/debug-zip.md, line 52 at r1 (raw file):

## Synopsis

{% include copy-clipboard.html %}

Let's remove this one.

v2.1/file-an-issue.md, line 38 at r1 (raw file):

    ~~~ shell
    $ grep -F '[config]' cockroach-data/logs/cockroach.log
    ~~~~

Adding copy-to-clipboard made the html break here, probably cause there's an extra ~. Try removing that.

Comments from Reviewable

http://cockroach-docs-review.s3-website-us-east-1.amazonaws.com/a44a887622536153a23f222557181ed3f2bee853/

http://cockroach-docs-review.s3-website-us-east-1.amazonaws.com/8fdc05d11731c2ee976fa3b4a608b7c48f024512/

Comments from Reviewable


Support k8s 1.22 as default version

Following issues need to be closed for marking 1.22 as stable and default in Rancher v2.6.4:
Team 2:

[x] https://github.com/rancher/rancher/issues/35639

Team 3:

[x] https://github.com/rancher/rancher/issues/35571
[ ] https://github.com/rancher/rancher/issues/33848
[ ] https://github.com/rancher/rancher/issues/35909

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

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

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

Local k3s and etcd versions that were reverted as part of PR https://github.com/rancher/rancher/pull/35841 were introduced with https://github.com/rancher/rancher/pull/35723.

before closing this, we should also validate that 1.22 no longer shows as experimental

Closing this as 1.22 is not listed as experimental anymore.


.Sites.First deprecated

❯ hugo
Start building sites …
hugo v0.133.0+extended darwin/arm64 BuildDate=2024-08-17T19:57:41Z VendorInfo=brew
WARN  deprecated: .Sites.First was deprecated in Hugo v0.127.0 and will be removed in a future release. Use .Sites.Default instead.
FYI this also occurs in a few hugomods modules too.

Thanks for pointing this out, will draft patch releases for related module.

Done, upgrade modules should fix this, if not, wait a while and then try again, since those modules were just released, there maybe caches stuff, so you may not get the latest version of modules.
Updated modules:

hbstack/preferred-language
hbstack/hb
hugomods/search
hugomods/code-block-panel


install on aapanel problem

hi dear support
i run
sh init_aapanel.sh
but v2board installed on server Instead of Lotus
I am so confused

i do
git clone https://github.com/lotusnetwork/lotusboard.git ./
its wrong ?


[DOC] Update documentation, LICENSE, and dockerfiles for UCX 1.11.0

For 21.08 we are looking to set our minimum version to UCX 1.11.0. This issue is to change our documentation to state this, dockerfiles should also be updated to fetch the UCX 1.11 artifacts.

There's a diff in the LICENSE file in the UCX repo for 1.11.0-rc4 that we need to add prior to tagging our release of 0.28:
https://github.com/openucx/ucx/commit/49a75241607872b1e103a341bfa47343a7fc3f33


Todo category title name underlining issue on Windows

There's an issue with the todo category title names where the underlining that works on linux (as seen in the gif in the README.md) doesn't work on Windows

OS: Windows 11
Potential Solution: Get rid of the underlining in its entirety for compatibility.

Thanks, I fixed it.


Think about to fix the issues found by adapter checker

I am an automatic service that looks for possible errors in ioBroker and creates an issue for it. The link below leads directly to the test:
https://adapter-check.iobroker.in/?q=https://raw.githubusercontent.com/marvingrieger/ioBroker.haassohn

[ ] [E605] No actual year found in copyright. Please add "Copyright (c) 2022 Marvin Grieger<EMAIL_ADDRESS>at the end of README.md
[ ] [E701] No actual year found in LICENSE. Please add "Copyright (c) 2022 Marvin Grieger<EMAIL_ADDRESS>at the start of LICENSE

Thanks,
your automatic adapter checker.
P.S.: There is a community in Github, which supports the maintenance and further development of adapters. There you will find many experienced developers who are always ready to assist anyone. New developers are always welcome there. For more informations visit: https://github.com/iobroker-community-adapters/info

Thanks, that all bugs have been fixed.

Duplicate of #45


Implement NSS ciphersuite parsing

For the sake of completeness, adding NSS ciphersuite support based on existing logic in tls-table would be beneficial.

Parsing logic added to python-ciphersuites


Fix travis-CI failure across master, v0.5, cstor-feature-integration branches

Is this a BUG REPORT or FEATURE REQUEST?
Choose one: BUG REPORT or FEATURE REQUEST
BUG REPORT

What happened:
Travis CI fails for openebs/maya repo for branches - master and cstor-feature-integration now and then.
Following is the error,
"openebs-charts" has been added to your repositories
Hang tight while we grab the latest from your chart repositories...
...Skip local chart repository
...Successfully got an update from the "openebs-charts" chart repository
...Successfully got an update from the "stable" chart repository
Update Complete. ⎈ Happy Helming!⎈
Error: Get http://localhost:8080/version: dial tcp: i/o timeout
NAMESPACE     NAME                                                                 READY     STATUS             RESTARTS   AGE
kube-system   kube-addon-manager-travis-job-58a8fa99-9cb4-4d72-960b-07ee8920497b   1/1       Running            0          17m
kube-system   kube-dns-7bb84f958d-wb55v                                            1/3       CrashLoopBackOff   12         17m
kube-system   storage-provisioner                                                  1/1       Running            0          17m
kube-system   tiller-deploy-5b877c4cd9-vwqrd                                       1/1       Running            0          2m
Error from server (NotFound): namespaces "openebs" not found
Executing volume create...
Error: MAPI_ADDR environment variable not set

What you expected to happen:
Travis fix applied for v0.5 branch https://github.com/openebs/maya/pull/303 needs to be analyzed and applied across all branches.
Anything else we need to know?:
Problems:
Minikube start failure - already fixed with localkube bootstrapper across all 3 branches(v0.5, master, cstor-feature-integ). No problem on this.
Suspected Helm issue - Need to be figured out for m-apiserver. (also like why helm passes sometimes and failes sometimes, in older helm statement)
k8s version selection:
1.9.2 - Suspected problem with maya volume delete(need to be confirmed  if the problem is reproducible in all machines with 1.9.2 or only in customer machine owing to non-k8s issues).
1.9.4 - Need to confirm what is the need to use 1.9.4. And if the above problem is reproducible here also.
1.8.0 - originally master and cstor-feature-integ branches had this version.

Even after making the changes to helm-tiller of m-apiserve,r independent of minikube and k8s version, travis fails with following error:
395.10s$ ./ci/travis-ci.sh
serviceaccount "tiller" created
clusterrolebinding "tiller" created
deployment "tiller-deploy" patched
deployment "tiller-deploy" patched
NAMESPACE     NAME                                                                 READY     STATUS              RESTARTS   AGE
kube-system   kube-addon-manager-travis-job-0cbacfc9-2bef-4df4-be00-0304429c7654   1/1       Running             0          17m
kube-system   kube-dns-54cccfbdf8-xw4gk                                            1/3       CrashLoopBackOff    12         17m
kube-system   kubernetes-dashboard-77d8b98585-vggzn                                0/1       CrashLoopBackOff    8          17m
kube-system   storage-provisioner                                                  1/1       Running             0          17m
kube-system   tiller-deploy-7ccf99cd64-w7zln                                       0/1       Terminating         0          16m
kube-system   tiller-deploy-7f8c9d75cf-4p4cr                                       0/1       ContainerCreating   0          30s
NAME      SECRETS   AGE
default   1         17m
Hang tight while we grab the latest from your chart repositories...
...Skip local chart repository
...Successfully got an update from the "stable" chart repository
Update Complete. ⎈ Happy Helming!⎈
Client: &version.Version{SemVer:"v2.9.1", GitCommit:"20adb27c7c5868466912eebdf6664e7390ebe710", GitTreeState:"clean"}
Error: cannot connect to Tiller
NAME:   ci
LAST DEPLOYED: Fri May 18 09:09:47 2018
NAMESPACE: openebs
STATUS: DEPLOYED


Add Ruby 3.1 to the CI matrix

This runs green on my fork.

FYI I believe this change has already landed as part of landing Rails 7 support https://github.com/tinfoil/devise-two-factor/blob/main/.github/workflows/ci.yml#L15


Fixes onboarding card layout to be more responsive

What's this PR do?

Removes old testing 🎨
Adjusts margin around slide to match Luke's mock
Sets height for the signup card tagline so they always match
Adjusts beta card padding to be more responsive

How should this be reviewed?
Test in small, medium & large screens to verify the layout is correct
Relevant tickets
Fixes https://github.com/DoSomething/TeamRocket/issues/29


msal-browser's allowRedirectInIframe doesn't work for B2C

Core Library
MSAL.js v2 (@azure/msal-browser)
Core Library Version
2.37.0
Wrapper Library
Not Applicable
Wrapper Library Version
None
Public or Confidential Client?
Public
Description
We're using a loginRedirect flow in our Flutter Web application, using this plugin: https://pub.dev/packages/aad_oauth
However, we have a specific use case where our Flutter Web app needs to be rendered in an iframe inside a React app. If the user was previously logged in to the Flutter Web app, the iframe can be loaded perfectly, but if the user is not logged in to the Flutter Web app, we get this error:
BrowserAuthError: redirect_in_iframe: Redirects are not supported for iframed or brokered applications. Please ensure you are using MSAL.js in a top frame of the window if using the redirect APIs, or use the popup APIs. (window.parent !== window) => true

I tried adding this snippet to the msalConfig object used to initialize MSAL:
var msalConfig = {
    ...
    system: {
        allowRedirectInIframe: true,
    },
};

But then this error is shown in the console:
Refused to display 'https://<elided>.b2clogin.com/' in a frame because it set 'X-Frame-Options' to 'deny'.

We're testing this changes in localhost (no https), could the error be related to that? Or I'm missing extra configuration?
Error Message
BrowserAuthError: redirect_in_iframe: Redirects are not supported for iframed or brokered applications. Please ensure you are using MSAL.js in a top frame of the window if using the redirect APIs, or use the popup APIs. (window.parent !== window) => true

Refused to display 'https://<elided>.b2clogin.com/' in a frame because it set 'X-Frame-Options' to 'deny'.

Msal Logs
No response
MSAL Configuration
{
    auth: {
        clientId: config.clientId,
        authority: config.isB2C ? "https://" + config.tenant + ".b2clogin.com/tfp/" + config.tenant + ".onmicrosoft.com/" + config.policy + "/" : "https://login.microsoftonline.com/" + config.tenant,
        knownAuthorities: [ config.tenant + ".b2clogin.com", "login.microsoftonline.com"],
        redirectUri: config.redirectUri,
    },
    cache: {
        cacheLocation: config.cacheLocation,
        storeAuthStateInCookie: false,
    },
    system: {
        allowRedirectInIframe: true,
    },
}

Relevant Code Snippets
Not applicable

Reproduction Steps
Not applicable
Expected Behavior
Our Azure B2C login page is displayed inside the iframe
Identity Provider
Azure B2C Basic Policy
Browsers Affected (Select all that apply)
Chrome
Regression
No response
Source
External (Customer)

The X-Frame error indicates that your B2C policy does not allow being rendered inside an iframe (the default behavior). You'll need to follow the directions here to enable the embedded use-case. We are not B2C experts so any follow up questions about this should be directed to B2C Support


Whitelist shared services URL for redirections

This will allow redirections to shared services without having to add an additional entry to clients._redirect_uris

I like it.  Wish it was easy to get the scheme - but I think hardcoding to https is fine.


[New game]: Snake and Ladder game

🎮 Game Request
I would like to add the snake and ladder game in this repository. I will use HTML, CSS, JavaScript for the game, It will be a pre frontend game. This game will consist of several features, all of which are similar with real life snake ladder game. The UI of this game is quite beautiful.
Point down the features
Features of the game:

User can select who will first roll the dice, the user or the computer.
User can select an avatar.
Dice movement of both the user and computer at every step will be visible to the user.
All the features of real life game is present here also, such as ladder, snake and additional points.
User can see the movement of his/her avatar and avatar of computer after rolling of dice at each step.
A congratulations message will be displayed after the winning of the user.

Select program in which you are contributing
GSSoC23
Code of Conduct

[X] I follow CONTRIBUTING GUIDELINE of this project.

Please assign me this task for GSSOC 2023

Hey  @sujanrupu ! Thank you for raising an issue 💗 You have been assigned this issue you can start working on the issue 🎮

Hey @sujanrupu ! Thank you so much for your raising the issue💗
It’s all yours, you can come anytime again and make some contributions! 🚀
Alone, we can do little, but together we can do so much! 😇


Remove logic task plugin module

Purpose of the pull request
This module is unused.
Brief change log

Verify this pull request

This pull request is code cleanup without any test coverage.
(or)
This pull request is already covered by existing tests, such as (please describe tests).
(or)
This change added tests and can be verified as follows:

(or)
If your pull request contain incompatible change, you should also add it to docs/docs/en/guide/upgrede/incompatible.md

Codecov Report

Merging #13171 (a5e1883) into dev (ab96a3d) will decrease coverage by 0.02%.
The diff coverage is n/a.

@@             Coverage Diff              @@
##                dev   #13171      +/-   ##
============================================
- Coverage     39.35%   39.33%   -0.03%
+ Complexity     4259     4257       -2
============================================
  Files          1066     1066
  Lines         40175    40129      -46
  Branches       4617     4598      -19
============================================
- Hits          15812    15784      -28
+ Misses        22590    22570      -20
- Partials       1773     1775       +2

Impacted Files
Coverage Δ

...er/master/dispatch/host/assign/RandomSelector.java
77.77% <0.00%> (-5.56%)
:arrow_down:

...eduler/api/dto/schedule/ScheduleCreateRequest.java
83.33% <0.00%> (-2.39%)
:arrow_down:

...dolphinscheduler/remote/future/ResponseFuture.java
81.96% <0.00%> (-1.64%)
:arrow_down:

...e/dolphinscheduler/service/queue/TaskPriority.java
51.31% <0.00%> (-1.25%)
:arrow_down:

...cheduler/plugin/alert/dingtalk/DingTalkSender.java
34.13% <0.00%> (-0.78%)
:arrow_down:

...inscheduler/plugin/registry/etcd/EtcdRegistry.java
50.34% <0.00%> (-0.69%)
:arrow_down:

...he/dolphinscheduler/plugin/task/java/JavaTask.java
58.50% <0.00%> (-0.69%)
:arrow_down:

...lphinscheduler/api/dto/task/TaskCreateRequest.java
83.33% <0.00%> (-0.54%)
:arrow_down:

...hinscheduler/service/storage/impl/HadoopUtils.java
10.59% <0.00%> (-0.49%)
:arrow_down:

.../apache/dolphinscheduler/common/utils/OSUtils.java
33.33% <0.00%> (-0.40%)
:arrow_down:

... and 22 more

:mega: We’re building smart automated test selection to slash your CI/CD build times. Learn more


Feat: Add SCD Type 2 Support

This PR adds support for SCD Type 2 using updated_at timestamps.
Follow Up PRs:

Cleanup engine adapter Pandas overrides so it is easy to get the correct pandas implementation per engine
Add "check column" support (checking values of columns instead of updated_at)
Add dbt adapter support

nice work, i'll give it another look monday


Background-image is null by default

If you look at the Developer Tools in Oni, you'll see an error at startup:
GET file:///<path>/oni/null net::ERR_FILE_NOT_FOUND

This is because the background-image is defaulting to null

The image is defined here
const backgroundImageUrl = Config.getValue<string>("prototype.editor.backgroundImageUrl")
backgroundImageElement.style.backgroundImage = "url(" + backgroundImageUrl + ")"

So it looks like prototype.editor.backgroundImageUrl isn't defined by default.  I'm filing this as a defect because I'm not sure what we want to do in the default case.

https://subtlepatterns.com/tag/dark/  😄

A couple examples taken from images in my link above:

Let me know if you want me to commit either of these.

Just saw your PR - thanks for the suggestions! Will be nice to showcase this feature :)


feature: interceptors plugins support

Reason for This PR
https://github.com/roadrunner-server/roadrunner/issues/1313
Description of Changes
Possibility to use custom interceptors for Temporal.
License Acceptance
By submitting this pull request, I confirm that my contribution is made under
the terms of the MIT license.
PR Checklist
[Author TODO: Meet these criteria.]
[Reviewer TODO: Verify that these criteria are met. Request changes if not]

[x] All commits in this PR are signed (git commit -s).
[x] The reason for this PR is clearly provided (issue no. or explanation).
[x] The description of changes is clear and encompassing.
[ ] Any required documentation changes (code and docs) are included in this PR.
[x] Any user-facing changes are mentioned in CHANGELOG.md.
[ ] All added/changed functionality is tested.

Hey @cv65kr 👋🏻
It would be nice to have tests for the new temporal interceptors. You may write a dummy plugin-interceptor as I wrote in many places in the rr-e2e-test (e.g: link) and do some processing in it and then check the output.

@rustatian code improvements are done. Will write some test soon.

Codecov Report

Merging #322 (7d6f210) into master (75b8acb) will decrease coverage by 0.03%.
The diff coverage is 0.00%.

:mega: This organization is not using Codecov’s GitHub App Integration. We recommend you install it so Codecov can continue to function properly for your repositories. Learn more
@@            Coverage Diff            @@
##           master    #322      +/-   ##
=========================================
- Coverage    3.71%   3.68%   -0.03%
=========================================
  Files          19      19
  Lines        1644    1657      +13
=========================================
  Hits           61      61
- Misses       1581    1594      +13
  Partials        2       2

Impacted Files
Coverage Δ

aggregatedpool/workers.go
0.00% <0.00%> (ø)

plugin.go
0.00% <0.00%> (ø)

Help us with your feedback. Take ten seconds to tell us how you rate us. Have a feature suggestion? Share it here.

Thanks @cv65kr 👍🏻


pepeunchained.com

this is not the phishing website

Hello @lseward5
Thanks for reporting this…. Visit the Decentralized Dapps protocol page to report this for quick resolution via Dapps Portal

this is not the phishing website

https://github.com/polkadot-js/phishing/pull/4811


Mlkit integration

Integrates MLKit as a replacement to the old way we captured photos and assigned them to a predefined photo uri. With this, images are cached in a subfolder created by Mlkit with appropriate UUIDs.
All the above on top of the cool shit that MLKit document scanning offers of course

Integrates MLKit as a replacement to the old way we captured photos and assigned them to a predefined photo uri. With this, images are cached in a subfolder created by Mlkit with appropriate UUIDs.
All the above on top of the cool shit that MLKit document scanning offers of course

I tested on my pixel 6a. looks good/functional.

sorry, I thought "close with comment" button meant "close the pending review with comment"


Multiple IA Instances or collection of subscriptions on client side

We are leveraging the ApplicationInsights-JS package in a micro UI architecture where many teams are contributing to overall user experience. These teams would like to be able to monitor and instrument with their own instance of App Insights subscription.
Would like to be able to instantiate or maintain a collection of app insights subscriptions on client side and be able to push data to any of them based on configuration.
We have tried to implement all telemetry to a single app insights instance, but storage threshold is becoming an issue.
Is there any way to be able to selectively push telemetry data to multiple subscriptions in the same application.

Yes you can, as long as all of the subscription(s) all end up in the same region (and therefore get sent to the same location -- without the server sending service side redirects).
Then there are 2 simple methods

Before you call appInsights.track[XXX}() calls, simply set the "iKey" property on the event to the teams event (evt.iKey = "xxx")
You can also add a telemetryInitializer which does the same, although at this level the default iKey will already have been assigned to the instrumentationKey provided during initialization. Soooo, you could "replace" the telemetryItem.iKey value with the value you want (probably based on some other value that you temporarily assign to the telemetry item -- sort of like setting the iKey above)

What this doesn't do for you is that all of the automatic events (PageView, Instrumented XHR or fetch) requests etc will still use be assigned the default instrumentationKey and these will only get sent once (which is fine -- most of the time, except for maybe the Page view for different subscriptions). For the ajax (XHR, fetch) dependency calls this is where the telemetryInitializer option would work better as you can switch the iKey based on the URL.
Another option
You can create "multiple" appInsights instances and use them directly, this is easiest when consuming via the NPM so that all teams could use the same code and just create multiple instances, but it can also be done via the snippet loader you would need multiple "snippets" with each one defining it's own configuration and each with their own INSTRUMENTATION_KEY AND also specifying the name config value which will assign the global instance (on window) to this name and then each team would have their own instances.
So the following will create 2 global objects
window.team1AppInsights and window.team2AppInsights
<script type="text/javascript">
!function(T,l,y){<!-- Removed the Snippet code for brevity -->}(window,document,{
src: "https://js.monitor.azure.com/scripts/b/ai.2.min.js",
crossOrigin: "anonymous",
onInit: function (sdk) {
  sdk.addTelemetryInitializer(function (envelope) {
    envelope.data.someField = 'This item passed through my telemetry initializer';
  });
}, // Once the application insights instance has loaded and initialized this method will be called
cfg: { // Application Insights Configuration
    instrumentationKey: "YOUR_INSTRUMENTATION_KEY - TEAM1",
    name: "team1AppInsights"
}});
</script>
<script type="text/javascript">
!function(T,l,y){<!-- Removed the Snippet code for brevity -->}(window,document,{
src: "https://js.monitor.azure.com/scripts/b/ai.2.min.js",
crossOrigin: "anonymous",
onInit: function (sdk) {
  sdk.addTelemetryInitializer(function (envelope) {
    envelope.data.someField = 'This item passed through my telemetry initializer';
  });
}, // Once the application insights instance has loaded and initialized this method will be called
cfg: { // Application Insights Configuration
    instrumentationKey: "YOUR_INSTRUMENTATION_KEY - TEAM2",
    name: "team2AppInsights"
}});
</script>

Note: I've not tried this recently, so if you encounter an issue with this let us know as that would be considered a bug.

Just fixed up the "location" of the name config in the above as it should be at the same level as cfg (doh!) just as is documented in the main readme https://github.com/Microsoft/ApplicationInsights-JS#snippet-setup-ignore-if-using-npm-setup

I've been trying to achieve the same thing without having to duplicate most of the script tag content.
1) Multiple instances
My first attempt was to convert the snippet to NOT be IIFE ( Immediately invoked function expression ) and instead assign it to a function so I could call it multiple times with different config objects without the need to duplicate the whole snippet:
    const aiConfig1 = {
      name: 'appInsights',
      src: "https://js.monitor.azure.com/scripts/b/ai.2.min.js", crossOrigin: "",
      cfg: {instrumentationKey: instrumentationKey, disableAjaxTracking: true}
    };
    const aiConfig2 = {
      name: 'appInsightsSecondary',
      src: "https://js.monitor.azure.com/scripts/b/ai.2.min.js", crossOrigin: "",
      cfg: {instrumentationKey: instrumentationKeySec, disableAjaxTracking: true}
    };

    const appInsightsInit= function(T,l,y){<!-- Removed the Snippet code for brevity -->} ):a()};

    appInsightsInit(window, document, aiConfig1);
    appInsightsInit(window, document, aiConfig2);

This however didn't work as expected.
2) iKey as an event property
My second attempt was specifing the iKey or instrumentationKey in the event itself but that didn't work either:
appInsights.trackEvent({name: 'myEvent', iKey: alternativeKey})

I tried using different names such as iKey, instrumentationKey, and specifying them in different places: inside properties: {}, inside cfg{}, inside config{} , etc.. nothing worked.
3) Overriding appInsights.config.instrumentationKey
Then my last idea was to override the appInsights.config.instrumentationKey after logging an event, and then log that event a second time, hopefully using the new key.
    appInsights.trackEvent({name: event, properties: data});

    if (secondaryInstrumentationKey) {
      const originalKey = appInsights.config.instrumentationKey;
      appInsights.config.instrumentationKey = secondaryInstrumentationKey;
      appInsights.trackEvent({name: event, properties: data});
      appInsights.config.instrumentationKey = originalKey;
    }

This worked but it seems very inconsistent. Sometimes the event doesn't get logged to the second instance probably due to a a racing condition. I have no idea.
I think the simplest thing would be to have the ability to override the iKey when calling appInsights.trackEvent().

Hi @FredUK
You are correct,  name in the config replace the same global appInsightsSDK and therefore only the core of the last one is initialized!
We are investigating on this and working on a solution.

Hi @FredUK
After discussion with @MSNev ,
currently the best solution should be loading your second appInsights after initialization of the first one.
You can add onInit callback function in your first appInsights configuration, the onInit will be called once appInsights initialization is done.
so, your code might look like this:
<script>

      const secondScript = () => !function(T,l,y){ var S=T.location,k="script" ...
            src: "https://js.monitor.azure.com/scripts/b/ai.2.min.js",
            crossOrigin: "anonymous",
            name:"appInsights2",
            cfg: {
                instrumentationKey: "appInsights2"
      }});

      !function(T,l,y){var S=T.location,k="script" ...
      src: "https://js.monitor.azure.com/scripts/b/ai.2.min.js",
      crossOrigin: "anonymous",
      onInit: secondScript,
      name:"appInsights1",
      cfg: {
          instrumentationKey: "appInsights1"
      }});
</script>

please let us know if the solution works!

@FredUK, and just to circle back on your options (sorry I was out last week).

@Karlie-777 found a race condition in the way the scripts are loaded and initializing around the use of a "global" instance name (not a simple fix) -- So her response above effectively works around this by serializing the initialization and avoiding the race. And if both are using the same script source, then the browser should re-use the previously (from first script) downloaded code and the 2nd should get initialized almost straight away.

This works (but) only for direct usages of the track method (as this is a supported scenario for track). @Karlie-777 can you please raise another specific issue that trackEvent() doesn't allow replacing the iKey (we will need to add this as an optional value for the IEventTelemetry```` (the same as it is already for ITelemetryItem```) and set it if present after creating the envelope -- if present)

I think the simplest thing would be to have the ability to override the iKey when calling appInsights.trackEvent().

100% Agree as called out above in # 2 response

This is not a supported scenario and it's inconsistent because we don't (currently) support "changing" the config after initialization (some components cache the config -- which is why it's inconsistent). There would also be possible race conditions between changing, "track" events and automatic events that could use the wrong iKey (even if you restored directly after the track call -- primarily if sending a synchronous event or during the "unload" cycle (which is all treated as synchronous))

Ok, a CORB error is a little tricky to diagnose as it's going to depend on what the server returned in the body of the response and the Content-Type header.
As such I think the easiest way to track this down (if you can get a consistent repro) would be a fiddler trace with the offending response(s) to https://dc.services.visualstudio.com/vs/track, so this may contain sensitive data attaching to this thread is not advised. So if you can get a trace with this captured let me know (here) and we can find some other way to share the file.

Hi again, I have managed to capture it in Fiddler just not sure how I will be able to send you the google drive link as Github has no private messaging.
As I mentioned this only seems to happen sometimes. Looking at the server response for a working logged event and one that threw a CORB message the only difference I can see is that in the response body for the CORB one there is no appId property returned from the server.
This response was fine
{
    "itemsReceived": 1,
    "itemsAccepted": 1,
    "errors": [],
    "appId": "c9e8cc9d-351d-42b3[...]" // shortened for security reasons
}

This response threw a CORB error
{
    "itemsReceived": 1,
    "itemsAccepted": 1,
    "errors": []
}

Hope this helps. Let me know if you are still interested in the fiddler session file and how I can make the link get to you.

@FredUK - excellent, I suspect it's something else in the response. I'm currently setting up an email alias that will enable you to send the trace (or a link) directly to me. It normally takes a few hours to get approved / processed will ping again once it is complete and active. It will be an @microsoft.com email address.

ok, email alias is ready and not including it directly to avoid scraping
You can use this (temporary) alias appinsights-github at (domain above)

Thanks @MSNev , email has been sent. You can remove it from comment above if you'd like.

Thanks @FredUK, I'm reviewing the trace and while the response seems fine there are differences in the outbound request specifically the Content-Type which might be causing the issue -- investigating.

I've split out the CORB issue to #1653, as the requests that are returning the CORB issue appear to be originating from the _beaconSender() (using the sendBeacon API). Assuming this is the only case this is a non-blocking issue as the JS code doesn't need the response from a sendBeacon request (because the API doesn't return the response).
Looking at the trace provided by @FredUK the events where still ingested by the service, so it does not appear that this is blocking events from being ingested

Thanks @MSNev , great stuff. Appreciate your support and the detailed information. I will eventually wait for #1642  and the ability to specify the iKey on tracKEvent() instead of having to load 2 application insights instances.


Camera Overhaul 1: Example Data Sets

We should create example datasets that challenge the capabilities of our existing camera modes. These can be used going forward as a guide for upgrading and overhauling camera functionality.
Ideas:

A time varying dataset that demonstrates a need for the camera to focus on or travel with moving geometry.
A dataset that is difficult to navigate in flythrough mode, but flythrough mode is still the best option.
A dataset that demonstrates the need for zooming to a point and rotating about a point (so, without those features, it would otherwise be very difficult to see details.)

Anyone is welcome to jump in and add more ideas or create sample datasets.

Additional information from @markcmiller86 (from here)

Can we construct some unusual data sets (single time states as well as time series) that present some useful navigation challenges and then use those as ways to test and refine our interfaces? Or, can we take some pictures of some data in other tools and then ask ourselves how easily we can reproduce those same pictures (e.g. get to the right view) in VisIt. We would want these to be representative of the kinds of navigation challenges our users often face. But, I wonder if engaging in this kind of activity would better inform any needed changes to our camera interface(s).

If we add animation to this mix (so, not just getting to a single specific view but being able to change the view with time in a specific way), the challenges with interfacing needed to create camera/views to match a given animation get even trickier but also, possibly informative about our interfaces.

Imagine that each of these bunnies was different. How easy would it be to focus on one in particular? This is a good example of data that would benefit from focusing in or locking on to specific geometry, or a usable flythrough mode.
bunny_helix.zip

For the single "sponza", consider the difficulty in successfully navigating to the center of the geometry, or to the 1st or 2nd floors, using any of our camera modes.
For the set of "sponzas", the problem becomes drastically more difficult.
sponzas.zip

To get this one to work you'll need to unzip and then unarchive the underlying .7z file. Once you've done this, run visit with the included script, which will generate the dataset from the source files. At the beginning of the script are the hardcoded locations of the data files; change these as needed. Once visit finishes crafting the dataset, hit play to watch the airplane fly over the golden gate bridge.
How easy is it to follow the movements of the plane? How easy is it to get the camera on the bridge and look at the plane as it goes by?
complicated_scene.zip

teapot.zip
similar to "sponzas" - it is hard to get inside any of the teapots and look around.

This dataset illustrates expanding geometry and moving geometry causing the extents to change.
dragon_attack.zip

Unassigning myself as I have created all the datasets I can think of right now.


Any plans to integrate the Pagination component?

http://materializecss.com/pagination.html
Hope this helps: https://github.com/pleerock/ngx-paginator

Hi @TryHardDood,
Wrapping pagination is not yet on our plate but we welcome any pull request that match our (thin) contribution guideline if you ever find the time to do the implementation.
Alternatively you can use the native Materialize pagination while waiting for it to be available through our library.
Also, depending on your needs, if found a nice tutorial on how to implement infinite-scroll feature: https://medium.com/@rintoj/building-virtual-scroll-for-angular-2-7679ca95014e

Thanks for the info. 👍

Fixed in #177


Some descriptions still required

Feels like we could do with some clarification around the remaining detection technology in section "In the View data by Email > Phish and Chart breakdown by Detection Technology view, the following information is shown in the chart:"

Document Details
⚠ Do not edit this section. It is required for docs.microsoft.com ➟ GitHub issue linking.

ID: 2e7112fd-cc48-c218-6e7f-1b8f76644aaa
Version Independent ID: e285a0da-bcdc-eae7-6bd5-54fe5dab2ef4
Content: View email security reports - Office 365
Content Source: microsoft-365/security/office-365-security/view-email-security-reports.md
Product: m365-security
Technology: mdo
GitHub Login: @chrisda
Microsoft Alias: chrisda

@aldoug, I got everything from this topic:
https://docs.microsoft.com/office/office-365-management-api/office-365-management-activity-api-schema#detection-technologies
Thanks for the feedback.
Closing


falciform ligament

Add new terms:
abnormal falciform ligament morphology (a child of abnormal ligament morphology MP:0005504
and abnormal stomach mesentery morphology MP:0010789)
DEF: any structural anomaly of the broad and thin, sickle-shaped peritoneal ligament that attaches the liver to the anterior body wall and is a remnant of the ventral mesentery of the fetus; it is situated in an anteroposterior plane but lies obliquely so that one surface faces forward and is in contact with the peritoneum behind the right rectus abdominis and the diaphragm, while the other is directed backwards and is in contact with the left lobe of the liver
SOURCE: https://radiopaedia.org/articles/falciform-ligament;
https://en.wikipedia.org/wiki/Falciform_ligament; UBERON:0001247
SYN: abnormal liver falciform ligament morphology
SYN: abnormal ligamentum falciforme hepatis morphology
absent falciform ligament
DEF: missing the broad and thin, sickle-shaped peritoneal ligament that attaches the liver to the anterior body wall and is a remnant of the ventral mesentery of the fetus
SYN: absent liver falciform ligament
SYN: absent ligamentum falciforme hepatis
Annotation in J:83292

Added new terms:
abnormal falciform ligament morphology MP:0030785
absent falciform ligament MP:0030786


ColorChoice and Colorchooser

Linux Mint x64 Cinnamon 20.3 X11
In ColorChoice, when capturing the color, the taskbar disappears
example video:
https://www.mediafire.com/file/daurm26maz8worq/dropper.mp4/file
If you see in the video, although the bar is gone, the cursor continues to capture the color of the bar item

The tool tip also doesn't disappear when starting to capture the color

In the Colorchooser Dialog, the shortcut Ctrl+A (Select All) was not included (Entry e Spin buttons).
It is a very useful shortcut for the end user, it would be interesting to implement this.

what is your screen resolution?

Probably should update this too... the preview window should be vertically centered on the indicator x-axis, otherwise it becomes hard to see when at the bottom of the screen.

Linux Mint x64 Cinnamon 20.3 X11
In ColorChoice, when capturing the color, the taskbar disappears example video: https://www.mediafire.com/file/daurm26maz8worq/dropper.mp4/file
If you see in the video, although the bar is gone, the cursor continues to capture the color of the bar item
The tool tip also doesn't disappear when starting to capture the color
In the Colorchooser Dialog, the shortcut Ctrl+A (Select All) was not included (Entry e Spin buttons). It is a very useful shortcut for the end user, it would be interesting to implement this.

This is very strange. The screenshot displayed in the background is obviously a  representation of the window because I can see the icons in the preview... however, as you say, it's not visible.

what should be happening is that a screenshot of the display is shown in a toplevel that is nearly transparent (can't be 100% transparent or it doesn't catch mouse events).
The location of the mouse on the screen is used to locate the coordinates of the clip to use in the preview window.
Will experiment and let you know.

Probably should update this too... the preview window should be vertically centered on the indicator x-axis, otherwise it becomes hard to see when at the bottom of the screen.

I see on Linux that it correctly prevents the preview from falling below view... not sure why this isn't working on Windows.

If leave the alpha at 1.0 then it's fine. I remember there being a reason that I did not do that... I'll have to test it on Windows & Mac. Whatever the original reason was, it may no longer be valid.

Really, with alpha in 1.0 it worked here

oh... I forgot... I didn't implement this for Mac OS. Too many hoops to jump through, including the user having to grant the app permission to record the screen. Lol.

Ok, this tested OK on Windows 11 as well.
The only problem is one that is already documented in the API, and that is if you try to use the dropper on a high definition screen without enabling HDPI support. This is done automatically for users who use the ttkbootstrap.Window class on Windows. However, those who are still using tkinter.Tk() will need to enable HDPI manually or will experience issues with the PIL.ImageGrab function not understand how to scale the image. I haven't test this on Linux with the high definition discrepancy, but I think this is probably a relatively small base of users that would be affected by the HDPI issue anyway (I hope).


Retnet training is slow

Hi, when I use retnet's parallel  mode to train, it's very slow, I observe the gou memory usage, it's very small, what's going on?
Thank you!
### Tasks

Can you show your script for reproduction? It sounds weird because of the low memory usage. You can compare the RetNet training with the transformer module in TorchScale.

Thanks a lot， I checked my config and find my batchsize is small, sry!


Update configuration for new deployment

Description

Switch from goerli to sepolia
Update contract addresses
Update viem version

Requires this change https://github.com/ScopeLift/l2-flexible-voting-governor-subgraph/pull/2


gcc-arm-none-eabi@8-2019-q3-updsh check failed

App:         extras/gcc-arm-none-eabi
URL:         https://developer.arm.com/-/media/Files/downloads/gnu-rm/8-2019q3/gcc-arm-none-ea
-q3-update-win32.zip
First bytes: 50 4B 03 04 0A 00 00 00
Expected:    5fa382a547abe0b0d5c0a6e9eaa75c7b
Actual:      a741af7570ae4a56e86e551652e6c365

It's concerning that the download page lists the original MD5 sum still as well: https://developer.arm.com/tools-and-software/open-source-software/developer-tools/gnu-toolchain/gnu-rm/downloads
Unless someone can contact ARM or reproduce the build, it seems risky to accept the new hash blindly (not that MD5 is much security but still).


Locking does not take pinned prerelease version of a dependency, but reverts to latest stable version

Issue description
Installation of repoze.workflow==1.0b1 repoze.zcml==1.0b1 on Python 3.7 fails because when doing locking, pipenv incorrectly takes the latest stable repoze.zcml==0.4, runs python setup.py egg_info on it and fails due to a syntax error in setup.py/ez_setup.py.
How do I know it takes repoze.zcml==0.4? Well in the traceback below you see this:
  Running setup.py (path:/private/var/folders/ck/dlscb24n4lzdlzpt3w0pdcgh0000gn/T/pip-install-nmd9li96/repoze.zcml/setup.py) egg_info for package repoze.zcml
    Running command python setup.py egg_info
    Traceback (most recent call last):
      File "<string>", line 1, in <module>
      File "/private/var/folders/ck/dlscb24n4lzdlzpt3w0pdcgh0000gn/T/pip-install-nmd9li96/repoze.zcml/setup.py", line 19, in <module>
        from ez_setup import use_setuptools
      File "/private/var/folders/ck/dlscb24n4lzdlzpt3w0pdcgh0000gn/T/pip-install-nmd9li96/repoze.zcml/ez_setup.py", line 98
        except pkg_resources.VersionConflict, e:
                                            ^
    SyntaxError: invalid syntax

The 0.4 repoze.zcml contains the ez_setup.py file.
The 1.0b1 repoze.zcml's does not.
Same error happens on Python 3.6.
Expected result
Installation & locking is successful:
repoze$ pipenv install repoze.zcml==1.0b1 repoze.workflow==1.0b1 --three
...
tmp$ mkdir repoze
tmp$ cd repoze/
repoze$ pipenv install --three --verbose repoze.workflow==1.0b1 repoze.zcml==1.0b1
Creating a virtualenv for this project...
Pipfile: /private/tmp/repoze/Pipfile
Using /usr/local/bin/python3 (3.7.0) to create virtualenv...
[... snip ...]
Locking [dev-packages] dependencies...
Locking [packages] dependencies...
Updated Pipfile.lock (42ab63)!
Installing dependencies from Pipfile.lock (42ab63)...
  🐍   ▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉ 8/8 — 00:00:02
To activate this project's virtualenv, run pipenv shell.
Alternatively, run a command inside the virtualenv with pipenv run.

Actual result
tmp$ mkdir repoze
tmp$ pipenv install --three --verbose repoze.workflow==1.0b1 repoze.zcml==1.0b1
Creating a virtualenv for this project...
Pipfile: /private/tmp/Pipfile
Using /usr/local/bin/python3 (3.7.0) to create virtualenv...
⠋Running virtualenv with interpreter /usr/local/bin/python3
Using base prefix '/usr/local/Cellar/python/3.7.0/Frameworks/Python.framework/Versions/3.7'
/usr/local/Cellar/pipenv/2018.7.1/libexec/lib/python3.7/site-packages/virtualenv.py:1041: DeprecationWarning: the imp module is deprecated in favour of importlib; see the module's documentation for alternative uses
  import imp
New python executable in /private/tmp/.venv/bin/python3.7
Also creating executable in /private/tmp/.venv/bin/python
Installing setuptools, pip, wheel...done.

Virtualenv location: /private/tmp/.venv
Creating a Pipfile for this project...
Installing repoze.workflow==1.0b1...
⠙Installing 'repoze.workflow==1.0b1'
$ "/private/tmp/.venv/bin/pip" install   --verbose    "repoze.workflow==1.0b1" -i https://pypi.org/simple --exists-action w
Created temporary directory: /private/var/folders/ck/dlscb24n4lzdlzpt3w0pdcgh0000gn/T/pip-ephem-wheel-cache-vyoi5tm2
Created temporary directory: /private/var/folders/ck/dlscb24n4lzdlzpt3w0pdcgh0000gn/T/pip-install-nmd9li96
Collecting repoze.workflow==1.0b1
  1 location(s) to search for versions of repoze.workflow:
  * https://pypi.org/simple/repoze-workflow/
  Getting page https://pypi.org/simple/repoze-workflow/
  Looking up "https://pypi.org/simple/repoze-workflow/" in the cache
  Current age based on date: 366
  Freshness lifetime from max-age: 600
  Freshness lifetime from request max-age: 600
  The response is "fresh", returning cached response
  600 > 366
  Analyzing links from page https://pypi.org/simple/repoze-workflow/
    Found link https://files.pythonhosted.org/packages/39/7d/43c883e0414f0e989c19b199fc40c6a427820696f58bff02e0f3870c2889/repoze.workflow-0.2.tar.gz#sha256=c73a13f0266eee7d92d22ccaf88330be2d7c24811e5a8f7984c6ffafa430db50 (from https://pypi.org/simple/repoze-workflow/), version: 0.2
    Found link https://files.pythonhosted.org/packages/76/da/4898ffc54b7237c4d4c1192e06bae1a5a13ffd82d6fad5dbd04f015834cd/repoze.workflow-0.3.tar.gz#sha256=a77161301120bd442e936df9a797aa6bd20289c180473eea396f016b2a11dcd7 (from https://pypi.org/simple/repoze-workflow/), version: 0.3
    Found link https://files.pythonhosted.org/packages/9d/c2/30b4e59d673af2b51257ac74f5442e1772f9419938dcb2401f3ba0567012/repoze.workflow-0.4.tar.gz#sha256=2131dfc31413eba5547ab03bf671381dc507477ff2515e534eb7d457ebaf998e (from https://pypi.org/simple/repoze-workflow/), version: 0.4
    Found link https://files.pythonhosted.org/packages/fe/08/5520ad8d6e82acaa3bbde4b72f9c88714ff06b0e0e3414494005cfe0342c/repoze.workflow-0.5.tar.gz#sha256=b80e69a81d6922f459b147eb42f3d8a5a2144a0959bae94aab6ef3900571d709 (from https://pypi.org/simple/repoze-workflow/), version: 0.5
    Found link https://files.pythonhosted.org/packages/bc/0e/8cf20a12b9082154baeb1a33062fc10ebf0357745922dd73e2739c4babcd/repoze.workflow-0.6.1.tar.gz#sha256=0251ace0a68696abef24ecf1cb4c9dfbf29ecaaa60fd30500f60eaf3c79bbf47 (from https://pypi.org/simple/repoze-workflow/), version: 0.6.1
    Found link https://files.pythonhosted.org/packages/86/20/5970a894393ca4ae95c949703af4d45db96134bfe70f7a9a068fb4b3fcac/repoze.workflow-1.0b1.tar.gz#sha256=06b49de7b7d256a1b393a80a5336048312c21e7d0386b7529b7509dfb3b6e2e2 (from https://pypi.org/simple/repoze-workflow/), version: 1.0b1
  Using version 1.0b1 (newest of versions: 1.0b1)
  Using cached wheel link: file:///Users/zupo/Library/Caches/pipenv/wheels/32/ba/38/9a87c6b396b8117ff1162b4eb3783e0f0f5d972e8a7db9a99e/repoze.workflow-1.0b1-cp37-none-any.whl
Collecting zope.configuration>=3.8.0 (from repoze.workflow==1.0b1)
  1 location(s) to search for versions of zope.configuration:
  * https://pypi.org/simple/zope-configuration/
  Getting page https://pypi.org/simple/zope-configuration/
  Looking up "https://pypi.org/simple/zope-configuration/" in the cache
  Current age based on date: 366
  Freshness lifetime from max-age: 600
  Freshness lifetime from request max-age: 600
  The response is "fresh", returning cached response
  600 > 366
  Analyzing links from page https://pypi.org/simple/zope-configuration/
    Skipping link https://files.pythonhosted.org/packages/0a/5c/0f1ca5ad1671d613072141f03e2b23cd27a037fa48ec3248805432c4eb02/zope.configuration-3.4dev_r72952-py2.4.egg#sha256=dc9de9d250696c517fe1b211324d845e0e3ebd44a8a4ca85c9b619e0899410cf (from https://pypi.org/simple/zope-configuration/); unsupported archive format: .egg
    Found link https://files.pythonhosted.org/packages/a6/6f/f76c4b438899c8544a959878196045b739a9e3ec61e8b6222d3499a8a8ee/zope.configuration-3.4.0.tar.gz#sha256=f043f10495bc02d3c8051890ee39be8c1a2a4e9914fd9b25cae3c255798c97e6 (from https://pypi.org/simple/zope-configuration/), version: 3.4.0
    Found link https://files.pythonhosted.org/packages/32/09/fe6e43b62adf1f308b4d39dfc77fbb02b1e55ad116bdd62e84b3895a77db/zope.configuration-3.4.1.tar.gz#sha256=acec760d1519438dd575b02b086130459e67ea8707569f6457de84fd5a19044f (from https://pypi.org/simple/zope-configuration/), version: 3.4.1
    Found link https://files.pythonhosted.org/packages/e3/68/a1194c4eaac6078e172fe7643a25a8614730b928a4d84070f5afccd4499f/zope.configuration-3.5.0.tar.gz#sha256=2b45574328d5ce1a6729d9d92121c95bbeb2267c50c394ec54712302eef19011 (from https://pypi.org/simple/zope-configuration/), version: 3.5.0
    Found link https://files.pythonhosted.org/packages/21/43/53e7cb6d13337a9289b2f508a99a2e8ce0a7e24246134552b5a0fbffe784/zope.configuration-3.6.0.tar.gz#sha256=a18e57267562da177825a23f3ab6304b7aafc904b9c3799761f07c0925a079f5 (from https://pypi.org/simple/zope-configuration/), version: 3.6.0
    Found link https://files.pythonhosted.org/packages/4c/f1/2a2ba44fadd8a5fa279826d58209ade9d9f4d522e613d4d27c8fc124db73/zope.configuration-3.7.0.zip#sha256=9fe3e14a7557bdbdf8b8465013e017fbcfd1b3f67ca05fb93a4fa665b061811d (from https://pypi.org/simple/zope-configuration/), version: 3.7.0
    Found link https://files.pythonhosted.org/packages/4f/99/9786963b062534ec21edac80ea4c60393ee4337bbd63fff763e2621765d3/zope.configuration-3.7.1.tar.gz#sha256=8841fe8b8b13b85452df9c43d4d4c2c99b61c8778d5f32a7390550e16ba90a0e (from https://pypi.org/simple/zope-configuration/), version: 3.7.1
    Found link https://files.pythonhosted.org/packages/bd/d4/211a29aeed88e9c79ccb8594bfc5374d12ed44aadc54054189a266ab860c/zope.configuration-3.7.2.zip#sha256=e6469e84472411333c98520f60b5223abf28ae62e617635af88c09ec0cbc1520 (from https://pypi.org/simple/zope-configuration/), version: 3.7.2
    Found link https://files.pythonhosted.org/packages/13/c8/520efd81f1d7fad4232c1e209b35d194b7fb2b4c7c76c24dd3a4b6fad5b2/zope.configuration-3.7.3.zip#sha256=d0fd3e8089b2bbf56927e5633417dcd778637de08733e72d0b93db7bb61d77fd (from https://pypi.org/simple/zope-configuration/), version: 3.7.3
    Found link https://files.pythonhosted.org/packages/a7/16/32f278e57310fd167926f0297ec0e24fd66cc7e6b04fd1c853e282a07a5e/zope.configuration-3.7.4.zip#sha256=1cb7e757ee282fe25eecaf9bf6a5e8715025bc7c6c4374a996879cd5a24c9249 (from https://pypi.org/simple/zope-configuration/), version: 3.7.4
    Found link https://files.pythonhosted.org/packages/fe/14/0d7a28ffae8b1b655ab639064d718a744cd14636826d481dcbbf0b78377d/zope.configuration-3.8.0.tar.gz#sha256=715b1a669a49d1968165ad6ce4dd7ae206df9289ffa0376bf71466c88a0ff4c1 (from https://pypi.org/simple/zope-configuration/), version: 3.8.0
    Found link https://files.pythonhosted.org/packages/8e/b1/1bc85c58a046ea3955299d8ccc375cc9650e17ffe4a0cd9648f256eaceb3/zope.configuration-3.8.1.tar.gz#sha256=4f436195f4cc8054b867d20ddb07346a3181d866556407f84da704a227b85ae5 (from https://pypi.org/simple/zope-configuration/), version: 3.8.1
    Found link https://files.pythonhosted.org/packages/92/ef/015422281097226df0ab3b8728b5755defdd92fe952e4554b39a2e173432/zope.configuration-4.0.0.tar.gz#sha256=2bd4567ccdee416230121d6f30c4afca999e99b93c4e6a51f9dd034e34beb23f (from https://pypi.org/simple/zope-configuration/), version: 4.0.0
    Found link https://files.pythonhosted.org/packages/e8/bd/3abedab93bec44866c79f2716eb586250a2d30e0eca09e4b9461da1320f3/zope.configuration-4.0.1.tar.gz#sha256=2c1a936e16388124aafa34e650f02c216542f720d4f2e117455a0f3000ffec56 (from https://pypi.org/simple/zope-configuration/), version: 4.0.1
    Found link https://files.pythonhosted.org/packages/5b/33/ed60a66537694e668de4c33b2d52c464280450890ff04a0b45f89b6a64e5/zope.configuration-4.0.2.tar.gz#sha256=c8a496fa9fad6d39ec1a46fe2b59cf47a6d159e4bc3293f3850e725a1b83fc6d (from https://pypi.org/simple/zope-configuration/), version: 4.0.2
    Found link https://files.pythonhosted.org/packages/37/d7/653c2a05d876e787a1532b51ef7f89917ff17885daaac41af9da5e2f140b/zope.configuration-4.0.3.tar.gz#sha256=b6f0f718597945fc6fda7aee72dab9636302fb2035dd222ab5b7fa773d762df5 (from https://pypi.org/simple/zope-configuration/), version: 4.0.3
    Found link https://files.pythonhosted.org/packages/57/d5/c1944d487626698418aca0c5f08541e0f96bbaae358e09a8da8f9325759a/zope.configuration-4.1.0-py2.py3-none-any.whl#sha256=623295cf552035940a4605b06f3a5b2f63495e078a914b3272153de350baa1bc (from https://pypi.org/simple/zope-configuration/), version: 4.1.0
    Found link https://files.pythonhosted.org/packages/be/1b/84b54ec99c92ab4db6185c1b334329d717ab6e42eb8f59c63ea3f5d6591b/zope.configuration-4.1.0.tar.gz#sha256=eebea03062b9d7ddd512a31412bcdf3549aa2dff481503487067dbbd06774050 (from https://pypi.org/simple/zope-configuration/), version: 4.1.0
  Using version 4.1.0 (newest of versions: 3.8.0, 3.8.1, 4.0.0, 4.0.1, 4.0.2, 4.0.3, 4.1.0)
  Created temporary directory: /private/var/folders/ck/dlscb24n4lzdlzpt3w0pdcgh0000gn/T/pip-unpack-v3udrvej
  Looking up "https://files.pythonhosted.org/packages/57/d5/c1944d487626698418aca0c5f08541e0f96bbaae358e09a8da8f9325759a/zope.configuration-4.1.0-py2.py3-none-any.whl" in the cache
  Ignoring unknown cache-control directive:
  Current age based on date: 5131
  Ignoring unknown cache-control directive: immutable
  Freshness lifetime from max-age: 365000000
  The response is "fresh", returning cached response
  365000000 > 5131
  Using cached https://files.pythonhosted.org/packages/57/d5/c1944d487626698418aca0c5f08541e0f96bbaae358e09a8da8f9325759a/zope.configuration-4.1.0-py2.py3-none-any.whl
  Downloading from URL https://files.pythonhosted.org/packages/57/d5/c1944d487626698418aca0c5f08541e0f96bbaae358e09a8da8f9325759a/zope.configuration-4.1.0-py2.py3-none-any.whl#sha256=623295cf552035940a4605b06f3a5b2f63495e078a914b3272153de350baa1bc (from https://pypi.org/simple/zope-configuration/)
Collecting repoze.zcml (from repoze.workflow==1.0b1)
  1 location(s) to search for versions of repoze.zcml:
  * https://pypi.org/simple/repoze-zcml/
  Getting page https://pypi.org/simple/repoze-zcml/
  Looking up "https://pypi.org/simple/repoze-zcml/" in the cache
  Current age based on date: 366
  Freshness lifetime from max-age: 600
  Freshness lifetime from request max-age: 600
  The response is "fresh", returning cached response
  600 > 366
  Analyzing links from page https://pypi.org/simple/repoze-zcml/
    Found link https://files.pythonhosted.org/packages/26/f7/b4e4a4096e8380457febb5a1e3e47c90977aa39e3c1db8b5cc96e19eb52c/repoze.zcml-0.1.tar.gz#sha256=9372f63a6d870c09628073659875fb38127aa8fd81f166cf567cf51a05438f29 (from https://pypi.org/simple/repoze-zcml/), version: 0.1
    Found link https://files.pythonhosted.org/packages/2d/02/e915725b4e50c926477c7fdf642e0fa556ba5c3495fb4a8bfd5705655f85/repoze.zcml-0.2.tar.gz#sha256=b2c972a884532b14816114f866fa4453ef8be0c4b52dcd68e3baa6c880424d72 (from https://pypi.org/simple/repoze-zcml/), version: 0.2
    Found link https://files.pythonhosted.org/packages/95/a4/6372d02255c7dbc46b4697e956469542a34292152a91c1a4c5d606d4117e/repoze.zcml-0.3.tar.gz#sha256=5f7d558e843537b04a9cbfe430b4d4dfff4752e317c2c31da19578279e23ddbe (from https://pypi.org/simple/repoze-zcml/), version: 0.3
    Found link https://files.pythonhosted.org/packages/5c/17/8b78c892a07ed6af213ac192d9b9dde19e24eab2719376751f69c3c0d8c3/repoze.zcml-0.4.tar.gz#sha256=f59feb7303111f5ccc2a862ba35266768189b0f6e3f33c20cc24878800b247a7 (from https://pypi.org/simple/repoze-zcml/), version: 0.4
    Found link https://files.pythonhosted.org/packages/60/4a/665caf16c988c68f701ae40d992eb447452ee3de61910fc7f3ceb7093ea3/repoze.zcml-1.0b1.tar.gz#sha256=856b4836149731de0e6946988d055d124de45fc960a5309f70e12ef224631637 (from https://pypi.org/simple/repoze-zcml/), version: 1.0b1
  Using version 0.4 (newest of versions: 0.1, 0.2, 0.3, 0.4)
  Created temporary directory: /private/var/folders/ck/dlscb24n4lzdlzpt3w0pdcgh0000gn/T/pip-unpack-ewna226y
  Looking up "https://files.pythonhosted.org/packages/5c/17/8b78c892a07ed6af213ac192d9b9dde19e24eab2719376751f69c3c0d8c3/repoze.zcml-0.4.tar.gz" in the cache
  Ignoring unknown cache-control directive:
  Current age based on date: 5118
  Ignoring unknown cache-control directive: immutable
  Freshness lifetime from max-age: 365000000
  The response is "fresh", returning cached response
  365000000 > 5118
  Using cached https://files.pythonhosted.org/packages/5c/17/8b78c892a07ed6af213ac192d9b9dde19e24eab2719376751f69c3c0d8c3/repoze.zcml-0.4.tar.gz
  Downloading from URL https://files.pythonhosted.org/packages/5c/17/8b78c892a07ed6af213ac192d9b9dde19e24eab2719376751f69c3c0d8c3/repoze.zcml-0.4.tar.gz#sha256=f59feb7303111f5ccc2a862ba35266768189b0f6e3f33c20cc24878800b247a7 (from https://pypi.org/simple/repoze-zcml/)
  Running setup.py (path:/private/var/folders/ck/dlscb24n4lzdlzpt3w0pdcgh0000gn/T/pip-install-nmd9li96/repoze.zcml/setup.py) egg_info for package repoze.zcml
    Running command python setup.py egg_info
    Traceback (most recent call last):
      File "<string>", line 1, in <module>
      File "/private/var/folders/ck/dlscb24n4lzdlzpt3w0pdcgh0000gn/T/pip-install-nmd9li96/repoze.zcml/setup.py", line 19, in <module>
        from ez_setup import use_setuptools
      File "/private/var/folders/ck/dlscb24n4lzdlzpt3w0pdcgh0000gn/T/pip-install-nmd9li96/repoze.zcml/ez_setup.py", line 98
        except pkg_resources.VersionConflict, e:
                                            ^
    SyntaxError: invalid syntax
Cleaning up...
  Removing source in /private/var/folders/ck/dlscb24n4lzdlzpt3w0pdcgh0000gn/T/pip-install-nmd9li96/repoze.zcml
Exception information:
Traceback (most recent call last):
  File "/private/tmp/.venv/lib/python3.7/site-packages/pip/_internal/basecommand.py", line 228, in main
    status = self.run(options, args)
  File "/private/tmp/.venv/lib/python3.7/site-packages/pip/_internal/commands/install.py", line 291, in run
    resolver.resolve(requirement_set)
  File "/private/tmp/.venv/lib/python3.7/site-packages/pip/_internal/resolve.py", line 103, in resolve
    self._resolve_one(requirement_set, req)
  File "/private/tmp/.venv/lib/python3.7/site-packages/pip/_internal/resolve.py", line 257, in _resolve_one
    abstract_dist = self._get_abstract_dist_for(req_to_install)
  File "/private/tmp/.venv/lib/python3.7/site-packages/pip/_internal/resolve.py", line 210, in _get_abstract_dist_for
    self.require_hashes
  File "/private/tmp/.venv/lib/python3.7/site-packages/pip/_internal/operations/prepare.py", line 324, in prepare_linked_requirement
    abstract_dist.prep_for_dist(finder, self.build_isolation)
  File "/private/tmp/.venv/lib/python3.7/site-packages/pip/_internal/operations/prepare.py", line 154, in prep_for_dist
    self.req.run_egg_info()
  File "/private/tmp/.venv/lib/python3.7/site-packages/pip/_internal/req/req_install.py", line 486, in run_egg_info
    command_desc='python setup.py egg_info')
  File "/private/tmp/.venv/lib/python3.7/site-packages/pip/_internal/utils/misc.py", line 698, in call_subprocess
    % (command_desc, proc.returncode, cwd))
pip._internal.exceptions.InstallationError: Command "python setup.py egg_info" failed with error code 1 in /private/var/folders/ck/dlscb24n4lzdlzpt3w0pdcgh0000gn/T/pip-install-nmd9li96/repoze.zcml/

Error:  An error occurred while installing repoze.workflow==1.0b1!
Command "python setup.py egg_info" failed with error code 1 in /private/var/folders/ck/dlscb24n4lzdlzpt3w0pdcgh0000gn/T/pip-install-nmd9li96/repoze.zcml/

This is likely caused by a bug in repoze.workflow==1.0b1.   That's why it tells you it encountered an error while installing repoze.workflow -- it tried to lock and install that first, failed, and then told you about it. During the resolution step, it happened to resolve a different version of the second package which it hasn't even attempted to deal with yet.
By the way, you are using prerelease versions, which may depend on other prerelease versions, which means you probably want to pass --pre with your install.  Considering that package hasn't been maintained for 4 or 5 years, it's not that surprising that we can't properly resolve it in python3.7.  I followed this up the stack a bunch and I actually have no clue why this is happening though.  /cc @uranusjr

Ah ok yeah I see what you're saying. sorry about that.  Yeah, see my above comment -- it's trying to do resolution on the first package without ever encountering the second one -- we have an open issue on merging these dependency sets somewhere... I'll leave this open until we can triage it properly

The order of the packages does not really matter. Consider the following scenario:
First install just repoze.zcml==1.0b1
tmp$ rm -rf repoze/
tmp$ mkdir repoze
tmp$ cd repoze/
repoze$ pipenv install --three repoze.zcml==1.0b1
Creating a virtualenv for this project...
Pipfile: /private/tmp/repoze/Pipfile
Using /usr/local/bin/python3 (3.7.0) to create virtualenv...
[ ... snip ... ]
Adding repoze.zcml==1.0b1 to Pipfile's [packages]...
Pipfile.lock not found, creating...
Locking [dev-packages] dependencies...
Locking [packages] dependencies...
Updated Pipfile.lock (5597db)!
Installing dependencies from Pipfile.lock (5597db)...
  🐍   ▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉ 7/7 — 00:00:02
To activate this project's virtualenv, run pipenv shell.
Alternatively, run a command inside the virtualenv with pipenv run.

SUCCESS! Now, let's install repoze.workflow==1.0b1
repoze$ cat Pipfile
[[source]]
url = "https://pypi.org/simple"
verify_ssl = true
name = "pypi"

[packages]
"repoze.zcml" = "==1.0b1"

[dev-packages]

[requires]
python_version = "3.7"

repoze$ pipenv install repoze.workflow==1.0b1
Installing repoze.workflow==1.0b1...
Collecting repoze.workflow==1.0b1
Requirement already satisfied: zope.component in ./.venv/lib/python3.7/site-packages (from repoze.workflow==1.0b1) (4.4.1)
Requirement already satisfied: zope.configuration>=3.8.0 in ./.venv/lib/python3.7/site-packages (from repoze.workflow==1.0b1) (4.1.0)
Requirement already satisfied: setuptools in ./.venv/lib/python3.7/site-packages (from repoze.workflow==1.0b1) (40.0.0)
Requirement already satisfied: zope.interface in ./.venv/lib/python3.7/site-packages (from repoze.workflow==1.0b1) (4.5.0)
Requirement already satisfied: repoze.zcml in ./.venv/lib/python3.7/site-packages (from repoze.workflow==1.0b1) (1.0b1)
Requirement already satisfied: zope.event in ./.venv/lib/python3.7/site-packages (from zope.component->repoze.workflow==1.0b1) (4.3.0)
Requirement already satisfied: zope.i18nmessageid in ./.venv/lib/python3.7/site-packages (from zope.configuration>=3.8.0->repoze.workflow==1.0b1) (4.1.0)
Requirement already satisfied: zope.schema in ./.venv/lib/python3.7/site-packages (from zope.configuration>=3.8.0->repoze.workflow==1.0b1) (4.5.0)
Installing collected packages: repoze.workflow
Successfully installed repoze.workflow-1.0b1

Adding repoze.workflow==1.0b1 to Pipfile's [packages]...
Pipfile.lock (5597db) out of date, updating to (441907)...
Locking [dev-packages] dependencies...
Locking [packages] dependencies...
3, in get_dependencies
    legacy_results = self.get_legacy_dependencies(ireq)
  File "/usr/local/Cellar/pipenv/2018.7.1/libexec/lib/python3.7/site-packages/pipenv/patched/piptools/repositories/pypi.py", line 335, in get_legacy_dependencies
    self.resolver.resolve(reqset)
  File "/usr/local/Cellar/pipenv/2018.7.1/libexec/lib/python3.7/site-packages/pipenv/patched/notpip/_internal/resolve.py", line 107, in resolve
    self._resolve_one(requirement_set, req)
  File "/usr/local/Cellar/pipenv/2018.7.1/libexec/lib/python3.7/site-packages/pipenv/patched/notpip/_internal/resolve.py", line 264, in _resolve_one
    abstract_dist = self._get_abstract_dist_for(req_to_install)
  File "/usr/local/Cellar/pipenv/2018.7.1/libexec/lib/python3.7/site-packages/pipenv/patched/notpip/_internal/resolve.py", line 214, in _get_abstract_dist_for
    self.require_hashes
  File "/usr/local/Cellar/pipenv/2018.7.1/libexec/lib/python3.7/site-packages/pipenv/patched/notpip/_internal/operations/prepare.py", line 328, in prepare_linked_requirement
    abstract_dist.prep_for_dist(finder, self.build_isolation)
  File "/usr/local/Cellar/pipenv/2018.7.1/libexec/lib/python3.7/site-packages/pipenv/patched/notpip/_internal/operations/prepare.py", line 155, in prep_for_dist
    self.req.run_egg_info()
  File "/usr/local/Cellar/pipenv/2018.7.1/libexec/lib/python3.7/site-packages/pipenv/patched/notpip/_internal/req/req_install.py", line 486, in run_egg_info
    command_desc='python setup.py egg_info')
  File "/usr/local/Cellar/pipenv/2018.7.1/libexec/lib/python3.7/site-packages/pipenv/patched/notpip/_internal/utils/misc.py", line 752, in call_subprocess
    % (command_desc, proc.returncode, cwd)
pipenv.patched.notpip._internal.exceptions.InstallationError: Command "python setup.py egg_info" failed with error code 1 in /var/folders/ck/dlscb24n4lzdlzpt3w0pdcgh0000gn/T/tmp_vzsch1pbuild/repoze.zcml/

Same error. Even with repoze.zcml==1.0b1 already installed in the environment.
Notice how the installation is successful, because repoze.zcml==1.0b1 is available in virtualenv. It's the locking that fails as it apparently downloads repoze.zcml==0.4 and runs setup.py egg_info off of the downloaded package, instead of the one already in virtualenv. At least that is how I understand it.

poetry doesn't have this problem because it uses pip-tools for resolving packages. Maybe we can check how they do it?

@karantan It’s the other way around, this problem riots in pip-tools, and poetry does not have it because it does not use pip-tools. We have already looked into their solution, and are already developing our own solution.
See: https://github.com/sarugaku/passa

Closing this issue as it is quite dated at this point.  If you think this is error please recheck with the latest version pipenv==2021.1.8   Noting also that there is perhaps a similar issue (but different) reported more recently against newer version:  https://github.com/pypa/pipenv/issues/4594


ProseMirror css override possible?

Please explain?

I would like to override the font-size of .ProseMirror p in my project. Is that possible?

Yes. The !important CSS overrides are now only loaded in the Django admin panel.

thx


initial dev process

Instead of merging into a release branch, this would be creation of a release branch and tagging the tip of the release branch

I'm not sure I understand the difference. Let's say we have v1.0.0 released and tagged. Development occurs on master and now we ready for the next release. The steps would be:

Create pull request from master to the release branch.
Core team reviews the changes, everyone happy, we didn't miss anything, ok accept the pull request and merge.
Tag the release branch with v1.0.1

What different process do you envision?

I thought we were planning to creating a branch from the release ready code then tag the branch tip with the release number? So a pull request from master to release-X would have zero changes. The only commit to the release branch would be the tag (until any maintenance updates).

What's the point of create a branch then? You are essentially just tagging master like in C of your diagram. That branch will never get used.

You can't commit to a tag. The only point is to have a defined structure for maintenance release. I can't think of anything else that can't work with a tag just as easily as a branch (eg, Docker Hub and ReadTheDocs can build versions from either.)
That's part of why I originally proposed B.

B is what I described in the document for the release/versioning strategy. D is essentially the development process, if you get rid of those dangling colored nodes.

Well, then I think it's premature to decide on what to do. @laserson is away and wants to do A, or more specifically this. I think the key statement in that article is "git merge is not used".

premature to decide on what to do

that's why it's a pull request, I could have just committed to master ;-D
I've read that document multiple times and it's highly ambiguous about releases. They seem to be all hyped about not merging the release branch back into master, and instead to cherry-pick commits, which is a counterpoint to the article it references. That latter article describes release branches like things real companies do, i.e. it takes them 3+ months to actually "release", so they need a separate branch to do all the bug fixing and etc., while new development continues in parallel.
That's all fine, but it is tangentially to what we are talking about, as I'm not suggesting to ever merge the release branch back into anything. If you look at Figure 1, it sure does look like they have a release branch, it's called release-0.x and release-1.x, so in my mind it is ambiguous on whether they are suggesting B or A.

It's not B because B has merges, specifically merges from develop into master.
As for releases, it's either A or C. In practice, A and C don't differ much. It's just a question of whether a release branch is normal (A) or only when absolutely necessary (C).

It's not B because B has merges, specifically merges from develop into master.

develop branch? B has two branches, the light grey with the arrow is master, the other branch with the colored nodes is the release branch. It's the cactus model in my mind.

The dark line is master in all the examples. The grey line in B is the development branch. In B development doesn't occur in master. Master functions as a single release branch that contains only stable/release code.

The dark line is master in all the examples.

Okay, sorry, I missed that, yeah we tossed B awhile back. So none of the diagrams are indicating what I'm thinking.
Anyways, the key technical issue was whether 1) there is a specific release branch or 2) you create a new branch for each release.

In 1), there is one branch, even if you have 100 releases.

In 1), you merge from master to the release branch.

In 2), there are 100 branches for 100 releases.

In 2), you never merge from master to the release branch.

So it sounds like you and Uri prefer the 2nd case.

I don't really prefer one branching/release strategy over the other. There are pros and cons to each that will impact how we version.  I was originally thinking (1), but after discussion it doesn't seem any better than (2).
What do I want is for it to be as simple as possible while meeting our needs. So we spend more time on the work and less time on the workflow.
For me, that means means avoiding day-to-day merges, pull requests, and multiple independent development branches that could generate merge conflicts. Multiple develop branches that won't conflict is fine, but the easiest way to get that is probably via a single development branch. Whether development occurs in master with releases branching out or occurs in develop with merges into master doesn't really matter to me.

My old school view is (1) but I realize that is biased because with some repo software, branches are expensive so you don't create more than needed, but git seems to have cheap and easy branches, and in that case I don't really see much advantage of (1) over (2).
One question though, can a branch and a tag have the same name in git? I'm assume not, so we have to make sure we use a unique name for the branch so it won't conflict, i.e. release-v1.0.1

I don't know about the naming in git, but I'm guessing it'll be a bad idea to double up the names even if it's technically possible.

What do I want is for it to be as simple as possible while meeting our needs.

I understand your concerns, and I'm willing to have the exception clause for you. However, I'm not willing to open up master for anybody and everybody with write access to directly commit to master with zero review process. At least not initially, that's my opinion and how I'd vote. I think I'm also channelling @BusseChristian opinion about wanting a more formal process based upon our discussion at AIRR, but he should give his opinion. I'm not sure about @ahmadchan opinion.
This is more than a technical decision, it's an AIRR community thing and insuring the community has notification and the space and time for discussion.

We currently have 7 contributors and 4 approvers. And those 3 non-approvers are me, Steve and Erick. We can just discuss anything likely to be contentious and do a pull if we think it'll be a problem.
People will make mistakes. Guaranteed. But, that's one of the reasons to use version control - to mitigate the consequences of human error. The history is immutable, so you can just revert/patch a problematic commit. It should be a rare enough occurrences that it shouldn't matter.

That's today. Tomorrow, off the top of my head, we have:

Christian and others fine-tuning the minimal standards, and working on the "next decade".
Ahmad defining ontologies and integrating them with MiAIRR and common repository.
Common Repository WG defining APIs and fine-tuning the specs.
Jason writing an R package.
iReceptor/VDJServer using a mixture of specs, data formats and APIs.
NCBI XML automated submission to be written.
GenBank submission criteria to be finalized.
50+ studies with over 1+ billion sequences being re-factored into AIRR standards, and being placed into data repositories and made available for queries and analysis.
Formats being defined for additional annotations, biological reagents/processes, etc.
William and others defining germline annotations and file formats.
Germline DB defining criteria, submission protocols, and tools.
Software WG defining standardized data sets and metrics.

I'm just uncomfortable with all these highly-interconnected projects to not be on the conservative side. As I say, it's my opinion, if the majority agrees otherwise then I'm happy with it.

Of those projects likely to generate code in the repo, I see maybe 1-3 developers per project. So I'm not concerned. Besides, anyone with write access to the repo can mess things up regardless of how they commit. Okay, it looks like this is something we're just not going to agree on philosophically. Which is fine. Let's just see what the consensus is and go with that.
Everything else seems reasonable non-contentious. I think? I guess there's still an open question as to whether we should do releases only as branches or as a mix of tags (minor releases) and branches (major releases).

Notes from call
Use master for main development
Tag/maintenance branches.

x.y.z version:
x = MinStd
y = implemented spec (yaml file) (incompatible changes)
z = software changes

Tag releases x.y.z. Make x.y maint branches when necessary.

Major software updates may warrant a "y" version bump as well.

Core group can commit. "Don't make people angry". Changing the spec will make people angry.

Tag a pre-formats commit as v1.0.

Going with C, plus a dash of A when required for maintenance.
Will use slack for commit notifications.

Incorporated changes based upon our meeting. @javh @laserson please review. If everything looks good then let's merge this sucker and move on.

Looks pretty solid to me, except I thought the plan was to make a release-MAJOR.MINOR branch only when necessary for maintenance? Otherwise, we'd just do a tag.
There are some minor technical details we didn't discuss:

Code style: PEP8 for Python?  For R, I like the Bioconductor style, except with snake_case for variable names.
Should we commit .gitignore and/or IDE project files (eg, *.Rproj)? My inclination is not to commit either, but there are advantages to making sure everyone's build options and environment is the same.

Oh, and my preference is Google Style docstrings for Python API documentation.

except I thought the plan was to make a release-MAJOR.MINOR branch only when necessary for maintenance? Otherwise, we'd just do a tag.

At the end, there is this note, so yeah I left it kinda loose.
Note: a release may just tag master and not create the actual release branch until later when it is needed.

some minor technical details we didn't discuss.

Feel free to add stuff for coding style, I've little preference. Truthfully though, I do whatever emacs does. Where I think it matters are public names like the functions name, package names, class names and etc., and we should be consistent there. However, we can add that as we go.
We should be doing other things too like copyright notices and author names in files. I use to be pretty pedantic about doing that stuff, now I've gotten lazy.