timeout reached while waiting for clients response

I'm getting a lot of errors when calling
io.of("/").adapter.clients([roomId], function (err, clientSockets) {
error:
timeout reached while waiting for clients response
Is this a result of roomId not existing or should I be checking some other thing?
Thanks!

Thanks for the answer, if this is not the case then I will need to debug and try to find a reason.
I'm using the default timeout which is 1000ms if I read docs properly. Since I got this error while running my unit/bdd tests on localhost I'm afraid to increase the timeouts since it will explode on production where we have dozen thousand sockets opened.

I've tried with longer timeouts and it seems to work. Now I need to find why it takes more than 1000ms :)

After playing around with my code, I only get this type of error on remoteJoin() when socketId is not present. This I assume is ok?
If it is, may I suggest editing readme to define what kind of error should we expect as
if (err) { /* unknown id */ }

What timeout value are you using? I've tried 3 seconds, and still hit this error randomly. Strange thing is, it doesn't seem to happen until our server has been sitting idle for a little while. Is the connection to redis just timing out perhaps?

@shoerob I am also using 3 seconds on production now and getting tons of this kind of errors - I dont think this plays any important role here. App is working totally normally otherwise. Conditions to reproduce the error is when socketId is not present anymore.

Is there any error thrown? Could you please test with debug enabled (DEBUG=socket.io-redis)?

Error: timeout reached while waiting for clients response
    at Timeout._onTimeout (/var/www/stranger.se/node_modules/socket.io-redis/index.js:422:48)
    at ontimeout (timers.js:365:14)
    at tryOnTimeout (timers.js:237:5)
    at Timer.listOnTimeout (timers.js:207:5)

Got the same issue.
Although the timeout happens on any remote join, the socket was actually added to the room and messages emitted to the room reach all clients.

Which method is of concern here? .clients or .remoteJoin?
.clients method timeout may be explained since the method may return a lot of socket ids (in that case the requestsTimeout may help), but .remoteJoin method only waits for only one acknowledgement, so..
Note: .clients might be implemented differently, with socket ids stored in Redis sets, but then we need to keep the sets in sync when a node fails.

I'm also seeing these errors all of a sudden:
/api/v1.1/channels/private/open: Error ==> {"message":"timeout reached while waiting for clients response","stack":"Error: timeout reached while waiting for clients response\n    at Timeout.<anonymous> (/app/node_modules/socket.io-redis/index.js:457:48)\n    at Timeout._onTimeout (/app/node_modules/async-listener/glue.js:188:31)\n    at ontimeout (timers.js:386:14)\n    at tryOnTimeout (timers.js:250:5)\n    at Timer.listOnTimeout (timers.js:214:5)"}

This happens on both remoteJoin and remoteLeave. We have been running on v5.1.0 for a while but I'm seeing these errors only for a few days.

+1 since I updated to 5.1 I get those errors locally (not sure yet if they happen in production too)

I started seeing this (on clients and customRequest) after switching to yarn, but only on Heroku (locally it works just fine). Literally just doing yarn install and pushing yarn.lock (which triggers Heroku to use yarn instead of npm) causes this to happen for me. As far as I can tell, no relevant package versions have changed.

I was able to fix this in my project. Here is what I was using before to connect the adapter:
  if(ENV == 'production') {
    let redisPassword = redisURL.auth.split(':')[1];
    console.log(`redis host: ${redisHost}, port: ${redisPort}, password: ${redisPassword}`);

    let pub = redis.createClient(redisPort, redisHost, {
      no_ready_check: true,
      return_buffers: true
    });

    let sub = redis.createClient(redisPort, redisHost, {
      no_ready_check: true,
      return_buffers: true
    });

    pub.auth(redisPassword);
    sub.auth(redisPassword);

    io.adapter(ioredis({
      pubClient: pub,
      subClient: sub,
      host: redisHost,
      port: redisPort,
      requestsTimeout: 3000,
      key: 'chat-socket'
    }));
  } else {
    io.adapter(ioredis({
      host: redisHost,
      port: redisPort,
      key: 'chat-socket',
    }));
  }

This was written before I took over the project, so I can't say why it's using 2 clients for pub and sub, but it explains why it was working locally but not in production mode. Changing that to the following fixed it:
  io.adapter(ioredis(REDIS_URL, {
    requestsTimeout: 3000,
    key: 'chat-socket'
  }));

Why this started to fail when we switched to yarn, I have no idea.

I got the same error all the time (regardless of the timeout chosen) but I fixed it by upgrading my node-redis version from 2.4.0 to 2.7.1, maybe this helps someone...

I get something similar? I increased the timeout to 5000ms and it still happens.
Error: timeout reached while waiting for remoteDisconnect response
This has also happened to me on remote join.

@johnnyvf24 that may happen if the socket is not found, since no other node acknowledge the disconnect (or the join). Is that your case?

I'm not sure at the moment, although that is possibly the issue.

Hi. I have similar problem when use ioredis cluster, if i use just one redis node, all work good.

@Natashkinsasha Are you using an AWS ElastiCache? In this case you could try the following code:
 var ioredis = require("ioredis");   pubClient = new ioredis.createClient(options);   subClient = new ioredis.createClient(options);   var adapter = require('socket.io-redis');   io.adapter(adapter({ pubClient: cluster, subClient: cluster }));
instead of using "new ioredis.Cluster()", that worked for me.
Just be careful if you use redlock as well, for redlock you want to use
lockClient = new ioredis.Cluster([options]);
but not for socket.io-redis.
Source: https://github.com/luin/ioredis/issues/432 (well, and the code above worked for me at least)

I got the same error when I changed the pool to minergate.

hi any solution for this ?

still an issue

The current behaviour for clients method:

(requester) get the current number of subscribers N on the socket.io-request#/# channel with numsub
(requester) publish the request on the socket.io-request#/# channel
(other nodes) receive the request, and publish the response on the socket.io-response#/# channel
(requester) wait for N responses or timeout

What could cause timeout reached while waiting for clients response:

the numsub is incorrect (which is what happen with a Redis cluster, https://github.com/socketio/socket.io-redis/issues/267)
a node miss a request
the requester miss a response

I'm open to suggestions for how to fix that issue.

Hi, I found a possible solution for this one:
Turns out if the client was unsubscribed (or leave) incorrectly, server-side socket prints out an callback error from socket.leave(callback).
The only thing you need to do is try-catch this event. E.g.:
socket.on('unsubscribe', (room) => {
try {
socket.leave('room');
} catch (ex) {
//handle exceptions here
}
});

@darrachequesne my situation:
I use socket.io-radis with redis cluster.
I know that there are 3 connections in the room.
Callback of clients method return:

err  Error: timeout reached while waiting for clients response
clients as Array of all 3/3 connections in the room

I encounter this issue now and then by using the Redis cluster. I have to turn to self-made function to deal with number of clients in a room. socket.io-redis makes my life easier at the beginning, however, it may frustrate you when you want to show off someone about how awesome it is.

I can confirm that using the pub/sub mechanism doesn't work, or at least not for me. The clients function timeouts every time, moreover broadcasted messages are not sent to other IO instances.
This version works for me:
    io.adapter(adapter({
        host,
        port,
        requestsTimeout: 5000
    }));
    io.of(`/chat`).on(`connection`, (socket) => {
        socket.on(`sentChatMessage`, (message) => {
            io.of(`/chat`).adapter.clients((clients) => {
                console.log(clients);
            });
            io.of(`/chat`).emit(`gotChatMessage`, message);
        });
    });

I've started two separate IO instances running on different ports and sent a single chat message. Here's the redis monitor result:
1539114441.209910 [0 <IP_ADDRESS>:44666] "info"
1539114441.210036 [0 <IP_ADDRESS>:44668] "info"
1539114441.233809 [0 <IP_ADDRESS>:44668] "psubscribe" "socket.io#/#*"
1539114441.233828 [0 <IP_ADDRESS>:44668] "subscribe" "socket.io-request#/#" "socket.io-response#/#"
1539114441.233844 [0 <IP_ADDRESS>:44668] "psubscribe" "socket.io#/chat#*"
1539114441.233892 [0 <IP_ADDRESS>:44668] "subscribe" "socket.io-request#/chat#" "socket.io-response#/chat#"
1539114445.708680 [0 <IP_ADDRESS>:44698] "info"
1539114445.708785 [0 <IP_ADDRESS>:44700] "info"
1539114445.722540 [0 <IP_ADDRESS>:44700] "psubscribe" "socket.io#/#*"
1539114445.722706 [0 <IP_ADDRESS>:44700] "subscribe" "socket.io-request#/#" "socket.io-response#/#"
1539114445.722828 [0 <IP_ADDRESS>:44700] "psubscribe" "socket.io#/chat#*"
1539114445.722923 [0 <IP_ADDRESS>:44700] "subscribe" "socket.io-request#/chat#" "socket.io-response#/chat#"
1539113918.960798 [0 <IP_ADDRESS>:43742] "publish" "socket.io#/chat#" "\x93\xa6qsEhIu\x83\xa4type\x02\xa4data\x92\xaegotChatMessage\x82\xa6author\xb1ME\xa7message\xa12\xa3nsp\xa5/chat\x82\xa5rooms\x90\xa5flags\x80"
1539113918.961847 [0 <IP_ADDRESS>:43742] "publish" "socket.io-request#/chat#" "{\"requestid\":\"jAd27E\",\"type\":0,\"rooms\":[]}"
1539113918.963697 [0 <IP_ADDRESS>:43696] "publish" "socket.io-response#/chat#" "{\"requestid\":\"jAd27E\",\"clients\":[\"/chat#PaFOvuI7IsFBn3PLAAAA\"]}"
1539113918.964631 [0 <IP_ADDRESS>:43742] "publish" "socket.io-response#/chat#" "{\"requestid\":\"jAd27E\",\"clients\":[\"/chat#30zsaRSserVJ65guAAAA\"]}"

This version doesn't work for me:
    let pubClient = redis(config.redis.port, config.redis.host, {
        auth_pass: config.redis.password
    });
    let subClient = redis(config.redis.port, config.redis.host, {
        auth_pass: config.redis.password,
        return_buffers: true

    });
    io.adapter(adapter({
        pubClient,
        subClient
    }));
    // the rest is the same

Redis monitor for the same actions as before but with the pub/sub code version:
1539114162.413053 [0 <IP_ADDRESS>:44198] "info"
1539114162.413214 [0 <IP_ADDRESS>:44200] "info"
1539114162.426774 [0 <IP_ADDRESS>:44200] "psubscribe" "socket.io#/#*"
1539114162.426868 [0 <IP_ADDRESS>:44200] "subscribe" "socket.io-request#/#" "socket.io-response#/#"
1539114162.427006 [0 <IP_ADDRESS>:44200] "psubscribe" "socket.io#/chat#*"
1539114162.427043 [0 <IP_ADDRESS>:44200] "subscribe" "socket.io-request#/chat#" "socket.io-response#/chat#"
1539114171.823446 [0 <IP_ADDRESS>:44240] "info"
1539114171.823575 [0 <IP_ADDRESS>:44242] "info"
1539114171.836830 [0 <IP_ADDRESS>:44242] "psubscribe" "socket.io#/#*"
1539114171.836966 [0 <IP_ADDRESS>:44242] "subscribe" "socket.io-request#/#" "socket.io-response#/#"
1539114171.837117 [0 <IP_ADDRESS>:44242] "psubscribe" "socket.io#/chat#*"
1539114171.837192 [0 <IP_ADDRESS>:44242] "subscribe" "socket.io-request#/chat#" "socket.io-response#/chat#"
1539114201.319833 [0 <IP_ADDRESS>:44198] "pubsub" "numsub" "socket.io-request#/chat#"
1539114201.320606 [0 <IP_ADDRESS>:44198] "publish" "socket.io#/chat#" "\x93\xa6ht3k48\x83\xa4type\x02\xa4data\x92\xaegotChatMessage\x82\xa6author\xb1ME\xa7message\xa12\xa3nsp\xa5/chat\x82\xa5rooms\x90\xa5flags\x80"
1539114201.321301 [0 <IP_ADDRESS>:44198] "publish" "socket.io-request#/chat#" "{\"requestid\":\"dOlv4a\",\"type\":0,\"rooms\":[]}"

I've checked the first possible cause listed by darrachequesne - in the clients function, the numsub variable is a correct integer at the point of creating a request and publishing it to the sub client.

I have the same issue - no load on CPU but still timeout on clients call. Maybe it could be connected with #295.

mark

11111

I have this issue as well.. is there an update on this? i'd really not prefer to write a custom function to manage sockets in a room. This works fine on single instance redis, only an issue for me when using cluster.

Is there any update for this issue?
It still occurs using cluster.
Only work around I've thought is manually save rooms to redis.

I have been investigating the error "Timeout reached ..." and as mentioned by @darrachequesne it seems to come from an error with numsub (issue  #267).
During my tests on the function "allRooms" to get the list of all rooms across every node, I noticed 3 types of response :

An array with all the rooms across the nodes.
An empty array.
A timeout error.

I used the following configuration:

A redis-cluster of 3 masters (redis-1,redis-2,redis-3).
3 clients (nodejs servers).
1 socket joining a room named "room1" at the connection.

By monitoring the 3 redis I noted the following subscriptions :

0 clients subscribed to redis-1
1 clients subscribed to redis-2
2 clients subscribed to redis-3

As mentioned in the issue #267 by @SunGg12138, "pubsub numsub channel" it returns only the results pertaining to the server you're directly connected to.
So in my case:
When "pubsub numsub channel" is received by the redis-1 it systematically returns the "Timeout error".
When "pubsub numsub channel" is received by the redis-2 it only returns the rooms of one of the three nodes ( it is not always the same node).
When "pubsub numsub channel" is received by the redis-3 it returns the rooms of two of the three nodes ( it is not always the same nodes).
This could explain the error of the empty array ( only the nodes without rooms are returned). As the response with the array with all the rooms ( the nodes with no rooms are not returned which does not affect the expected result).
I then restart my servers to have another configuration:

3 clients subscribed to redis-1
0 clients subscribed to redis-2
0 clients subscribed to redis-3

In this configuration I had only two types of response:

An array with all the rooms across the nodes.
A timeout error.

I restart my servers again to have another configuration:

1 clients subscribed to redis-1
1 clients subscribed to redis-2
1 clients subscribed to redis-3

In this configuration I had only two types of response:

An array with all the rooms across the nodes.
An empty array.

Those results seems to confirm that the problem comes from numsub.
Finally, I manually set the value of numsub to 3 (in the source code) which corresponds to the number of clients. And I only had the good responses : An array with all the rooms across the nodes.
I imagine that solving the issue #267 will solve this one too.

Hello. Any progress ?

Any progress. We're also facing the same issue.

fixed just by adding a requestsTimeout
this.io.adapter(redisAdapter({
      host: process.env.REDIS_HOST,
      port: process.env.REDIS_PORT,
      requestsTimeout: 5000
    }))

Was getting Error: timeout reached while waiting for remoteLeave response. Figured out that the issue was in my implementation where I was calling remoteLeave in an async fashion. By the time remoteLeave was invoked, the socketId was not existing on the socket server instance anymore as it already disconnected.
export function remoteLeave(socketId: string, roomId: RoomIdentifier): Promise<void> {
  return new Promise((resolve, reject) => {
    // socketId does not exist on the io as it already disconnected
    getSocketRedisAdapter().remoteLeave(socketId, roomId, (error: any) => {
      ...
    });
  });
}

mark

I think this used to work and now it's broken in my recently updated project. currently using:
<EMAIL_ADDRESS>&<EMAIL_ADDRESS>

getting tons of Error: timeout reached while waiting for remoteLeave response, so goes to remoteDisconnect, using 5.2

Was getting Error: timeout reached while waiting for remoteLeave response. Figured out that the issue was in my implementation where I was calling remoteLeave in an async fashion. By the time remoteLeave was invoked, the socketId was not existing on the socket server instance anymore as it already disconnected.
export function remoteLeave(socketId: string, roomId: RoomIdentifier): Promise<void> {
  return new Promise((resolve, reject) => {
    // socketId does not exist on the io as it already disconnected
    getSocketRedisAdapter().remoteLeave(socketId, roomId, (error: any) => {
      ...
    });
  });
}

How did you solve the issue? Thanks

@zwjohn I solved my issue by implementing the fix from @laurentP22
source

@syd619 Thanks for the info, can you provide details what specifically you implemented from his changes? Or just use his index.js to replace the official version?

@syd619 Thanks for the info, can you provide details what specifically you implemented from his changes? Or just use his index.js to replace the official version?

I uninstalled socket.io-redis and created a custom local module with the source on the link I mentioned in my previous comment :)

@syd619 Thanks, I will try it out

The problem in my case was related that none of the servers subscribed to events.
This resulted in getNumSub === 0 which means that it shouldn't wait for responses at all (cause no one is susbscribed and no one will reply).

The problem in my case was related that none of the servers subscribed to events.
This resulted in getNumSub === 0 which means that it shouldn't wait for responses at all (cause no one is susbscribed and no one will reply).

ERROR 19120 [-/ip/-/5004ms GET /socket.io/?room=roonid&EIO=3&transport=websocket] nodejs.Error: timeout reached while waiting for remoteDisconnect response

I have the same problem and after 7 days of research, I still haven't found any solution.

我有同样的问题，经过 7 天的研究，我仍然没有找到任何解决方案。

how to resolve this?


Unauthorized error in console for pending assessment

Describe the bug
If you start an assessment but don't finish it and then go back to the exercise's overview in the tutor dashboard, there is an "Unauthorized" error on console (see console output below). The error occurs with modeling, text and file upload exercises.
I could not detect any effect to the expected functionality caused by that error.
To Reproduce

Participate (submit) in e.g. https://artemis.ase.in.tum.de/#/overview/10/exercises/626 (the error also occurs with file upload exercises)
Go to the tutor dashboard for that exercise
Start the assessment for that submission (do not finish it)
Go back to the tutor dashboard (overview) for that exercise
Have a look at the console

Expected behavior
No error in console.
Environment

 - OS: Linux (Fedora 30)
 - Browser: Chromium
 - Version: 77.0.3865.90 (Entwickler-Build) Fedora Project (64-Bit)

Output in Web Console

{
  "type": "https://www.jhipster.tech/problem/problem-with-message",
  "title": "Unauthorized",
  "status": 401,
  "detail": "Vollständige Authentifikation wird benötigt um auf diese Resource zuzugreifen",
  "path": "/api/exercises/626/text-submission-without-assessment",
  "message": "error.http.401"
}

As this is quite an old issue, I think we have already fixed it


Updated deps, fixed aiohttp integration.

:warning: Please install the  to ensure uploads and comments are reliably processed by Codecov.
Codecov Report
All modified and coverable lines are covered by tests :white_check_mark:

Project coverage is 100.00%. Comparing base (dc80597) to head (b93a1df).

:exclamation: Your organization needs to install the Codecov GitHub app to enable full functionality.
Additional details and impacted files
@@            Coverage Diff            @@
##            master       #26   +/-   ##
=========================================
  Coverage   100.00%   100.00%
=========================================
  Files            7         7
  Lines          362       365    +3
=========================================
+ Hits           362       365    +3

Flag
Coverage Δ

?

Flags with carried forward coverage won't be shown. Click here to find out more.

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.


Traceback (most recent call last):
Traceback (most recent call last):
  File "/nix/store/5l1ps1iaml9aivqsd2796cryadpy74py-ch8zsbs2vlfqdr6rpz85y455sfmz6vyf-source/mach_nix/generate.py", line 63, in main
    expr = generator.generate(reqs)
  File "/nix/store/5l1ps1iaml9aivqsd2796cryadpy74py-ch8zsbs2vlfqdr6rpz85y455sfmz6vyf-source/mach_nix/generators/overides_generator.py", line 34, in generate
    pkgs = self.resolver.resolve(reqs)
  File "/nix/store/5l1ps1iaml9aivqsd2796cryadpy74py-ch8zsbs2vlfqdr6rpz85y455sfmz6vyf-source/mach_nix/resolver/resolvelib_resolver.py", line 63, in resolve
    result = resolvelib.Resolver(Provider(self.nixpkgs, self.deps_provider), reporter).resolve(reqs, max_rounds=1000)
  File "/nix/store/njdwizism6z27b18dcngxlm4pw9aa07f-python3-3.7.8-env/lib/python3.7/site-packages/resolvelib/resolvers.py", line 413, in resolve
    state = resolution.resolve(requirements, max_rounds=max_rounds)
  File "/nix/store/njdwizism6z27b18dcngxlm4pw9aa07f-python3-3.7.8-env/lib/python3.7/site-packages/resolvelib/resolvers.py", line 319, in resolve
    raise ResolutionImpossible(causes)
resolvelib.resolvers.ResolutionImpossible: [RequirementInformation(requirement=Requirement.parse('dask==2.22.0'), parent=None), RequirementInformation(requirement=Requirement.parse('dask[complete]>=0.18.0'), parent=Candidate(name='datashader', ver=<Version('0.10.0')>, extras=()))]

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/nix/store/5l1ps1iaml9aivqsd2796cryadpy74py-ch8zsbs2vlfqdr6rpz85y455sfmz6vyf-source/mach_nix/generate.py", line 94, in <module>
    main()
  File "/nix/store/5l1ps1iaml9aivqsd2796cryadpy74py-ch8zsbs2vlfqdr6rpz85y455sfmz6vyf-source/mach_nix/generate.py", line 65, in main
    handle_resolution_impossible(e, requirements, providers_json, py_ver_str)
  File "/nix/store/5l1ps1iaml9aivqsd2796cryadpy74py-ch8zsbs2vlfqdr6rpz85y455sfmz6vyf-source/mach_nix/generate.py", line 79, in handle_resolution_impossible
    f" - parent: {ri.parent.name}{ri.parent.extras if ri.parent.extras else None}:{ri.parent.version}"
AttributeError: 'Candidate' object has no attribute 'version'
AttributeError: 'Candidate' object has no attribute 'version'
builder for '/nix/store/5ssy5glf78kh973w5bz5ps82q2kri50n-mach_nix_file.drv' failed with exit code 1
while evaluating the attribute 'passAsFile' of the derivation 'python3-3.8.5-env' at /nix/store/pz3w468p7ig3zj8fy5xsbrjn95dwiiwj-nixpkgs/pkgs/build-support/trivial-builders.nix:7:7:
while evaluating 'callPackageWith' at /nix/store/pz3w468p7ig3zj8fy5xsbrjn95dwiiwj-nixpkgs/lib/customisation.nix:117:35, called from /nix/store/pz3w468p7ig3zj8fy5xsbrjn95dwiiwj-nixpkgs/pkgs/development/interpreters/python/default.nix:20:24:
while evaluating 'makeOverridable' at /nix/store/pz3w468p7ig3zj8fy5xsbrjn95dwiiwj-nixpkgs/lib/customisation.nix:67:24, called from /nix/store/pz3w468p7ig3zj8fy5xsbrjn95dwiiwj-nixpkgs/lib/customisation.nix:121:8:
while evaluating anonymous function at /nix/store/pz3w468p7ig3zj8fy5xsbrjn95dwiiwj-nixpkgs/pkgs/top-level/python-packages.nix:9:1, called from /nix/store/pz3w468p7ig3zj8fy5xsbrjn95dwiiwj-nixpkgs/lib/customisation.nix:69:16:
while evaluating 'fix'' at /nix/store/pz3w468p7ig3zj8fy5xsbrjn95dwiiwj-nixpkgs/lib/fixed-points.nix:25:10, called from /nix/store/pz3w468p7ig3zj8fy5xsbrjn95dwiiwj-nixpkgs/pkgs/top-level/python-packages.nix:7738:4:
while evaluating 'extends' at /nix/store/pz3w468p7ig3zj8fy5xsbrjn95dwiiwj-nixpkgs/lib/fixed-points.nix:69:24, called from /nix/store/pz3w468p7ig3zj8fy5xsbrjn95dwiiwj-nixpkgs/lib/fixed-points.nix:25:21:
while evaluating 'composeExtensions' at /nix/store/pz3w468p7ig3zj8fy5xsbrjn95dwiiwj-nixpkgs/lib/fixed-points.nix:75:17, called from /nix/store/pz3w468p7ig3zj8fy5xsbrjn95dwiiwj-nixpkgs/lib/fixed-points.nix:69:67:
while evaluating the attribute 'overrides' at /nix/store/ch8zsbs2vlfqdr6rpz85y455sfmz6vyf-source/default.nix:37:7:

error: --- Error --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- nix-shell
build of '/nix/store/5ssy5glf78kh973w5bz5ps82q2kri50n-mach_nix_file.drv' failed

Thanks for that!
You where hitting a bug in printing information about the resolution error. It's fixed now in the dev branch.
Your expression calls mach-nix.buildPythonPackage to build deeplabcut from github but the requirements you put in are not from deeplabcat. Therefore I assume you just copied the expression head from somewhere else and you actually want to build a python environment, not a python package.
I fixed that and tried to run your expression through mach-nix
The error messages I was getting revealed that your requirements contain a lot of conflicts. I guess you used some exporter to retrieve them. (Pip might accept this since pip just ignores conflicts)
I fixed those conflicts one by one, to see if we're hitting any other bugs and found that mach-nix cannot deal witch python packages which have a dot in their name. I fixed this also on the dev branch. Now your environment is working
Fixing the conflicts requires the following changes yo your requirements:
<     dask==2.22.0
---
>     dask[complete]==2.22.0
78c78
<     llvmlite==0.34.0rc1
---
>
103c103
<     osmpythontools==0.2.8
---
>     osmpythontools
127c127
<     pyct==0.4.6
---
>     pyct[cmd]==0.4.6
149c149
<     rasterio==1.1.5
---
>     rasterio[s3]==1.1.5

The resulting working nix expression is:
(also see the provider config at the bottom)
let
  mach-nix = import (builtins.fetchGit {
    url = "https://github.com/DavHau/mach-nix/";
    ref = "dev";
    rev = "371c0ebf7d6629c6893bc140be541452b2bd3129";
  });
in mach-nix.mkPython {
  requirements = ''
    affine==2.3.0
    appdirs==1.4.4
    #appnope==0.1.0; python_version >= "3.3" and sys_platform == "darwin" or platform_system == "Darwin"
    arcgis==1.8.2
    area==1.1.1
    argon2-cffi==20.1.0
    #atomicwrites==1.4.0; sys_platform == "win32"
    attrs==19.3.0
    autoflake==1.3.1
    backcall==0.2.0
    beautifulsoup4==4.9.1
    black==19.10b0
    bleach==3.1.5
    bokeh==2.1.1
    certifi==2020.6.20
    cffi==1.14.1
    chardet==3.0.4
    click==7.1.2
    click-plugins==1.1.1
    cligj==0.5.0
    #colorama==0.4.3; python_version >= "3.3" and sys_platform == "win32" or sys_platform == "win32"
    colorcet==2.0.2
    cryptography==3.0
    cycler==0.10.0
    dask[complete]==2.22.0
    datashader==0.10.0
    datashape==0.5.2
    decorator==4.4.2
    defusedxml==0.6.0
    descartes==1.1.0
    entrypoints==0.3
    feather-format==0.4.1
    fiona==1.8.13.post1
    flake8==3.8.3
    flufl.enum==4.1.1
    geoalchemy2==0.8.4
    geofeather==0.3.0
    geographiclib==1.50
    geojson==2.5.0
    geojsonio==0.0.3
    geolinks==0.2.0
    geopandas==0.8.1
    geopy==2.0.0
    github3.py==1.3.0
    googledrivedownloader==0.4
    greedy==0.1.1
    idna==2.10
    imageio==2.9.0
    importlib-metadata==1.7.0
    ipykernel==5.3.4
    ipython==7.17.0
    ipython-genutils==0.2.0
    ipywidgets==7.5.1
    jedi==0.17.2
    jeepney==0.4.3
    jinja2==2.11.2
    joblib==0.16.0
    json5==0.9.5
    jsonschema==3.2.0
    jupyter-client==6.1.6
    jupyter-core==4.6.3
    jupyterlab==2.2.4
    jupyterlab-server==1.2.0
    jwcrypto==0.7
    keyring==21.3.0
    kiwisolver==1.2.0
    lerc==0.1.0
    libpysal==4.3.0
    lidar==0.5.0

    lxml==4.5.2
    markupsafe==1.1.1
    matplotlib==3.3.0
    mccabe==0.6.1
    mercantile==1.1.5
    missingno==0.4.2
    mistune==0.8.4
    momepy==0.3.0
    more-itertools==8.4.0
    multipledispatch==0.6.0
    munch==2.5.0
    mypy==0.782
    mypy-extensions==0.4.3
    nbconvert==5.6.1
    nbformat==5.0.7
    networkx==2.4
    notebook==6.1.1
    ntlm-auth==1.5.0
    numba==0.50.1
    numpy==1.19.1
    oauthlib==3.1.0
    osm-diff-tool==1.1.0
    osmapi==1.2.2
    osmnet==0.1.6
    osmpythontools
    overpass==0.7
    overpy2==0.4.2
    owslib==0.20.0
    packaging==20.4
    pandas==1.1.0
    pandocfilters==1.4.2
    param==1.9.3
    parso==0.7.1
    pathlib==1.0.1
    pathspec==0.8.0
    pexpect==4.8.0
    pickleshare==0.7.5
    pillow==7.2.0
    pluggy==0.13.1
    pooch==1.1.1
    prometheus-client==0.8.0
    prompt-toolkit==3.0.5
    ptyprocess==0.6.0
    py==1.9.0
    pyarrow==1.0.0
    pycodestyle==2.6.0
    #pycparser==2.20; platform_system == "Windows" and python_version != "3.3" or platform_system == "Windows" and python_version != "3.3" and sys_platform == "linux"
    pycsw==2.4.2
    pyct[cmd]==0.4.6
    pydal==20200714.1
    pyflakes==2.2.0
    pygeos==0.7.1
    pygis==0.1.3
    pygments==2.6.1
    #pykerberos==1.2.1; platform_system == "Windows" and sys_platform != "win32"
    pyparsing==2.4.7
    pyproj==2.6.1.post1
    pyrsistent==0.16.0
    pyshp==2.1.0
    pysimplegui==4.28.0
    pytest==5.4.3
    python-dateutil==2.8.1
    pytz==2020.1
    pywavelets==1.1.1
    #pywin32==228; sys_platform == "win32" or platform_system == "Windows"
    #pywin32-ctypes==0.2.0; sys_platform == "win32"
    #pywinpty==0.5.7; os_name == "nt"
    pywps==4.2.7
    pyyaml==5.3.1
    pyzmq==19.0.2
    rasterio[s3]==1.1.5
    rasterstats==0.15.0
    regex==2020.7.14
    requests==2.24.0
    #requests-kerberos==0.12.0; platform_system == "Windows"
    requests-ntlm==1.1.0
    requests-oauthlib==1.3.0
    requests-toolbelt==0.9.1
    richdem==0.3.4
    rio-cogeo==1.1.10
    rsgis==0.0.3
    scikit-image==0.17.2
    scikit-learn==0.23.2
    scipy==1.5.2
    seaborn==0.10.1
    secretstorage==3.1.2
    send2trash==1.5.0
    shapely==1.7.0
    simplejson==3.17.2
    six==1.15.0
    snuggs==1.4.7
    soupsieve==1.9.6
    spatial==0.2.0
    sqlalchemy==1.3.18
    supermercado==0.1.1
    terminado==0.8.3
    testpath==0.4.4
    threadpoolctl==2.1.0
    tifffile==2020.7.24
    toml==0.10.1
    toolz==0.10.0
    tornado==6.0.4
    tqdm==4.48.2
    traitlets==4.3.3
    typed-ast==1.4.1
    typing-extensions==<IP_ADDRESS>
    ujson==3.1.0
    uritemplate==3.0.1
    urllib3==1.25.10
    verde==1.5.0
    wcwidth==0.2.5
    webencodings==0.5.1
    werkzeug==1.0.1
    widgetsnbextension==3.5.1
    #winkerberos==0.7.0; platform_system == "Windows" and sys_platform == "win32" or platform_system == "Windows"
    xarray==0.16.0
    xarray-spatial==0.0.8
    xmltodict==0.12.0
    zipp==3.1.0
  '';

  providers = {
    # Change the provider for osmpythontools to "nixpkgs", because the inherited patches from nixpkgs won't apply.
    osmpythontools = "nixpkgs";
  };
}

How could I debug the changes by myself?
eg. rasterio==1.1.5   >     rasterio[s3]==1.1.5
and to choose the best provider for osmpythontools
it shows:
Multiple nixkgs attributes found for tornado-6.0.4: ['tornado_4', 'tornado']
Picking 'tornado' as base attribute name.

what does it mean?

is it possible to activate a cache for wheel packages?

why is tornado installed as "tornado - 6.0.4 - sdist"
if
providers = {

    _default = "nixpkgs,wheel,sdist";
}

there should be a "python3.7-tornado-6.0.4 | python37Packages.tornado"
why is there no wheel for it?

How could I debug the changes by myself?
eg. rasterio==1.1.5 > rasterio[s3]==1.1.5
and to choose the best provider for osmpythontools

You can either install the rasterio package with s3 or without s3 but you cannot have both variants at the same time, therefore the resolver raises a conflict.
Therefore if your top level requirements contain rasterio==1.1.5 and a conflict appears between rasterio and rasterio[s3], you know that one of your subdependencies must have declared rasterio[s3]. This can either be fixed by adapting your top level dependencies or removing the sub dependency which requires rasterio[s3].

and to choose the best provider for osmpythontools

My train of thought here:

The build of osmpythontools failed.
The build log shows there have been problems with patches.
The provider was sdist ( -> means no wheel available)
Packages from sdist provider inherit patches from nixpkgs. In this case they probably don't fit with the current version of osmpythontools.

Now I can try one of two things:

Remove the patches by using overrides_pre to set patches = []
Change the provider. Since wheel is not available, the only other option is nixpkgs.

Multiple nixkgs attributes found for tornado-6.0.4: ['tornado_4', 'tornado']
Picking 'tornado' as base attribute name.
what does it mean?

For different reasons, like inheriting patches or excluding the chance of collisions, mach-nix must know about all candidates for a package in nixpkgs. Also if you're not using the nixpkgs provider. It will always try to override the candidate which seems most similar (closest version) than the one which is built. If it cannot decide, because the versions are too far apart, it shows this message and just picks one of both. Maybe it's confusing and I should hide it since it doesn't really matter in most cases.

there should be a "python3.7-tornado-6.0.4 | python37Packages.tornado"

Tornado only releases wheels for windows

is it possible to activate a cache for wheel packages?

Why would you want to do that? Wheel packages are very quick to install. If they contain extension modules, they are already in binary format and just need to be patched. There wouldn't be much gain in caching them. Caching sdist packages would be more of a benefit.

From my point of view, it is always good to get those information (so that you are aware of what is happening)


Make notification field optional in GraphQL queries

It is not possible to return null in GraphQL. However instead of returning an array of Notifications, we could return a simple boolean. Returnning true would mean that the operations has been completed.
A query like this :
mutation{
  updateMe(fields:{username:"toto"})
}

would return this:
{
  "data": {
    "updateMe": true
  }
}

What do you think?

Reviewing the code, I can see there is a case where a couple of notification are sent for one mutation:
register. It returns a notification that the user has been created and that an email was sent to confirm his email. Returning only true to that mutation means that we would put all this logic to the client. It could be, as we already decided to put internationalization on the client.

Sounds good :-)


[WIP] [enhancement] Opt the binary search of find partition end in Analytor

What type of PR is this：

[ ] bug
[ ] feature
[x] enhancement
[ ] others

Which issues of this PR fixes ：

Fixes #5829
Problem Summary(Required) ：

In the past, every time a new Chunk was read, the start pos of the binary search was PartitionStart. Currently, it is supported to execute binary search from the last pos, to reduce the compare count.
This is not the main point that affects the calculation performance of the window function. The actual test has no effect on the performance. The main purpose is to release the memory earlier of the PartitionColumn in advance later.

run starrocks_be_unittest

I think the partition boundary could be generated at sort/partition step, and we could eliminate the binary search step?

boundary

Yes, sort can pass some flag to record the boundary


How to handle router events?

I'm trying to add Google Analytics to my site, using react-ga.
I can get an initial page load event to fire, but have not worked out how to track page views - that is route changes.
The method handler fireTracking is never called.
Is this possible? Am I missing some configuration?
class App extends React.Component {
  componentDidMount () {
    GoogleAnalytics.initialize('UA-XXXXXXXX-X', {
      debug: true,
    })
    GoogleAnalytics.pageview('Load Site')
  }
  fireTracking = () => {
    console.info('fire tracking')
    GoogleAnalytics.pageview(window.location.hash)
  }
  render () {
    return (
      <Router onUpdate={this.fireTracking}>
        <ScrollToTop>

            <PageWrapper>

              <Routes />

            </PageWrapper>

        </ScrollToTop>
      </Router>)
  }
}
export default App

Actually, it appears that react-ga does not play nice with server-side rendering.
I tried adding the following in App.js, but still get errors.
if (typeof window === 'undefined') {
  global.window = {}
}
if (typeof document === 'undefined') {
  global.document = { getElementById: () => undefined }
}

How have you implemented GA in nozzle.io?

Try this out: https://developers.google.com/analytics/devguides/collection/gtagjs/single-page-applications

You need to remember that you have to write node safe code.
https://github.com/nozzle/react-static/blob/master/docs/concepts.md#writing-universal-node-safe-code
On Sun, Feb 25, 2018 at 2:15 PM Srikanth Sethumadhavan <
<EMAIL_ADDRESS>wrote:

Try this out:
https://developers.google.com/analytics/devguides/collection/gtagjs/single-page-applications
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/nozzle/react-static/issues/412#issuecomment-368345295,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AFUmCdfEhxThKyLhBC6oecP3F3CR8eAoks5tYc1igaJpZM4SSEIw
.

HI, yes, I did forget to make things node safe on my first attempt. But that has not been an issue since I moved the logic into componentDidMount .
This works fine
   GoogleAnalytics.initialize('UA-XXXXXXXX-X', {
      debug: true,
    })
    GoogleAnalytics.pageview('Load Site')

I see an event in my GA dashboard when the site loads.
But when I change route, this method never gets called.
  fireTracking = () => {
    console.info('fire tracking')
    GoogleAnalytics.pageview(window.location.hash)
  }

I am expecting it to be called by this Router event: onUpdate.

That said I have solved it like this:
class LogPageView extends React.Component {
  constructor () {
    super()
    this.state = {
      initialised: false,
    }
  }
  componentWillMount () {
    this.setState({
      initialised: true,
    })
  }
  render () {
    if (this.state.initialised) {
      GoogleAnalytics.set({ page: window.location.pathname })
      GoogleAnalytics.pageview(window.location.pathname)
    }
    return null
  }
}

class App extends React.Component {
  componentDidMount () {
    GoogleAnalytics.initialize('UA-XXXXXXXX-X', {
      debug: true,
    })
    GoogleAnalytics.pageview('Load Site')
  }
  fireTracking = () => {
    console.info('fire tracking')
    GoogleAnalytics.pageview(window.location.hash)
  }
  render () {
    return (
      <Router onUpdate={this.fireTracking}>
        <ScrollToTop>
          <Route path="/" component={LogPageView} />

            <PageWrapper>

              <Routes />

            </PageWrapper>

        </ScrollToTop>
      </Router>)
  }
}
export default App

Awesome! Looks great.
On Sun, Feb 25, 2018 at 5:43 PM Rich Field<EMAIL_ADDRESS>wrote:

That said I have solved it like this:
class LogPageView extends React.Component {
constructor () {
super()
this.state = {
initialised: false,
}
}
componentWillMount () {
this.setState({
initialised: true,
})
}
render () {
if (this.state.initialised) {
GoogleAnalytics.set({ page: window.location.pathname })
GoogleAnalytics.pageview(window.location.pathname)
}
return null
}
}
class App extends React.Component {
componentDidMount () {
GoogleAnalytics.initialize('UA-XXXXXXXX-X', {
debug: true,
})
GoogleAnalytics.pageview('Load Site')
}
fireTracking = () => {
console.info('fire tracking')
GoogleAnalytics.pageview(
window.location.hash)
}
render () {
return (

)
}
}
export default App
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
https://github.com/nozzle/react-static/issues/412#issuecomment-368361267,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AFUmCazDn1TnhlK342F7zi9oSFxTVEByks5tYf5IgaJpZM4SSEIw
.

FYI I have since implemented an improved solution that uses a HOC.
import React from 'react'
import GoogleAnalytics from 'react-ga'
import gaService from '../services/ga'
import { settings } from '../config'

const withGAPageView = WrappedComponent => {
  const trackPage = page => {
    GoogleAnalytics.set({ page })
    GoogleAnalytics.pageview(page)
  }

  const HOC = props => {
    if (typeof window !== 'undefined') {
      if (!gaService.getInitialised()) {
        gaService.setInitialised()
        GoogleAnalytics.initialize(settings.GOOGLE_ANALYTICS_KEY, { debug: settings.GOOGLE_ANALYTICS_DEBUG })
      }
      if (props.history.location) {
        const page = props.history.location.pathname
        if (settings.GOOGLE_ANALYTICS_ENABLED) {
          trackPage(page)
        }
      }
    }
    return (
      <WrappedComponent {...props} />
    )
  }

  return HOC
}

export default withGAPageView

a service to hold the state
let _gaInitialised = false

function getInitialised () {
  return _gaInitialised
}

function setInitialised () {
  _gaInitialised = true
}

module.exports = {
  getInitialised,
  setInitialised,
}

usage
export default withGAPageView(Home)

or
export default withGAPageView(() => (

Very cool!
On Sun, Apr 1, 2018 at 5:27 PM Rich Field<EMAIL_ADDRESS>wrote:

FYI I have since implemented an improved solution that uses a HOC.
import React from 'react'
import GoogleAnalytics from 'react-ga'
import gaService from '../services/ga'
import { settings } from '../config'
const withGAPageView = WrappedComponent => {
const trackPage = page => {
GoogleAnalytics.set({ page })
GoogleAnalytics.pageview(page)
}
const HOC = props => {
if (typeof window !== 'undefined') {
if (!gaService.getInitialised()) {
gaService.setInitialised()
GoogleAnalytics.initialize(settings.GOOGLE_ANALYTICS_KEY, { debug: settings.GOOGLE_ANALYTICS_DEBUG })
}
if (props.history.location) {
const page = props.history.location.pathname
if (settings.GOOGLE_ANALYTICS_ENABLED) {
trackPage(page)
}
}
}
return (
<WrappedComponent {...props} />
)
}
return HOC
}
export default withGAPageView
a service to hold the state
let _gaInitialised = false
function getInitialised () {
return _gaInitialised
}
function setInitialised () {
_gaInitialised = true
}
module.exports = {
getInitialised,
setInitialised,
}
usage
export default withGAPageView(Home)
or
export default withGAPageView(() => (
—
You are receiving this because you modified the open/close state.
Reply to this email directly, view it on GitHub
https://github.com/nozzle/react-static/issues/412#issuecomment-377824864,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AFUmCTik-g0hdBJVdZ6o8oYCximqm2AHks5tkWJKgaJpZM4SSEIw
.

The react-ga wiki recommends a slightly modified version of the HOC here. Their method is a bit more robust using componentWillReceiveProps to track whenever props.location changes. Clever.


Remove unused globalDepdendecies for typings.json.

Remove unused dependency in typings.json.

chalk is necessary

gulp-util need it

Closing this pull request, my mistake.


Heart rate variability features

Hi. I want to get the time or frequency domain features of hrv with your API. However, in the sleepecg.extract_features function, the data is only available in your API record. The question is, can't use the user's data yet? When using a function, it only displays an error message of AttributeError: 'numpy.int64' object has no attribute 'sleep_stages'.

Could you be more specific? I'm not sure I understand what you are trying to do. Could you provide a small code snippet to show what you tried and what did not work as expected?

I used your code as it is.
sleepecg.extract_features(records, lookback=0, lookforward=30, sleep_stage_duration=30, feature_selection=None, fs_rri_resample=4, min_rri=None, max_rri=None, max_nans=0, n_jobs=1)
So if I ask you a different question, how do you convert user data that is not your API dataset in the form of Iterable[SleepRecord] parameters for characteristic extraction?

I'm still not sure what you are trying to do. Do you want to use sleepecg.extract_feaures() with your own data? Then you should create a SleepRecord object, which contains detected heart beat times. For example:
record = sleepecg.SleepRecord(
    sleep_stage_duration=30,
    recording_start_time=start,
    heartbeat_times=beats / fs,
)

In this example, I'm passing heartbeat_times=beats / fs, where beats is the output of our ECG peak detector (in samples), and dividing that by fs converts the beats to seconds. I'm also passing a recording_start_time and sleep_stage_duration, but these are optional.

Oh, I see. I asked because I didn't know how to handle user data. Then can your API be used only as raw data without qrs detection filtering?

What do you mean by "user data"? ECG recordings? SleepECG handles everything starting with raw ECG time series, including R peak detection, feature extraction, and classification.
I know that this fundamental use case ("How do I use SleepECG with my own ECG data?") is not really represented in our docs, so I will add an example which shows how to do that.

I am sorry that the English composition is not smooth because I used the translation program. The meaning of user data is not your example data set, but directly collected ecg data. So I wonder if your API can be used as a raw signal or you need to use a qrs detection algorithm.

Yes, you can use raw ECG data, but prior to extracting features, you need to detect R peaks. You can do everything with SleepECG, which means you can start with your raw data. I will add an example to show how to do that step by step soon.


Value 'archimate:ValueStream' is not allowed for attribute 'xsi:type'.

Version of Archi

4.7.1
Archi Plug-ins

No
Operating System

Windows
Expected Behaviour

I change an element from any other type (let's say Business Process) to a ValueStream. Then I want to move this element to the Strategy folder (where it belongs).
Actual Behaviour

Model seems to work fine, I am not able to drag ValueStream element to Strategy folder. When I edit the .archimate file in a XML-editor and I move the ValueStream element to the Strategy folder, the model still works fine.
But when I open the model in an XML-Editor that validates the model to the defined namespace xsi, I get a warning. My hunch is the defined namespace is unaware of the xsi:type "ValueStream".
Resolution(s) could be:

update the namespace definition or,
define a new namespace for spec 3.1.

Steps to Reproduce the Behaviour

Create new model
Add ValueStream element
Drag element to default view
Safe model
Open model in Alltova XML-Spy
Validate XML there

Validation Messages:
Warnings
File C:\Users\Phil\Documents\philtest.archimate has warnings.
Value 'archimate:ValueStream' is not allowed for attribute 'xsi:type'.
Warning location: archimate:model / folder / element / @xsi:type
Details
cvc-attribute.5: Value 'archimate:ValueStream' of attribute 'xsi:type' must resolve to a type definition.
cvc-assess-elt.2: Assessment of attribute 'xsi:type' failed.
cvc-assess-elt: Lax assessment of element  failed.
Archimate file
<?xml version="1.0" encoding="UTF-8"?> <archimate:model xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:archimate="http://www.archimatetool.com/archimate" name="philtest" id="id-3ea61e2f9b67476684ead27f32fe0220" version="4.6.0">   <folder name="Strategy" id="id-88c3cfabff2b40a59d89f56273d7b0d4" type="strategy">     <element xsi:type="archimate:ValueStream" name="vstest" id="id-5a97ccc4809649d0881d5ead5e3d0cb0"/>   </folder>   <folder name="Business" id="id-36fba76f46424dd58a2c822a8b2e47d9" type="business"/>   <folder name="Application" id="id-a5a4eb4c7d624095bc860181701e87c0" type="application"/>   <folder name="Technology & Physical" id="id-7e11b5db1b6f46c8a81f818a9e4c062d" type="technology"/>   <folder name="Motivation" id="id-841fd5fe3105458fbdf8ef37e6b4a73a" type="motivation"/>   <folder name="Implementation & Migration" id="id-2aad51e51c214d938be85af1274a4a97" type="implementation_migration"/>   <folder name="Other" id="id-6e410e032dd5423582bff7f10dbe80e9" type="other"/>   <folder name="Relations" id="id-911a26399dd74ee7a7ec16ad0ab1937c" type="relations"/>   <folder name="Views" id="id-14da1f9877a746e4bc7af97b121dc980" type="diagrams">     <element xsi:type="archimate:ArchimateDiagramModel" name="Default View" id="id-f3c633ad61b24d4c87c0139bb6c29bc0">       <child xsi:type="archimate:DiagramObject" id="id-59d9dcdae26540aa9af06041cddb33f8" archimateElement="id-5a97ccc4809649d0881d5ead5e3d0cb0">         <bounds x="120" y="113" width="120" height="55"/>       </child>     </element>   </folder> </archimate:model>

I change an element from any other type (let's say Business Process) to a ValueStream. Then I want to move this element to the Strategy folder (where it belongs).

Changing the type of an element is only possible through jArchi and of course moves it to the right folder.

When I edit the .archimate file in a XML-editor and I move the ValueStream element to the Strategy folder, the model still works fine.

This should never be done (the XML file should never be updated outside Archi for obvious integrity reasons)
So my question is: how did you change the type of the element?

I don't understand the problem here. Why are you trying to validate the XML? If you do that you need the XSD Schema.

If you change the internal contents of an .archimate file it's at your own risk. It might or might not work.
If you are going to validate the xml in an  .archimate file then you need all the XSD Schema files for the *.archimate format and eCore model format for validation.

So I'll close this.

Hi Phil,
The issue is not that I cannot validate the model actually. The issue is that I cannot move a ValueStream element to the Strategy folder. To me it seems that there is a validation rule in Archimate that prevents me to move the element according to the definition of the namespace.
Met vriendelijke groet,

Phil Overbeeke
|
Informatie Analist / Solution Architect
[X]https://www.transfer-solutions.com/
Transfer Solutions
Dokter Reilinghplein 2
4141 DB Leerdam
T
M
E
+31 345 616888 tel:+31345616888
+31 6 12672197tel:+31 6 12672197
phil.overbeeke<EMAIL_ADDRESS>[X]https://dutchitawards.nl/3295/stemmen.html
From: Phil Beauvoir<EMAIL_ADDRESS>Sent: Wednesday, 23 December 2020 17:28
To: archimatetool/archi<EMAIL_ADDRESS>Cc: Phil Overbeeke<EMAIL_ADDRESS>Author<EMAIL_ADDRESS>Subject: Re: [archimatetool/archi] Value 'archimate:ValueStream' is not allowed for attribute 'xsi:type'. (#697)
I don't understand the problem here. Why are you trying to validate the XML? If you do that you need the XSD Schema.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHubhttps://github.com/archimatetool/archi/issues/697#issuecomment-750374205, or unsubscribehttps://github.com/notifications/unsubscribe-auth/ASH34JQGWDVD3YXUND2LP4TSWILBLANCNFSM4VHFU6YA.

The issue is that I cannot move a ValueStream element to the Strategy folder. T

You mean you cannot move a ValueStream element to the Strategy folder after you changed it manually in the XML from another type.
This is a UI constraint in Archi to disallow moving elements in different folders. The simple solution is don't mess with the internal stuff!

@philover

The issue is not that I cannot validate the model actually. The issue is that I cannot move a ValueStream element to the Strategy folder. To me it seems that there is a validation rule in Archimate that prevents me to move the element according to the definition of the namespace.

There is no way in Archi to change the type of an element, thus no way to have a Value Stream element outside the Strategy folder. You said you have no plugin, thus you can't have changed the type of a process.
Again, the only way to do this is through jArchi. So please clarify what you are doing or else there's nothing we can do.

Sorry, but I was flabbergasted by your prompt reaction. I had the impression the archimate file format is open as the archimate modelling itself. I just ran into this warning and had the intention to assist you. Mainly because the warning also occurs on a model created from scratch with the archimatetool. I will look into the capabilities of jArchi. That's all for now. Thanks for your swift response.

The *.archimate file format is for Archi only and so should be considered proprietary. You're thinking of The Open Group's Exchange format (https://www.opengroup.org/open-group-archimate-model-exchange-file-format).
If you are going to validate any XML you have to validate against its XSD schema otherwise you will only see validation warnings and errors. The Open Group's file format has a published schema, whilst Archi's schema is internal as it is generated from the Eclipse modelling framework.


overload the new operator for the model and data classes

This allow to use new se3::Model m and new se3::Data(m). This problem is specific to eigen.

Coverage remained the same at 84.438% when pulling b6caf8c63b44eb00407a212e09671af47b19e585 on MaximilienNaveau:devel into ce79ae5092ebd60d76e34d5e020c4b1b42ae1d07 on stack-of-tasks:devel.

Just a little comment on this PR. This PR is mandatory if you want to allocate a structure with aligned Eigen elements inside.

Solved #165.


About getting results in meters unit

@ranftlr Thank you for the work. I'm trying to apply it with Myriad X VPU.
So I would like to ask whether the unknown scale and shift mentioned in #36 are linear parameters?
For example, in each frame, I can find a linear equation like "P = D * scale + shift" to project the values of depth maps "D" to the physical absolute measurements "P" according to putting a known scale ruler in the view, right ?

Yes, they are linear parameters. When doing alignment, consider that P and D are inverse depth so you need to convert your absolute measurements to inverse depth first.

@ranftlr Thank you for your kind reply !! :)

If I understand correctly ...
P = is in  inverse depth = 1/ physical distance in meters
D= inverse depth = result of the inference. It does not need inverse, the model already predicts the inverse
scale and shift = are estimated with least squares from known points in the image
Can I calibrate "scale and" shift "and use the model in an environment with the same lighting? Or is it necessary to calibrate in each frame?

@rodrigoGA Did you get the correct scale and shift values based on the approach you mentioned?

according to my tests the model is very inaccurate to measure distance (uncalibrated  in each frame ).
It's a shame, because it has very good runtimes and is compatible with tensorflow lite.
According to the internet there are approaches that take into account the previous frame that achieve better results

Oh, To confirm, by uncalibrated do you mean you didn't calculate the scale and shift value? Did you directly use the model predicted values?

Yes, they are linear parameters. When doing alignment, consider that P and D are inverse depth so you need to convert your absolute measurements to inverse depth first.

Hi, sorry to  bother you. I use depth camera D435i , but the depth map is bad. So I want to use MiDaS to improve the quality of the depth map. I write the scrips to align the MiDaS and absolute depth map.
I need to confirm something. The alignment formula is y = kx + b, y means invert absolute depth with meters, x means the prediction of MiDaS, k means scale and b means shift. Am I right?
The align code is:
realsense_depth_array_invert = 1 / realsense_depth_array # invert absolute depth with meters
x = midas_depth_array.copy().flatten() #Midas Depth
y = realsense_depth_array_invert.copy().flatten()  # Realsense invert Depth
A = np.vstack([x, np.ones(len(x))]).T
s, t = np.linalg.lstsq(A, y, rcond=None)[0]
midas_depth_aligned_invert = midas_depth_array * s + t
midas_depth_aligned = 1 / midas_depth_aligned_invert
The midas_depth_aligned is finally absolute depth with meters. Am I right?
If I am right, I find aligned depth have large error. I dont know why, can you help me? Thank you very much!

@rodrigoGA  i think you need to calculate "scale" and "shift" for each image we can not use them for other image because "D" is normalized.

@ranftlr Thank you for the work. I'm trying to apply it with Myriad X VPU. So I would like to ask whether the unknown scale and shift mentioned in #36 are linear parameters? For example, in each frame, I can find a linear equation like "P = D * scale + shift" to project the values of depth maps "D" to the physical absolute measurements "P" according to putting a known scale ruler in the view, right ?

and can we use scale and shift ,same for all image if i have calculated using it two image if not then so for every image i have to calculate the scale and shift so how can it be don?


Connection management

Abstract
The objective is to manage the connections from the OPC UA clients
Pre-requisites
Integrate the S2OPC stack in the plugin
Test data
Rules : rules, errors and logs
R1: check if the client connection parameters are compatibles with server configuration
Acceptance criteria
Given an OPC UA client
When: the connection attempt is made with compliant parameters
Then: the north plugin establish an OPC UA secure channel and session

Q1: is user authentication in the scope of the fledge plugin ?


How to use features

Would love to be able to use the features listed on the site and in the readme, but where is the how to use guide?

There won't be any, if the product needs to be explained it's already too complex. Searching for items should already teach you shortcuts and there are no more complex interactions. Feel free to leave more specific feedback on how to use specific features though.

Well my experience seems to be disjointed from what's presented. I'm not seeing the ability to customize or add features, and currently it mostly queries to google

What exactly do you want to customize? Just search for "settings"
There are no features to add, this is probably not a complex tool as you are imagining. Not close to the level of raycast or Alfred.

I searched, but i keeps loading to google

Well my current experience seems disjointed from the photos. I’m not seeing any of the features mentioned nor a preferences or help menu to review settings to debug
On Aug 15, 2022, 16:22 -0400, Oscar Franco @.***>, wrote:

There won't be any, if the product needs to be explained it's already too complex. Searching for items should already teach you shortcuts and there are no more complex interactions. Feel free to leave more specific feedback on how to use specific features though.
—
Reply to this email directly, view it on GitHub, or unsubscribe.
You are receiving this because you authored the thread.Message ID: @.***>

Ok, open to feedback here, what exactly are you missing? Have you tried click on the sol icon on the bottom left corner or opening via shortcut (⌘ + comma) or searching for settings? or searching emoji?


Error on import - Example files have no access to UniRx namespaces

I'm new to the Assembly Definition files, but it appears that due to the way UniRx defines its assemblies, the example scripts are not able to build on initial import.

Assets/Plugins/UniRx/Examples/Sample02_ObservableTriggers.cs(2,13): error CS0234: The type or namespace name 'Triggers' does not exist in the namespace 'UniRx'. Are you missing an assembly reference?

There are 10 in total, all similar to the above. When looking in VS, the example scripts are built into my main assembly. All of the other UniRx scripts are built into their own assembly (or UniRx.Async).
It might not be proper, but dragging the Examples folder into /Plugins/UniRx/Scripts causes the examples to fall into the same assembly and allows the build to finish correctly. Not sure if this is desired behavior, but it at least gets things running.
-UniRx v 6.1.2 off of the Asset Store just now
-Unity v 2018.1.7f1
-Visual Studio Community 2017 v 15.7.5

Thanks!
I've added asmdef to UniRx.Examples, maybe it will solve(it includes in next release).


SSR implementation

What: Server Side Rendering

Why: #134

How:

Added renderStaticMarkup to collect the html, css and rendered class names (returned by glamor)

Checklist:

[ ] Documentation N/A
[ ] Tests N/A
[ ] Code complete
[ ] Added myself to contributors table
[x] Followed the commit message format

Still needs improvements though !

Because we collect all of the calls to css() internally using glamor, so we have to rely renderStatic to return the generated html and css. We may need to rewrite this from scratch if the glamorous API changes in the future.

We may need to rewrite this from scratch if the glamorous API changes in the future.

That's fine 👍

Also that glamor provides renderStaticOptimized, we could add this also to the StyleSheetServer.

I think that we should just use renderStaticOptimized. I don't see any reason not to do that... 🤔

Hmmm.... I was actually refactoring your PR in the GitHub editor and this is what I ended up with:

Seems pretty pointless... We're not really doing much... 🤔 I wonder if this is really just a matter of creating more examples 🤔

🤔  I think it does make a point because Glamorous is using glamor as a peer dependency. For SSR , we need to keep track of all the css() calls and since we rely on glamor, we can use renderStaticOptimized from glamor ? Or should we write our own method  ?

What I was suggesting is instead just improve our documentation for how to do SSR with glamor (which does now and always will work with glamorous).

Seems better to me. I would create some examples and then we can document it later ?

Good idea 👍 . I could create some examples taking inspiration from styled-components, aphrodite and glamor !

Sounds great. I'll go ahead and close this one. Thanks!

Hi there ! I am a little busy maintaining my project terminal-in-react. I will start working on the examples soon. Cool ?

Sounds good! Thanks! Maybe you could just add them directly to the new website: github.com/kentcdodds/glamorous-website

Sure!


Remove LogMeIn.GoToMeeting <IP_ADDRESS>96 to GoTo.GoToMeeting <IP_ADDRESS>96

Microsoft Reviewers: Open in CodeFlow

URL: https://builds.cdn.getgo.com/builds/g2m/19796/G2MSetup10.17.19796_IT.msi
OK
(Automated message - build 887)


Enhance the process of ejecting a USB drive

Description of the new feature / enhancement
In the event of the user request to eject a USB drive, which is still all too frequently met with a "Device is currently in use" error, provide one-stop help to complete the process, if needed. That could take the form of correctly identifying the problem process or breaking the lock so the drive can be ejected.
Scenario when this would be used?
It could be invoked when a user trying to eject a USB drive is met with the error, "Device is currently in use."
Supporting information
Sometimes, terminating Everything Search Engine or Directory Opus can get me past this error, but the current process does not correctly identify processes interfering with eject.

/feedbackhub


place penetrance/severity after other extensions

https://www.pombase.org/reference/PMID:33771877
For the phenotype extensions can we make any severity or penetrance qualifier come at the end after the other extensions?

Fixed!


Add a simple "get logs for all hosts in a project"

Simple, serial retrieval of logs for all hosts in a cluster.

Completed and released.


Case sensitive issue with remove package on Linux

Hi @JohnSundell I understand why test testAddingAndRemovingRemotePackage failed on Linux with this error:
<EXPR>:0: error: MarathonTests.AddingAndRemovingRemotePackage : threw error "💥  Cannot remove package 'files' - no such package has been added
👉  Did you mean to remove the cache data for a script? If so, add '.swift' to its path
   To list all added packages run 'marathon list'"

The issue is the package name used in the test
// Remove the package
try run(with: ["remove", "files"])

The real name of the package is Files, but on macOS 10.12.4 doesn't matter if we pass the string with the first letter lowercase.
On my virtual machine with Ubuntu 16.04, instead, this difference became an issue. I changed the test in this way and it works:
// Remove the package
#if os(Linux)
    try run(with: ["remove", "Files"])
#else
     try run(with: ["remove", "files"])
#endif

After that I checked the function func removePackage(named name: String, shouldUpdatePackages: Bool = true) throws -> Package inside PackageManager.swift and I think that this is the command that throws the exception
 let packageFile = try perform(folder.file(named: name),
                               orThrow: Error.unknownPackageForRemoval(name))

At this point my question is: how folder.file(named: name) works? Is it inside the Files package?
Thanks!

Great catch @darthpelo! Let's just update the test to use the proper casing 👍 If the file system is case sensitive then using the improper casing is a user error and should throw anyway, so I don't think that Marathon should be "smart enough" to handle it.

@JohnSundell I agree 🙂

@JohnSundell sorry for the silence but Easter lunches/dinners and daily work (new iOS project kick off) keep me away from Marathon 😅 I will back in the weekend 💪

@darthpelo No problem at all - same for me 🐥 No stress - just work on it whenever you have time - I really appreciate your help 🚀

This has now been fixed, all tests passes on Linux 🎉


Error in i18n_ui_amplify.coffee

After updating to a recent version of tapi18n (last installed/updated it in Dec) I'm getting this thrown in my browser:
i18n_ui_amplify.coffee:12 Uncaught TypeError: Cannot read property '0' of null
i18n_ui_amplify.coffee:12 (anonymous function)
startup_client.js:30 runStartupCallbacks
startup_client.js:32 ready
Snippet from the file with the offending line in bold:
Meteor.startup(function() {
var storedLanguage;
storedLanguage = amplify.store('tap-i18n-language');
if (storedLanguage) {
return TAPi18n.setLanguage(storedLanguage);
} else {
return TAPi18n.setLanguageAmplify(TAPi18n.conf.supported_languages[0]);
}
});
Language selection still seems to work fine.
I happened to recently create the project-tap.i18n config file (trying to load my i18n jsons via CDN) and I have the entry ' "supported_languages": null ' there -- after doing this, the above error does go away but I don't think that is expected/required behavior.
Thank you guys for making such a great Meteor package!

Scratch the above comment about the project file. It looks like the error only goes away once I select a language in my browser (thus storing a selected language with amplify) and the project file has nothing to do with it.


Fix Wrong Menu Title in Portuguese

Why:
It's supposed to say "GitHub Copilot", but it says "GitHub Actions" instead.

What's being changed (if available, include any code snippets, screenshots, or gifs):
One single word.

Check off the following:

[x] I have reviewed my changes in staging (look for the "Automatically generated comment" and click the links in the "Preview" column to view your latest changes).
[x] For content changes, I have completed the self-review checklist.

Writer impact (This section is for GitHub staff members only):

[ ] This pull request impacts the contribution experience

[ ] I have added the 'writer impact' label
[ ] I have added a description and/or a video demo of the changes below (e.g. a "before and after video")

Hi! We actually don't accept PRs on the translations. They're handled by an automation pipeline and we just use the git repo (at the moment) as our "database".

@peterbe Got it! So the translations are made by a Github employee? Or it's also automated? My PR was changing one word on the menu title that could confuse Brazilian users.

👋 @fernanDOTdo Our translation process involves an integration with an external service, where all translation activity happens. We hope to eventually open up the translation process to the open-source community, but we’re not there yet.
See https://github.com/github/docs/blob/main/contributing/types-of-contributions.md#earth_asia-translations.
I'll open an internal issue reporting this incorrect title. Thanks for spotting it and bringing it to our attention! 💛


python311Packages.jaxlib: fix bazel hash

Description of changes
Should fix https://github.com/NixOS/nixpkgs/issues/296737...
Things done

Built on platform(s)

[x] x86_64-linux
[x] aarch64-linux
[ ] x86_64-darwin
[ ] aarch64-darwin

For non-Linux: Is sandboxing enabled in nix.conf? (See Nix manual)

[ ] sandbox = relaxed
[ ] sandbox = true

[ ] Tested, as applicable:

NixOS test(s) (look inside nixos/tests)
and/or package tests
or, for functions and "core" functionality, tests in lib/tests or pkgs/test
made sure NixOS tests are linked to the relevant packages

[x] Tested compilation of all packages that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review rev HEAD". Note: all changes have to be committed, also see nixpkgs-review usage
[ ] Tested basic functionality of all binary files (usually in ./result/bin/)
24.11 Release Notes (or backporting 23.11 and 24.05 Release notes)

[ ] (Package updates) Added a release notes entry if the change is major or breaking
[ ] (Module updates) Added a release notes entry if the change is significant
[ ] (Module addition) Added a release notes entry if adding a new NixOS module

[x] Fits CONTRIBUTING.md.

Add a :+1: reaction to pull requests you find important.

 Do we have a sense of what's going on with these hashes? It seems that every once in a while we get a report that the hashes are wrong even though they build fine for others.

I'm still confused why this was breaking in the first place... Do we have a sense of what's going on with these hashes? It seems that every once in a while we get a report that the hashes are wrong even though they build fine for others.

No, unfortunately it is pretty unclear.
Maybe there is some non-deterministic aspect in the bazel-build-dependencies building process...

I'm also inclined to assume that hashes in fetchAttrs just aren't reproducible. Not sure how to test this though

Should we merge this fix at least ?

I think so, but maybe we can also figure out what exactly causes this somehow

Looks like it's not over...
faker> tests/providers/test_address.py::TestKaGe::test_city_name PASSED         [ 20%]
bazel-build-jaxlib-0.4.28-deps.tar.gz> installPhase completed in 8 minutes 9 seconds
error: hash mismatch in fixed-output derivation '/nix/store/l1maq7336n7zzpsv8y17kbnczxmdkwhx-bazel-build-jaxlib-0.4.28-deps.tar.gz.drv':
         specified: sha256-R1TIIyyyLlDqAlUkuhJhtyTxZMra2q5S/jX0OCInsEQ=
            got:    sha256-R5Bm+0GYN1zJ1aEUBW76907MxYKAIawHHJoIb1RdsKE=
error: 1 dependencies of derivation '/nix/store/vink8rps5x1bjqgk1x0vwxj170y5m3xa-bazel-build-jaxlib-0.4.28.drv' failed to build

@GaetanLepage please say you still have the previous FOD output cached and we can compare it with @drupol's 🙃

Note, I added this custom overlay:
          (self: super: {
            openblas = super.openblas.overrideAttrs (oldAttrs: {
              makeFlags = oldAttrs.makeFlags ++ [
                "DEBUG=1"
              ];
            });
          })

To try to debug an segfault with Openblas, do you think it might be the cause?

@drupol ehhh if the FOD contained references to any other store paths I think we'd have noticed much earlier... but just technically, if you wanted to test for...

Note2: I have no clue how to verify if that custom overlay could have an impact.

...you could just add some thrash into your openblas; just adding another argument beside DEBUG=1 would change the path, and thus the reference; you could even actually modify the binaries in postFixup in case they're being copied; but again, I think this is a purely hypothetical talk

@GaetanLepage please say you still have the previous FOD output cached and we can compare it with @drupol's 🙃

I should still have a working one cached.

gaetan in 🌐 chamaeleon in nixpkgs on  master
❯ nb python311Packages.jaxlib
Finished at 22:27:38 after 2s
/nix/store/9phzdivi68lrb70ih0c3dfccy68hq67a-python3.11-jaxlib-0.4.28

@GaetanLepage can you build /nix/store/l1maq7336n7zzpsv8y17kbnczxmdkwhx-bazel-build-jaxlib-0.4.28-deps.tar.gz.drv

EDIT2: omg it's o stupid we only expose bazel-build as a string in src and not, at the very least, as a derivation/an attrset in passthru

Is it the reason why I struggle finding a way to update and fix the hash mismatch in a custom overlay ?

This pull request has been mentioned on NixOS Discourse. There might be relevant details there:
https://discourse.nixos.org/t/building-openblas-with-debug-1-only-for-open-webui/47667/5

Don't you think we should revert this PR ?
Locally I got:
bazel-build-jaxlib> installPhase completed in 1 minutes 7 seconds
error: hash mismatch in fixed-output derivation '/nix/store/l1maq7336n7zzpsv8y17kbnczxmdkwhx-bazel-build-jaxlib-0.4.28-deps.tar.gz.drv':
         specified: sha256-R1TIIyyyLlDqAlUkuhJhtyTxZMra2q5S/jX0OCInsEQ=
            got:    sha256-R5Bm+0GYN1zJ1aEUBW76907MxYKAIawHHJoIb1RdsKE=
error: 1 dependencies of derivation '/nix/store/vink8rps5x1bjqgk1x0vwxj170y5m3xa-bazel-build-jaxlib-0.4.28.drv' failed to build

Reverting this PR won't fix it, since the hash you get now is a new one again. Something non-reproducible in the bazel build seems to change every few days


Find a better way to handle ajax call

Maybe using something like https://api.jquery.com/jquery.when/

for what it is worth i have been helping on some testing you may not need this once the FTL code is fully done i set this up with my test box and every page and graph loads in miliseconds

@technicalpyro thank you :)
honestly my intent was to abstract from the API: for example creating a single file api.js where an object returns the data. This couldn't be done with the current code because $.getJSON is an asynchronous function.
I will investigate :)


8.0 Nav Updates

Summary
This PR updates the main nav, footer, and notification banner to reflect mm.com changes for the 8.0 release.
@cwarnermm for visibility - should be good to review; will remove the DNM tag upon review completion.
TY!

@cwarnermm Preview's looking good. Should be ready whenever you + the team deem appropriate. Thanks again!


add UNIDEP University

site: https://unidep.mx/oferta-educativa/ingenieria-en-desarrollo-de-software-y-aplicaciones/

@alexandro2495 Thank you for your patience while waiting for a review and processing your request. Pull request merged.
Please start requesting the licenses in about an hour, to let the changes to propagate through our system.


Enable user to hide/show the left-hand sidebar

A 'show/hide' feature which collapsed the left-hand sidebar would make it easier to read wide tables or diagrams.

Hi @digitalronin - thank you for you suggestion! Unfortunately we don't think we'll be able to prioritise developing this. We'd always advise that documentation writers avoid wide tables or diagrams (and think hard about using tables and diagrams at all), because they're often a worse user experience than simple content - especially on mobile displays. I'll need to close this issue - hope that's ok.


[4.0.0] Need to update doc with templated configs

Description:
Need to update doc[1] with below details once the fix for APIM 4.0.0 is synced to live.

To control access only to the management console, add below config to deployment.toml:

[admin_console.control_access]
enable = true
allow = ["IP1", "IP2", "IP3"]

This will add a RemoteAddrValve Tomcat  valve in repository/conf/tomcat/carbon/META-INF/context.xml and it will only apply to the Carbon management console, and thereby all outside requests to the management console will be blocked.

To control access to all web applications deployed in your server, add below config to deployment.toml:

[web_app.control_access]
enable = true
allow =  ["IP1", "IP2", "IP3"]

This will add a RemoteAddrValve Tomcat  valve in repository/conf/tomcat/context.xml and it will apply to each web application hosted on the Carbon server. Therefore, all outside requests to any web application will be blocked.

You can also restrict access to particular servlets in a web application by adding below config to deployment.toml:

[[servlet_access_control_filter]]
filter_name = "Remote Address Filter"
allow_ip_regex = "<IP_ADDRESS>"
url_pattern = "/carbon/admin/login.jsp"

This will add Remote Address Filter to the web.xml file (stored in the <APIM-M_HOME>/repository/conf/tomcat/ directory) by mapping that filter to the servlet URL. In the Remote Address Filter that you add, you can specify the IP addresses that should be allowed to access the servlet.
The above example toml config illustrates how access to the management page (/carbon/admin/login.jsp) is granted only to one IP address:
[1]. https://apim.docs.wso2.com/en/latest/install-and-setup/setup/security/securing-api-m-web-portals/#restricting-access-to-web-portals
Suggested Labels:

Suggested Assignees:

Affected Product Version:
OS, DB, other environment details and versions:
Steps to reproduce:
Related Issues:

This seems to be fixed.


[TEVA-3546] Allow education support roles to be apply via TV

Jira ticket URL
https://dfedigital.atlassian.net/browse/TEVA-3546
Screenshots of UI changes:

@cesidio I've got jobseeker open on left and hiring staff on right.
I still see the Professional status question for a Teaching Assistant role

I don't see this for SENDCo  or education support though

Look good, section no longer there for Teaching Assistant


 : Adding is in future and is in past extensions.

Checklist

[x] New Extension
[x] New Test
[ ] Changed more than one extension, but all changes are related
[ ] Trivial change (doesn't require changelog)

          2 Messages

:book:
Executed 159 tests, with 0 failures (0 unexpected) in 4.712 (5.066) seconds

:book:
Executed 147 tests, with 0 failures (0 unexpected) in 3.946 (4.202) seconds

  Generated by :no_entry_sign: danger

Current coverage is 38.20% (diff: 100%)

Merging #343 into master will increase coverage by 0.11%

@@             master       #343   diff @@
==========================================
  Files            46         46
  Lines          2129       2133     +4
  Methods           0          0
  Messages          0          0
  Branches          0          0
==========================================
+ Hits            811        815     +4
  Misses         1318       1318
  Partials          0          0

Powered by Codecov. Last update 8ff8405...c43ca7a

In what cases would we need this?

Off the top of my head running cron jobs or a trigger after a particular date.

Could you also add to changelog, but maybe not in this pr

We can punt this to the next release and tag the last release as official.


V2: Generics

I think @PrettyWood has some ideas on this.
Basically we want generic models to work on V2, at least as well as they do on V1.
@PrettyWood if you don't think you'll have time to work on this, please unassign yourself, and hopefully someone else can take this on.
Either way, it would be great if you could describe what you were thinking.

Now that we don't have cython, generic models should be handled easily following PEP 484. That's all!
But I'll be more than happy to check out if everything works well (validation, schema generation...)

As I'll probably be using these in various places, I will also try to iron out any kinks I might find

Try to support #4908

@dmontagu who implemented the original Generic functionality mentioned he might be able to work on this.
@PrettyWood hope that's okay, if you're really keen to take this one, let us know and I'm sure that's fine.

I'm more than happy to work less :D

Please keep PEP646, variadic generics, in mind! I haven't tested Pydantic with variadic generic yet, I'll look into it if noone else has.

@samuelcolvin
It seems to me that if we want to drop the use of GenericModel (and I think we should), there are a handful of places we could put the relevant logic for doing different things to the class if typing.Generic is one of the bases:

BaseModel.__class_getitem__  (as it currently is in GenericModel)
ModelMetaclass.__new__
BaseModel.__init_subclass__
Somewhere else?

Before I go too far down the rabbit hole I wanted to see if you already had any thoughts about this choice. I know when we implemented GenericModel, compatibility with Cython dictated some of the awkwardness; since that's no longer an issue I wanted to make sure I reconsidered all possibilities. (I can't remember if some of the above approaches had other problems that were not related to Cython; guess I'll find out 😅 ).
I'm sure at least some of the logic will belong in __class_getitem__ (since that's where the new class has to be created) but I was just thinking moving some of the class creation logic (specifically, the typevar substitution) to one of the other methods above might be able to reduce the need for complex calls to create_model. Or maybe not, I haven't fully refreshed my recollection of how the typevar substitution happens.
If you haven't thought about it too much or otherwise don't have strong opinions about how this should be done, I would propose to start by just adding __class_getitem__ as a method on BaseModel, and making (non-invasive) changes to ModelMetaclass.__new__ and/or add a BaseModel.__init_subclass__ method as feels appropriate.
If you have a different approach in mind, or want me to more strongly bias away from changes to anything besides BaseModel.__class_getitem__, just let me know.

Please keep PEP646, variadic generics, in mind! I haven't tested Pydantic with variadic generic yet, I'll look into it if nobody has.

Just dropping a note here for reference during the implementation, since it took me some effort to think through how pydantic should work with TypeVarTuple -- I think it would be nice if we could handle the use case of having a generic pydantic model capable of validating the shape/types of a tensor-like object.
Drawing heavily on the summary example in PEP646, it would be nice if you could define something like:
from typing import TypeVar, TypeVarTuple

DType = TypeVar('DType')
Shape = TypeVarTuple('Shape')

class Array(Generic[DType, *Shape]):
    def __abs__(self) -> Array[DType, *Shape]: ...
    def __add__(self, other: Array[DType, *Shape]) -> Array[DType, *Shape]: ...

class MyArrayWrapper(BaseModel, Generic[DType, *Shape]):
    array: Array[DType, *Shape]

and, through some set of validator definitions, etc., set it up so that:
Height = NewType('Height', int)
Width = NewType('Width', int)

array1 = Array([1.0, 2.0])
array2 = Array([[1.0, 2.0]])
MyArrayWrapper[float, Height](array=array1)  # validates successfully
MyArrayWrapper[float, Height, Width](array=array2)  # validates successfully

MyArrayWrapper[float, Height](array=array2)  # raises ValidationError
MyArrayWrapper[float, Height, Width](array=array1)  # raises ValidationError

Perhaps there is a more concise/general example to work from than a generic wrapper type for the generic Array, but this is a good example of a use case where runtime validation could help significantly shorten the debugging process for errors caused by invalid array shape issues (especially when interfacing with data that doesn't have fully specified dimension types). And in principle, assuming the underlying arrays aren't tiny, I would think the runtime overhead of this specific use case (i.e., validating dimensions/data types) should be pretty cheap, so it seems like a realistic example.

there are a handful of places we could put the relevant logic for doing different things to the class if typing.Generic is one of the bases:

We currently use ModelMetaclass.__new__, I thought about moving all the logic to __init_subclass__ but there was a reason (I can't rember why I didn't). I think it might be possible now or in the future.
The main thing to say is that the majority of the logic for building a pydantic model is actually in pydantic._internal._model_construction - where possible I'd prefer to keep complex logic, then "just call it" from whichever method on BaseModel.
There should be no need whatsoever to use create_model - create_model only really exists now for external use and for backwards compatibility.
I guess my initial guess at how generics should work is as follows:

the current logic builds a schema but not the validator and serializer - this is the same as the logic we have for models which can't be fulled defined until later, see #4882 for some discussion
__class_getitem__ completes __pydantic_validation_schema__ to include schema for the generics bits
__class_getitem__ then builds the validator (and serializer) based on the new core-schema - you might be able to do the rebuilding logic using model_rebiuld()

@samuelcolvin another question -- I noticed in 1.X it lets you use non-parameterized TypeVars and handles the case of having a bound and having constraints as you'd expect. Is this something we want to retain? I assumed the answer was yes, but I noticed that pydantic._internal._generate_schema.GenerateSchema.generate_schema doesn't seem to handle TypeVars and that made me second guess.
In particular, if we want to retain the current behavior of allowing typevars (which I think makes sense considering it's similar to an un-parameterized list or dict), I would propose adding:
        elif isinstance(obj, typing.TypeVar):
            if obj.__bound__:
                return self.generate_schema(obj.__bound__)
            if obj.__constraints__:
                return self._union_schema(typing.Union[*obj.__constraints__])
            return core_schema.AnySchema(type='any')

(or something like it) on line 120 here: https://github.com/pydantic/pydantic/blob/ef8f9fe51b9d0e38693f70482c29ba124f810d5a/pydantic/_internal/_generate_schema.py#L116-L123.
Is that reasonable?
Sorry for all the questions, I just figure that the way we handle TypeVars might have a large impact on the way the rest of the class creation stuff works.

Just an oversight on my part, I'm sure generate_schema as lots of omissions.
Whatever you think the best behaviour is, bonus if it's compatible with V1.

@samuelcolvin

There should be no need whatsoever to use create_model - create_model only really exists now for external use and for backwards compatibility.

My current conception is that when we parameterize generics models, we will create a new class (specifically, a new subclass of BaseModel) that will have the updated schema, etc. (It feels to me like this is necessary in order to have multiple coexisting generic parameterizations.)
Am I missing something? And/or did you have something else in mind?
If not, is there a preferred way to create a subclass of the parent (generic) class that will have the updated schema/validators/serialization/etc.? I could declare a subclass in the __class_getitem__, or just use some subset of the logic in the current create_model, but, at least my current understanding is that we'd need a new class to get different schema-related behavior, and I don't see where that would happen without something along the lines of create_model.

Yes that makes sense; if we don't want to use create_model, is there a different preferred way of creating the subclass? Just declaring it like standard python and manipulating the __name__, __module__, etc., as appropriate?

Best to use standard machinery to create the subclass, then modify the core schema and build the validator etc.
You could even modify the current model construction logic to support generics.

@samuelcolvin Can we close this issue? I'd prefer to create a separate issue for handling dataclasses and TypedDict, but we could use this for tracking those if preferred.

Closing in favor of #5351


Page does not make it clear where custom MMD roles can be assigned

In many cases, it is preferable to add roles to existing AAD groups. To do so is not clarified in this page. It refers to the 'custom MMD roles' but not where they can be assigned.
According to a support ticket (222597197) this is supposed to be done from the Modern Workplace Customer APIs entry in Enterprise Applications. EDIT: Actually that's not present in our tenant... so I'm not sure what we're supposed to do. Asking for further clarity in the ticket, but perhaps this will get updated in the meantime.
Please clarify this page.

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

ID: 41c08614-27d9-ebce-ca7b-4892e2d26405
Version Independent ID: 8cfc0923-6899-e317-f8e8-ac867842934e
Content: Access the Admin portal - Microsoft Managed Desktop
Content Source: microsoft-365/managed-desktop/get-started/access-admin-portal.md
Service: m365-md
GitHub Login: @jaimeo
Microsoft Alias: jaimeo

@StuEwen , tried to assign this to you, but I guess you don't have the right perms. In any case, can you make edits to clarify the article or otherwise help this person?

@StuEwen Please add your comment and help us in resolving this issue. Thanks

I believe Stuart made an edit to this article in response to this already.... @StuEwen ?

@StuEwen Thank you very much for  updating the documentation with PR #4060 . @webash Hope this update is helpful for you. Thanks for taking out some time to open the issue. Appreciate and encourage you to do the same in future also.

This is great! thanks all!


Declare phony targets in Makefile

All the targets in makefile seems to be phony targets. So, I added a .PHONY section.

That's correct, thanks for contributing!


mv: trigger an error when doing mv dir1 dir2 dir2

Thanks for the quick review
And it works as expected:
Warning: Congrats! The gnu test tests/mv/into-self-3 is no longer failing!


Parcel HMR doubles up event handlers.

I tried using the Parcel packager, which does hot-reloading out of the box. And it seems to work great with hyperapp, aside from one thing. On each hot-reload, it seems to re-add event handlers, causing them to eventually be double/triple/quad called from a single click.
My view is basically just the example code:
import { h, View } from 'hyperapp'
import { state, State } from './state'
import { actions, Actions } from './actions'

export const view: View<State, Actions> = (state, actions) => (

{state.count}

    <button onclick={() => actions.down(1)}>-</button>
    <button onclick={() => actions.up(1)}>+</button>

)

If I change any source code file, I see the changes in my browser immediately, but then one click triggers the action as many times as hot reloads have happened.
Given that addEventListener appears exactly once in the whole framework, I'm guessing there is a bug here wher ethe previous event handers are not being cleared before new ones are installed: https://github.com/hyperapp/hyperapp/blob/master/src/index.js#L170

@Squeegy Is your mounting element document.body?

I have a feeling that this is causing multiple calls to app, which has been discussed already in another thread: https://github.com/hyperapp/hyperapp/issues/533#issuecomment-355809201.

If I understand correctly.
The app is mounted, the view is renderered and events handlers are added.
After the HMR stuff, the app is mounted again, the hydration do its job by keeping the dom, then the view is rerendered and events handlers added again.
So, hydration should remove events handlers on reused node ?

@jorgebucaran I'm mounting it to #app with this index.html, so I don't think thanks the problem.

    <link rel="stylesheet" href="./styles/index.scss">

This has the potential to cause other issues. The problem isn't limited to event handlers, since you actually have an entire other app still running. If external events were wired to call actions in the previous app and they are both using the same container, then they will both be fighting for control of that part of the DOM.
Your best options for now are probably either to use something like hyperapp-moisturize for real HMR (I have a POC example of this in another repo) or tell Parcel to just reload the page on change instead of using HMR.

Thank you, everyone, for your input and @Squeegy for reporting it. This bug is no more. 🎉
Published as a 1.2.3.


cast the entire slice to a raw pointer, not just the first element

A strict reading of pointer provenance implies that when a &T gets cast to *const T, you may only use the raw pointer to access that T, not its neighbors.  That's what Miri currently implements, though it is less strict around statics (which is why this one does not currently cause a Miri failure -- I'd like to make Miri more strict though).
Cc https://github.com/rust-lang/unsafe-code-guidelines/issues/134

@bors r+

:pushpin: Commit 2693d1242c25c708b7fe9e12bda27c3e841634d1 has been approved by Amanieu

:hourglass: Testing commit 2693d1242c25c708b7fe9e12bda27c3e841634d1 with merge c765ea00f6e743e95664915e1fb2c7459673ad9f...

:sunny: Test successful - checks-travis
Approved by: Amanieu
Pushing c765ea00f6e743e95664915e1fb2c7459673ad9f to master...

What is needed to get this updated in rustc?

I need to publish a new version of the crate and Cargo.lock needs to be updated in rustc.

I published v0.3.1 with this change.

Thanks a lot!


Rename variable name

https://github.com/FAForever/downlords-faf-client/commit/f20ebea6fe2d59248079e4b067be30073c3afbc0#r34071814

The question is what do I call it then...?

RESTORED (like MS does)
https://docs.microsoft.com/en-us/dotnet/api/system.windows.window.windowstate?view=netframework-4.8


v2.0.1: doRemoveWhitespaceAroundTags(false) both inserts spaces and removes spaces in places where it shouldn't

Erroneous insertion case
There are no spaces between tags in this input.

HtmlMin injects spaces between all these tags, but only when doRemoveWhitespaceAroundTags is set to false.

HtmlMin should absolutely not be introducing whitespace where none existed, no matter what settings are used, because this affects the content.
Erroneous removal case
Given the following input:

                1.
                Foo

HtmlMin removes white-space after the closing  tag despite doRemoveWhitespaceAroundTags(false) being set. This affects how the content is displayed.
 1. Foo

First, thanks for testing :+1:
I have changed the behavior, only if the next sibling child element is a "DOMText" we will now add the whitespace. I hope this behavior is more correct, maybe we can also disable "doRemoveWhitespaceAroundTags" by default?
PS: your examples are now implemented as unit-tests -> https://github.com/voku/HtmlMin/commit/46a8a1d91ff35587adfbda00dae72aaa99f5ef9f#diff-468b8a043eb54ed31edbee53141c1512R253

To be clear, I am not just testing, I'm using HtmlMin in production so it's very important to me to see its working correctly. Thanks for your prompt responses 👍
I completely agree removing whitespace around tags should be disabled by default because I do not think the default operation should apply "risky" fixes that could alter the presentation.


Roadmap

Have you any plan to implement policy management, multi-tenant option and claim types in upcoming releases?

Hi @imabduldev - thanks for your feedback regarding new features.
My plan is realease new RC2 this month and after that I will send detailed roadmap for this year. :-)
What is the most important from your list of requirements?
Thanks

Sorry for the late reply as I am too much busy on some projects.
From my list of requirement multi-tenant option is most important because we can manage policies somehow in some other ways. So I think it should be done first.
By the way, thanks for asking also, for now, I am bust for 1 or 2 months after this I would like to contribute to this project.


Null value as default gets 01/01/1970 on field

Hi! 👋
Firstly, thanks for your work on this project! 🙂
Today I used patch-package to patch<EMAIL_ADDRESS>for the project I'm working on.
Hi!
I found this issue using expo and running expo web on chromium.
If i use the null value for the start date value, i see 01/01/1970 instead of the empty field.
This patch resolve the issue, i hope it is right
Here is the diff that solved my problem:
diff --git a/node_modules/react-native-paper-dates/lib/module/Date/inputUtils.js b/node_modules/react-native-paper-dates/lib/module/Date/inputUtils.js
index cdf3d0e..af926e0 100644
--- a/node_modules/react-native-paper-dates/lib/module/Date/inputUtils.js
+++ b/node_modules/react-native-paper-dates/lib/module/Date/inputUtils.js
@@ -23,7 +23,7 @@ export default function useDateInput(_ref) {
     formatter,
     locale
   });
-  const formattedValue = formatter.format(value);
+  const formattedValue = value !== null ? formatter.format(value) : '';

   const onChangeText = date => {
     const dayIndex = inputFormat.indexOf('DD');

This issue body was partially generated by patch-package.

Thank you! Will add this in next release