Implement Select Provider popup window capability

If the app developer doesn't provide their own 'select provider' UI, it would be helpful if calling login() without passing in an IDP would open a Select Provider popup.
There's two workflow options for this popup window that we have to decide between -- either 1) it serves as a select provider UI only, and it's the main app window that redirects for the OAuth dance. Or 2) The redirect happens in the popup window, which is more convenient for the app developer, but involves more moving parts to implement.
Recommendation: We can start with implementing Option 1, since that's the easiest, and discuss the next steps.
Option 1 - Popup is Select Provider Only, Main App Window Redirects
pro: Implementing this requires less moving parts.
con: More inconvenient for the app developer; the user can potentially lose their place in the page after the resulting redirect (for some single-page js apps, like Tabulator).
Workflow:

main window: login() is called with no IDP, popup window is opened, shows a list of IDPs (plus at least a textbox for user to enter their own domain or webid or preferred provider).
popup: User clicks on a provider (or enters a url in the textbox), popup window sends a postMessage() event to the opener (main app window) with the url of the selected provider and closes itself.
main window: Main window (the auth client) receives the providerSelected event, loads the RP client config for that IDP, constructs the /authorize URL, and redirects itself to login.
main window: User logs in. When the IDP redirects the user to the post-login redirect_uri (usually the same URI as the main app was), the app logic calls authClient.currentSession() on page load, which results in the auth client parsing the callback uri and extracting the credentials from it, as usual.

Sample code snippets:
var selectProviderWindow
// providerSelectPopupSource is a string that contains the HTML + JS of the popup window

initEventListeners()

if (selectProviderWindow) {
  // Popup has already been opened
  selectProviderWindow.focus()
} else {
  // Open a new Provider Select popup window
  selectProviderWindow = window.open('',
    'selectProviderWindow',
    'menubar=no,resizable=yes,width=400,height=400'
  )

  selectProviderWindow.document.write(providerSelectPopupSource)
  selectProviderWindow.document.close()  // important
}

function initEventListeners() {
  window.addEventListener('message', function (event) {
    switch (event.data.event_type) {
      case 'providerSelected':
        dispatchProviderSelected(event.data.value)  // provider uri

        break
      default:
        console.error('unknown event type: ', event)

        break
  })
}

In the popup window:
// opener is a browser global
function selectProvider (providerUri) {
  console.log('Provider selected: ', providerUri)

  var message = {
    event_type: 'providerSelected',
    value: providerUri
  }

  opener.postMessage(message, opener.window.location.origin)
  // close yourself
  window.close()
}

Option 2 - Popup is Select Provider + Redirect to Login, Main Window Not Redirected
pro: More convenient for the app developer (user's place / workflow in the main app page is not interrupted).
con: More moving parts to implement (would require alteration to solid-server & config).
Workflow:

main window: Decide on the callback redirect_uri during RP dynamic registration (see the callback uri discussion below).
main window: login() is called with no IDP, popup window is opened, shows a list of IDPs (plus at least a textbox for user to enter their own domain or webid or preferred provider).
popup: User clicks on a provider (or enters a url in the textbox), popup window sends a postMessage() event to the opener (main app window) with the url of the selected provider, and stays open.
main window: Main window (the auth client) receives the providerSelected event, loads the RP client config for that IDP, constructs the /authorize URL, and redirects the popup window to login.
popup: User logs in. When the IDP redirects the popup to the post-login redirect_uri, some logic in the redirect_uri page must do a postMessage to the opener (main app page) with its own uri (containing hash fragments with credentials), and closes itself. (See the discussion below).
main window: Receives the authCallback event from the popup window, with the callback uri as the event payload. Extracts the credentials from that uri, as usual (instead of currentSession deriving them from the main page's own current uri).

The tricky bit is step 5. What should be the redirect_uri that the RP client pre-registers, and asks to be redirected to during the authentication workflow? There's basically 3 options:

The rp client uses its own URI as a redirect_uri (like it currently does). In order for this to work, though, the main app code needs to have a snippet like:
// in the 'onload' window event
if (opener) {
  opener.postMessage({ event_type: 'authCallback', value: window.location.href }, opener.window.location.origin)
  window.close()  // close yourself
}

as soon as the page loads (so that the full app doesn't load in the popup window).

The app developer includes a callback.html (see below) as part of their web application, and tells the RP to register it as the redirect_uri.

We include a callback.html in the /common/ folder of all node-solid-server installations, and advertise the callback_uri endpoint either via a Link rel header, or via a service config document. The RP discovers this uri, and includes it in the redirect_uris list during dynamic registration.

Sample callback.html:
<!DOCTYPE html>

  <meta charset="utf-8">
  <meta http-equiv="Content-type" content="text/html;charset=utf-8">

Login successful

Please close this window.

I feel it is clear from earlier discussions that, while option 1 may be useful for testing, the functionality required in for example solid-ui, as used by existing apps, is to be able to maintain app state and stack during login process.  The functionality the app requires "get the user to [sign up and] sign in and call me back when they have".   This needs Option 2.  This is what is needed for solid-app-set panes.   This is what all kinds of alls will find useful, though we agreed there are apps, like banking apps, where the stack and very little state is not preserved between logged out and logged in states.
We need to be able to  provide prompts like

Log in to be able to use this app
Log in to be able to view this thing
Log in to see more stuff
Log in to be able to edit
Log in to be able to participate

which then are replaced by the UI to do the things described.  But the view could be a view embedded within another view with many other subviews with different state, which we don't want to lose with a top-level redirect.
I thought there are examples around which do this. Basically the redirect happens in the iframe, and the credentials get passed back to the parent one way or another.

For the 3 options in step 5 above ...
Option 1 puts a constraint on any top-level app using this to be able double as a login destination page.  It is a weird thing for the development process to have to guarantee, and for devs to remember. This seems like bad design because it is abusing the page.  One can imagine the bowser starting to load the huge tree of resources the page normally has only to have the page kill itself.  No way to treat a browser.
Option 2 seems reasonable, in that a developer just has to have access to a public page somewhere which will be secure from write and public for read.  (Assuming there is no constraint on the domain).  We could use fobar.github.io/fixed/loginSuccess.html .  It would have to be secure, though.
Option 3 would work -- you are string though from the server of the app, or the data?  Whoever it is has to be very trustworthy.
Suppose we do:  Option 2 if the app passes it in, else fallback to option 3, else fall back to a fixed redirect page solid.mit.edu/fixed/loginok.html  with a console.warning() that you are just testing and the fixed one won't scale.
(An interesting property of this is that we know the contents of the thing in advance -- if it was a HTML link we could use hash with https://developer.mozilla.org/en-US/docs/Web/Security/Subresource_Integrity)
(It is almost as though a data: URL is called for.  Let's assume that browsers will not do those)

Just an update from my end.
I am working on the desired workflow - redirects within the popup.
As for the callback URI - this has to be considered with security in mind. Since the UX demands that all redirects happen within the popup, the popup must use postMessage to communicate back with the parent application. For security reasons, it's important to specify the targetOrigin. A static application hosted on a solid server will not be able to know the application origin.
I am moving forward with implementing the provider select / callback application(s) as distinct HTML app bundles which can be built and bound to specific application origins so that postMessage is secure.

targetOrigin from the popup can be gotten from opener.window.location.origin (since the popup is generated by the app itself, in js).

And if a malicious domain opens your popup, then whoops!

The popup mechanism relies on the user verifying the url in the popup's url bar (to make sure that it wasn't opened from a malicious domain). Can't really get around that.

That's a separate issue.
The point of specifying targetOrigin when communicating to a parent window is to verify your assumption that the parent window is in fact running on the domain you think it is.

Fixed in #24


Cannot deploy Kubernetes cluster in AzureChinaCloud

Is this a request for help?: Yes

Is this an ISSUE or FEATURE REQUEST? (choose one): Issue

What version of acs-engine?: v0.7.0 and v0.8.0

Orchestrator and version (e.g. Kubernetes, DC/OS, Swarm)
Kubernetes 1.7
What happened:
Using the "deploy" option of acs-engine into the AzureChinaCloud asks for reauthentication, i.e.
time="2017-11-02T16:03:42+01:00" level=warning msg="To sign in, use a web browser to open the page https://aka.ms/deviceloginchina and enter the code XXXXXXXXX to authenticate."
but the code cannot be recognized, i.e.
We don't recognize this code, please enter the code again
What you expected to happen:
The Kubernetes cluster is created without asking for authentication since  the user is already authenticated to the AzureChinaCloud.
How to reproduce it (as minimally and precisely as possible):
The acs-engine cmdline looks like (redacted):
acs-engine.exe  deploy --api-model priv-ajh-cn-east-es5-kube.apimodel.json --azure-env AzureChinaCloud --ca-certificate-path rootCertificate --ca-private-key-path rootPrivateKey --location chinaeast --output-directory priv-ajh-cn-east-es5-kube --resource-group priv-ajh-cn-east-es5-kube --subscription-id xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
The api-model looks like (redacted)
{
  "apiVersion": "vlabs",
  "properties": {
    "orchestratorProfile": {
      "orchestratorType": "Kubernetes",
      "orchestratorRelease": "1.7"
    },
    "masterProfile": {
      "count": 1,
      "dnsPrefix": "priv-ajh-cn-east-es5-kube",
      "vmSize": "Standard_D2_v2",
      "osDiskSizeGB": 128,
      "storageProfile": "ManagedDisks"
    },
    "agentPoolProfiles": [
      {
        "name": "agent",
        "count": 3,
        "vmSize": "Standard_DS12_v2",
        "osDiskSizeGB": 128,
        "availabilityProfile": "AvailabilitySet",
        "storageProfile": "ManagedDisks"
      }
    ],
    "linuxProfile": {
      "adminUsername": "azureuser",
      "ssh": {
        "publicKeys": [
          {
            "keyData": "ssh-rsa ..."
          }
        ]
      }
    },
    "servicePrincipalProfile": {
      "clientId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
      "secret": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
    }
  }
}

Anything else we need to know:
The user is already authenticated to azure.  Other Azure Powershell and CLI commands succeed. e.g. creating a resource group, accessing a keyvault.
The same script (with different parameters) works fine in the AzurePublicCloud and does not ask for reauthentication.

A workaround is to first use acs-engine.exe generate to generate the ARM templates and then deploy them using either Azure CLI or Powershell Cmdlets.

@ajhewett you could following below guide to deploy k8s on azure china cloud:
https://github.com/Azure/devops-sample-solution-for-azure-china/blob/master-dev/acs-engine/README.md

@andyzhangx yes, that approach does work.  This issue is that the acs-engine deploy command does not  work with the AzureChinaCloud environment but does work elsewhere.

./acs-engine scale --subscription-id ** \     --resource-group wb-sa-k8s-cluster  --location chinaeast2 \     --deployment-dir _output/wb-kubernetes --new-node-count 3 \     --node-pool agentpool1 --master-FQDN ***.chinaeast2.cloudapp.chinacloudapi.cn \     --azure-env AZURECHINACLOUD``
WARN[0000] To sign in, use a web browser to open the page https://microsoft.com/deviceloginchina and enter the code F8TDAPQWG to authenticate.
We don't recognize this code, please enter the code again.
same issue when using acs-engine scale
is there any available way to achieve scale k8s cluster in azure cloud china ?
much thanks.

@jackfrancis @CecileRobertMichon any thoughts?

@wenboyang214 you may run following cli command again before run "./acs-engine scale"
az cloud set --name AzureChinaCloud
az login -u ACCOUNT_NAME

Original session may be expired.

@andyzhangx
I have tried the way you referred but when run ./acs-engine scale  still force to login ignoring the above two commands.
there seems 3 methods to get access:
1.device(default: promote to login with a short code) [alway not recognize even the endpoint is deviceloginchina] (i wanna to know anyone success using device login method in Mooncake?)
2.client_secret
3.client_certificate
i finally figure out it can be access via client-id and client-secret instead of promote login.
./acs-engine scale --subscription-id 57a67c5e-a***
--azure-env azureChinaCloud
--client-id 54dec1cc-59b2-******************
--client-secret L54wgGowRMttE***********************
--auth-method client_secret
--resource-group wb-sa-k8s-cluster --location chinaeast2
--deployment-dir _output/wb-kubernetes --new-node-count 3
--node-pool agentpool1 --master-FQDN ******.chinaeast2.cloudapp.chinacloudapi.cn
I describe my solution: https://github.com/Azure/acs-engine/issues/3789


Better error messages on LDAP failure

Currently LDAP server down results in HTTP error 500 on the web browser side

Same problem with MySQL backend


Placement of newly opened Component Browser dictated by the mouse pointer.

Pull Request Description

Use a new algorithm for placement of new nodes in cases when:

a) there is no selected node, and the TAB key is pressed while the mouse pointer is near an existing node (especially in an area below an existing node);
b) a connection is dragged out from an existing node and dropped near the node (especially in an area below the node).

In both cases mentioned above, the new node will now be placed in a location suggested by an internal algorithm, aligned to existing nodes. Specifically, the placement algorithm used is similar to when pressing TAB with a node selected.
For more details, see: https://www.pivotaltracker.com/story/show/181076066
Visuals
A demo of TAB key and edge dropping behavior:
https://user-images.githubusercontent.com/273837/155525005-b3fcaced-413e-43f0-bc4c-25884fa809fd.mov
Supplementary demo of TAB key behavior when hovering mouse pointer over nodes:
https://user-images.githubusercontent.com/273837/155525132-7726f1df-cc84-402b-b08d-3b075ee7e432.mov
Important Notes

Checklist
Please include the following checklist in your PR:

[x] The documentation has been updated if necessary.
[x] All code conforms to the Scala, Java, and Rust style guides.
All code has been tested:

[x] Unit tests have been written where possible.
[x] If GUI codebase was changed: Enso GUI was tested when built using BOTH ./run dist and ./run watch.

@wdanilo Sorry, that was an accident; should be fixed now.
@farmaazon I incorporated changes based on what we discussed on the call; PTAL.

NOTE: Per the discussion on Discord, this PR is not to be merged until a fix for #3328 is merged.

(Process note: the code-review is now accepted, therefore the PR is waiting for Review by @farmaazon  on Task https://www.pivotaltracker.com/story/show/181076066 before merging.)


Fix nvidia driver download URL

us.download.nvidia.com doesn't work anymore, but without the us, the links work fine.
e.g.
404: https://us.download.nvidia.com/XFree86/Linux-x86_64/525.60.13/NVIDIA-Linux-x86_64-525.60.13.run
200: https://download.nvidia.com/XFree86/Linux-x86_64/525.60.13/NVIDIA-Linux-x86_64-525.60.13.run

Thanks for the PR, I'm also getting 404 when trying the us link (I'm in the UK), I wonder if it's regional; @zb140 does the link work for you?
If there's no specific issue with the new link, I'll be happy to merge it.

For what it's worth, I'm actually in the US haha

It'll be a little while before I could test it here, but it seems like a completely reasonable change. As long as the new one works for you, I vote for just running with it and not waiting for me 🙂

Thank you!!!

Thank you for taking the time to contribute!


Better error handling when processing messages

Using amqp-publish, we can publish a message to sdx-controller this way:
$ amqp-publish --routing-key="$SUB_QUEUE" --exchange="" --body "$(cat tests/data/sax.json)"

However that causes a crash, and then further messages are not handled:
Traceback (most recent call last):
  File "/usr/lib64/python3.9/runpy.py", line 197, in _run_module_as_main
    return _run_code(code, main_globals, None,
  File "/usr/lib64/python3.9/runpy.py", line 87, in _run_code
    exec(code, run_globals)
  File "/home/sdx/sdx-controller/swagger_server/__main__.py", line 179, in <module>
    main()
  File "/home/sdx/sdx-controller/swagger_server/__main__.py", line 175, in main
    start_consumer(thread_queue, db_instance)
  File "/home/sdx/sdx-controller/swagger_server/__main__.py", line 135, in start_consumer
    process_lc_json_msg(
  File "/home/sdx/sdx-controller/swagger_server/__main__.py", line 48, in process_lc_json_msg
    lc_queue_name = msg_json["lc_queue_name"]
KeyError: 'lc_queue_name'
Exception in thread Thread-3:
Traceback (most recent call last):
  File "/usr/lib64/python3.9/threading.py", line 980, in _bootstrap_inner
    self.run()
  File "/usr/lib64/python3.9/threading.py", line 917, in run
    self._target(*self._args, **self._kwargs)
  File "/home/sdx/sdx-controller/swagger_server/messaging/rpc_queue_consumer.py", line 49, in start_consumer
    self.channel.start_consuming()
  File "/home/sdx/sdx-controller/venv/lib64/python3.9/site-packages/pika/adapters/blocking_connection.py", line 1883, in start_consuming
    self._process_data_events(time_limit=None)
  File "/home/sdx/sdx-controller/venv/lib64/python3.9/site-packages/pika/adapters/blocking_connection.py", line 2044, in _process_data_events
    self.connection.process_data_events(time_limit=time_limit)
  File "/home/sdx/sdx-controller/venv/lib64/python3.9/site-packages/pika/adapters/blocking_connection.py", line 851, in process_data_events
    self._dispatch_channel_events()
  File "/home/sdx/sdx-controller/venv/lib64/python3.9/site-packages/pika/adapters/blocking_connection.py", line 567, in _dispatch_channel_events
    impl_channel._get_cookie()._dispatch_events()
  File "/home/sdx/sdx-controller/venv/lib64/python3.9/site-packages/pika/adapters/blocking_connection.py", line 1510, in _dispatch_events
    consumer_info.on_message_callback(self, evt.method,
  File "/home/sdx/sdx-controller/swagger_server/messaging/rpc_queue_consumer.py", line 36, in on_request
    ch.basic_publish(
  File "/home/sdx/sdx-controller/venv/lib64/python3.9/site-packages/pika/adapters/blocking_connection.py", line 2259, in basic_publish
    self._impl.basic_publish(
  File "/home/sdx/sdx-controller/venv/lib64/python3.9/site-packages/pika/channel.py", line 427, in basic_publish
    self._send_method(
  File "/home/sdx/sdx-controller/venv/lib64/python3.9/site-packages/pika/channel.py", line 1415, in _send_method
    self.connection._send_method(self.channel_number, method, content)
  File "/home/sdx/sdx-controller/venv/lib64/python3.9/site-packages/pika/connection.py", line 2255, in _send_method
    self._send_message(channel_number, method, content)
  File "/home/sdx/sdx-controller/venv/lib64/python3.9/site-packages/pika/connection.py", line 2275, in _send_message
    marshaled_body_frames.append(frame_method.marshal())
  File "/home/sdx/sdx-controller/venv/lib64/python3.9/site-packages/pika/frame.py", line 73, in marshal
    pieces = self.method.encode()
  File "/home/sdx/sdx-controller/venv/lib64/python3.9/site-packages/pika/spec.py", line 1582, in encode
    assert isinstance(self.routing_key, str_or_bytes),\
AssertionError: A non-string value was supplied for self.routing_key

This is less robust than it should be.

Things have changed a little since this issue was originally filed, but it still remains.  Here's the updated backtrace:
sdx-controller-1  | Exception in thread Thread-4:
sdx-controller-1  | Traceback (most recent call last):
sdx-controller-1  |   File "/usr/local/lib/python3.9/threading.py", line 980, in _bootstrap_inner
sdx-controller-1  |     self.run()
sdx-controller-1  |   File "/usr/local/lib/python3.9/threading.py", line 917, in run
sdx-controller-1  |     self._target(*self._args, **self._kwargs)
sdx-controller-1  |   File "/opt/venv/lib/python3.9/site-packages/sdx_controller/messaging/rpc_queue_consumer.py", line 72, in start_consumer
sdx-controller-1  |     self.channel.start_consuming()
sdx-controller-1  |   File "/opt/venv/lib/python3.9/site-packages/pika/adapters/blocking_connection.py", line 1883, in start_consuming
sdx-controller-1  |     self._process_data_events(time_limit=None)
sdx-controller-1  |   File "/opt/venv/lib/python3.9/site-packages/pika/adapters/blocking_connection.py", line 2044, in _process_data_events
sdx-controller-1  |     self.connection.process_data_events(time_limit=time_limit)
sdx-controller-1  |   File "/opt/venv/lib/python3.9/site-packages/pika/adapters/blocking_connection.py", line 851, in process_data_events
sdx-controller-1  |     self._dispatch_channel_events()
sdx-controller-1  |   File "/opt/venv/lib/python3.9/site-packages/pika/adapters/blocking_connection.py", line 567, in _dispatch_channel_events
sdx-controller-1  |     impl_channel._get_cookie()._dispatch_events()
sdx-controller-1  |   File "/opt/venv/lib/python3.9/site-packages/pika/adapters/blocking_connection.py", line 1510, in _dispatch_events
sdx-controller-1  |     consumer_info.on_message_callback(self, evt.method,
sdx-controller-1  |   File "/opt/venv/lib/python3.9/site-packages/sdx_controller/messaging/rpc_queue_consumer.py", line 59, in on_request
sdx-controller-1  |     ch.basic_publish(
sdx-controller-1  |   File "/opt/venv/lib/python3.9/site-packages/pika/adapters/blocking_connection.py", line 2259, in basic_publish
sdx-controller-1  |     self._impl.basic_publish(
sdx-controller-1  |   File "/opt/venv/lib/python3.9/site-packages/pika/channel.py", line 427, in basic_publish
sdx-controller-1  |     self._send_method(
sdx-controller-1  |   File "/opt/venv/lib/python3.9/site-packages/pika/channel.py", line 1415, in _send_method
sdx-controller-1  |     self.connection._send_method(self.channel_number, method, content)
sdx-controller-1  |   File "/opt/venv/lib/python3.9/site-packages/pika/connection.py", line 2253, in _send_method
sdx-controller-1  |     self._send_message(channel_number, method, content)
sdx-controller-1  |   File "/opt/venv/lib/python3.9/site-packages/pika/connection.py", line 2273, in _send_message
sdx-controller-1  |     marshaled_body_frames.append(frame_method.marshal())
sdx-controller-1  |   File "/opt/venv/lib/python3.9/site-packages/pika/frame.py", line 73, in marshal
sdx-controller-1  |     pieces = self.method.encode()
sdx-controller-1  |   File "/opt/venv/lib/python3.9/site-packages/pika/spec.py", line 1581, in encode
sdx-controller-1  |     assert isinstance(self.routing_key, str_or_bytes),\
sdx-controller-1  | AssertionError: A non-string value was supplied for self.routing_key

Here's the command to reproduce the issue:
$ amqp-publish --routing-key="topo" --body="$(cat ../datamodel/src/sdx_datamodel/data/topologies/amlight.json)"

Basically, this method crashes, on line 59:
https://github.com/atlanticwave-sdx/sdx-controller/blob/1dea2a616934dbc1de4d098a95d693c466f908a2/sdx_controller/messaging/rpc_queue_consumer.py#L46-L65
I think pika is unhappy about exchange name being an empty string.  I'm not sure what this code does though.  We should document the purpose of the offending basic_publish(), or perhaps remove it if it is not really doing anything.
Since the message queue consumer thread crashes, SDX Controller will have to be restarted.  But since the message persists in the queue, we will keep crashing and stay unusable until the message queue process is restarted.


WordPress DocBlock: Period at the end of the summary

I was recently doing a review of a pull request for _s  where the period was missing at the end of the summary and WPCS was not picking up on it.
The other values in the DocBlock also require a period at the end of the line.
There is an existing sniff to check for inline comments Squiz.Commenting.InlineComment.InvalidEndChar but not for function DocBlocks.
https://make.wordpress.org/core/handbook/best-practices/inline-documentation-standards/php/#docblock-formatting

Just as a point of note, there are many aspects of WP Inline PHP Docs standards that we don't check for - it was just the existing sniffs from other standards that were added in. (#241, #381).
Anything else will require custom sniffs.

Yes, I've looked into what's covered and what's missing from the Docs standard before, but due to other things having higher priority not actioned it so far.
I have an inventarisation available verified by @drewapicture
There is a lot which we would want to add/change if we want to properly cover the WP documentation standards.

How could I support this kind of Comment Blocks.
	/** 	 * {@inheritdoc} 	 */
I was trying WPCS: CSRF ok. but couldn't make it work.

I have an inventarisation available verified by @DrewAPicture

@jrfnl Do you still have that? Could you share please?

How could I support this kind of Comment Blocks.
/** * {@inheritdoc} */

While I don't think the use of inheritdoc is mentioned in the Handbook, I do think we should allow it. @killua99 please open a new issue with it, so it's not lost in this thread about summary periods :-)

@GaryJones I do still have it.
I think the Docs ruleset should be treated as a project and needs to be a coordinated effort. Sharing the specs without defining the project and without further explanation would IMHO be counter-productive.
The spreadsheet only contains the specs, not the outline of the sniff architecture which is needed.


Issue with  "zipline ingest -b quandl"

Hello,
I am not able to download quandl data bundle (although I have no issue with quantopian-quandl). I wonder if anybody else is facing similar issue?
My environment

Operating System: Linux x86_64 or OSX
Python Version: anaconda python 3.4
Python Bitness: 64
How did you install Zipline:  pip
Python packages:
....
zipline   1.0.1
....

Reproduction Steps

Register on Quandl, grab QUANDL_API_KEY
QUANDL_API_KEY=<> zipline ingest -b quandl

this fails with exception ::
Merging daily equity files:  [-----------------------------------#]  2076[2016-06-21 15:43:32.588062] ERROR: zipline.data.bundles.quandl: Exception raised reading Quandl data. Retrying.
Traceback (most recent call last):
File "/home/pmironchyk/anaconda3/envs/py34/lib/python3.4/site-packages/zipline/utils/cache.py", line 225, in getitem
with open(self._keypath(key), 'rb') as f:
FileNotFoundError: [Errno 2] No such file or directory: '/home/pmironchyk/.zipline/data/quandl/.cache/TEST123456789'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/home/pmironchyk/anaconda3/envs/py34/lib/python3.4/site-packages/zipline/data/bundles/quandl.py", line 242, in gen_symbol_data
raw_data = cache[symbol]
File "/home/pmironchyk/anaconda3/envs/py34/lib/python3.4/site-packages/zipline/utils/cache.py", line 230, in getitem
raise KeyError(key)
KeyError: 'TEST123456789'
During handling of the above exception, another exception occurred:
.....
Traceback (most recent call last):
File "/home/pmironchyk/anaconda3/envs/py34/bin/zipline", line 11, in
sys.exit(main())
File "/home/pmironchyk/anaconda3/envs/py34/lib/python3.4/site-packages/click/core.py", line 716, in call
return self.main(_args, *_kwargs)
File "/home/pmironchyk/anaconda3/envs/py34/lib/python3.4/site-packages/click/core.py", line 696, in main
rv = self.invoke(ctx)
File "/home/pmironchyk/anaconda3/envs/py34/lib/python3.4/site-packages/click/core.py", line 1060, in invoke
return _process_result(sub_ctx.command.invoke(sub_ctx))
File "/home/pmironchyk/anaconda3/envs/py34/lib/python3.4/site-packages/click/core.py", line 889, in invoke
return ctx.invoke(self.callback, *_ctx.params)
File "/home/pmironchyk/anaconda3/envs/py34/lib/python3.4/site-packages/click/core.py", line 534, in invoke
return callback(_args, **kwargs)
File "/home/pmironchyk/anaconda3/envs/py34/lib/python3.4/site-packages/zipline/main.py", line 300, in ingest
show_progress,
File "/home/pmironchyk/anaconda3/envs/py34/lib/python3.4/site-packages/zipline/data/bundles/core.py", line 375, in ingest
pth.data_path([name, timestr], environ=environ),
File "/home/pmironchyk/anaconda3/envs/py34/lib/python3.4/site-packages/zipline/data/bundles/quandl.py", line 301, in quandl_bundle
show_progress=show_progress,
File "/home/pmironchyk/anaconda3/envs/py34/lib/python3.4/site-packages/zipline/data/us_equity_pricing.py", line 252, in write
return self._write_internal(it, assets)
File "/home/pmironchyk/anaconda3/envs/py34/lib/python3.4/site-packages/zipline/data/us_equity_pricing.py", line 312, in _write_internal
for asset_id, table in iterator:
File "/home/pmironchyk/anaconda3/envs/py34/lib/python3.4/site-packages/click/_termui_impl.py", line 259, in next
rv = next(self.iter)
File "/home/pmironchyk/anaconda3/envs/py34/lib/python3.4/site-packages/zipline/data/us_equity_pricing.py", line 245, in
((sid, to_ctable(df, invalid_data_behavior)) for sid, df in data),
File "/home/pmironchyk/anaconda3/envs/py34/lib/python3.4/site-packages/zipline/data/bundles/quandl.py", line 250, in gen_symbol_data
end_date=end_date,
File "/home/pmironchyk/anaconda3/envs/py34/lib/python3.4/site-packages/zipline/data/bundles/quandl.py", line 204, in fetch_single_equity
symbol, retries
ValueError: Failed to download data for 'TEST123456789' after 5 attempts.
Sincerely,
Pavel Mironchyk

@pamiro are you still having this issue?

I can't get QUANDL data either. So we're stuck with quantopian data, which doesn't work ( SEE - float is required error). GREAT

@quocgfy are you getting the exact same error? with the same version of zipline?

This should be fixed on master 🙂

Going to close this as it is fixed in the latest release. Feel free to check out the release announcement here.


template variable call from config

#637

[ ] New template variable added Job_title.
[ ] Now template varibles are calling from config

@mohitgusain is this ready for review? can you assign proper labels to this PR?

@rathorevaibhav  Sorry. Yes, this is ready for review.


backend-builder: sha1 not found

When trying to build the project using Docker the backend-builder at step 5 fails. RUN cargo install --root ./dist/ --path .
I noticed that there is an unresolved import called sha1.
#0 330.7 error[E0432]: unresolved import `sha1`
#0 330.7   --> /usr/local/cargo/registry/src/github.com-1ecc6299db9ec823/tungstenite-0.17.3/src/handshake/mod.rs:15:5
#0 330.7    |
#0 330.7 15 | use sha1::{Digest, Sha1};
#0 330.7    |     ^^^^ use of undeclared crate or module `sha1`
#0 330.7    |
#0 330.7 help: there is a crate or module with a similar name
#0 330.7    |
#0 330.7 15 | use sha_1::{Digest, Sha1};
#0 330.7    |     ~~~~~
#0 330.7
#0 331.1 For more information about this error, try `rustc --explain E0432`.
#0 331.1 error: could not compile `tungstenite` due to previous error
#0 331.1 warning: build failed, waiting for other jobs to finish...
#0 336.9 error: failed to compile `eiffelvis v0.1.0 (/opt/EiffelVis)`, intermediate artifacts can be found at `/opt/EiffelVis/target`
------
failed to solve: executor failed running [/bin/sh -c cargo install --root ./dist/ --path .]: exit code: 101

I added this dependency to Cargo.toml and now Docker can build the project.

Thanks for bringing this up! I am a bit confused as to why this happened; someone probably broke semver in some way.
Ill do some research as to why this happened and if we need to do more to fix this.

Could you try reproducing the error with https://github.com/ItJustWorksTM/EiffelVis/pull/138, I cant seem to reproduce the error

I can't access my computer until next Monday if that is okey to wait until

I will go ahead and merge my patch, let me know when you get back to test it.

Is still still relevant? @Stronkness


Standalone Kibana dashboard?

We already have infrastructure for ingesting cloudtrail logs into Elasticsearch. Would it be possible to provide a standalone export of the dashboard JSON so people with existing infrastructure can consume this dashboard?

That export is here: https://github.com/AppliedTrust/traildash/blob/master/assets/CloudTrail.json
Also, please note that Traildash has been retired since AWS now offers a built-in solution based on the same technology (ElasticSearch and Kibana): https://aws.amazon.com/blogs/aws/cloudwatch-logs-subscription-consumer-elasticsearch-kibana-dashboards/


Increase cloudbuild timeout to 1h

As per recent CI run, the current timeout of 30 minutes might be too low since it takes ~25 minutes to build all images and push them to the gcr registry.
cc @fpetkovski

/lgtm


Add Stride game engine

SteamDB app page links to a few games using this
https://steamdb.info/app/1256380/
https://steamdb.info/app/1531540/
Brief explanation of the change
Adding a reference to the Stride game engine. Currently Stride is getting a lot of traction and we're looking to see if there's more games out there deployed to Steam that use Stride.
See https://github.com/stride3d/stride

@Lifeismana applied all your requested changes. Looking for you to merge this.


Add Support to Skip Version Verification when Releasing an Uber JAR

Description
This PR prototypes the idea of having special artifact configurations that affect validation when releasing.
All SDK Contribution checklist:

[x] The pull request does not introduce [breaking changes]
[x] CHANGELOG is updated for new features, bug fixes or other significant changes.
[x] I have read the contribution guidelines.

General Guidelines and Best Practices

[x] Title of the pull request is clear and informative.
[x] There are a small number of commits, each of which have an informative message. This means that previously merged commits do not appear in the history of the PR. For more information on cleaning up the commits in your PR, see this page.

Testing Guidelines

[x] Pull request includes test coverage for the included changes.

@srnagar, @JonathanGiles, would appreciate your feedback on this idea


[SP-5704] Backport of BACKLOG-34414 'Text file input' issues with fil…

…es and folders as an input as a field from previous step (8.3)

:white_check_mark: Build finished in 30m 58s
Build command:
mvn clean verify -B -e -Daudit -amd -pl engine

:ok_hand: All tests passed!
Tests run: 3601, Failures: 0, Skipped: 7    Test Results

:information_source:  This is an automatic message


Animated SVG doensn't work

It seems that SVG that contains animation doesn't work.
Example: https://images.weserv.nl/?url=https://upload.wikimedia.org/wikipedia/commons/8/87/SVG_animation_using_CSS.svg
However, SVG without animation works.

It seems doesn't manage gradient too: https://images.weserv.nl/?url=https://upload.wikimedia.org/wikipedia/commons/3/31/Rainbow-gradient-fully-saturated.svg

@andrieslouw or @kleisauke any information about this issue ?

librsvg (the library we use to load SVG images) doesn't support CSS-based animations.
The second image you posted does not contain a width and/or height attribute, nor does it define a viewBox attribute, so it will default to 1x1 pixel. You could explicitly set the &w= and/or &h= parameter to load these kind of images. For example:
https://images.weserv.nl/?url=https://upload.wikimedia.org/wikipedia/commons/3/31/Rainbow-gradient-fully-saturated.svg&w=250

Thank you for the quick answer.
So… for animation this can take years/decades/Inifinity to be supported :joy: because it seems that it is not planned by librsvg.

This is being tracked upstream within issue https://gitlab.gnome.org/GNOME/librsvg/-/issues/307.

This is being tracked upstream within issue https://gitlab.gnome.org/GNOME/librsvg/-/issues/307.


Nominal similarity this code!

Hi,
The name of this program is similar to the spaghetti program in the WIEN2k code and it is interrupted during execution. Is it possible to change the name of this program? Or is there an idea to fix it?

That's good a point. I guess I didn't give it much thought, but you're right Wien2k's spaghetti executable and this packages executable would both be added to a user's PATH and cause an error. I think I'll just rename this all together as I intend this package to do more than just plot bands.

Everything has been renamed to w2kplot which shouldn't interfere with of WIEN2k's programs. This name is more fitting as I want this program to plot more than just band structures anyways! Thanks for your feedback on this package so far. Please let me know if you run into anything else!


Beacon data.

Support sending beacons to back-ends.
The exposed API should be similar to http://www.w3.org/TR/beacon/

Was there any progress on this? I didn't find any mention of this new data collection project, not sure if this went forward.
Thank you,

I haven't had time to do it. But it'll happen.
Can you tell me what will you use it for?

Our own builtin analytics platform, targeting very specific business events…
If I could leverage this API, we could use "local" mode for development, and switch to remote services in production, silently running on our app.


info 23:15:34.492: Execute Cell 0 c:\Users\SMART LAPTOPS\Desktop\latex doc\khan.ipynb info 23:15:35.851: Cancel all remaining cells true || Error || undefined info 23:15:35.852: Cancel pending cells info 23:15:35.852: Cell 0 executed with state Error

Environment data

VS Code version: XXX
Jupyter Extension version (available under the Extensions sidebar): XXX
Python Extension version (available under the Extensions sidebar): XXX
OS (Windows | Mac | Linux distro) and version: XXX
Python and/or Anaconda version: XXX
Type of virtual environment used (N/A | venv | virtualenv | conda | ...): XXX
Jupyter server running: Local | Remote | N/A

Expected behaviour
XXX
Actual behaviour
XXX
Steps to reproduce:
[NOTE: Self-contained, minimal reproducing code samples are extremely helpful and will expedite addressing your issue]

XXX

Logs

Output for Jupyter in the Output panel (View→Output, change the drop-down the upper-right of the Output panel to Jupyter)

XXX

I'm closing this issue due to the lack of any information.
Please could you fill in the requested information and I'll be happy to re-open this issue, or please feel free to create a new issue with the missing information such as version, logs, etc.


Select with multiple is not align well

In the documentation, the select dropdown with multiple is not align well..
https://goo.gl/photos/ev2EMErHAgfu9juP6
Thank you..

https://github.com/Dogfalo/materialize/commit/81ab9ba3654fdbaca88d0f18a1a7f7998424e725
I'll prepare a PR.

Duplicate of #5083


$ionicModal.fromTemplateUrl freezing sometimes

Greetings!
My sensors indicate a reply was requested, however, since we have not received one yet, this will be closed. If you are still experiencing this issue, please feel free to reopen it and include any information that may have been requested.
Thank you!

I experienced something similar today and realized that the path I passed to $ionicModal.fromTemplateUrl did not resolve to an actual file.


⚠ Bofrost.at has degraded performance

In ba8f919, Bofrost.at (https://www.bofrost.at) experienced degraded performance:

HTTP code: 200
Response time: 2203 ms

Resolved: Bofrost.at performance has improved in abcede9 after 1 hour, 14 minutes.


Include missing tblproperties_clause().

The call to tblproperties_clause() is missing in the "CREATE TABLE" statement building.
This is needed in order to be able to use DBT-Spark on top of Iceberg/S3, as we need to pass parameters at table creation time.
Problem
When creating tables on Spark/Iceberg/S3, DBT will not honor the TBLPROPERTIES defined in the config.
There are various properties that need to be set at CREATE TABLE time. In my particular case, I need
to enable write.object-storage.enabled to avoid being throttled by AWS S3.
Solution
By including the call to tblproperties_clause inside the macro spark__create_table_as, the properties
will be included in the CREATE TABLE statement, thus fixing the issue.
Checklist

[x] I have read the contributing guide and understand what's expected of me
[x] I have run this code in development and it appears to resolve the stated issue
[ ] This PR includes tests, or tests are not required/relevant for this PR
[ ] This PR has no interface changes (e.g. macros, cli, logs, json artifacts, config files, adapter interface, etc) or this PR has already received feedback and approval from Product or DX

Test Plan:
By using the following config in the example model:
{{ config(
    materialized='table',
    tblproperties={'write.object-storage.enabled':'true'},
    partition_by=['id'],
    file_format='iceberg'
) }}

It produced:
1: jdbc:hive2://localhost:10000> show tblproperties first_dbt_model_1;
+-------------------------------+----------------------+
|              key              |        value         |
+-------------------------------+----------------------+
| current-snapshot-id           |<PHONE_NUMBER>934334351  |
| format                        | iceberg/parquet      |
| format-version                | 1                    |
| write.object-storage.enabled  | true                 |
+-------------------------------+----------------------+
4 rows selected (0.86 seconds)
1: jdbc:hive2://localhost:10000>

duplicate of https://github.com/dbt-labs/dbt-spark/pull/848

Fixed in #848 .


Make superpin have 3 tabs at most in one ROW

As you can see here, super pins have 5 tabs in one row, I'd like some behavior to make it show 3 or 2 pinned tabs at most according to the width of sidebar.

Hi, you are currently using zen version a35, right? The theme is currently broken in this version, but i already fixed it and the pull request is waiting for approval (https://github.com/zen-browser/theme-store/pull/322). Regarding your wish, can you please specify your wished bavior?
https://github.com/user-attachments/assets/7e59e38a-8e37-4467-96d9-2ed4d18e954a
This is the current behavior (the same you will get when the pr got approved to fix the theme after a35 update). It dynamically adapts the number of pinned tabs per row based on the sidebar width so you can basically controll the number of pins per row. Do you want to have a global limit of like 3 pinned tabs per row no matter how wide the sidebar is or what exactly?

Yes, that's the behavior I'm looking for, thanks, for now I'll just be doing copy pasta magic
Closing this issue

reopening this as superpin breaks the expand on hover option


build(api): use clippy

This fixes https://github.com/molybdenumsoftware/pr-tracker/issues/13

Commenting so that some other PRs are the least recently updated. They are used as test fixtures.


Fix maestro dependency issues

Maestro, and the other CommBank projects we rely on, like permafrost and ebenezer, have a number of issues regarding dependency management:

The projects don't always agree on the version of a library to use
The projects don't always use the same version of a library as the version supplied in the hadoop classpath
When packaging the maestro assembly, when conflicting versions of a class are found, we resolve these conflicts by taking the first class in the classpath, rather than resolving the conflict sensibly.
When packaging the maestro assembly, we include libraries that are part of the hadoop classpath.
When packaging the maestro assembly, we include some libraries that may be required for other steps (e.g. testing or macros) but are not required at run-time (e.g. scala-compiler: I believe this is not required at runtime).

We need to:

Ensure we are not depending on any libraries we do not need.
As much as possible, ensure our projects all agree on the library version to use.
As much as possible, ensure our projects use the library versions supplied in the Hadoop classpath.
As much as possible, we should be excluding alternate versions of hadoop classpath libraries from any dependencies we have which rely on a different version of the library to the one on our cluster. We should ensure we compile and test with the versions on our cluster.
Ideally, configure sbt to be make it an error if it finds separate versions of the same class while creating the assembly, with explicit overrides for cases where we can't avoid this. If this is not possible, we should at least ensure we are packaging the newest version of a class.
Properly mark library in the hadoop classpath as provided. Make sure we have covered all the places where that jar is added to the final classpath, and confirm the jars are not being added to the assembly.
Limit the scope of the dependencies so that we are not including any jars in the final assembly that might only be required for testing, or for running macros, etc. Confirm these jars are not being added to the assembly.
Remove the temporary etl-plugin hack to strip jars from the final assembly

This is linked to:

https://github.com/CommBank/uniform/issues/31
https://github.com/CommBank/uniform/issues/30
https://github.com/CommBank/uniform/issues/28
https://github.com/CommBank/uniform/issues/27

The projects don't always agree on the version of a library to use
Use strict ivy conflict management.
Solutions, from preferred to least preferred. If it is hadoop classpath jar, pin the version, regardless of what other solution we may or may not follow.

If possible, adjust version we depend on to remove conflict. (E.g., our version of guava is too new iirc)
If on hadoop classpath, use dependencyOverride to pin version to hadoop cp. The pinning logic should be a function in uniform.
If one jar is more "central" then the other, use it's version, and exclude it from other jars. Consider putting these deps in uniform together.
Do whatever else seems to make sense in the situation!

The projects don't always use the same version of a library as the version supplied in the hadoop classpath
See above

When packaging the maestro assembly, when conflicting versions of a class are found, we resolve these conflicts by taking the first class in the classpath, rather than resolving the conflict sensibly.
Haven't investigated this yet

When packaging the maestro assembly, we include libraries that are part of the hadoop classpath.
Use etl project to investigate what jars we are including in distro, and add provided annotations as required

When packaging the maestro assembly, we include some libraries that may be required for other steps (e.g. testing or macros) but are not required at run-time (e.g. scala-compiler: I believe this is not required at runtime).
I think we can use provided annotations for this, but need to check.

:+1:
I would suggest working with the lowest level of libraries and working your way up so that at every step you trim it down and then it should hopefully be less of jungle when you get to the load itself.

makes sense. I was going to start with maestro, but parlour would probably be more sensible

I was thinking omnitool or permafrost.

I think another appropriate set of libraries to pin with dependency overrides is the scala-library and related jars (pin to scalaVersion, rather then some other 2.10 version).

interestingly, omnitool has no conflicts, although I expect that it will cause conflicts later when I do maestro. But I will handle those conflicts then.

Same story for permafrost. We're only going to start seeing those conflicts as we integrate them into higher level libraries.

Here's an interesting dependency: libthrift. We depend on libthrift in a number of ways:

Version 0.9.0-cdh5-2 through hive-exec, provided when the user calls uniform's depend.hive.
Version 0.6.1 through bijection-scrooge, provided when the user calls uniform's depend.scrooge.
Version 0.7.0 through parquet-cascading. parquet-cascading is provided on the hadoop classpath, so this version of libthrift gets marked as provided too, but it is not on the hadoop classpath as far as I can see.

Different projects depend on different combinations of the above jars, so you can't single one jar our as the "source of truth" and exclude libthrift from the rest. I didn't want to use dependencyOverrides for libraries which are provided by our dependencies, but I am not sure what else to do in situations like this.
I am also concerned that parquet-cascading does not appear to include all of it's dependencies in the hadoop-classpath.

Need to remember to ensure there is only one canonical place where parquet-cascading is defined and introduced. At the moment, parquet-cascading is defined in uniform, and also our private repos util.etl, and etl-plugin.

@SamRoberts can this be closed?

Have done steps 1-6 in the original comment, step 7 is "wontfix" for now, but I need to create an issue for that before closing this one, and step 8 still needs to be done (not removing the whole hack, but reducing it's scope to just the scala-compiler jar).
I need to go now, but I'll be doing those final bits and pieces first thing tomorrow I expect.

I have created the issue for step 7, and have a pull request to remove the temporary jar hack from etl-plugin, so I am closing this now.


Bugfix paid

close #191
close #195

@Justin-Aw46 do fix the failing CI before i merge

Apologies its fixed now


Fix error reporting in AvroUtils.getSchemaFromPath()

report errors with an exception
report errors exactly once
provide the failing pathname
don't generate spurious cascading NPE failures

Thanks for this Greg, I'll take a look tomorrow.

Hi Greg,
I tested your code and it works fine. Thanks!
While I was in there, I also opened #270 for some additional minor code clean ups. Also tested.


[CHALLENGE SUBMISSION]

Please provide the following information for your submission:
What is your name? (First, Last)
Remi Minnebo
Where is your GitHub Repo ?(With your challenge solution)
https://github.com/remiminnebo/tf-challenge-01
What Challenge is this for? (Challenge number between 1 and 5)
1
(Optional) Anything else we should know? e.g., language used, location, blog post?
Everything is handled by github actions. Secret for Azure SPN is stored within Github secrets.
The terraform configuration is deployed and then I use Azure login and Azure CLI steps to automate the CI/CD from my cloned azure-eats repo at: https://github.com/remiminnebo/azure-eats
live website can be seen here: https://apps-rmi-tf-challenge-01-apps-s-rmi-tf-challenge-01.azurewebsites.net/
I have added the log from the github action in attachment.
blog post:
http://hhmfumusdwvviwebsite.azurewebsites.net/2020/06/22/terraform-azure-challenge-1/
Cool challenge guys! Curious to see what's next.
1_Terraform.txt

Thanks for participating in the #TerraformOnAzure coding challenges!
We have attached your very special Astronaut Badger background, for you to use in all your upcoming video calls!
And to recognize you for your learning, you can collect your digital Azure Heroes badge on your mobile (you may need to install the Enjin wallet to collect it). Make sure to collect it today!
https://beam.enjin.io/claim/d32599695c8c28cfc24820492080fac0
Keep on learning and sharing!
Greetings from the #TerraformOnAzure team,
Suzanne, Floor, Erik & Nick


add an initiateSwap action that takes explicit time locks

This change adds a new action, initiateSwap, that is like executeSwap, except that it does not specify the time locks internally.
This is similar to the change made previously to prepareSwap in #229

 Fix timelock calculations for execute swap


Binary Tree Traversal #27

issue #27

Hey @surjyaneeh , Please include a description in each file along with their complexities.
Also write cpp instead of only  at starting of code so that github will show it coloured.
Also you can directly print the answers instead of storing, If possible write whole code.

Hey @surjyaneeh , Please include a description in each file along with their complexities. Also write "``cpp" instead of only "```" at starting of code so that github will show it coloured. Also you can directly print the answers instead of storing, If possible write whole code.

Okay I will do the necessary changes and inform you once done.

Hey, Everything is perfect.
Just change the code to have only 1 function and directly print the answer in every case.
Ex :
void dfs(TreeNode* root, vector<int> &answer){
        if(root==NULL) return;
        dfs(root->left, answer);
        answer.push_back(root->val);
        dfs(root->right, answer);
    }

Only this function with cout instead of push back in every approach.

Hey, Everything is perfect. Just change the code to have only 1 function and directly print the answer in every case. Ex :
void dfs(TreeNode* root, vector<int> &answer){
        if(root==NULL) return;
        dfs(root->left, answer);
        answer.push_back(root->val);
        dfs(root->right, answer);
    }

Only this function with cout instead of push back in every approach.

@aaryahjolia I have made changes.

LGTM! PR Approved.
Thank you for contributing!


Incorrect sorting on starting page - persons

On the persons starting page, the first name to appear is "54 Teilnehmer am IV. Kurs an der Rheinhardwaldschule Kassel".

Accordingly, names with a special character as initial appear at the end of the list:

Yes, since in the alphabetic order returned by the triple store, numbers come before letters. I'll check if there is a way to influence this


Decoupling weights downloading from loading

First, thank you for open sourcing this library, I'm currently evaluating curated-transformers to assess if I can migrate from transformers to this more focused and lightweight library. One of the few things that I'm missing with transformers is a way to decouple model downloading from model loading. In a distributed training setting, we only want the weights to be cached on disk by a single process on each node, and then loaded from all the child processes. This is especially critical when the model is very large and cannot fit in a single device.
Currently, the following snippet downloads and loads the model
encoder = BERTEncoder.from_hf_hub(
   name="bert-base-uncased",
   revision="main",
   device=torch.device("cuda", index=0),
)

I suggest (optionally) letting the user decouple downloading and loading with an API similar to this
BERTEncoder.pull_from_hf_hub(name="bert-base-uncased", revision="main")
encoder = BERTEncoder.from_hf_hub(
   name="bert-base-uncased",
   revision="main",
   device=torch.device("cuda", index=0),
)

where the first line caches the weights on disk and the second one first checks the cache and only downloads when the cache misses.
Does it sound like a useful feature to you?

Thanks for the feature request! This sounds like a very useful feature and would be simple to add. We'll add it to our todo list.

If there's an easy way to also support loading from a byte string, I'd see that as desirable too 🙂
I get that it might not be so easy though, depending on the way PyTorch does things.

If there's an easy way to also support loading from a byte string, I'd see that as desirable too 🙂
I get that it might not be so easy though, depending on the way PyTorch does things.

We could definitely support that. But we still need to hash out how we want to serialize the model hyperparameters (outside TorchScript/ONNX/etc.). What we had in mind now is generating configuration json that it compatible with HF transformers. We could then easily serialize the config + state dict to a byte string.

@bilelomrani1 the main branch now supports this, so if you want to give it a spin:
https://curated-transformers.readthedocs.io/en/latest/encoders.html#curated_transformers.models.AutoEncoder.download_to_cache

Thank you @shadeMe @danieldk this works exactly as intended! I leave the issue open if you want to track the status for loading from a byte string here but feel free to close, as this solves my issue.

Thanks for the suggestion and for testing 👍.


Kubernetes e2e test Kubectl Port forwarding With a server listening on localhost that expects a client request should support a client that connects, sends DATA, and disconnects fails

What happened?
The test fails in https://github.com/cri-o/cri-o/pull/6220 together with other cases, but I assume that the root cause is the same.
Interestingly, on my local machine the cancellation of the execsync token seems to kill the main container PID.
What did you expect to happen?
That the test succeeds.
How can we reproduce it (as minimally and precisely as possible)?
Running the test
> k8s-test-run --ginkgo.focus "Kubectl Port forwarding With a server listening on localhost that expects a client request should support a client that connects, sends DATA, and disconnects"
…
[BeforeEach] [sig-cli] Kubectl Port forwarding
  set up framework | framework.go:158
STEP: Creating a kubernetes client 09/16/22 11:08:56.88
Sep 16 11:08:56.880: INFO: >>> kubeConfig: /var/run/kubernetes/admin.kubeconfig
STEP: Building a namespace api object, basename port-forwarding 09/16/22 11:08:56.881
STEP: Waiting for a default service account to be provisioned in namespace 09/16/22 11:08:56.885
STEP: Waiting for kube-root-ca.crt to be provisioned in namespace 09/16/22 11:08:56.887
[It] should support a client that connects, sends DATA, and disconnects
  test/e2e/kubectl/portforward.go:481
STEP: Creating the target pod 09/16/22 11:08:56.888
Sep 16 11:08:56.892: INFO: Waiting up to 5m0s for pod "pfpod" in namespace "port-forwarding-8233" to be "running and ready"
Sep 16 11:08:56.893: INFO: Pod "pfpod": Phase="Pending", Reason="", readiness=false. Elapsed: 1.353931ms
Sep 16 11:08:56.893: INFO: The phase of Pod pfpod is Pending, waiting for it to be Running (with Ready = true)
Sep 16 11:08:58.896: INFO: Pod "pfpod": Phase="Running", Reason="", readiness=false. Elapsed: 2.003699716s
Sep 16 11:08:58.896: INFO: The phase of Pod pfpod is Running (Ready = false)
Sep 16 11:09:00.896: INFO: Pod "pfpod": Phase="Running", Reason="", readiness=false. Elapsed: 4.003966771s
Sep 16 11:09:00.896: INFO: The phase of Pod pfpod is Running (Ready = false)
Sep 16 11:09:02.895: INFO: Pod "pfpod": Phase="Running", Reason="", readiness=true. Elapsed: 6.003036101s
Sep 16 11:09:02.895: INFO: The phase of Pod pfpod is Running (Ready = true)
Sep 16 11:09:02.895: INFO: Pod "pfpod" satisfied condition "running and ready"
STEP: Running 'kubectl port-forward' 09/16/22 11:09:02.895
Sep 16 11:09:02.895: INFO: starting port-forward command and streaming output
Sep 16 11:09:02.895: INFO: Asynchronously running '/home/sascha/go/src/k8s.io/kubernetes/_output/local/bin/linux/amd64/kubectl kubectl --server=https://localhost:6443/ --kubeconfig=/var/run/kubernetes/admin.kubeconfig --namespace=port-forwarding-8233 port-forward --namespace=port-forwarding-8233 pfpod :80'
Sep 16 11:09:02.895: INFO: reading from `kubectl port-forward` command's stdout
STEP: Dialing the local port 09/16/22 11:09:02.951
STEP: Sending the expected data to the local port 09/16/22 11:09:02.952
STEP: Reading data from the local port 09/16/22 11:09:02.952
STEP: Closing the write half of the client's connection 09/16/22 11:09:04.859
STEP: Waiting for the target pod to stop running 09/16/22 11:09:04.859
Sep 16 11:09:04.859: INFO: Waiting up to 5m0s for pod "pfpod" in namespace "port-forwarding-8233" to be "container terminated"
Sep 16 11:09:04.860: INFO: Pod "pfpod": Phase="Running", Reason="", readiness=false. Elapsed: 1.185975ms
Sep 16 11:09:04.860: INFO: Pod "pfpod" satisfied condition "container terminated"
STEP: Verifying logs 09/16/22 11:09:04.86
…
[ hangs for 120s ]

We can see that the port-forwarder is dead within the container:
> kubectl get pods -A
NAMESPACE              NAME                      READY   STATUS    RESTARTS   AGE
kube-system            coredns-567b6dd84-bt6pf   1/1     Running   0          2m50s
port-forwarding-5552   pfpod                     0/2     Error     0          12s

> ps aux | rg agnhost
root     1000821  0.0  0.0<PHONE_NUMBER>8 ?        Ssl  11:10   0:00 /agnhost netexec

And the conmonrs logs also indicate that it got terminated:
> sudo journalctl -f _COMM=conmonrs --since=now
conmonrs[1028242]: Using systemd/journald logger
conmonrs[1028242]: Set log level to: trace
conmonrs[1028243]: registering event source with poller: token=Token(0), interests=READABLE
conmonrs[1028243]: registering event source with poller: token=Token(1), interests=READABLE | WRITABLE
conmonrs[1028243]: registering event source with poller: token=Token(2), interests=READABLE | WRITABLE
conmonrs[1028243]: Got a version request
conmonrs[1028243]: deregistering event source from poller
conmonrs[1028243]: registering event source with poller: token=Token(16777218), interests=READABLE | WRITABLE
conmonrs[1028243]: Got a version request
conmonrs[1028243]: deregistering event source from poller
conmonrs[1028243]: registering event source with poller: token=Token(33554434), interests=READABLE | WRITABLE
conmonrs[1028243]: Got a create container request
conmonrs[1028243]: Creating new IO streams
conmonrs[1028243]: PID file is /run/containers/storage/overlay-containers/1d9bbf813ae2ed8bd89e64f2160f973e7bfecd1311876c4c8d0f5af1eeb471b7/userdata/pidfile
conmonrs[1028243]: Runtime args "--root=/run/runc create --bundle /run/containers/storage/overlay-containers/1d9bbf813ae2ed8bd89e64f2160f973e7bfecd1311876c4c8d0f5af1eeb471b7/userdata --pid-file /run/containers/storage/overlay-containers/1d9bbf813ae2ed8bd89e64f2160f973e7bfecd1311876c4c8d0f5af1eeb471b7/userdata/pidfile 1d9bbf813ae2ed8bd89e64f2160f973e7bfecd1311876c4c8d0f5af1eeb471b7"
conmonrs[1028243]: Initializing CRI logger in path /var/log/pods/port-forwarding-2789_pfpod_39410d99-a33c-4a12-bd3b-0a47e1fb0d9c/readiness/0.log
conmonrs[1028243]: registering event source with poller: token=Token(3), interests=READABLE | WRITABLE
conmonrs[1028243]: registering event source with poller: token=Token(4), interests=READABLE | WRITABLE
conmonrs[1028243]: registering event source with poller: token=Token(5), interests=READABLE | WRITABLE
conmonrs[1028243]: Start reading from IO streams
conmonrs[1028243]: Running task
conmonrs[1028243]: Using cgroup path: /proc/1028268/cgroup
conmonrs[1028243]: Waiting for exit code
conmonrs[1028243]: deregistering event source from poller
conmonrs[1028243]: Setup cgroup v2 handling
conmonrs[1028243]: registering event source with poller: token=Token(0), interests=READABLE
conmonrs[1028243]: Read 150 bytes
conmonrs[1028243]: Wrote log line of length 120
conmonrs[1028243]: Wrote log line of length 120
conmonrs[1028243]: registering event source with poller: token=Token(50331650), interests=READABLE | WRITABLE
conmonrs[1028243]: Got a create container request
conmonrs[1028243]: Creating new IO streams
conmonrs[1028243]: PID file is /run/containers/storage/overlay-containers/a4100c860bee5c960903153702b486bd4ada8c6c6a77374b8edfc1afd55b872d/userdata/pidfile
conmonrs[1028243]: Runtime args "--root=/run/runc create --bundle /run/containers/storage/overlay-containers/a4100c860bee5c960903153702b486bd4ada8c6c6a77374b8edfc1afd55b872d/userdata --pid-file /run/containers/storage/overlay-containers/a4100c860bee5c960903153702b486bd4ada8c6c6a77374b8edfc1afd55b872d/userdata/pidfile a4100c860bee5c960903153702b486bd4ada8c6c6a77374b8edfc1afd55b872d"
conmonrs[1028243]: Initializing CRI logger in path /var/log/pods/port-forwarding-2789_pfpod_39410d99-a33c-4a12-bd3b-0a47e1fb0d9c/portforwardtester/0.log
conmonrs[1028243]: registering event source with poller: token=Token(6), interests=READABLE | WRITABLE
conmonrs[1028243]: registering event source with poller: token=Token(7), interests=READABLE | WRITABLE
conmonrs[1028243]: registering event source with poller: token=Token(8), interests=READABLE | WRITABLE
conmonrs[1028243]: Start reading from IO streams
conmonrs[1028243]: Running task
conmonrs[1028243]: Using cgroup path: /proc/1028312/cgroup
conmonrs[1028243]: Waiting for exit code
conmonrs[1028243]: deregistering event source from poller
conmonrs[1028243]: Setup cgroup v2 handling
conmonrs[1028243]: registering event source with poller: token=Token(0), interests=READABLE
conmonrs[1028243]: registering event source with poller: token=Token(67108866), interests=READABLE | WRITABLE
conmonrs[1028243]: Got exec sync container request with timeout 60
conmonrs[1028243]: Creating new IO streams
conmonrs[1028243]: Exec args "--root=/run/runc exec -d --pid-file=/run/containers/storage/overlay-containers/f5a4cb30d7219327b1fb12d111a14137ba65b5ebbfaaa50e4ba980070c4ad7bf/userdata/exec_syncAZSUifMpid 1d9bbf813ae2ed8bd89e64f2160f973e7bfecd1311876c4c8d0f5af1eeb471b7 sh -c netstat -na | grep LISTEN | grep -v 8080 | grep 80"
conmonrs[1028243]: registering event source with poller: token=Token(9), interests=READABLE | WRITABLE
conmonrs[1028243]: registering event source with poller: token=Token(10), interests=READABLE | WRITABLE
conmonrs[1028243]: registering event source with poller: token=Token(11), interests=READABLE | WRITABLE
conmonrs[1028243]: Start reading from IO streams
conmonrs[1028243]: Running task
conmonrs[1028243]: Waiting for exit code
conmonrs[1028243]: Using cgroup path: /proc/1028958/cgroup
conmonrs[1028243]: Setup cgroup v2 handling
conmonrs[1028243]: registering event source with poller: token=Token(0), interests=READABLE
conmonrs[1028243]: Read 81 bytes
conmonrs[1028243]: Exited 0
conmonrs[1028243]: TOKEN: CancellationToken { is_cancelled: false }, PID: 1028958
conmonrs[1028243]: Sending done because token cancelled
conmonrs[1028243]: Sending done because token cancelled
conmonrs[1028243]: deregistering event source from poller
conmonrs[1028243]: Loop cancelled
conmonrs[1028243]: deregistering event source from poller
conmonrs[1028243]: Exiting because token cancelled
conmonrs[1028243]: deregistering event source from poller
conmonrs[1028243]: Done watching for ooms
conmonrs[1028243]: Write to exit paths:
conmonrs[1028243]: Sending exit struct to channel: ExitChannelData { exit_code: 0, oomed: false, timed_out: false }
conmonrs[1028243]: Task done
conmonrs[1028243]: deregistering event source from poller
conmonrs[1028243]: registering event source with poller: token=Token(83886082), interests=READABLE | WRITABLE
conmonrs[1028243]: Got exec sync container request with timeout 60
conmonrs[1028243]: Creating new IO streams
conmonrs[1028243]: Exec args "--root=/run/runc exec -d --pid-file=/run/containers/storage/overlay-containers/f5a4cb30d7219327b1fb12d111a14137ba65b5ebbfaaa50e4ba980070c4ad7bf/userdata/exec_synczA8mDmspid 1d9bbf813ae2ed8bd89e64f2160f973e7bfecd1311876c4c8d0f5af1eeb471b7 sh -c netstat -na | grep LISTEN | grep -v 8080 | grep 80"
conmonrs[1028243]: registering event source with poller: token=Token(16777225), interests=READABLE | WRITABLE
conmonrs[1028243]: registering event source with poller: token=Token(16777227), interests=READABLE | WRITABLE
conmonrs[1028243]: registering event source with poller: token=Token(16777226), interests=READABLE | WRITABLE
conmonrs[1028243]: Start reading from IO streams
conmonrs[1028243]: Running task
conmonrs[1028243]: Waiting for exit code
conmonrs[1028243]: Using cgroup path: /proc/1029067/cgroup
conmonrs[1028243]: Setup cgroup v2 handling
conmonrs[1028243]: registering event source with poller: token=Token(0), interests=READABLE
conmonrs[1028243]: Read 81 bytes
conmonrs[1028243]: Exited 0
conmonrs[1028243]: TOKEN: CancellationToken { is_cancelled: false }, PID: 1029067
conmonrs[1028243]: Sending done because token cancelled
conmonrs[1028243]: Loop cancelled
conmonrs[1028243]: Exiting because token cancelled
conmonrs[1028243]: deregistering event source from poller
conmonrs[1028243]: Sending done because token cancelled
conmonrs[1028243]: deregistering event source from poller
conmonrs[1028243]: Done watching for ooms
conmonrs[1028243]: deregistering event source from poller
conmonrs[1028243]: Write to exit paths:
conmonrs[1028243]: Sending exit struct to channel: ExitChannelData { exit_code: 0, oomed: false, timed_out: false }
conmonrs[1028243]: Task done
conmonrs[1028243]: deregistering event source from poller
conmonrs[1028243]: Read 57 bytes
conmonrs[1028243]: Wrote log line of length 72
conmonrs[1028243]: Wrote log line of length 75
conmonrs[1028243]: deregistering event source from poller
conmonrs[1028243]: Stdout read loop failure: send data message: channel closed
conmonrs[1028243]: registering event source with poller: token=Token(16777223), interests=READABLE | WRITABLE
conmonrs[1028243]: Got exec sync container request with timeout 60
conmonrs[1028243]: Creating new IO streams
conmonrs[1028243]: Exec args "--root=/run/runc exec -d --pid-file=/run/containers/storage/overlay-containers/f5a4cb30d7219327b1fb12d111a14137ba65b5ebbfaaa50e4ba980070c4ad7bf/userdata/exec_sync34TJjjHpid 1d9bbf813ae2ed8bd89e64f2160f973e7bfecd1311876c4c8d0f5af1eeb471b7 sh -c netstat -na | grep LISTEN | grep -v 8080 | grep 80"
conmonrs[1028243]: registering event source with poller: token=Token(100663298), interests=READABLE | WRITABLE
conmonrs[1028243]: registering event source with poller: token=Token(33554442), interests=READABLE | WRITABLE
conmonrs[1028243]: registering event source with poller: token=Token(33554441), interests=READABLE | WRITABLE
conmonrs[1028243]: Start reading from IO streams
conmonrs[1028243]: Running task
conmonrs[1028243]: Waiting for exit code
conmonrs[1028243]: Using cgroup path: /proc/1029207/cgroup
conmonrs[1028243]: Setup cgroup v2 handling
conmonrs[1028243]: registering event source with poller: token=Token(0), interests=READABLE
conmonrs[1028243]: Exited 0
conmonrs[1028243]: Read 81 bytes
conmonrs[1028243]: TOKEN: CancellationToken { is_cancelled: false }, PID: 1029207
conmonrs[1028243]: Sending done because token cancelled
conmonrs[1028243]: Sending done because token cancelled
conmonrs[1028243]: deregistering event source from poller
conmonrs[1028243]: Loop cancelled
conmonrs[1028243]: deregistering event source from poller
conmonrs[1028243]: Exiting because token cancelled
conmonrs[1028243]: deregistering event source from poller
conmonrs[1028243]: Done watching for ooms
conmonrs[1028243]: Write to exit paths:
conmonrs[1028243]: Sending exit struct to channel: ExitChannelData { exit_code: 0, oomed: false, timed_out: false }
conmonrs[1028243]: Task done
conmonrs[1028243]: deregistering event source from poller
conmonrs[1028243]: Exited 2
conmonrs[1028243]: TOKEN: CancellationToken { is_cancelled: false }, PID: 1028312
conmonrs[1028243]: Sending done because token cancelled
conmonrs[1028243]: Loop cancelled
conmonrs[1028243]: Exiting because token cancelled
conmonrs[1028243]: deregistering event source from poller
conmonrs[1028243]: Stderr read loop failure: send done message: channel closed
conmonrs[1028243]: deregistering event source from poller
conmonrs[1028243]: Done watching for ooms
conmonrs[1028243]: Write to exit paths: /var/run/crio/exits/a4100c860bee5c960903153702b486bd4ada8c6c6a77374b8edfc1afd55b872d, /var/lib/containers/storage/overlay-containers/a4100c860bee5c960903153702b486bd4ada8c6c6a77374b8edfc1afd55b872d/userdata/exit
conmonrs[1028243]: Creating exit file
conmonrs[1028243]: Creating exit file
conmonrs[1028243]: Writing exit code to file
conmonrs[1028243]: Writing exit code to file
conmonrs[1028243]: Flushing file
conmonrs[1028243]: Flushing file
conmonrs[1028243]: Done writing exit file
conmonrs[1028243]: Done writing exit file
conmonrs[1028243]: Sending exit struct to channel: ExitChannelData { exit_code: 2, oomed: false, timed_out: false }

Anything else we need to know?
Interestingly, when running the workload from the yaml then it works:
apiVersion: v1
kind: Pod
metadata:
  labels:
    name: pfpod
  name: pfpod
spec:
  containers:
  - args:
    - netexec
    image: registry.k8s.io/e2e-test-images/agnhost:2.40
    imagePullPolicy: IfNotPresent
    name: readiness
    readinessProbe:
      exec:
        command:
        - sh
        - -c
        - netstat -na | grep LISTEN | grep -v 8080 | grep 80
      failureThreshold: 3
      initialDelaySeconds: 5
      periodSeconds: 1
      successThreshold: 1
      timeoutSeconds: 60
    resources: {}
    terminationMessagePath: /dev/termination-log
    terminationMessagePolicy: File
    volumeMounts:
    - mountPath: /var/run/secrets/kubernetes.io/serviceaccount
      name: kube-api-access-q2nfb
      readOnly: true
  - args:
    - port-forward-tester
    env:
    - name: BIND_PORT
      value: "80"
    - name: EXPECTED_CLIENT_DATA
      value: abc
    - name: CHUNKS
      value: "10"
    - name: CHUNK_SIZE
      value: "10"
    - name: CHUNK_INTERVAL
      value: "100"
    - name: BIND_ADDRESS
      value: localhost
    image: registry.k8s.io/e2e-test-images/agnhost:2.40
    imagePullPolicy: IfNotPresent
    name: portforwardtester
    resources: {}
    terminationMessagePath: /dev/termination-log
    terminationMessagePolicy: File
    volumeMounts:
    - mountPath: /var/run/secrets/kubernetes.io/serviceaccount
      name: kube-api-access-q2nfb
      readOnly: true
  dnsPolicy: ClusterFirst
  enableServiceLinks: true
  nodeName: <IP_ADDRESS>
  preemptionPolicy: PreemptLowerPriority
  priority: 0
  restartPolicy: Never
  schedulerName: default-scheduler
  securityContext: {}
  serviceAccount: default
  serviceAccountName: default
  terminationGracePeriodSeconds: 30
  tolerations:
  - effect: NoExecute
    key: node.kubernetes.io/not-ready
    operator: Exists
    tolerationSeconds: 300
  - effect: NoExecute
    key: node.kubernetes.io/unreachable
    operator: Exists
    tolerationSeconds: 300
  volumes:
  - name: kube-api-access-q2nfb
    projected:
      defaultMode: 420
      sources:
      - serviceAccountToken:
          expirationSeconds: 3607
          path: token
      - configMap:
          items:
          - key: ca.crt
            path: ca.crt
          name: kube-root-ca.crt
      - downwardAPI:
          items:
          - fieldRef:
              apiVersion: v1
              fieldPath: metadata.namespace
            path: namespace

> k get pods
NAME    READY   STATUS    RESTARTS   AGE
pfpod   2/2     Running   0          24s

Removing the readiness probe in the test makes it pass on my local machine:
https://github.com/kubernetes/kubernetes/blob/02ac8ac4181e179c2f030a9f8b1abef0d9a0b512/test/e2e/kubectl/portforward.go#L77-L87
So it looks like that the the first execsync request kills the portforwardtester container.
conmon-rs version

$ conmonrs --version
version: 0.2.0
tag: none
commit: 51eb41deca7402edb0eb8b75b965283790dbf299
build: 2022-09-15 07:32:52 +00:00
target: x86_64-unknown-linux-gnu
rustc 1.63.0 (4b91a6ea7 2022-08-08)
cargo 1.63.0 (fd9c4297c 2022-07-01)

OS version

# On Linux:
$ cat /etc/os-release
# paste output here
$ uname -a
# paste output here

Additional environment details (AWS, VirtualBox, physical, etc.)

Ultra strange that it works when removing the readiness probe. It seems that the portforwardtester executable gets exited with code 2, whereas I'm wondering what is causing that.


'Stretching' sprites on WebGL Renderer

Expected Behavior
In v4, they look like:

Current Behavior
In the latest v5, they look like:

Notice the stretching to the right and the bottom.
texture and render resolutions are below 1.
Wierdly, if I move the right hand sprites to the left, or move the bottom sprites upwards, they no longer show the 'stretched' aspect.
Environment

pixi.js version: 5.1.0
Browser & Version: Chrome 77 & Firefox 69
OS & Version: Windows 10

Seeing if I can break this down into an example now

Ok, so I can't replicate on a playground, but I can find where things go wrong.
So the resolution of the game is 0.5, and assets loaded in are 0.5. I tracked down what was going wrong at this.resolution = resolution || settings.RESOLUTION in BaseTexture.js. Basically, if I hard coded the || settings.RESOLUTION to 1, everything worked fine. But if I didn't, I'd get the image stretching as above.
So I put a breakpoint for every time resolution was undefined coming into this; and one by one found out where the visuals were broken if the resolution for a certain base texture was not 1. And here is the call stack with where I tracked the issue down to

Sprite Masks. getOptimalTexture is passed a resolution, but it creates the renderTexture with just a minWidth and minHeight, and THEN tries to set a resolution on it. This doesn't seem to work :/ If I hack it to create the render texture with the correct resolution straight away, everything works correctly

And so the lazy setting of the resolution is because
baseTexture.resolution === resolution in setResolution for RenderTexture. Therefore it returns and nothing happens. I'm not sure what it is in there that needs updating that's not occurring otherwise... but this is the end of my 3 hour journey. Hope someone can help from here!

If I do something hacky like
if (!renderTexture)
{
	renderTexture = this.createTexture(minWidth, minHeight, resolution);
}

 renderTexture.filterPoolKey = key;
renderTexture.setResolution(1);
renderTexture.setResolution(resolution);

Then it works. I must create the renderTexture with the correct target resolution to start with (otherwise it gets stretchy stretchy) and I must force the resolution to be something wrong, then back to the right one again (otherwise it gets stretchy stretchy)

More info. Took a screenshot of the 'broken' version renderTexture used, compared to the hacky fix I created.
Broken

Fixed

Looks like my fix could be a valid route. Because in getOptimalTexture, minWidth and minHeight have already been multiplied by the resolution of 0.5 to get the correct required width. But then to have that renderTexture be set at 0.5 resolution again is where things are thrown off. So always create at * 1 (tbf, createTexture  does say realWidth and realHeight), and then set the resolution after to match


Setup project codebase for backend

Create project setup directory structure: Use clean code structure
Setup Logging for monitoring using winston
Setup env using dotenv, setup validation for .env
Use expressjs for routing framework
Setup swagger for documentation

Hello @devvspaces, Are we using typescript for this?

Yes definitely

Okay, Kindly assign this to me.

I might as well take up the last four issues showing it would be easy to others to collaborate as well.

You have been assigned @abdullah137

Hello, can I get this assigned to me?
Also I'd like to ask what language and runtime should I use, javascript/typescript or nodejs/bun?


Error with Philips AC0650/10

Describe the bug
Hy i try to get Philips AC0650/10 to work
Expected behavior
Connect to the Air and shutdown
Logs
[9.8.2024, 13:43:26] [PhilipsAirPlatform] Philips AIR: Purifier Active: 0
[9.8.2024, 13:43:27] [PhilipsAirPlatform] Philips AIR: An error occured during changing purifier state!
[9.8.2024, 13:43:27] [PhilipsAirPlatform] Error: Command failed: python3 /var/lib/homebridge/node_modules/homebridge-philipsair-platform/lib/pyaircontrol.py -H <IP_ADDRESS> -P 5683 set pwr=0
ConnectionRefusedError: [Errno 111] Connection refused
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "/var/lib/homebridge/node_modules/homebridge-philipsair-platform/lib/pyaircontrol.py", line 10, in
sys.exit(main())
^^^^^^
File "/usr/local/lib/python3.12/dist-packages/aioairctrl/cli.py", line 138, in main
asyncio.run(async_main())
File "/usr/lib/python3.12/asyncio/runners.py", line 194, in run
return runner.run(main)
^^^^^^^^^^^^^^^^
File "/usr/lib/python3.12/asyncio/runners.py", line 118, in run
return self._loop.run_until_complete(task)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3.12/asyncio/base_events.py", line 687, in run_until_complete
return future.result()
^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.12/dist-packages/aioairctrl/cli.py", line 97, in async_main
client = await CoAPClient.create(host=args.host, port=args.port)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.12/dist-packages/aioairctrl/coap/client.py", line 38, in create
await obj._init()
File "/usr/local/lib/python3.12/dist-packages/aioairctrl/coap/client.py", line 33, in _init
await self._sync()
File "/usr/local/lib/python3.12/dist-packages/aioairctrl/coap/client.py", line 54, in _sync
response = await self._client_context.request(request).response
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.12/dist-packages/aiocoap/protocol.py", line 832, in _run_outer
await cls._run(app_request, response, weak_observation, protocol, log)
File "/usr/local/lib/python3.12/dist-packages/aiocoap/protocol.py", line 884, in _run
blockresponse = await blockrequest.response
^^^^^^^^^^^^^^^^^^^^^^^^^^^
aiocoap.error.NetworkError: [Errno 111] Connection refused
Exception ignored in: <function RecvmsgSelectorDatagramTransport.del at 0x766aa38154e0>
Traceback (most recent call last):
File "/usr/local/lib/python3.12/dist-packages/aiocoap/util/asyncio/recvmsg.py", line 95, in del
File "/usr/local/lib/python3.12/dist-packages/aiocoap/util/asyncio/recvmsg.py", line 83, in close
File "/usr/lib/python3.12/asyncio/base_events.py", line 795, in call_soon
File "/usr/lib/python3.12/asyncio/base_events.py", line 541, in _check_closed
RuntimeError: Event loop is closed
at genericNodeError (node:internal/errors:984:15)
at wrappedFn (node:internal/errors:538:14)
at ChildProcess.exithandler (node:child_process:422:12)
at ChildProcess.emit (node:events:519:28)
at maybeClose (node:internal/child_process:1105:16)
at Process.ChildProcess._handle.onexit (node:internal/child_process:305:5) {

code: 1,
killed: false,
signal: null,
cmd: 'python3 /var/lib/homebridge/node_modules/homebridge-philipsair-platform/lib/pyaircontrol.py -H <IP_ADDRESS> -P 5683 set pwr=0'
}
Environment

Node.js Version: v20.16.0
Homebridge Version: 1.8.4
Operating System: Ubuntu 24.04

i try now a differnt Protocol
[Air] Unable to load filter info: Error: spawnSync python3 ETIMEDOUT
Also some different error
no one here to help me?


need tarball attribute for custom download url

realized later that removing node tarball url attribute takes away capability of custom download url.
better to set the tarball's url to auto and use default url if not set to auto.

+1
I was using this attribute to prefer a local mirror instead of downloading across the internet.


Object Names and IDs referring to wrong RFC?

I am no expert on RFCs, but I could not find any precise definitions of DNS subdomains or labels in the linked to memo RFC 1123.
https://kubernetes.io/docs/concepts/overview/working-with-objects/names/
https://datatracker.ietf.org/doc/html/rfc1123
After a quick internet search, I found RFC 1035, which contains a formal definition of the name syntax in BNF, on page 8.
https://datatracker.ietf.org/doc/html/rfc1035#page-8
There are subtle differences between the naming rules in the Kubernetes doc and the RFC spec, with RFC 1035 allowing uppercase characters (no significance attached to the case) and disallowing a digit as the first character.
Still, I suggest updating the Kubernetes doc to refer to RFC 1035 instead of RFC 1123.

The long story(discuss): https://github.com/kubernetes/kubernetes/issues/199
And the final identifiers: https://github.com/kubernetes/community/blob/master/contributors/design-proposals/architecture/identifiers.md#definitions


Dropdowns in mobile do not work

The dropdowns in mobile do not work. This is apparent even on your demo/documentation page here: http://bootflat.github.io/documentation.html
Also, the contact email on the website does not work.

A partial solution to the problem:
.selecter {
   cursor: pointer;
}

.selecter .selecter-options {
   cursor: pointer;
}


Time of music

There is a question about the time to generate music, can only generate 10s at most?

Until Mustango 2.0 comes out that is the limit indeed.


Modify file path before sending to WSL Bash

fixes #36897

@captainrdubb looks like something went wrong when you merged, you should cherry pick you commits to a new branch and do another PR.

@Tyriar created new PR as advised

@Tyriar I suggest to close this since we should fix this with the effort to have VS Code behave better on WSL in general (e.g. tasks, debug, ...)


Add fuzzing harness to swift-nio-http2.

Motivation:
Fuzzing is great, we should have a good sensible place to centralise a
harness.
Modifications:

Add a fuzzing harness.

Result:
There's a common way to do fuzzing.

Yeah, I checked .empty in on purpose to make the directory exist. Git doesn't create empty directories on clone.


chore(deps): upgrade dependencies

Upgrades project dependencies. See details in workflow run.

Automatically created by projen via the "upgrade-main" workflow

Codecov Report

Merging #811 (ffd7d2f) into main (95c8632) will not change coverage.
The diff coverage is n/a.

:exclamation: Your organization needs to install the Codecov GitHub app to enable full functionality.
@@           Coverage Diff           @@
##             main     #811   +/-   ##
=======================================
  Coverage   95.69%   95.69%
=======================================
  Files           1        1
  Lines         395      395
  Branches       53       53
=======================================
  Hits          378      378
  Misses         17       17


Incorrect values for Severity drop down

"For each code style setting on this page, you can set the Preference and Severity values using the drop-downs on each line. Severity can be set to None, Suggestion, Warning, or Error."
In VS2019 v16.2 the options available in the Severity drop-down are: Refactoring Only, Suggestion, Warning, Error

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

ID: faebd126-53cd-1a98-bf75-38225933b0f2
Version Independent ID: 4340fcba-6779-68d2-6c51-2ae37123dc26
Content: Code style options and code cleanup - Visual Studio
Content Source: docs/ide/code-styles-and-code-cleanup.md
Product: visual-studio-windows
Technology: vs-ide-general
GitHub Login: @gewarren
Microsoft Alias: gewarren

@mikadumont Should None be changed to Refactoring Only?

@irongut  Thank you for the feedback.
The documentation has been updated.

you should also change other occurences of "None".


Document release process

There are a few mentions in the git log of "triggering" a release. What does that consist of? It seems the standard(ish) npm version && npm publish isn't being used directly (there's no version number in the package.json)
Specifically, I'm looking to create a package to test my fix for #35 in downstream projects. For the time being, I've just run npm run build, manually added a version number into the package.json, and then done npm pack. Seems to work, but I'm guessing there's some more straightforward way you're doing this?
Having the info either in the README or as an npm run command would be helpful.
Thanks!

It's semantic-release - when the release branch passes all the tests the travis ci script publishes a release.

Actually I don't have that set up on this repo, I am just manually releasing. Might set it up here.


REF: Atomic operations not implemented

when calling atomic_fetch_or I get the message: "We apologize but the atomic operation requested for MPI < 3 is not yet implemented"
I am using mpich version: 4.0.2 and the latest OpenCoarrays stable release.

Are there plans to implement atomic operations?
Currently atomic_fetch_add is not updating old.

There are no plans for implementing new features in OpenCoarrays except when those features related to funded projects at Archaeologic Inc. and the project client authorizes use of project funds for this purpose or when Sourcery Institute receives donations of a sufficient amount to cover feature development. However, pull requests that add features or fix bugs are always welcome.

Hi @rouson, appreciate the info although it's disappointing!


setDateRange Resets existing lockDays

Describe the bug
I've also got an attribute passing in an array of locked dates.
Then I'm using a data attribute to pass in two date values then using  setDateRange to highlight these dates.
It seems like the locked dates are being reset or cleared when using setDateRange.
Im not sure if I'm using this incorrectly and there is a proper way of using these two options together.
To Reproduce
Steps to reproduce the behavior:

Create new picker instance with lockedDays option
Use .setDateRange() on picker

Expected behavior
Have the setDatesRange select and leave the existing lockedDates in place.
jsfiddle.net / codepen.io / etc
https://jsfiddle.net/5yzc7aex/1/

hello,
in lite picker if i have selected and date range on page reload it is getting reset.
how to keep the selected value on page load . Can you please help with this


Swagger definition for floats

Isn't the proper way to define floats as:
    type: number
    format: float

rather than:
    type: float

in the swagger docs?
I get validation errors on the generation swagger api in my tests.

Yes, that's correct.


Adding ability to seperate latest from prerelease when build reference docs

At the moment workbox has some special case handling for building next and prerelease tags, this will bring everything into being a bit more consistent.

:+1:

Whoops!
There were 1 warnings that will prevent this PR from being merged. Please take a look, and either fix, or provide a justification for why they can't be fixed.
WARNINGS
gulp-tasks/workbox/workbox-reference-docs-v3.js - Unable to read file, was it deleted?


Added Contributing.md file

Fixes issue #12

Good Job!

Thanks👍
On Aug 25, 2017 8:37 PM, "Lakindu Gunasekara"<EMAIL_ADDRESS>wrote:

Good Job!
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/99xt/earnshark-sdk-dot-net/pull/22#issuecomment-324948325,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AXHXMcxTobVYtRra8m9sRVr0WpEG2iAtks5sbuM2gaJpZM4PBw3K
.


feat(v2): DR volume

Which issue(s) this PR fixes:

Issue longhorn/longhorn#6613
What this PR does / why we need it:
Implement incremental restore.
Special notes for your reviewer:
None
Additional documentation or context
None

I am thinking if we can improve the restore flow for SPDK volumes.
In the beginning, unlike v1 volumes, we ask the engine to get involved during restoration. But later on, the engine still asks each replica to fetch data from the backups separately, which is quite inefficient. (While v1 volumes have to do replica-level restoration since their engines know little about backup & restore.) Would we directly start the whole engine with all available replicas? Then the data can be directly written into the frontend

But later on, the engine still asks each replica to fetch data from the backups separately

@shuo-wu  Could you describe what you mean by separately?


⚠ Bofrost.es has degraded performance

In e92d0ae, Bofrost.es (https://www.bofrost.es) experienced degraded performance:

HTTP code: 200
Response time: 3067 ms

Resolved: Bofrost.es performance has improved in d82a885 after 6 minutes.


Support using transcripts to generate tests

Problem
A convenient way to generate a test is to generate a transcript using the emulator and then turn that transcript into a test script.  The issue is that randomness in bots makes it impossible to replay a transcript.  In order to fix this, the SDK has:

Defined middle ware in Adaptive.Testing to pick up a SetTestOptions custom event and copy the payload into conversation.testOptions.  We made the payload open ended.
Defined randomSeed to seed a random number generator or randomValue to return a constant value from all calls to random and adjusted all users of random to make use of that.
Defined a bf plugin that converts a transcript into a test script that supports the history and mocking.
What is missing is a way to emit SetTestOptions in the emulator.  We need to emit SetTestOptions before the conversationUpdate event with the same conversation id in order to set the test options before the transcript starts.  While this is a specific ask, it is also related to #2174 which is the general requirement to emit any custom event.

Solution
For this specific event it could be a an additional drop down that allows restarting a conversation with test options.  Ideally randomSeed/randomValue would be explicit together with open ended values.  This could also be a framework for the more general requirements of #2174 where you can send a custom event with/without conversationUpdate.
[enhancement]

P0:

[ ] Add UI to "Open bot dialog" to allow user to additionally specify values for randomSeed & randomValue properties
[ ] Before conversation updates are sent to a conversation, send a custom event activity with the name SetTestOptions with an eventValue property containing the randomSeed & randomValue properties if the above properties were set

P1:

[ ] Implement ability to send custom activity payloads: #2174

P0 requirements have been met in #2209. Expect to see these changes in tonight's nightly build 👍