LockManager.lock() panics with a small TTL, when retrying

We have a TTL set to five seconds. Calling LockManager.lock() with even 1 second of retries, results in panic.
Here is a minimal example that illustrates the panic and its conditions. The failing code is in the private LockManager.exec_or_retry(), so I have just copied the relevant lines and values to the Playground.
A better behavior would be returning an error with an explanation.
Happy to contribute, if I can get guidance from crate owners/maintainers. 🙏

@matildasmeds i believe the panic here is due to line 22 on your playground link:
    let validity = calculate_validity(5, start_time - one_second);

the issue is you are subtracting 1 second from now() which will result in an integer underflow. i'm not sure what your objective is, but maybe you meant to add 1 second to now()?
either way, this panic is not a result of the rslock library, and for that reason i'll close this issue. if there is actually an issue here that i'm not seeing, i'd be happy to re-investigate.

I appreciate your quick feedback and the opportunity to discuss this further.
I do believe this is a "library feature", in the sense, that if we want to set a short (in our use case 5 seconds) Time To Live for the lock, there is a very real risk that the LockManager.lock() will panic, because with enough retries it will (in our case, after 1 second of retries).
In general terms, for me as a library user, it would be amazing if instead of panicking, LockManager.lock() would return a Result::Err variant, and in the error explain the details of what failed and if possible why. This would be easier to handle, and more informative, than a panic on integer underflow.
In practical terms, for our use case, we would need a very short TTL for the key, because it is a lock that must be very short lived. We remove it manually too, as soon as we can, but in case that removal fails, the TTL becomes important. In this case, for a TTL of 5 seconds, after 1 second of retries for setting the lock, we have a panic, and that is unfortunately not sustainable for our use case.

For clarity's sake let me amend a little bit...
In the example this part is from library code:
    let validity_time = ttl
                - drift // 2,05
                - elapsed.as_secs() as usize * 1000
                - elapsed.subsec_nanos() as usize / 1_000_000;

So the elapsed time is indeed subtracted from TTL.
The reason I subtract from the start time when calling this, is to simulate retrying, and effect the same failure that we saw when trying to use the library.

thanks for clarifying the issue @matildasmeds .
i've created a test case that demonstrates your issue
    #[tokio::test]
    async fn test_lock_with_short_ttl_and_retries() -> Result<()> {
        let (_containers, addresses) = create_clients();

        let mut rl = LockManager::new(addresses.clone());
        // Set a high retry count to ensure retries happen
        rl.set_retry(10, 10); // Retry 10 times with 10 milliseconds delay

        let key = rl.get_unique_lock_id()?;

        // Use a very short TTL
        let ttl = 5; // 5 milliseconds

        // Acquire lock
        let lock_result = rl.lock(&key, ttl).await;

        // Check if the error returned is TtlExceeded
        match lock_result {
            // Err(LockError::TtlExceeded) => (), // Test passes
            _ => panic!("Expected LockError::TtlExceeded, but got {:?}", lock_result),
        }

        Ok(())
    }

if you'd like to create a PR for this, feel free to create the new error variant and add logic to the exec_or_retry function

Would be happy to contribute.
Changing the rerun type to Result will be a breaking change, should that be done for the existing lock method directly, or would you prefer to have another method for this purpose?

@matildasmeds thanks for asking. i would prefer a separate method for now, maybe try_lock(). in a future major version release we can change lock()'s return type
you may change the return type of the private method exec_or_retry() to be a Result, and in lock() you can just unwrap() it. i believe you will need to do the same with extend() by creating try_extend()


Enhance UX in toolbar buttons

According to Apple's guideline to Toolbar and navigation bar icon size, the toolbars buttons needs to be at least 66x66 to retina HD screens and 44x44 to retina screens. The size of the buttons are currently being set according to the button's image size so sometimes, like in the default image, the buttons are to small and affects the UX.
So in this PR I'm increasing the clickable area of the button if its image is smaller than the minimum.

Old behaviour:

New behaviour:

Nice improvement! Thanks!


Problem with skipped test on Jenkins (Build step 'Console output (build log) parsing' changed build result to FAILURE)

I have problem with skipped tests. (We use message from skipped test in output for test maintaining and can't hide them.)
For example we have failed test:
======================================================================
1) SKIP: Testing some feature
----------------------------------------------------------------------
   No Traceback
   Exception: http://jira:5000/browse/KA-123456

------------------------------------------

When I run it with jenkins I have failed BUILD because output parser defines "Exception"  in output.
It is better to use some other word, not "Exception" for skipped test.
** And also is confused that this skipped message has RED color. Will be more better - blue
SOME SCREENSHOTS:

You can have it not print out skip tests, it's one of the command line
options :) then you'll be fine.
On Mon, May 23, 2016, 12:02 PM KaterinaR<EMAIL_ADDRESS>wrote:

I have problem with skipped tests. (We use message from skipped test in
output for test maintaining and can't hide them.)
For example we have failed test:
======================================================================

SKIP: Testing some feature

No Traceback
Exception: http://jira:5000/browse/KA-123456

When I run it with jenkins I have failed BUILD because output parser
defines "Exception" in output.
It is better to use some other word, not "Exception" for skipped test.
*** And also is confused that this skipped message has RED color. Will be
more better - blue*
SOME SCREENSHOTS:
[image: rednose]
https://cloud.githubusercontent.com/assets/4173393/15476568/6564b622-2118-11e6-842c-53cc47e548be.png
[image: rednose2]
https://cloud.githubusercontent.com/assets/4173393/15476570/69476bd6-2118-11e6-981b-0084ce4e48f7.png
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub
https://github.com/JBKahn/rednose/issues/6

Do you mean "--hide-skips" ? I didn't find some other option.
But I can't hide all this message because I have to see why I skip the test.

That's why I added the ability to print them. I can add different wording for skips, but for the moment you should hide them and I'll look at changing the wording. Can you use the return value of nose instead of a regex?

hide-skips will be equivalent the old way of printing these results since they were not printed before the latest version. I might have time to look at this today or some time this week, at changing the wording.

Ok! Thanks! Will be very great!
Yes I know that previous version was without skipped message.
I just was working on showing all skipped message in output. And you at the same time do upgrade to version 1.1.1 with this possibility.
It is very good upgrade but only one this problem with Jenkins is present.

And could you please show skipped message with blue colour.
We used to see only failed test with RED.

Could you please say will you release new version with fix?
Could you please give some estimates?

I'll try to do it by next week or the week after. I need to update the
tests to be proper tests rather than the hacky diff code I do now.
On Thu, May 26, 2016, 5:40 AM KaterinaR<EMAIL_ADDRESS>wrote:

Could you please say will you release new version with fix?
Could you please give some estimates?
—
You are receiving this because you commented.
Reply to this email directly or view it on GitHub
https://github.com/JBKahn/rednose/issues/6#issuecomment-221825372

Ok :)

Changes released.

Works! Thanks!!


Hi，方便直接提供下【输入图像/视频 ->输出可视化3d关键点】的端到端推理脚本么，谢谢~

Hi, thank you for the insterest!
I think you can check this post  for in-the-wild prediction code.
I will release code about in-the-wild prediction later, but they are not ready yet.
Thank you~

Hi, 16-joints-setting video to 3D pose are avaliable here

Hi, 16-joints-setting video to 3D pose are avaliable here

got it, thanks


missing documentation

Please add jsDoc in the code and run cheminfo docs to update the documentation.
Please also provide a correct README.

Documentation for the exported function was done and the README was updated on this commit, but I'm having error when I ran cheminfo docs, @lpatiny is it necessary to install something else?

Did you install cheminfo-tools ?
npm i --global cheminfo-tools

yes, I did it before, apparently was a rights problem

It is fixed


Drop defaultAttrs

API breaking change.
The interaction between attributes and defaultAttrs is unclear and open to hard-to-spot bugs, for example when a mixin uses the a different form to the component.
Support for defaultAttrs should be dropped, breaking the API and forcing everyone to move the attributes.

Thinking this could be done by making attributes and defaultAttrs compatible (currently they're mutually exclusive).

Yeah we could have a flag on attributes say strictmode to disable the strict checks introduced by this method. In this way defaultAttrs would only be a proxy fn to attributes with strictmode: false

Enough time has passed for defaultAttrs to have been migrated away from, so the deprecation strategy will be:

release a 1.x that spits warnings (in debug mode) when defaultAttrs is used
make defaultAttrs a warning-spitting (regardless of debug mode) no-op in 2

We need to be this strict about it because the two are mutually exclusive, so projects like TweetDeck will have to do an all-at-once switch.


[5.1] Synchronizing the value env('APP_ENV') when the argument --env is passed to artisan.

Synchronizing the value env('APP_ENV') when the argument --env is passed to artisan.

@loduis  u can test laravel with docker. it's easy to change environment with commond line.

if (app()->enviroment('local'))

That's the correct way to do things, yes.

The env variables should be read by the framework at a higher level, then not used by the user, in the same way we don't expect people to try to use the $_GET superglobal.

@GrahamCampbell
See this line: https://github.com/laravel/framework/blob/5.1/src/Illuminate/Foundation/Bootstrap/DetectEnvironment.php#L26

        $app->detectEnvironment(function () {
            return env('APP_ENV', 'production');
        });

This in sync the value of env('APP_ENV') helper and so has the framework
It would have been better return only production
Agree with you, it is better to use code
if (app()->enviroment('local'))

And probably it would have been better to adjust the code like this:
return env('APP_ENV', head(array_slice(explode('=', $value), 1)));

All method.
    protected function detectConsoleEnvironment(Closure $callback, array $args)
    {
        // First we will check if an environment argument was passed via console arguments
        // and if it was that automatically overrides as the environment. Otherwise, we
        // will check the environment as a "web" request like a typical HTTP request.
        if (! is_null($value = $this->getEnvironmentArgument($args))) {
            return env('APP_ENV', head(array_slice(explode('=', $value), 1)));
        }

        return $this->detectWebEnvironment($callback);
    }


virt image-upload times out at Waiting for PVC

What happened:
A clear and concise description of what the bug is.
I am trying kubvirt to migrate VMs and tried the Lab1 which worked fine, I am now trying to import image stored locally on the node. This is a single node kube cluster. I am unable to upload the image to use it for vm bringup. the virt image-upload is timing out.
kubectl get service cdi-uploadproxy -n cdi
NAME              TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)   AGE
cdi-uploadproxy   ClusterIP   <IP_ADDRESS>   <none>        443/TCP   16h

kubectl virt image-upload --uploadproxy-url=https://<IP_ADDRESS> --insecure  --pvc-name=cirros-upload --size=500Mi --image-path=$HOME/cirros-0.3.0-x86_64-disk.img --no-create
Flag --pvc-name has been deprecated, specify the name as the second argument instead.
Using existing PVC default/cirros-upload
Waiting for PVC cirros-upload upload pod to be ready...
You are using a client virtctl version that is different from the KubeVirt version running in the cluster
Client Version: v0.59.1
Server Version: v1.0.0-beta.0
timed out waiting for the condition

The CDI version is v1.56.0
I have gone through
https://github.com/kubevirt/kubevirt/issues/2184 and doesnt seem to be the case as
CDI > 1.7
image is raw
and I also created additional PV for scratch

kubectl get pv
NAME                                       CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS      CLAIM            STORAGECLASS   REASON   AGE
pv0001                                     5Gi        RWO            Retain           Available                                            18h
pv0002                                     5Gi        RWO            Retain           Available                                            3h19m
pv0003                                     500Mi      RWX            Retain           Available                                            3h16m

What you expected to happen:
A clear and concise description of what you expected to happen.
Expectation is for the image-upload to succeed and PVC to be successfully created and able to bringup the image from this PVC.
How to reproduce it (as minimally and precisely as possible):
Steps to reproduce the behavior.
Mentioned above.
Additional context:
Add any other context about the problem here.
 kubectl logs cdi-uploadproxy-7bc4754484-6vnbv -n cdi I0613 09:05:47.890955       1 uploadproxy.go:64] Note: increase the -v level in the api deployment for more detailed logging, eg. -v=2 or -v=3 W0613 09:05:47.891167       1 client_config.go:617] Neither --kubeconfig nor --master was specified.  Using the inClusterConfig.  This might not work. I0613 09:05:47.994015       1 certwatcher.go:125] Updated current TLS certificate I0613 09:05:47.995117       1 certwatcher.go:81] Starting certificate watcher I0613 21:07:22.645136       1 certwatcher.go:136] certificate eventevent"/var/run/certs/cdi-uploadproxy-server-cert/tls.crt": REMOVE I0613 21:07:22.645688       1 certwatcher.go:125] Updated current TLS certificate I0613 21:07:22.645836       1 certwatcher.go:136] certificate eventevent"/var/run/certs/cdi-uploadproxy-server-cert/tls.key": REMOVE I0613 21:07:22.646300       1 certwatcher.go:125] Updated current TLS certificate

kubectl describe pod cdi-uploadproxy-7bc4754484-6vnbv -n cdi
Name:                 cdi-uploadproxy-7bc4754484-6vnbv
Namespace:            cdi
Priority:<PHONE_NUMBER>
Priority Class Name:  kubevirt-cluster-critical
Service Account:      cdi-uploadproxy
Node:                 kind-control-plane/<IP_ADDRESS>
Start Time:           Tue, 13 Jun 2023 09:05:22 +0000
Labels:               app.kubernetes.io/component=storage
                      app.kubernetes.io/managed-by=cdi-operator
                      cdi.kubevirt.io=cdi-uploadproxy
                      operator.cdi.kubevirt.io/createVersion=v1.56.0
                      pod-template-hash=7bc4754484
Annotations:          <none>
Status:               Running
IP:                   <IP_ADDRESS>
IPs:
  IP:           <IP_ADDRESS>
Controlled By:  ReplicaSet/cdi-uploadproxy-7bc4754484
Containers:
  cdi-uploadproxy:
    Container ID:    containerd://23da25745aebdb62816280d5dc39cfb9dcecafc9b389d9b831e0f30832bcebb4
    Image:           quay.io/kubevirt/cdi-uploadproxy:v1.56.0
    Image ID:        quay.io/kubevirt/cdi-uploadproxy@sha256:4567f6d25c99b34916286fb659d36802f56c1352d4e8ea5b2d77dc2cd10d755c
    Port:            <none>
    Host Port:       <none>
    SeccompProfile:  RuntimeDefault
    Args:
      -v=1
    State:          Running
      Started:      Tue, 13 Jun 2023 09:05:47 +0000
    Ready:          True
    Restart Count:  0
    Requests:
      cpu:      10m
      memory:   150Mi
    Readiness:  http-get https://:8443/healthz delay=2s timeout=1s period=5s #success=1 #failure=3
    Environment:
      APISERVER_PUBLIC_KEY:  <set to the key 'id_rsa.pub' in secret 'cdi-api-signing-key'>  Optional: false
    Mounts:
      /var/run/certs/cdi-uploadproxy-server-cert from server-cert (ro)
      /var/run/certs/cdi-uploadserver-client-cert from client-cert (ro)
      /var/run/secrets/kubernetes.io/serviceaccount from kube-api-access-zgwwm (ro)
Conditions:
  Type              Status
  Initialized       True
  Ready             True
  ContainersReady   True
  PodScheduled      True
Volumes:
  server-cert:
    Type:        Secret (a volume populated by a Secret)
    SecretName:  cdi-uploadproxy-server-cert
    Optional:    false
  client-cert:
    Type:        Secret (a volume populated by a Secret)
    SecretName:  cdi-uploadserver-client-cert
    Optional:    false
  kube-api-access-zgwwm:
    Type:                    Projected (a volume that contains injected data from multiple sources)
    TokenExpirationSeconds:  3607
    ConfigMapName:           kube-root-ca.crt
    ConfigMapOptional:       <nil>
    DownwardAPI:             true
QoS Class:                   Burstable
Node-Selectors:              kubernetes.io/os=linux
Tolerations:                 CriticalAddonsOnly op=Exists
                             node.kubernetes.io/not-ready:NoExecute op=Exists for 300s
                             node.kubernetes.io/unreachable:NoExecute op=Exists for 300s
Events:                      <none>

Environment:

KubeVirt version (use virtctl version): N/A 0.59.1
Kubernetes version (use kubectl version): N/A v1.27.2
VM or VMI specifications: N/A
Cloud provider or hardware configuration: N/A Running on VMs with nested virtualization enabled.
OS (e.g. from /etc/os-release): N/A Ubuntu 18.04.
Kernel (e.g. uname -a): N/A
Install tools: N/A
Others: N/A

/cc @awels @mhenriks
/triage needs-information

So there are 2 pods involved here, the upload proxy which is running and the upload-server which you did not give information about. The upload-proxy proxies to the upload server which should be running in the namespace you are using. I see you are using both the --pvc-name and --no-create flags. This assumes you have already created the target PVC in the target namespace (it will create the scratch space pvc for you). Can you see if the upload server pod is running in the target namespace?

Thank you for the response. Here is what I have for the pods running in the namespace.
kubectl get pod -n cdi NAME                               READY   STATUS    RESTARTS   AGE cdi-apiserver-787477cccb-hvl6w     1/1     Running   0          30h cdi-deployment-7fd5bd8cbc-pxzns    1/1     Running   0          30h cdi-operator-8fd9945c6-vp8gv       1/1     Running   0          30h cdi-uploadproxy-7bc4754484-6vnbv   1/1     Running   0          30h

I am looking for the upload server in the namespace you are uploading to. Not the CDI installation namespace. I am assuming those are not the same. The name should be upload-server-xxxxx-yyyy with X and Y being random numbers and letters.

Could you point me to how this is spinned up. I dont see any documentation mentioning about upload-server. I am following this document for importing the image.
https://kubevirt.io/user-guide/operations/containerized_data_importer/
and
https://github.com/kubevirt/containerized-data-importer/blob/main/doc/upload.md
Not sure which part I am missing here
Also I could not created UploadToken as mentioned in the document there.
apiVersion: upload.cdi.kubevirt.io/v1beta1
kind: UploadTokenRequest
metadata:
  name: upload-datavolume
  namespace: default
spec:
  pvcName: upload-datavolume

kubectl apply -f secret.yaml
error: resource mapping not found for name: "upload-datavolume" namespace: "default" from "secret.yaml": no matches for kind "UploadTokenRequest" in version "upload.cdi.kubevirt.io/v1beta1"
ensure CRDs are installed first

Let me know what step is missing here to get the upload-server running?

@awls thanks for the clarification. For some reason PVCs are not getting bound to available PV. I will try fix this today. Meanwhile if you see something missing in the process please update.

 kubectl virt image-upload dv new-upload-dv --uploadproxy-url=https://<IP_ADDRESS> --insecure --size=500Mi --image-path=$HOME/cirros-0.3.0-x86_64-disk.img --access-mode ReadWriteOnce
PVC default/new-upload-dv not found
DataVolume default/new-upload-dv created
Waiting for PVC new-upload-dv upload pod to be ready...
You are using a client virtctl version that is different from the KubeVirt version running in the cluster
Client Version: v0.59.1
Server Version: v1.0.0-beta.0
cannot upload to DataVolume in WaitForFirstConsumer state, make sure the PVC is Bound

ubuntu@ip-:~$ kubectl get pvc
NAME                STATUS    VOLUME                                     CAPACITY   ACCESS MODES   STORAGECLASS   AGE
new-upload-dv       Pending                                                                        standard       33s

ubuntu@ip-:~$ kubectl get pv
NAME                                       CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS      CLAIM                 STORAGECLASS   REASON   AGE
mypv                                       5Gi        RWO            Retain           Bound       default/mycirrospvc   manual                  37h
pv0001                                     5Gi        RWO            Retain           Available                                                 2d13h
pv0002                                     5Gi        RWO            Retain           Available                                                 46h
pv0003                                     500Mi      RWX            Retain           Available                                                 46h
pvc-67b9f46c-c0b5-4a71-90f8-f6a3a37dde16   5Gi        RWO            Delete           Bound       default/fedora        standard                2d14h
pvc-7d514a77-3b79-4fbd-b131-e07fecfce48a   5Gi        RWO            Delete           Bound       default/cirros        standard                37h

So in order for k8s to bind a PVC to a PV the following have to match:

access modes
volume mode
pv capacity >= pvc request size
storage class has to match (or both have no storage class)

Looking at what you posted the pvc has storage class 'standard' while the pvs do not. And thus they won't bind.

@awels thats what I thought but even after creating the pv with matching class, capacity, access mode I dont see it getting bound.
ubuntu@ip-:~$ kubectl get pvc
NAME                STATUS    VOLUME                                     CAPACITY   ACCESS MODES   STORAGECLASS   AGE
cirros              Bound     pvc-7d514a77-3b79-4fbd-b131-e07fecfce48a   5Gi        RWO            standard       2d3h
cirros-upload       Pending                                                                        standard       3d3h
fedora              Bound     pvc-67b9f46c-c0b5-4a71-90f8-f6a3a37dde16   5Gi        RWO            standard       3d4h
mycirrospvc         Bound     mypv                                       5Gi        RWO            manual         2d3h
new-upload-dv       Pending                                                                        standard       13h
new-upload-pvc004   Pending                                                                        standard       13h
upload-datavolume   Pending                                                                        standard       3d3h

ubuntu@ip-:~$ kubectl virt image-upload dv new-upload-pvc004 --uploadproxy-url=https://<IP_ADDRESS> --insecure --size=500Mi --image-path=$HOME/cirros-0.3.0-x86_64-disk.img --access-mode ReadWriteOnce
Using existing PVC default/new-upload-pvc004
You are using a client virtctl version that is different from the KubeVirt version running in the cluster
Client Version: v0.59.1
Server Version: v1.0.0-beta.0
cannot upload to DataVolume in WaitForFirstConsumer state, make sure the PVC is Bound

ubuntu@ip-:~$ kubectl get pv
NAME                                       CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS      CLAIM                 STORAGECLASS   REASON   AGE
mypv                                       5Gi        RWO            Retain           Bound       default/mycirrospvc   manual                  2d3h
pv0001                                     5Gi        RWO            Retain           Available                                                 3d2h
pv0002                                     5Gi        RWO            Retain           Available                                                 2d12h
pv0003                                     500Mi      RWX            Retain           Available                                                 2d12h
pv0004                                     500Mi      RWO            Retain           Available                         standard                13h
pvc-67b9f46c-c0b5-4a71-90f8-f6a3a37dde16   5Gi        RWO            Delete           Bound       default/fedora        standard                3d4h
pvc-7d514a77-3b79-4fbd-b131-e07fecfce48a   5Gi        RWO            Delete           Bound       default/cirros        standard                2d3h

I would check the request size of the PVC, we pad the request size a little bit to account for filesystem overhead.

@awels tried increasing the size too but with same issue. I think its nothing to image-upload in my opinion. I am unable to bind any pvc with the available PV with storage-class standard. storage class manual seem to work fine. However, virt image-upload doesnt recognize manual storage-class.

does the storage class exist?

storage-class manual? It does.
kubectl get pv
NAME                                       CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS      CLAIM                   STORAGECLASS   REASON   AGE
mypv                                       5Gi        RWO            Retain           Bound       default/mycirrospvc     manual                  2d3h
pv0001                                     5Gi        RWO            Retain           Available                                                   3d3h
pv0002                                     5Gi        RWO            Retain           Available                                                   2d12h
pv0003                                     500Mi      RWX            Retain           Available                                                   2d12h
pv0004                                     500Mi      RWO            Retain           Available                           standard                14h
pvc-67b9f46c-c0b5-4a71-90f8-f6a3a37dde16   5Gi        RWO            Delete           Bound       default/fedora          standard                3d4h
pvc-7d514a77-3b79-4fbd-b131-e07fecfce48a   5Gi        RWO            Delete           Bound       default/cirros          standard                2d4h
task-pv-volume                             500Mi      RWO            Retain           Bound       default/test-pv-claim   manual                  3m56s
upload-pv-volume                           500Mi      RWO            Retain           Available                           manual                  5s
kubectl virt image-upload dv upload-pv --uploadproxy-url=https://<IP_ADDRESS> --insecure --size=500Mi --image-path=$HOME/cirros-0.3.0-x86_64-disk.img --access-mode ReadWriteOnce --storage-class manual
PVC default/upload-pv not found
You are using a client virtctl version that is different from the KubeVirt version running in the cluster
Client Version: v0.59.1
Server Version: v1.0.0-beta.0
storageclasses.storage.k8s.io "manual" not found

On the other hand kubevirt lab1 exercise seem to create PVC with storage class as standard. So standard does exist as well.
NAME                                       CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS      CLAIM                   STORAGECLASS   REASON   AGE
pvc-67b9f46c-c0b5-4a71-90f8-f6a3a37dde16   5Gi        RWO            Delete           Bound       default/fedora          standard                3d4h
pvc-7d514a77-3b79-4fbd-b131-e07fecfce48a   5Gi        RWO            Delete           Bound       default/cirros          standard                2d4h

The storage class should be whatever storage is provided with your k8s cluster. Are any of those storage classes the default storage class?

@awels   for the fact that cloudinitdisk  creates the PVC with standard SC successfully means its there. I could not create other storageClass on this cluster. I am thinking that this issue could be due to feature gate DataVolume not set.
I re created a new 4 node cluster with portworx Storage class on it and I am able to create through cloudinitdisk with no issue creating PVC with dynamic pv provisioning. I had enabled DataVolume feature gate in this one. I still have the old cluster, I will try enabling the feature gate and see if that works.

virtctl  image-upload dv test-dv4 --access-mode=ReadWriteOnce --size=10Gi --image-path=
/home/gohoy/tmp/euler.qcow2  --uploadproxy-url=https://<IP_ADDRESS> --insecure --no-create --wait-secs=240
Using existing PVC default/test-dv4
Waiting for PVC test-dv4 upload pod to be ready...
timed out waiting for the condition
I got a similar issue with two different versions: Kubernetes 1.23.1, KubeVirt 0.52.0, and CDI 1.49.0; as well as Kubernetes 1.27, KubeVirt 1.0, and CDI 1.56.1.

兄弟你解决了么 我也遇到了这问题


Repo sync for protected CLA branch

The pull request is created from main637992037102274331sync_temp to main to fix git push error for protected CLA branch

Docs Build status updates of commit 0e19899:
:white_check_mark: Validation status: passed
For more details, please refer to the build report.
Note: Broken links written as relative paths are included in the above build report. For broken links written as absolute paths or external URLs, see the broken link report.
For any questions, please:Try searching the docs.microsoft.com contributor guidesPost your question in the Docs support channel


Improve the regex used for getRegistryAndName

@Page- addressing here your comment from #2

Yup, will do in another PR, thanks


WIFI-14153 RAP630 series support PWM-LED

change LED control from GPIO to PWM-LED
base on QCA "ipq5018_wi-fi_access_point_soc_data_sheet.pdf" and "IPQ50XX_SOC_Software_User_Guide.pdf"
add kernel config CONFIG_LEDS_PWM and patch pinctrl-ipq5018.c

merged, Thanks !


Closing via command line generates error

Description
What steps will reproduce the problem?

Activate spyder from terminal (using 'spyder').
Hit ctrl^c in terminal.

What is the expected output? What do you see instead?
I expect spyder to close, but it doesn't and I get stack trace below. Frankly I think this is probably good behavior, as if someone accidentally closes the wrong terminal window we don't want Spyder to close. But it might be nice to have a UI giving that option, or a friendlier error message with some warning or explanation or something.
This is low priority obviously, but I just thought I'd report it.
Please provide any additional information below
File "/home/cortical_iv/anaconda3/lib/python3.6/site-packages/spyder/utils/introspection/plugin_client.py", line 184, in _heartbeat
def _heartbeat(self):
KeyboardInterrupt
Version and main components

Spyder Version: 3.2.3
Python Version: 3.6.1
Qt Versions: 5.6.2, PyQt5 5.6 on Linux

Dependencies
pyflakes >=0.6.0 :  1.5.0 (OK)
pycodestyle >=2.3:  2.3.1 (OK)
pygments >=2.0   :  2.2.0 (OK)
pandas >=0.13.1  :  0.20.1 (OK)
numpy >=1.7      :  1.12.1 (OK)
sphinx >=0.6.6   :  1.5.6 (OK)
rope >=0.9.4     :  0.9.4-1 (OK)
jedi >=0.9.0     :  0.10.2 (OK)
psutil >=0.3     :  5.2.2 (OK)
nbconvert >=4.0  :  5.1.1 (OK)
sympy >=0.7.3    :  1.0 (OK)
cython >=0.21    :  0.25.2 (OK)
qtconsole >=4.2.0:  4.3.0 (OK)
IPython >=4.0    :  5.3.0 (OK)
pylint >=0.25    :  1.6.4 (OK)

Fixed in 3.2.4. Please update.


⚠ Bofrost.fr has degraded performance

In dd8c2e8, Bofrost.fr (https://www.bofrost.fr) experienced degraded performance:

HTTP code: 200
Response time: 1284 ms

Resolved: Bofrost.fr performance has improved in bf856b0 after 6 minutes.


stop algorithm sensitivity

Hello Anita,
Here is an "issue" that I found by playing with the interactive tutorial. I used the same time parameter that you did, 60 seconds, but slided the distance parameter : 10, 15, 50 and 100m.
Here are the results :

10 m : 1 stop detected, max duration = 84 seconds
15 m : 4 stops detected, max duration = 184 seconds
50 m : 6 stops detected, max duration = 105 seconds
100 m : 7 stops detected, max duration = 277 seconds

Here are the question I have from those results :

How do you explain that the maximum duration with the 50 meters radius is lower than the maximum duration of the 15 meters radius?
Is there a rule for suppressing GPS points coming back in a stop (often the case in the vast heterogeneity of GPS patterns) but not part of a stop?
Is there a rule in the algorithm for aggregating two stops very closed? In the stop detection litterature, it is shown that it is often necessary to aggregate two stops very closed by, as there is no parameter for fuzzyness.
Would you say that 3 stops detected for only 3 meters difference in parameters is a proof that the sensitivity of your algorithm has to be tested?

Thanks for your answers!
Colin

How do you explain that the maximum duration with the 50 meters radius is lower than the maximum duration of the 15 meters radius?

The implemented algorithm is rather simple. It does not perform any optimization to find the longest stops. Instead, it collects consecutive locations within the specified radius and then (once a location exceeds the radius) checks if the desired duration is exceeded. It would be interesting to dig deeper into the specific reason why the longest stop for radius=15 is not detected with radius=50.

Is there a rule for suppressing GPS points coming back in a stop (often the case in the vast heterogeneity of GPS patterns) but not part of a stop?

Please clarify what you mean with "suppressing". Currently, the algorithm on considers chronologically contiguous points (subtrajectories).

Is there a rule in the algorithm for aggregating two stops very closed?

No but algorithmic improvements would be very welcome.

Would you say that 3 stops detected for only 3 meters difference in parameters is a proof that the sensitivity of your algorithm has to be tested?

Besides the algorithm and the parameter settings, input data characteristics, especially noise and reporting interval influence stop detection results. A systematic sensitivity analysis would be very welcome.

It would be interesting to dig deeper into the specific reason why the longest stop for diameter=15 is not detected with diameter=50.

Of course, we also need to note that a stop diameter of 15m is highly questionable considering GPS location accuracy.

Of course, we also need to note that a stop diameter of 15m is highly questionable considering GPS location accuracy.

Yes for sure it is questionable. Do you have any reference showing that GPS accuracy is higher than 15m?
In a GPS track, high inaccuracy tend to be filtered with a median filter or with a outlier detection algorithm.
Also, 15 meters walked in 60 seconds correspond to a speed of 0.9km.h-1, which is possible in moutainous areas (see tobler hiking function or naismith function, or irmisher and clarke more recent function)... meaning that even at that distance resolution, we would detect slow mobility and not stops (for stops of 1 minute which is, I think, very high level of expectation).
In my thesis I have ran a sensitivity analysis on stop detection for stdbscan (which doesnt act the same as your algorithm I believe), and I have shown that the optimal parameters are closed to 8m for distance threshold. But as stdbscan is density-based and your algo is based on sub-trajectories, we are not looking for the same pattern in the GPS tracks.

Do you have any reference showing that GPS accuracy is higher than 15m?

Geolife data is certainly no more accurate than +/- 15m. However, other GPS tracking datasets may be more accurate, especially if they employ technology like DGPS common in precision agriculture and similar domains.

as stdbscan is density-based and your algo is based on sub-trajectories, we are not looking for the same pattern in the GPS tracks.

That's right. I can imagine some advantages of spatiotemporal density-based clustering but - as always - it's application dependent.

Also, 15 meters walked in 60 seconds correspond to a speed of 0.9km.h-1, which is possible in moutainous areas ...

Yes, if you are thinking specifically about human tracking data, these points should be considered. MovingPandas, however, is taking a more generic approach and other moving objects may require other parameter settings. That's why the user has to configure these parameters to fit their data and use case.

Closing as answered.


Attempted to load class "PretrainedModel" in Symfony 5

System Info
Symfony 5
PHP Version
8.1.27
Environment/Platform

[ ] Command-line application
[X] Web application
[ ] Serverless
[ ] Other (please specify)

Description
Hi, I get an error, please help me.

Reproduction
        $fillMask = pipeline('fill-mask');

        $result = $fillMask('The quick brown <mask> jumps over the lazy dog.');

Thanks for bringing this to my attention. I just noticed the slight discrepancy between the naming (uppercase T in some places, and lowercase in others) - PreTrainedModel and PretrainedModel. For MacOSX, which I'm using for development,  vim File and vim file are the same, so it will work with no problem. I guess that's why it slipped through my fingers. I'll fix it right away

Fixed in https://github.com/CodeWithKyrian/transformers-php/pull/4. Update to v0.2.0 to access the changes

@CodeWithKyrian Same error with WordpieceTokenizer in Tokenizer file (line 64), please update it 🚀

Thanks for that. Update to v0.2.1 to access the fixes


Can't send Telegram report

After executing the following service:
service: watchman.report
data:
  send_notification: true
  data:
    parse_mode: html

The report file is generated, but the telegram notification doesn't work:
Logger: homeassistant.components.telegram_bot
Source: components/telegram_bot/__init__.py:587
Integration: Telegram bot (documentation, issues)
First occurred: 10:26:02 (1 occurrences)
Last logged: 10:26:02

Error sending message: Can't parse entities: can't find end of the entity starting at byte offset 283. Args: (10464662, '-== Reporte Watchman ==- \n\n-== Congratulations, all 53 services from your config are available!\n\n-== Missing 3 entity(ies) from 258 found in your config:\ndevice_tracker.nmap_joaquina [missing] in: automations.yaml:58\ndevice_tracker.nmap_pedro [missing] in: automations.yaml:59\nbinary_sensor.lluvia [missing] in: automations.yaml:998,1006,1043\n\n\n-== Report created on 23 Feb 2022 10:26:02\n-== Parsed 180 files in 1.86s., ignored 25 files \n-== Generated in: 0.00s. Validated in: 0.01s.'), kwargs: {'parse_mode': 'Markdown', 'disable_web_page_preview': None, 'disable_notification': False, 'reply_to_message_id': None, 'reply_markup': None, 'timeout': None}

Hey @sermayoral, both service and data should be defined in service call to override UI settings.  You can see from the trace log that telegram bot tries to use parse_mode:markdown instead of HTML.
Try to run the report like this:
service: watchman.report
data:
  send_notification: true
  service: telegram_bot.send_message
  data:
    parse_mode: html

Explanation: data is only makes sense for watchman when service parameter is set in the report call, otherwise data is ignored and watchman uses service settings from UI or yaml. It was done intentionally so that users do not mix service name from from UI and data from service call.
This still sounds confusing, I know. Probably I'll add an additional warning/error message when data is used without service.

Another idea how to fix this confusion in future is to move data under the service parameter (breaking change):
service: watchman.report
data:
  send_notification: true
  service:
    name: telegram_bot.create_message
    data:
      parse_mode: html

This will make report call with notification service parameter slightly more complicated, but more clear, IMO:
service: watchman.report
data:
  send_notification: true
  service:
    name: telegram_bot.create_message

instead of
service: watchman.report
data:
  send_notification: true
  service: telegram_bot.create_message

Thanks @dummylabs. It has sense.
But, so, the problem is firstly i tried this:

And the following service call:
service: watchman.report
data:
  send_notification: true

But it seems that it doesn't like the attribute 'parse_mode' defined in the UI:
Logger: homeassistant.components.websocket_api.http.connection
Source: components/websocket_api/connection.py:141
Integration: Home Assistant WebSocket API (documentation, issues)
First occurred: 12:07:24 (2 occurrences)
Last logged: 12:09:03

[547839464736] Error handling message: extra keys not allowed @ data['parse_mode']. Got None

I have also tried this, as you mentioned:
service: watchman.report
data:
  send_notification: true
  service: notify.telegram_sergio
  data:
    parse_mode: html

With same result:
Logger: homeassistant.helpers.script.websocket_api_script
Source: helpers/script.py:1375
First occurred: 12:15:54 (1 occurrences)
Last logged: 12:15:54

websocket_api script: Error executing script. Invalid data for call_service at pos 1: extra keys not allowed @ data['parse_mode']

Logger: homeassistant.components.websocket_api.http.connection
Source: components/websocket_api/connection.py:141
Integration: Home Assistant WebSocket API (documentation, issues)
First occurred: 12:15:54 (1 occurrences)
Last logged: 12:15:54

[547839464736] Error handling message: extra keys not allowed @ data['parse_mode']. Got None

Ah, then this is another issue. 😃
There are two different ways of using telegram in HA: telegram platform for notify service (notify.telegram) and telegram_bot integration. As far as I know, only latter supports parse_mode. So you should set up telegram_bot integration to be able to use parse_mode.
There is a pull request to Home Assistant repo which adds parse_mode support for the notify.telegram , but I have no idea whether and when it is merged into the core.

@sermayoral BTW, the PR, I mentioned above, was merged into the core one hour ago, so we have a good chance that the next version of HA will support parse_mode  for notify.telegram. 😄

@sermayoral BTW, the PR, I mentioned above, was merged into the core one hour ago, so we have a good chance that the next version of HA will support parse_mode for notify.telegram. 😄

Yeah!! We will see it in March!! 👏👏👏


Compatibility with GitHub Enterprise

API URL will be different for GitHub Enterprise. Luckily we can get the API URL from the context: https://docs.github.com/en/actions/learn-github-actions/contexts#example-contents-of-the-github-context

Thanks @fnkr!


Improve handling of misused type hints in the console

Using : instead of = results in adding a type hint instead of assigning a value. With recent improvements to friendly-traceback, this is handled reasonably well in a regular interactive session as shown below from friendly_idle:

Using the friendly console, a warning is displayed, but the information about the type hint is removed, and is no longer available when an exception is raised

Improvements:

[ ] Keep warning but also keep the information. This will likely require a fair change in the logic.
[ ] Remove the invitation to comment about warnings, and close that issue.

Here's the result:

Reopening this issue as it keeps issuing warnings if type hints have been added to a builtin.


Update simple-edits.md

Reformatted links
Minor typo and style corrections

Excellent!
From: Steve Goldthorpe @.>
Sent: 13 February 2023 16:26
To: Hornbill-Docs/hdoc-guide @.>
Cc: Graham Bradshaw @.>; Author @.>
Subject: Re: [Hornbill-Docs/hdoc-guide] Update simple-edits.md (PR #28)
Merged #28https://github.com/Hornbill-Docs/hdoc-guide/pull/28 into main.
—
Reply to this email directly, view it on GitHubhttps://github.com/Hornbill-Docs/hdoc-guide/pull/28#event-8506416719, or unsubscribehttps://github.com/notifications/unsubscribe-auth/A43PYF7PYSHQ2YQ4SMQLQWDWXJODDANCNFSM6AAAAAAU2PD764.
You are receiving this because you authored the thread.Message ID<EMAIL_ADDRESS>
IMPORTANT INFORMATION
The information contained in this email or any of its attachments is confidential and is intended for the exclusive use of the individual or entity to whom it is addressed.
It may not be disclosed to, copied, distributed or used by anyone else without our express permission.
If you receive this communication in error please advise the sender immediately and delete it from your systems.
This email is not intended to and does not create legally binding commitments or obligations on behalf of Hornbill Service Management Limited which may only be created by hard copy writing signed by a director or other authorized officer.
Any opinions, conclusions and other information in this message that do not relate to the official business of Hornbill Service Management Limited are unauthorized and neither given nor endorsed by it.
Although Anti-Virus measures are used by Hornbill Service Management Limited it is the responsibility of the addressee to scan this email and any attachments for computer viruses or other defects.
Hornbill Service Management Limited does not accept any liability for any loss or damage of any nature, however caused, which may result directly or indirectly from this email or any file attached.
Hornbill Service Management Limited. Registered Office: 3rd Floor, 86-90 Paul Street, West London, EC2A 4NE, United Kingdom. Registered in England Number: 3033585.


NavmeshRegions seem to not be quite thought through

Godot version
4.1.1
System information

Issue description
So I have been playing around a bit with the new navigation system for the last couple of days. But it seems I either don't understand how it's supposed to work or it has some major flaws. Since nobody on Discord answered any of my questions and there is no dedicated navigation channel I am now making this issue in the hopes of either understanding what I am doing wrong, or demonstrating what is wrong with the current system.
Two areas in the same plane
With that said let's start with a very simple map; Suppose we have a map with 2 areas, where one of the areas is sometimes non-walkable:

Now what I gather from the doc  it should be pretty simple to implement a navigation mesh for this. We just create 2 navigation areas and assign them to each of the 2 meshes, bake the navmesh and oops:

The navmeshes can never overlap since they don't consider the edge geometry. The only possible way I can see to fix this is to do this:

and then try to painstakingly adjust the baking aabb; which honestly could use some editor gizmo similar to the box shape to define. and what's the aabb offset for anyways? The only point in the code I could find where this value is used is here: https://github.com/godotengine/godot/blob/237bd0a615df8a0e57bc3d299894abece7b43a0c/modules/navigation/navigation_mesh_generator.cpp#L636-L639 where its added to the baking aabb position. So why not set that one correctly? The purpose of this parameter eludes me.
Then the doc also gives conflicting information about how areas are merged. Using NavigationLayers states:

If two regions have not a single compatible layer they will not be merged by the NavigationServer.

Support different actor area access has a screenshot with only the "DoorOpen" layer enabled on the door mesh.
Looking in the Editor "Support different actor area access" seems to be correct because it draws the connection and I also can't find any filtering on layers in the code that is connecting the different NavigationAreas. Given that you couldn't actually query for a path that is either including or excluding doors the doc in "Using NavigationLayers" seems to be wrong.
Also I have yet to find a way to create an actual door with this technique. Everything I have come up with so far would require placing 4 regions around the door and then one at the door, since you can't really carve out the door of the navmesh.
Two areas in different planes
Now in the example above we basically had a 2d mesh that we wanted to connect. Now lets consider a slightly more advanced 3d scenario where we have a water plane and some ground and our agents can go through the water only if they meet certain conditions. I don't know maybe they can't swim and need to pick up some floats first. In any case here is the basic level:

(I made the water plane black so its easier to see the navmesh later)
Now, from our first try, we already know that placing the ground in one NavmeshRegion and the water in a different one is not going to work. In this case, the water mesh would even just clip straight through the two "ramps" since they would not be considered as part of the baking. So again, we have to painstakingly adjust some baking aabb to somehow try and make this work.
So I try to manually set the 2 baking aabbs of the regions (again why is there no editor gizmo?) and build the maps. But its now a bit more complicated because of the angled surfaces. Even offsetting the 2 regions by Agent Max Climb + Cell Height. The water navmesh just clips through the ramps?

(The water plane is at y=0)
Only if I put it at Agent Max Climb + 2xCell Height does the water mesh no longer clip through the ramp. Fine, I guess I could just place the visible mesh a bit higher/have my water collision a bit lower. But I can't seem to get the two meshes to connect at all. Even if I increase the connection margin. Moving the meshes around it seems something has bugged out because they only connect once they are quite far apart?

This by the way also only "works" in the editor. Once I actually start the map the connection disappears:

And forget getting both ramps to connect at the same time. So I also would need to create separate meshes for each piece of geometry that leads into the water. No matter what I tried I couldn't get this map to work at all.
rcMarkXXArea
Now, given the limitations of NavigationRegions (only square regions) and all the issues I have faced so far trying to implement 2 very basic maps. I do wonder why rcMarkXXArea is not exposed in any way. This seems like the obvious solution to all my issues, you can mark door areas and other temporary "unwakable" areas, you can easily mark areas like water which might have a different pathing cost or be unpathable in some circumstances and you can have way more complex shapes than "Cube". Also, given that the namesh is baked considering all the geometry surrounding the areas, everything is correctly connected.
Parsed Geometry Type defaults to MeshInstances
This is another thing that I don't quite understand. Why does this default to visible Geometry? Given that the Collision is actually the only thing that can impede your pathing and that using the visible geometry violates every point related to navmesh baking in this list I do wonder why it's set like that.
Using the PhysicsServer to gather source geometry
Using the SceneTree to define what geometry to consider when baking the navmesh is fine for very simple maps, but if you have more complex maps with a lot of objects and layers, it seems to me having the option to use the PhysicsServer to query for all Colliders in the NavigationRegion bounding box would be a way better option. Sure you can theoretically implement this yourself using some areas and then assigning groups to the included nodes or using NavigationMeshSourceGeometryData3D, but the first one kinda pollutes the node groups and the second one does not allow to directly add CollisionShapes and also kinda seems like an afterthought for compatibility reasons with the older system since it's never mentioned in the Navigation Manual as far as I can tell.
Final thoughts
All in all, it seems to me that I either overlook something crucial, or the current implementation of NavmeshRegions got "lost in translation" between all the changes that have been made over the last couple of revisions.
Steps to reproduce
Actually try to use multiple NavigationRegions
Minimal reproduction project
navtest.zip

I have now modified the navmesh baking a bit based on the tile building demo of reacast
https://github.com/recastnavigation/recastnavigation/blob/d95483a99351f32e32ac3ca3ce27c540cd979205/RecastDemo/Source/Sample_TileMesh.cpp#L826-L828
and
https://github.com/recastnavigation/recastnavigation/blob/d95483a99351f32e32ac3ca3ce27c540cd979205/RecastDemo/Source/Sample_TileMesh.cpp#L855-L858
by adding
	cfg.borderSize = cfg.walkableRadius + 3;
	cfg.bmin[0] -= cfg.borderSize * cfg.cs;
	cfg.bmin[2] -= cfg.borderSize * cfg.cs;
	cfg.bmax[0] += cfg.borderSize * cfg.cs;
	cfg.bmax[2] += cfg.borderSize * cfg.cs;

before the call to rcCalcGridSize
It seems that at least helps with the water mesh, if I increase the connection margin to 0.5 I now get a correctly connected mesh.

I also noticed that changing the connection margin does not seem to update in the editor, making finding the correct parameter a bit more difficult then it needs to be.

We also tried using Navmesh Regions in the past and failed to get them to work properly.

I do wonder why rcMarkXXArea is not exposed in any way.

That is because area flags (aka ability areas) require Tile-support. This in turn requires the recastnavigation's Detour. Which is not used, but rather RVO2.
See here: https://github.com/godotengine/godot-proposals/issues/5116
Either this needs to be implemented with a custom solution. Or introduce Detour to Godot. Or you use https://github.com/TheSHEEEP/godotdetour (though you'd need to update it for Godot 4)

With rcMarkXXArea you do not need to rebuild the navmesh. I am currently using it for exactly this use case with the water. rcMarkXXArea sets a poly flag, which also do not require tile-support. The poly flags are only used during pathfinding queries.
Now let me ask again. How am I supposed to mark a water area as water and have it connect to other parts of the navmesh with the current solution. I still dont get it. Neither do I get how I am supposed to do a door or any other kind of cut out.

how I am supposed to do doors

This should help you:
https://youtu.be/lOS2SptNiBM?t=169

how I am supposed to do [...] water

Hm... without Detour, you can limit pathfinding using agent.navigation_layers to define which they should ignore (aka "cannot swim on water layer"). Your water NavigationRegion needs to have the appropriate layer. Then it should work.
The navigation mesh beneath your "ramp" cannot be avoided if you don't bake them together. You could duplicate your ramp and form it as a block and include it into the other NavigationRegion's baking (a block has a steep 90° incline so it should be ignored. If it's high enough the agent cannot use it as a "step") to prevent.
An in-house equivalent would be something like the AABB filter baker shown in the video at 4:00 but as a separate Godot node, where you define an AABB space and "exclude" that area from the baking process. This you could request with a godot proposal. Though you'd still need to shape your block.
In the meantime, maybe this could help you (though that depends on your setup): https://www.youtube.com/watch?v=_QzzaajTHnw (https://github.com/mohsenph69/Godot-MTerrain-plugin).
Does that address your problems?

This should help you:
https://youtu.be/lOS2SptNiBM?t=169

Yeah, that is exactly what I think is not thought through. Do you not realize how needlessly complicated that is? So first I make everything a child of my "door", set a correct AABB, which as I have mentioned you have to somehow guess the values so it lines up correctly, bake the mesh, and then move the stuff back out and set up everything correctly. And what do I do if I slightly change the position of the door? Have to do everything again. Also this kind of workaround, and it's just that, a workaround; requires converting all the geometry of the level just to get the door mesh baked. I wouldn't really consider this working in any form.

Hm... without Detour, you can limit pathfinding using agent.navigation_layers to define which they should ignore (aka "cannot swim on water layer"). Your water NavigationRegion needs to have the appropriate layer. Then it should work.

I understand this part, however getting the mesh into a different layer in the first place is what I am struggling with.

The navigation mesh beneath your "ramp" cannot be avoided if you don't bake them together. You could duplicate your ramp and form it as a block and include it into the other NavigationRegion's baking (a block has a steep 90° incline so it should be ignored. If it's high enough the agent cannot use it as a "step") to prevent.
An in-house equivalent would be something like the AABB filter baker shown in the video at 4:00 but as a separate Godot node, where you define an AABB space and "exclude" that area from the baking process. This you could request with a godot proposal. Though you'd still need to shape your block.
In the meantime, maybe this could help you (though that depends on your setup): https://www.youtube.com/watch?v=_QzzaajTHnw (https://github.com/mohsenph69/Godot-MTerrain-plugin).

Well, if I bake them together, the ramp is in both the ground and the water mesh, which means they don't connect (since they overlap). So this does not work.
Painting it is not an option since the map is generated dynamically.
The block solution is somewhat workable, and I was thinking about this for some other parts, mainly for dynamic obstacles. But this would require me to mark all the ramps somehow. In the sample I gave that is simple, however in my game I am using a height map for most of the terrain, so this is really also not workable.
Like I said, I still think the current navigation system is severely limited for anything beyond very basic maps. And without any good reason. The standout feature is being able to dynamically connect navigation regions, however the only way to create navmeshes that make this possible is to either use the workaround from your first video, overlap the platforms so the navmeshes touch, bake the navmesh with a larger platform, or somehow manually extend the navmesh to the edges. And vertical layering does not seem to be possible at all. which means doing any kind of water plane is impossible.

Do you not realize how needlessly complicated that is?

That is plain obvious.
an advanced proposal would be to define a NavigationSplitter3D for "door"/"passage"/"corridor" (AABB or whatever) and auto-cut a NavigationRegion into 3 (or more) and the edges will be automatically aligned perfectly.

I don't think we need to have a splitter node or whatever. I would say a solution similar to rcMarkXXArea would be the best way. Just place a shape around your door/water area whatever. Then have it either create a cutout nav region or mark it inside the navmesh. The cutout approach would mean that bake needs to return more than one mesh though.
I still think not basing included geometry on the SceneTree but rather the collision geometry that is inside your navigation region would work better. Then you could easily just define the nav regions using a collision shape. Gather all collision data inside that shape (probably best to slightly extend it so you correctly build the edges) and then use that. This avoids the whole mess of somehow trying to correctly place your nav regions inside the SceneTree and neatly fixes all edge problems as well.

If Godot's current implementation is not enough, I think it would be better to draw up a clear godot-proposal and state what your needs are and how they could be achieved instead of an issue

Yeah I will do that. I was hoping I was just missing something


Fixes #161 - Scoping call to OnSave and OnModify and refector data

Scoping the calls for IsSave and IsModify, and also removing the data attribute attached to self.

Where is isModify used?
On Sunday, 19 April 2015, Nicholas Mayne<EMAIL_ADDRESS>wrote:

Scoping the calls for IsSave and IsModify, and also removing the data
attribute attached to self.
You can view, comment on, or merge this pull request online at:
https://github.com/OmniSharp/omnisharp-sublime/pull/168
Commit Summary

Fixes #161 - Scoping call to OnSave and OnModify and refector data

File Changes

M listeners/syntax.py
https://github.com/OmniSharp/omnisharp-sublime/pull/168/files#diff-0
(22)

Patch Links:

https://github.com/OmniSharp/omnisharp-sublime/pull/168.patch
https://github.com/OmniSharp/omnisharp-sublime/pull/168.diff

--
Reply to this email directly or view it on GitHub
https://github.com/OmniSharp/omnisharp-sublime/pull/168.

it's not, more there for sanity. Want me to remove it?

I think what I plan to do is remove the on activated and on modified so it
handles only the on save method however I'd like the threading thing
identified and fixed first then remove those two methods
On Sunday, 19 April 2015, Nicholas Mayne<EMAIL_ADDRESS>wrote:

Scoping the calls for IsSave and IsModify, and also removing the data
attribute attached to self.
You can view, comment on, or merge this pull request online at:
https://github.com/OmniSharp/omnisharp-sublime/pull/168
Commit Summary

Fixes #161 - Scoping call to OnSave and OnModify and refector data

File Changes

M listeners/syntax.py
https://github.com/OmniSharp/omnisharp-sublime/pull/168/files#diff-0
(22)

Patch Links:

https://github.com/OmniSharp/omnisharp-sublime/pull/168.patch
https://github.com/OmniSharp/omnisharp-sublime/pull/168.diff

--
Reply to this email directly or view it on GitHub
https://github.com/OmniSharp/omnisharp-sublime/pull/168.

Threading is not the issue. The problem is that on_modified and on_save call the same method, which in this case would always call this...
    if bool(helpers.get_settings(view, 'omnisharp_onsave_codecheck')):
        omnisharp.get_response(view, '/codecheck', self._handle_codeerrors)

so if that is set to true in the settings, then on_modifided will run it too

Or have I miss understood the issue?

There's a addtoproject listener too so I'm thinking when a files is saved.
Get response is called at the same time and it's somehow messing up. For
example oth get called and when there are syntax errors they're not getting
reported for some reason
On Sunday, 19 April 2015, Nicholas Mayne<EMAIL_ADDRESS>wrote:

Or have I miss understood the issue?
--
Reply to this email directly or view it on GitHub
https://github.com/OmniSharp/omnisharp-sublime/pull/168#issuecomment-94296490
.

You have a other issues with addtoproject, i.e. it seems to fire off to the server even if it has not filename, so the server ends up throwing a 500 error.

Maybe but try using a file in your project already. Set int i = "Blah"; and
save the file and watch the response. In some cases it says there is no
errors so it looks like addtoproject and code check are clashing somehow
On Sunday, 19 April 2015, Nicholas Mayne<EMAIL_ADDRESS>wrote:

You have a other issues with addtoproject, i.e. it seems to fire off to
the server even if it has not filename, so the server ends up throwing a
500 error.
--
Reply to this email directly or view it on GitHub
https://github.com/OmniSharp/omnisharp-sublime/pull/168#issuecomment-94296852
.

Ah I miss read the issue. Okay so, hmm... addtoproject should not even be getting called...

It should if the file is on disk
On Sunday, 19 April 2015, Nicholas Mayne<EMAIL_ADDRESS>wrote:

Ah I miss read the issue. Okay so, hmm... addtoproject should not even be
getting called...
--
Reply to this email directly or view it on GitHub
https://github.com/OmniSharp/omnisharp-sublime/pull/168#issuecomment-94297834
.

but, why is it getting called when the file is already in your project?

Good point. Not sure how you know if it is though. @nosami ?
On Sunday, 19 April 2015, Nicholas Mayne<EMAIL_ADDRESS>wrote:

but, why is it getting called when the file is already in your project?
--
Reply to this email directly or view it on GitHub
https://github.com/OmniSharp/omnisharp-sublime/pull/168#issuecomment-94298107
.

why don't you both come in Jabbr? :)

@jchannon Okay, after getting a project file that was working I cannot seem to repro this issue. Can you try with the changes I made in this file?

I'm pretty sure your change will fix it but it doesn't solve the issue of
future potential issues when we might have 2 requests called at the same
time :(
On Sunday, 19 April 2015, Nicholas Mayne<EMAIL_ADDRESS>wrote:

@jchannon https://github.com/jchannon Okay, after getting a project
file that was working I cannot seem to repro this issue. Can you try with
the changes I made in this file?
--
Reply to this email directly or view it on GitHub
https://github.com/OmniSharp/omnisharp-sublime/pull/168#issuecomment-94304020
.

Unless I am mistaken this PR isn't really relevant anymore, atleast it is not up to date with the current version of omnisharp-sublime therefor closing.


New PR Convert some capital letters to lowercase and capitalize months and days in Spanish

Details
We want to convert some capital characters to lowercase and capitalization for months and days in Spanish.
Fixed Issues
#16403
PROPOSAL: https://github.com/Expensify/App/issues/16403#issuecomment-1481348542
Tests

Go to the Personal detail -> Date of birth  verify word (Fecha de nacimiento)
Open date of birth picker in Spanish verify (Month name, including days)
Go to the Home Address and verify word 'Código postal'.
Go to the Profile add new profile and verify word 'Editar foto'.
Go to the Workspace-> Connect bank account, verify header words in both language (One moment,Un momento)

Offline tests
Same as above
QA Steps
Same as above

[x] Verify that no errors appear in the JS console

PR Author Checklist

[x] I linked the correct issue in the ### Fixed Issues section above
[x] I wrote clear testing steps that cover the changes made in this PR

[x] I added steps for local testing in the Tests section
[x] I added steps for the expected offline behavior in the Offline steps section
[x] I added steps for Staging and/or Production testing in the QA steps section
[x] I added steps to cover failure scenarios (i.e. verify an input displays the correct error message if the entered data is not correct)
[x] I turned off my network connection and tested it while offline to ensure it matches the expected behavior (i.e. verify the default avatar icon is displayed if app is offline)
[x] I tested this PR with a High Traffic account against the staging or production API to ensure there are no regressions (e.g. long loading states that impact usability).

[x] I included screenshots or videos for tests on all platforms
[x] I ran the tests on all platforms & verified they passed on:

[x] Android / native
[x] Android / Chrome
[x] iOS / native
[x] iOS / Safari
[x] MacOS / Chrome / Safari
[x] MacOS / Desktop

[x] I verified there are no console errors (if there's a console error not related to the PR, report it or open an issue for it to be fixed)
[x] I followed proper code patterns (see Reviewing the code)

[x] I verified that any callback methods that were added or modified are named for what the method does and never what callback they handle (i.e. toggleReport and not onIconClick)
[x] I verified that comments were added to code that is not self explanatory
[x] I verified that any new or modified comments were clear, correct English, and explained "why" the code was doing something instead of only explaining "what" the code was doing.
[x] I verified any copy / text shown in the product is localized by adding it to src/languages/* files and using the translation method

[x] If any non-english text was added/modified, I verified the translation was requested/reviewed in #expensify-open-source and it was approved by an internal Expensify engineer. Link to Slack message:

[x] I verified all numbers, amounts, dates and phone numbers shown in the product are using the localization methods
[x] I verified any copy / text that was added to the app is correct English and approved by marketing by adding the Waiting for Copy label for a copy review on the original GH to get the correct copy.
[x] I verified proper file naming conventions were followed for any new files or renamed files. All non-platform specific files are named after what they export and are not named "index.js". All platform-specific files are named for the platform the code supports as outlined in the README.
[x] I verified the JSDocs style guidelines (in STYLE.md) were followed

[x] If a new code pattern is added I verified it was agreed to be used by multiple Expensify engineers
[x] I followed the guidelines as stated in the Review Guidelines
[x] I tested other components that can be impacted by my changes (i.e. if the PR modifies a shared library or component like Avatar, I verified the components using Avatar are working as expected)
[x] I verified all code is DRY (the PR doesn't include any logic written more than once, with the exception of tests)
[x] I verified any variables that can be defined as constants (ie. in CONST.js or at the top of the file that uses the constant) are defined as such
[x] I verified that if a function's arguments changed that all usages have also been updated correctly
[x] If a new component is created I verified that:

[x] A similar component doesn't exist in the codebase
[x] All props are defined accurately and each prop has a /** comment above it */
[x] The file is named correctly
[x] The component has a clear name that is non-ambiguous and the purpose of the component can be inferred from the name alone
[x] The only data being stored in the state is data necessary for rendering and nothing else
[x] For Class Components, any internal methods passed to components event handlers are bound to this properly so there are no scoping issues (i.e. for onClick={this.submit} the method this.submit should be bound to this in the constructor)
[x] Any internal methods bound to this are necessary to be bound (i.e. avoid this.submit = this.submit.bind(this); if this.submit is never passed to a component event handler like onClick)
[x] All JSX used for rendering exists in the render method
[x] The component has the minimum amount of code necessary for its purpose, and it is broken down into smaller components in order to separate concerns and functions

[x] If any new file was added I verified that:

[x] The file has a description of what it does and/or why is needed at the top of the file if the code is not self explanatory

[x] If a new CSS style is added I verified that:

[x] A similar style doesn't already exist
[x] The style can't be created with an existing StyleUtils function (i.e. StyleUtils.getBackgroundAndBorderStyle(themeColors.componentBG)

[x] If the PR modifies a generic component, I tested and verified that those changes do not break usages of that component in the rest of the App (i.e. if a shared library or component like Avatar is modified, I verified that Avatar is working as expected in all cases)
[x] If the PR modifies a component related to any of the existing Storybook stories, I tested and verified all stories for that component are still working as expected.
[x] If a new page is added, I verified it's using the ScrollView component to make it scrollable when more elements are added to the page.
[x] If the main branch was merged into this PR after a review, I tested again and verified the outcome was still expected according to the Test steps.
[x] I have checked off every checkbox in the PR author checklist, including those that don't apply to this PR.

Screenshots/Videos

Web

https://user-images.githubusercontent.com/56740856/227703254-d2f00d90-396e-4dfb-99c2-7cdeda8ba35b.mp4

Mobile Web - Chrome
Uploading Screen Recording 2023

https://user-images.githubusercontent.com/56740856/228038992-d8b155e6-ccd1-470c-8782-561219e9235d.mov

Mobile Web - Safari

Desktop

https://user-images.githubusercontent.com/56740856/228034811-5a73fedd-9cf2-405e-8512-68fcf219099a.mov

iOS

https://user-images.githubusercontent.com/56740856/228037468-b0ba84f3-51c5-4d68-a15c-23867ef08b7b.mov

Android

https://user-images.githubusercontent.com/56740856/228036776-8b29c9bc-f535-4eeb-9607-2194d4954c1f.mov

@aldo-expensify Please copy/paste the Reviewer Checklist from here into a new comment on this PR and complete it. If you have the K2 extension, you can simply click: [this button]

Previous PR https://github.com/Expensify/App/pull/16593#issue-1642840205

@thesahindia i commit one by one to check is that verified first two was not verified so i used old code to commit that and then new code to verified that

@thesahindia how can i signed previous commit that was not signed ?

@thesahindia how can i signed previous commit that was not signed ?

an easy alternative could be to redo the changes into a new commit/branch/pr

@thesahindia ok thank you

@aldo-expensify @thesahindia new PR with signed commit  https://github.com/Expensify/App/pull/16627#issue-1644315663


Request final 115K video ids with word labels

Nice work and thanks for sharing the dataset and code!
In your paper, I found that "The final number of audio clips is about 115K, from which we obtain captions for 46K as the first version".  Could you please also share the final dataset with only word labels? Thank you!
Best,
Yapeng

Hi Yapeng,
Thanks for the interest :)
Our final caption dataset is still undergoing collection, but we hope to release it within a few months' time.
But if I understood you correctly, "only word labels" are required, these can be obtained from the original AudioSet!
Chris


Relation Section

I think the relation section needs expanding, as I have no idea what it means and the examples don't really add anything.
https://github.com/apiaryio/api-blueprint/blob/master/API Blueprint Specification.md#relation-section
Could anyone knock out some notes? Then I could experiment and write it up properly.

@philsturgeon I'll take it. As said in the spec, it is used for setting the

link relation type for the given action as specified by RFC 5988.

For example edit

o  Relation Name: edit
o  Description: Refers to a resource that can be used to edit the
link's context.
o  Reference: [RFC5023]
https://www.ietf.org/rfc/rfc5023

Denotes an action (on a target resource) that has semantical meaning of `that can be used to edit the link's (= source resource) content.
Given:
# Article [/article]
- attributes
    - text (string)

## List [GET]
- relation: self

- repsonse 200 (application/json)
    - attributes (Article)

## Edit [PATCH]
- relation: edit

- request (application/json)
    - attributes (Article)

- repsonse 200 (application/json)
    - attributes (Article)

Does this clarify? This is needed for fully hypermedia systems where you define and rely only on the semantics of relations and data. So you can build universal clients regardless of domain or instance of domain.
Check this concept if you are interest in more: https://github.com/resource-blueprint/resource-blueprint#gist-resource
Bottom line: The relation type is supposed to be an "id" unlike action name with is just a human readable label.

Gotcha. While I get the concept of naming a link to give it a computer recognizable identifier, I assume links need to be referenced somehow and the original example does not show this, neither does yours.
It would be good to see the list items referencing the edit link or something, so I can see how it actually fits together.
Does that make sense?

Yup it does.
At this moment the relation type is purely informational albeit some generic clients – such as Hyperdrive – are already using it.
Check this part of Hyperdrive's README that hopefully explains how the relation type can(should) be utilized.
The relation type is not necessarily provided for linking within a blueprint document. It is however the integral part of an API domain (semantics) as I am hinting on http://goodapi.design (describe what you can do with the data).
In hypermedia media types such as HAL or Siren relation types maps to

A relation aka. 'rel' (the name of the link)
https://github.com/mikekelly/hal_specification/blob/master/hal_specification.md#links

or

Defines the relationship of the link to its entity, per Web Linking (RFC5988).
https://github.com/kevinswiber/siren#rel-1

With that being said, I plan to blog™ on this topic. Open question is what would be the best way to share this knowledge in API Blueprint specification / examples without making even more heavy...

We have added additional explanation on this in https://github.com/apiaryio/api-blueprint/blob/master/Advanced Tutorial.md#relation-types

It’s still only half of an example surely?
Just showing that a keyword can be used, but not showing what it looks like or how other things reference it or anything else connected to it seems a bit confusing. Basically, I’m confused :)


Rohan Gaikwad Review Ticket #2

My Fastpages

[x] Seeing that you understand how to use Code.org and that you used it to complement your learning on primitives.  Up to Lesson 5 in the OOP assignment.
[x] Create a Jupyter Notebook(s) using IJava kernel and that you could use it to capture key learning on Primitives.
[x] Create a Jupyter Notebook using Bash and that you could use it to show that you have all the key tools installed. This should also be a Blog for your own personal memory.
[x] Each student captures information  in Fastpages thinking ... how they are going to capture information that will grow to 10 college board units ... how they will recognize something as PBL vs College Board.
[x] Extra Use of Jupyter Posts for personal use that has an image
[x] [added notes in between tags.md and about.md](

2.7+
Great job Rohan! You have all the requirements for the week. You also completed Bash hacks, added alias in bashrc, personal page, linked notes to the navbar in _pages, primitive functions


Release azure-cli-dla 0.0.1

Reviewers, please verify the following for this PR:

[ ] The PR title has format Release <component-name> <version>.
[ ] setup.py has been modified with the same version as in the PR title.
[ ] HISTORY.rst has been modified with appropriate release notes.
[ ] If releasing azure-cli or azure-cli-core, __version__ defined in __init__.py should also be modified to match.

Started releasing azure-cli-dla 0.0.1...

Release of 'azure-cli-dla' with version '0.0.1' successful. View at https://pypi.python.org/pypi/azure-cli-dla/0.0.1.

GitHub release created. https://github.com/Azure/azure-cli/releases.


[setup] Include README in MANIFEST

Since we've added README content to the setup description (in https://github.com/apache/incubator-superset/pull/5226), README.md must be in MANIFEST.in.
@xrmx @mistercrunch

Codecov Report

Merging #5531 into master will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff           @@
##           master    #5531   +/-   ##
=======================================
  Coverage   63.31%   63.31%
=======================================
  Files         349      349
  Lines       22181    22181
  Branches     2463     2463
=======================================
  Hits        14044    14044
  Misses       8123     8123
  Partials       14       14

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update e7d0512...02c53af. Read the comment docs.


Add license.

Let's review this license.

I looked over Django's license here and it's pretty straight forward and is in line with the MIT license.  Since Django is our main framework, I think the MIT license is sufficient. We can also readdress this later if needed.


Scapy Module Pathing Issue

This pull request is merging fixes into the master to address changes in scapy's module paths.

Thanks for this, I'll get it tested and merged later this week.

Tested and landed, thanks for the patch!


Transferring to nipreps organization

After experiencing how easy it has been transferring SDCFlows, should I go for this one?

Same as https://github.com/poldracklab/niworkflows/issues/462#issuecomment-586537021:

I vote for waiting until after the 20.0.0 release. No need to fiddle with the process between now and then.

Postponed to right after 20.2

Okay, this is done. I have find . -type f -exec sed -i 's+poldracklab/smriprep+nipreps/smriprep+g' {} \; on master, but I don't know whether we should backport this kind of changes to actively maintained branches. Please open issues if some further changes related to this move are necessary.


doc: remove "please"

On the opposite end of #1394

Should we remove and avoid "please" from all or parts of the docs? Reasons

It's unnecessary as long as our docs are already friendly
We don't currently use it consistently so the tone changes from page to page

Thoughs @iterative/docs ? May apply to other content as well.

Hello @jorgeorpinel
Do you mean removing "please" from these texts too?
We can also rephrase the sentences in such a way that they are friendly without the requirement of the "please" word

I can work on this!

Thanks for your interest @BhaswatiRoy . Yes we'd want to review every instance of "please" or similarly exaggerated friendly tone. Feel free to open a PR removing/changing the phrases you can find.

Hello @jorgeorpinel
I have submitted the pr by rephrasing all sentences containing "please" in the docs section.


Clarification on unit for audio time and video time

Hi,
can you please clarify what unit the values "audio time" and "video time" have?

At the top you say "We share details about screen, video, and audio minutes" but I have my doubts that these are minutes when I compare those numbers with the Power BI report for "CQD Teams Usage Report"
Regards,
Paul

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

ID: 2758a3d6-c646-dcb0-2a31-c7b9b84e780b
Version Independent ID: 8704c9fe-f8b0-82d2-bd83-3fd1a9ad638d
Content: Microsoft Teams user activity report - Microsoft Teams
Content Source: Teams/teams-analytics-and-reports/user-activity-report.md
Service: msteams
GitHub Login: @LanaChin
Microsoft Alias: v-lanac

@paul-lange Thank you for submitting feedback and contributing to the docs. We are currently investigating this.

@paul-lange Hi there. Thank you for reaching out to improve MS Docs. I have investigated and found that the time is measured in minutes. Could you let me know what's reflecting on your side or if you have any other thoughts. Thanks.

@paul-lange We appreciate any feedback that improves the content in the Microsoft docs but we haven't had any response from you so we are going to close this issue.
Please feel free to re-open this issue if there is a specific area of the docs that we can improve or make better. Thank you.


[T4A7][F14-A1]Apoorva Ullas

Ready for review

Accepting this PR without a review because another of your PRs for this tutorial was reviewed in detail.


Running Tests

I did a bundle install and then when I tried bundle exec rake, I am getting the following error
fatal: Not a git repository (or any of the parent directories): .git
fatal: Not a git repository (or any of the parent directories): .git
fatal: Not a git repository (or any of the parent directories): .git
fatal: Not a git repository (or any of the parent directories): .git
fatal: Not a git repository (or any of the parent directories): .git
fatal: Not a git repository (or any of the parent directories): .git
/usr/bin/ruby2.1 -I/home/balasankarc/.rvm/gems/ruby-2.1.0/gems/rspec-core-3.1.7/lib:/home/balasankarc/.rvm/gems/ruby-2.1.0/gems/rspec-support-3.1.2/lib /home/balasankarc/.rvm/gems/ruby-2.1.0/gems/rspec-core-3.1.7/exe/rspec --pattern spec/**{,/*/**}/*_spec.rb
fatal: Not a git repository (or any of the parent directories): .git
fatal: Not a git repository (or any of the parent directories): .git
fatal: Not a git repository (or any of the parent directories): .git
AttrOptional
.attr_optional
should define accessible attributes
should be inherited
when already required
should be optional (FAILED - 1)
when AttrRequired not included
should do nothing
.attr_optional?
should answer whether the attributes is optional or not (FAILED - 2)
#attr_optional?
should answer whether the attributes is optional or not (FAILED - 3)
.optional_attributes
should return all optional attributes keys
#optional_attributes
should return optional attributes keys
.undef_optional_attributes
should undefine accessors and remove from optional attributes
AttrRequired
.attr_required
should define accessible attributes
should be inherited
when already optional
should be optional (FAILED - 4)
when AttrOptional not included
should do nothing
.attr_required?
should answer whether the attributes is required or not (FAILED - 5)
#attr_required?
should answer whether the attributes is required or not (FAILED - 6)
#attr_missing?
should answer whether any attributes are missing (FAILED - 7)
#attr_missing!
should raise AttrMissing error when any attributes are missing
#attr_missing
should return missing attributes keys
.required_attributes
should return all required attributes keys
#required_attributes
should return required attributes keys
.undef_required_attributes
should undefine accessors and remove from required attributes
Failures:

AttrOptional.attr_optional when already required should be optional
Failure/Error: @c.attr_required?(:attr_required_b).should be_false
expected false to respond to false?
./spec/attr_optional_spec.rb:23:in `block (4 levels) in <top (required)>'

AttrOptional.attr_optional? should answer whether the attributes is optional or not
Failure/Error: A.attr_optional?(:attr_optional_a).should be_true
expected true to respond to true?
./spec/attr_optional_spec.rb:37:in `block (3 levels) in <top (required)>'

AttrOptional#attr_optional? should answer whether the attributes is optional or not
Failure/Error: @a.attr_optional?(:attr_optional_a).should be_true
expected true to respond to true?
./spec/attr_optional_spec.rb:46:in `block (3 levels) in <top (required)>'

AttrRequired.attr_required when already optional should be optional
Failure/Error: @c.attr_required?(:attr_optional_b).should be_true
expected true to respond to true?
./spec/attr_required_spec.rb:23:in `block (4 levels) in <top (required)>'

AttrRequired.attr_required? should answer whether the attributes is required or not
Failure/Error: A.attr_required?(:attr_required_a).should be_true
expected true to respond to true?
./spec/attr_required_spec.rb:37:in `block (3 levels) in <top (required)>'

AttrRequired#attr_required? should answer whether the attributes is required or not
Failure/Error: @a.attr_required?(:attr_required_a).should be_true
expected true to respond to true?
./spec/attr_required_spec.rb:46:in `block (3 levels) in <top (required)>'

AttrRequired#attr_missing? should answer whether any attributes are missing
Failure/Error: @a.attr_missing?.should be_true
expected true to respond to true?
./spec/attr_required_spec.rb:56:in `block (3 levels) in <top (required)>'

Deprecation Warnings:
Using should from rspec-expectations' old :should syntax without explicitly enabling the syntax is deprecated. Use the new :expect syntax or explicitly enable :should instead. Called from /home/balasankarc/packaging/attr-required/source/attr_required-1.0.0/spec/attr_optional_spec.rb:10:in `block (3 levels) in <top (required)>'.
If you need more of the backtrace for any of these deprecations to
identify where to make the necessary changes, you can configure
config.raise_errors_for_deprecations!, and it will turn the
deprecation warnings into errors, giving you the full backtrace.
1 deprecation warning total
Finished in 0.01502 seconds (files took 0.14387 seconds to load)
21 examples, 7 failures
Failed examples:
rspec ./spec/attr_optional_spec.rb:22 # AttrOptional.attr_optional when already required should be optional
rspec ./spec/attr_optional_spec.rb:36 # AttrOptional.attr_optional? should answer whether the attributes is optional or not
rspec ./spec/attr_optional_spec.rb:45 # AttrOptional#attr_optional? should answer whether the attributes is optional or not
rspec ./spec/attr_required_spec.rb:22 # AttrRequired.attr_required when already optional should be optional
rspec ./spec/attr_required_spec.rb:36 # AttrRequired.attr_required? should answer whether the attributes is required or not
rspec ./spec/attr_required_spec.rb:45 # AttrRequired#attr_required? should answer whether the attributes is required or not
rspec ./spec/attr_required_spec.rb:55 # AttrRequired#attr_missing? should answer whether any attributes are missing
Coverage report generated for RSpec to /home/balasankarc/packaging/attr-required/source/attr_required-1.0.0/coverage. 64 / 64 LOC (100.0%) covered.
/usr/bin/ruby2.1 -I/home/balasankarc/.rvm/gems/ruby-2.1.0/gems/rspec-core-3.1.7/lib:/home/balasankarc/.rvm/gems/ruby-2.1.0/gems/rspec-support-3.1.2/lib /home/balasankarc/.rvm/gems/ruby-2.1.0/gems/rspec-core-3.1.7/exe/rspec --pattern spec/**{,/*/**}/*_spec.rb failed
Can you help me out?

ah, because of rspec change.
will fix when I have time.

Ok. Thanks.

Runs fine with Rspec 3.


The C++/CLI end generates crashing code if redundant destructors are removed

To reproduce, delete the destructors from DerivedFromSecondaryBaseWithIgnoredVirtualMethod and SecondaryBaseWithIgnoredVirtualMethod, and run all tests. TestCodeGeneration is going to crash because of the line where DerivedFromSecondaryBaseWithIgnoredVirtualMethod is destroyed.
The crash occurs only in C++/CLI. The reason is that DerivedFromSecondaryBaseWithIgnoredVirtualMethod's chain only gets one destructor in Foo:
CommonTest::Foo::~Foo()
{
    delete NativePtr;
}

Since NativePtr in this case is of type Foo*, this only calls the destructor of Foo – because it isn't virtual. The latter might be a mistake in the source C++ to begin with. It's highly recommended for destructors to be virtual when polymorphism is involved. So we need to decide whether to fix the test, the generator (by generating a destructor per class) or both.

The latter might be a mistake in the source C++ to begin with.

The latter is a mistake.

It's highly recommended for destructors to be virtual when polymorphism is involved.

delete-expression (C++ standard)
If the static type of the operand is different from its dynamic type, the static type shall be a base class of the operand’s dynamic type and the static type shall have a virtual destructor or the behavior is undefined

So we need to decide whether to fix the test, the generator (by generating a destructor per class) or both.

The class Foo needs to be fixed or DerivedFromSecondaryBaseWithIgnoredVirtualMethod should derive from something else.


make spec compliant.  created/modified must only be precise to the mi…

…llisecond
per: https://docs.oasis-open.org/cti/stix/v2.0/cs01/part1-stix-core/stix-v2.0-cs01-part1-stix-core.html#_Toc496709274
Last Updated Time Change
Before submitting the pull request, please update the last_updated on https://github.com/oasis-open/cti-documentation/blob/general_refinement/_config.yml#L16

looks like the last update time change template needs to be changed because _config.yml says:
# DO NOT MODIFY THE `last_updated` date. It should be updated automatically
# by the git pre-push hook.

Thanks, @jmgnc. Have you been able to sign the CLA yet?
This is arguably minor enough that it may not be necessary.

No, I have not been able to sign the CLA.  In reading the CLA, it appears that any/all contributions to open repos (i.e. github) are required to be via CLA (which means that as a TC, we CANNOT have any TC material in github), which IMO is a major problem and should be fixed.  I'll bring it up w/ others.
Here's how to find all the files that have this issue if you'd like to recreate them:
egrep -lr '(created|modified).*.[0-9][0-9][0-9][0-9][0-9][0-9]Z' .
and if you're familar w/ vi, you can just do something like:
vi egrep -lr '(created|modified).*\.[0-9][0-9][0-9][0-9][0-9][0-9]Z' .
and cycle through all the files.

The Open Repo guidelines require that any "substantive" contributions be made subject to the CLA. "Substantive" is determined by the maintainer(s) of the repo, which is why I said it may not be needed.

which means that as a TC, we CANNOT have any TC material in github

Can you clarify what you mean?

My comment is that cti-documentation being in github (and from my understanding, therefor covered by CLA), though IMO should be a TC work product, is covered by CLA instead of by the TC contributors guidelines.   Maybe is there a different type of github repo that we can have that is open for TC members to contribute to w/o using a CLA?

Ahh, that makes more sense, @jmgnc.
The cti-documentation repo is an OASIS TC Open Repository, which means it is covered by CLA instead of the TC's standard IPR rules. Open Repositories (and this repo) existed before Repositories for TC Members' Chartered Work, which is arguably where this type of content should go (and would make it easier for you to contribute). It would be up to the TC (or anyone in it) to propose a new "Chartered Repo", and then decide how/if to migrate content and redirect people to the new location. I would be supportive of this change (though we should probably discuss it somewhere other than this GitHub issue 😝 ).
cc: @robincover

Can't we just move the documentation to a TCS one, seems pretty straight forward...

@JasonKeirstead Besides the fact that the URLs would change, I don't see a problem.


Reexport Distributions

I noticed that most usage example go like:
using Distributions, Turing
...

So I think it would be nice to just use Reexport.jl and reexport Distributions.jl to make Turing self-sufficient. The same thing can be done for MCMCChain.jl I suppose. What do you think?

Since it’s just a macro, can we just copy the code and its license instead of adding one more decency..

Is there any particular reason that you're concerned about the extra dependency? I don't see what we lose by doing so, particularly given the new package manager, and it avoids adding yet more code that isn't really central to what we do to Turing

It's a 20 line macro, but let's keep as much code as we can out of Turing, 20 lines at a time. If it gets abandoned, we can pull it in, but it seems actively maintained and watched by some solid programmers. PR coming.


[ISSUE #4202] Do some code optimization.[util]

Fixes #4202.
Modifications

add 'serialVersionUID'.
Extraction as a method.

Documentation

Does this pull request introduce a new feature? (no)
If yes, how is the feature documented? (not applicable / docs / JavaDocs / not documented)
If a feature is not applicable for documentation, explain why?
If a feature is not documented yet in this PR, please create a followup issue for adding the documentation

please check checkstyle.


Attempt at distributing ownership between AML and APR.

What does this PR do?
An attempt at distributing ownership between AML and APR.

/merge

/merge

/merge


Adding some configurations

Add in dependabot.yml as well:
# To get started with Dependabot version updates, you'll need to specify which
# package ecosystems to update and where the package manifests are located.
# Please see the documentation for all configuration options:
# https://docs.github.com/code-security/dependabot/dependabot-version-updates/configuration-options-for-the-dependabot.yml-file

version: 2
updates:
  - package-ecosystem: "github-actions" # See documentation for possible values
    directory: "/" # Location of package manifests
    schedule:
      interval: "weekly"

?