Any plan to support bursting in the avalon MM VIP?

I have a need for that functionality and if there were plans for it to appear in the next release or near future, I might work on another area of the design rather than making a bursting VIP myself.

Hi,
I am afraid this is not something we will be implementing in near future.
But, we would appreciate any contribution.
Best Regards
Marius
Fra: Nathanael Huffman<EMAIL_ADDRESS>Sendt: onsdag 13. september 2017 22.06
Til: UVVM/UVVM_All<EMAIL_ADDRESS>Kopi: Subscribed<EMAIL_ADDRESS>Emne: [UVVM/UVVM_All] Any plan to support bursting in the avalon MM VIP? (#28)
I have a need for that functionality and if there were plans for it to appear in the next release or near future, I might work on another area of the design rather than making a bursting VIP myself.
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHubhttps://github.com/UVVM/UVVM_All/issues/28, or mute the threadhttps://github.com/notifications/unsubscribe-auth/AQAGEd6gAMglZsfRPz3oy8fPEZRI04O1ks5siDWQgaJpZM4PWpwn.


Add gitops run command as an alias to gitops beta run

Closes #3317

Added the run command to  the root (gitops) command. So, calls to gitops beta run and gitops run will work exactly the same.

Notes:
The only limitation: usage examples in help for gitops run will display gitops beta run, because they are hardcoded strings, but for our purposes it should work. We can update help after we move GitOps Run our of beta.
Testing that both commands work the same:
gitops run

gitops beta run

✨ the most concise implementation!


Add Automatic Contributor List to README

There's GOT to be some way to show contributors automatically in the README. So that Github contributors can automatically be listed without needing to be added manually (would save me some time, and make sure people get some of the credit and thanks that they need).

Hi @engineerjoe440, I happen to came accross one repo I recently contributed to having such dynamic feature of listing the contributors just like you mentioned.
https://contrib.rocks/image?repo=engineerjoe440/ElectricPy
I can make PR for the same if its oke

I think this would be great! If you can add that to the "Special Thanks" section, that would be fantastic! You can probably remove those in the list whose images also appear, but the rest should stick around in the list. Thank you!
PR welcome! :)

Just looked up this tool, looks like this is the markdown we'll probably want to use in the README:

Made with [contrib.rocks](https://contrib.rocks).

Yes and a lot of projects are currently using it as its always nice to appreciate those who are giving back to the community.


Code tags in MD documents in dark mode are hard to read

Directory Lister Version
3.12.1
PHP Version
8.1.2-1ubuntu2.9
PHP Extensions
[PHP Modules]
calendar
Core
ctype
date
dom
exif
FFI
fileinfo
filter
ftp
gettext
hash
iconv
json
libxml
openssl
pcntl
pcre
PDO
Phar
posix
readline
Reflection
session
shmop
SimpleXML
sockets
sodium
SPL
standard
sysvmsg
sysvsem
sysvshm
tokenizer
xml
xmlreader
xmlwriter
xsl
Zend OPcache
zip
zlib
[Zend Modules]
Zend OPcache
Web Server
Apache2 v2.4.52-1ubuntu4.2
Describe the Bug
The dark mode color scheme uses light text on a light background for code tags in a markdown document, i.e.:
This is a `code` tag

An easy example is to look at the default Readme.md present in the repository while using darkmode:

Thank you, will fix this soon.

Resolved with 0679d967c34c27faa590f131aea6da6c915aa58e


New version: Catsxp.Catsxp version <IP_ADDRESS>

This pull request is automatically generated by 🥟 Dumplings in #3325
Microsoft Reviewers: Open in CodeFlow

Automatic Validation ended with:

2024-02-07T14:12:51.0355547Z -----------------------------------------------------
2024-02-07T14:12:51.0359908Z Status: Started
2024-02-07T14:12:51.0365303Z Manifest file is Added
2024-02-07T14:12:51.1253819Z ##[warning] Manifest Warning: Silent and SilentWithProgress switches are not specified for InstallerType exe. Please make sure the installer can run unattended. Manifest Warning: Silent and SilentWithProgress switches are not specified for InstallerType exe. Please make sure the installer can run unattended. Manifest Warning: Silent and SilentWithProgress switches are not specified for InstallerType exe. Please make sure the installer can run unattended. Manifest Warning: Silent and SilentWithProgress switches are not specified for InstallerType exe. Please make sure the installer can run unattended.
2024-02-07T14:12:51.2217164Z Manifest content validated.
2024-02-07T14:12:51.2229500Z Manifest contains installer: https://catsxp.oss-cn-hongkong.aliyuncs.com/x86/catsxp_installer_121_4_2_2.exe
2024-02-07T14:12:51.2238033Z Manifest contains installer: https://catsxp.oss-cn-hongkong.aliyuncs.com/x86/catsxp_installer_121_4_2_2.exe
2024-02-07T14:12:51.2247766Z Manifest contains installer: https://catsxp.oss-cn-hongkong.aliyuncs.com/x64/catsxp_installer_121_4_2_2.exe
2024-02-07T14:12:51.4935379Z -----------------------------------------------------
2024-02-07T14:12:51.4940029Z Status: Started
2024-02-07T14:12:51.4949438Z Manifest file is Deleted
2024-02-07T14:12:51.7748775Z Status: Completed
2024-02-07T14:12:51.8096236Z ##[error] Result: Failed
2024-02-07T14:12:51.8135259Z ##[error] Sequence contains no elements
2024-02-07T14:12:51.8891535Z ##[error]Manifest Validation Failed
2024-02-07T14:12:51.8893903Z

(Automated response - build 695.)

Sequence contains no elements

https://github.com/microsoft/winget-pkgs/issues/133371

(Automated response - build 695.)


added optional array of tags to exempt from trailing slashes for self…

…-closing tags
Added an, empty by default, 'noSlash' array property with getters and setters, like the selfClosing array has, on the main Dom class.
When a tag is in this array the trailing slash is not added to the tag in the Dom\Tag class, for HTML5-style tags rather than the xhtml version, which remains the default.
Added a single, simple test for this based on a previous test.

Coverage decreased (-0.7%) to 93.96% when pulling 770b48f78c4b66914359c3a9e0bf7f28a0503b02 on billythekid:master into 96634727ec973ee0a57c5060139bfd747f079b67 on paquettg:master.

Coverage decreased (-0.7%) to 93.96% when pulling 770b48f78c4b66914359c3a9e0bf7f28a0503b02 on billythekid:master into 96634727ec973ee0a57c5060139bfd747f079b67 on paquettg:master.


Add cmake target for generating dependency graph

This is useful for debugging and helping users understand how it works.

Useful links:

General info page here
Info on separate file these need to be stored in here

In retrospect, this only shows the targets and custom command info doesn't really show up. Therefore, this isn't very helpful. Closing.


[Travis Profiling] Use 'ts' to time tests.

In this PR we are trying to profile travis for the time spent on various tasks and then maybe improve upon stuff to reduce testing time.

Automated message from Dropbox CLA bot
@adnrs96, it looks like you've already signed the Dropbox CLA. Thanks!

The build time has been slowly increasing, https://scribu.github.io/travis-stats/#zulip/zulip/master, but due to an increase in coverage.

@rht Yes but there is space for improvement. I am exploring such possibilities in this PR.

@rht thanks for that link, it's a quite useful tool.  From looking at that, it appears there's a nontrivial change that happened in average build times here:
https://github.com/zulip/zulip/commit/c77b1b2ac045a07521ab8b98a86c68a3359e28bf
I'm not convinced that's a useful clue.

Codecov Report

Merging #5174 into master will increase coverage by 0.03%.
The diff coverage is n/a.

@@            Coverage Diff             @@
##           master    #5174      +/-   ##
==========================================
+ Coverage    86.5%   86.54%   +0.03%
==========================================
  Files         430      430
  Lines       53111    53111
  Branches     2069     2069
==========================================
+ Hits        45942    45963      +21
+ Misses       7169     7148      -21

Impacted Files
Coverage Δ

zerver/tornado/ioloop_logging.py
93.33% <0%> (+46.66%)
:arrow_up:

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 6c72284...904f871. Read the comment docs.

@adnrs96 I'm going to close this one since it's already been merged.


Terraform state file should depend on environment

This issue blocks environment creation https://github.com/hashicorp/terraform/issues/13022 looking for workarounds.
https://github.com/Quansight/qhub/blob/master/qhub/template/{{ cookiecutter.repo_directory }}/infrastructure/state.tf
Does not allow environment variables

This is blocking us from deploying a dev, uat, staging, testing etc. TF_VAR_... by terraform is not allowed in the terraform state section. The hashicorp issue details the problem.


x-nullable not working with arrays

I guys, thanks for this fantastic tool. However, when I have something like:
"someObject": {
  "properties": {
      "someField": {
         "type": "array",
         "items": "string",
         "x-nullable": "true"
      }
  }
}

and I receive something like
{"someField": null}
The validator prompts
Error: someField is not an array. An array is expected.
but I believe it shouldn't...
Regards

What version are you using?
I have created the following tests and they both pass (meaning that this is not a problem in the current version or I cannot reproduce it).
arrayNullWhenNullable: function(test) {
        var data = {
            sample: null
        };
        var model = {
            required: [ 'sample' ],
            properties: {
                sample: {
                    type: 'array',
                    items: {
                        type: "string"
                    },
                    "x-nullable": true
                }
            }
        };

        var errors = validator.validate(data, model);

        test.expect(1);
        test.ok(errors.valid);

        test.done();
    },
    arrayNullWhenNullable2: function(test) {
        var data = {
            sample: null
        };
        var model = {
            required: [ 'sample' ],
            properties: {
                sample: {
                    type: 'array',
                    items: {
                        type: "string"
                    },
                    "nullable": true
                }
            }
        };

        var errors = validator.validate(data, model);

        test.expect(1);
        test.ok(errors.valid);

        test.done();
    },
    arrayNullWhenNotNullable: function(test) {
        var data = {
            sample: null
        };
        var model = {
            required: [ 'sample' ],
            properties: {
                sample: {
                    type: 'array',
                    items: {
                        type: "string"
                    }
                }
            }
        };

        var errors = validator.validate(data, model);

        test.expect(1);
        test.ok(!errors.valid);

        test.done();
    },

You should get a ..is a required field if it is required but is null and nullable  (or x-nullable) is not set.
Otherwise it should be treated as an empty field and pass validation.  It should not return the ..is not an array error unless it is a non-null not array value.
Please try using the latest version.

Closing as no response from original requester


Create REST endpoint and methods when someone leaves lobby when the game has ended

https://github.com/sopra-fs23-group-15/envisage-client/commit/407fc9e59c377d2f513191d05af4222702f81903
b9d63829ecb4ad3c69fba201d7539f2e5c89ddc6


[BUG]Rancher Azure AD Access Token login issue

Rancher Server Setup
Rancher version: v2.9.2
Installation option (Docker install/Helm Chart): helm chart
If Helm Chart, Kubernetes Cluster and version (RKE1, RKE2, k3s, EKS, etc): eks
Proxy/Cert Details:
Information about the Cluster
Kubernetes version: 1.29
Cluster Type (Local/Downstream):
If downstream, what type of cluster? (Custom/Imported or specify provider for Hosted/Infrastructure Provider):
AWS
User Information
What is the role of the user logged in? (Admin/Cluster Owner/Cluster Member/Project Owner/Project Member/Custom)
If custom, define the set of permissions: admin
Describe the bug
The Azure AD access token creates a new entry in the secret stored in the cattle-global-data namespace for each user that logs in. This eventually exceeds the Kubernetes secret size limit, resulting in a malformed access token mapping list and preventing new users from logging in.
To Reproduce
Install a Kubernetes cluster with version 1.29 and deploy Rancher version v2.9.2 using the Helm chart.
Create Azure AD groups for each team/project.
Create separate projects for different application team namespaces and map the respective Azure AD group to each project.
As users log in, monitor the Azure AD access token secret growth in the cattle-global-data namespace.
Result
When users from the app teams log in, they are able to see the namespaces they have access to, as we have mapped their Azure AD group to specific projects. However, with each login, the azuread-access-token secret in the cattle-global-data namespace continues to grow. Over time, this causes the secret to exceed the Kubernetes secret size limit, and new users are unable to log in, receiving the following error message:
"An error occurred logging in: Server error while authenticating."
Command to check the size of the secret:
kubectl get secret azuread-access-token -n cattle-global-data -o json --context ek8s-prd-west-admin | jq '.data' | wc -c
Example result:
3048576
The Kubernetes secret size limit is 1MB (1048576 bytes), and once exceeded, it results in login failures.
Expected Result
Even as more users log in, the secret should not grow indefinitely, and Rancher should handle Azure AD access token mappings in a way that does not cause login issues due to the secret size limit.
Screenshots
Screenshot 2024-10-15 at 7 03 49 PM

Validation Template
What was fixed, or what change has occurred
User tokens are no longer cached in the Secret used as a token-cache for access to Azure.
However, a "service account" token is still stored in the cattle-global-data/azuread-access-token Secret
Areas or cases that should be tested
Logging in via Azure.
If you login with this fix with two different users, the number of users stored in the access-token field should not increase.
What areas could experience regressions
Logging in via Azure
This only impacts the "Login" mechanism which was previously storing extra tokens which caused it to get too big and overflow the Secret size.
Are the repro steps accurate/minimal?
Yes

Validated on v2.10-head id fcb4b0e.

#
Priority
Description & Link
PASS/FAIL

1
P0
Verify azure-read-access secret size is not growing as users login
✅ PASS

2
P1
Verify Azure AD auth secrets deleted upon disabling Azure AD auth provider
✅ PASS

3
P1
Verify  azure-read-access secret size doesn't grow after a large amount of users login
✅ PASS

4
P0
Verify azure-read-access secret is not growing upon upgrading Rancher
✅ PASS


Add roundness to dialogs

Somehow feels more natural as the newer Android versions do the same about their system dialogs.

This is great, thank you!


Add initial parsec-tool implementation

Hi guys, this is the initial parsec-tool implementation from issue 202 in parallaxsecond/parsec.
Any and all comments welcome and appreciated! :)

Hi guys. I've addressed your comments as well as done some further work on this. The initial implementation I have now is quite different to what is shown in this patch. Do you want me to close this PR and open a new one or would you rather I just push the results here?

Hi guys. I've addressed your comments as well as done some further work on this. The initial implementation I have now is quite different to what is shown in this patch. Do you want me to close this PR and open a new one or would you rather I just push the new stuff here?

Push it over this one, if someone asks why some things are the way they are, we can point them to this PR and it'll have the full convo.

Is everything changing in the new version? Would it make sense for you to first apply the changes requested here, merge this PR and then open a new one with the new changes?
Maybe it does not make sense if the comments we made are not relevent anymore.

@hug-dev a lot has changed -- I think I will just re-push the code here just to keep the conversation going. 🙂


Plagirized code?

https://youtu.be/C6jJg9Zan7w

Sure is.

Could you stop
On Sat., Feb. 20, 2021, 3:59 p.m. Janik<EMAIL_ADDRESS>wrote:

Sure is.
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/Omcodez1503/Ping-Pong-Game/issues/3#issuecomment-782748560,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/ASHWLECU7D2W4TKE3UAQKADTAAPCDANCNFSM4X5LL3NQ
.

What is Plagiarism?
Plagiarism at UNSW is using the words or ideas of others and passing them off as your own. Plagiarism is a type of intellectual theft.
Plagiarism can take many forms, from deliberate cheating to accidentally copying from a source without acknowledgement. Consequently, whenever you use the words or ideas of another person in your work, you must acknowledge where they came from.
Three steps to learning about plagiarism
It's important to know what plagiarism is, and what form it takes (some common types of plagiarism are listed here). It's also important to know how plagiarism happens. The final step is to develop effective academic skills. Many students who plagiarise do so unintentionally, often because they don't have the academic skills to avoid over-reliance on the work of others or because they aren't sure what constitutes plagiarism. So it's important to take every opportunity to develop your academic skills.
On this site, there are resources on avoiding plagiarism and how to be organised, as well as a list of other resources and links so students can develop good academic practice.
All of us Princeton students are familiar with the infamous “honor code”, but fortunately, most of us don’t experience an overwhelming feeling of nausea each time we hear the word “plagiarism.” On move-in day two weeks ago, as I heaved my suitcase into my room, I saw a poster on the wall just outside of our room that read “Join the Princeton Honor Committee!” My hands began to tremble. I dropped my suitcase—and I if I’d looked down at my chest I would have seen my shirt fluttering along with the practically audible hammering of my heart.
It happened on an innocent Sunday night last spring, the second semester of my freshman year. The night was entirely ordinary, until I received an email from my Writing Sem professor. Subject: “Committee on Discipline Hearing.” Committee on Discipline? What even is that?
First line: “Dear Clara, I regret to inform you that I have some troubling news.” Excusez-moi?
Rest of email: “After thoroughly reviewing your second revision and comparing it to essays submitted for this class in prior years, in addition to having the essay checked by our plagiarism committee, I have noticed certain suspicious affinities. It appears that much of your content was either directly copied or only slightly changed from other academic works…Because academic integrity is at the heart of Princeton’s values, I am deeply troubled by your decision to disregard the norms governing references and attribution.
Accordingly, you are to appear before the Committee on Discipline on Thursday, April 5 at 6 pm… At the time of the hearing, you will be given the opportunity to defend your work in light of these accusations…I sincerely hope that you are exonerated at this hearing.”
Lucky for my mental health, and as you can guess by the fact that I wasn’t expelled, this story has a happy ending. If I hadn’t been so busy repeating the phrase “I can’t get suspended, I am not leaving” over and over again in my head, I might have noticed the people around me coughing and turning bright red. If I’d remembered the date (4/1/2012), I might have not have stood up and announced to the room, my voice shaking uncontrollably, “Guys this is serious. Listen! My writing sem professor thinks I plagiarized!” What are they laughing at?
“Did you?” one of my more composed roommates managed to ask. “NO!” I would be lying if I said I wasn’t hysterical at this point. But luckily my friends couldn’t contain themselves any longer. As if on cue, they simultaneously erupted with laughter. “IS THIS A JOKE?!  I screamed. The volume of their laughter increased. April f***ing fools.
My friends picked correctly when they chose me as the subject of their prank. Just to be clear: I’ve never even considered plagiarizing anything. It turns out that the boys who lived next door to me had figured out the name of my Writing Sem professor, and fabricated the entire thing. Hilarious, right?
I guess you could say I’m gullible for believing that I was being falsely accused of plagiarism. But I like to look at one of the more traumatic experiences of my life in a more positive light. Maybe my reaction was so extreme (or “perfect!”, if you ask my friends) because I can’t imagine having to leave this place before they kick us all out on graduation day. Okay, I’m done. The fact that I’m even psychoanalyzing this proves it got to me. Moral of this story: if any of you reading this are looking for a good prank, look no further

Reported to Github. Plagiarism is not a joke.

ok it will be deleted
On Sat, Feb 20, 2021 at 4:43 PM Janik<EMAIL_ADDRESS>wrote:

Reported to Github. Plagiarism is not a joke.
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
https://github.com/Omcodez1503/Ping-Pong-Game/issues/3#issuecomment-782753918,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/ASHWLEBVGWLGFQCEN4BK3GLTAAUJTANCNFSM4X5LL3NQ
.

--
Om Bhatt

What is Plagiarism?
Plagiarism at UNSW is using the words or ideas of others and passing them off as your own. Plagiarism is a type of intellectual theft.
Plagiarism can take many forms, from deliberate cheating to accidentally copying from a source without acknowledgement. Consequently, whenever you use the words or ideas of another person in your work, you must acknowledge where they came from.
Three steps to learning about plagiarism
It's important to know what plagiarism is, and what form it takes (some common types of plagiarism are listed here). It's also important to know how plagiarism happens. The final step is to develop effective academic skills. Many students who plagiarise do so unintentionally, often because they don't have the academic skills to avoid over-reliance on the work of others or because they aren't sure what constitutes plagiarism. So it's important to take every opportunity to develop your academic skills.
On this site, there are resources on avoiding plagiarism and how to be organised, as well as a list of other resources and links so students can develop good academic practice.
All of us Princeton students are familiar with the infamous “honor code”, but fortunately, most of us don’t experience an overwhelming feeling of nausea each time we hear the word “plagiarism.” On move-in day two weeks ago, as I heaved my suitcase into my room, I saw a poster on the wall just outside of our room that read “Join the Princeton Honor Committee!” My hands began to tremble. I dropped my suitcase—and I if I’d looked down at my chest I would have seen my shirt fluttering along with the practically audible hammering of my heart.
It happened on an innocent Sunday night last spring, the second semester of my freshman year. The night was entirely ordinary, until I received an email from my Writing Sem professor. Subject: “Committee on Discipline Hearing.” Committee on Discipline? What even is that?
First line: “Dear Clara, I regret to inform you that I have some troubling news.” Excusez-moi?
Rest of email: “After thoroughly reviewing your second revision and comparing it to essays submitted for this class in prior years, in addition to having the essay checked by our plagiarism committee, I have noticed certain suspicious affinities. It appears that much of your content was either directly copied or only slightly changed from other academic works…Because academic integrity is at the heart of Princeton’s values, I am deeply troubled by your decision to disregard the norms governing references and attribution.
Accordingly, you are to appear before the Committee on Discipline on Thursday, April 5 at 6 pm… At the time of the hearing, you will be given the opportunity to defend your work in light of these accusations…I sincerely hope that you are exonerated at this hearing.”
Lucky for my mental health, and as you can guess by the fact that I wasn’t expelled, this story has a happy ending. If I hadn’t been so busy repeating the phrase “I can’t get suspended, I am not leaving” over and over again in my head, I might have noticed the people around me coughing and turning bright red. If I’d remembered the date (4/1/2012), I might have not have stood up and announced to the room, my voice shaking uncontrollably, “Guys this is serious. Listen! My writing sem professor thinks I plagiarized!” What are they laughing at?
“Did you?” one of my more composed roommates managed to ask. “NO!” I would be lying if I said I wasn’t hysterical at this point. But luckily my friends couldn’t contain themselves any longer. As if on cue, they simultaneously erupted with laughter. “IS THIS A JOKE?!  I screamed. The volume of their laughter increased. April f***ing fools.
My friends picked correctly when they chose me as the subject of their prank. Just to be clear: I’ve never even considered plagiarizing anything. It turns out that the boys who lived next door to me had figured out the name of my Writing Sem professor, and fabricated the entire thing. Hilarious, right?
I guess you could say I’m gullible for believing that I was being falsely accused of plagiarism. But I like to look at one of the more traumatic experiences of my life in a more positive light. Maybe my reaction was so extreme (or “perfect!”, if you ask my friends) because I can’t imagine having to leave this place before they kick us all out on graduation day. Okay, I’m done. The fact that I’m even psychoanalyzing this proves it got to me. Moral of this story: if any of you reading this are looking for a good prank, look no further

Wat ish pwagiawism?
pwagiawism at unsw ish using da wowds ow ideas of othews and passing them off as youw own. Pwagiawism ish a type of intewwectuaw theft.
pwagiawism can take many fowms, fwom dewibewate cheating to accidentawwy copying fwom a souwce without acknowwedgement. Consequentwy, whenevew u use da wowds ow ideas of anothew pewson in youw wowk, u must acknowwedge whewe dey came fwom.
thwee steps to weawning about pwagiawism
it's impowtant to know wat pwagiawism ish, and wat fowm it takes (some common types of pwagiawism awe wisted hewe). It's awso impowtant to know how pwagiawism happens. Da finaw step ish to devewop effective academic skiwws. Many students who pwagiawise do so unintentionawwy, often because dey dun have da academic skiwws to avoid ovew-wewiance on da wowk of othews ow because dey awen't suwe wat constitutes pwagiawism. So it's impowtant to take evewy oppowtunity to devewop youw academic skiwws.
on dis site, thewe awe wesouwces on avoiding pwagiawism and how to be owganised, as weww as a wist of othew wesouwces and winks so students can devewop gud academic pwactice.
aww of us pwinceton students awe famiwiaw with da infamous “honow code”, but fowtunatewy, most of us don’t expewience an ovewwhewming feewing of nausea each time we heaw da wowd “pwagiawism.” on move-in day two weeks ago, as me heaved my suitcase into my woom, me saw a postew on da waww just outside of ouw woom that wead “join da pwinceton honow committee!” my hands began to twembwe. Me dwopped my suitcase—and me if i’d wooked down at my chest me wouwd have seen my shiwt fwuttewing awong with da pwacticawwy audibwe hammewing of my heawt.
it happened on an innocent sunday night wast spwing, da second semestew of my fweshman yeaw. Da night was entiwewy owdinawy, untiw me weceived an emaiw fwom my wwiting sem pwofessow. Subject: “committee on discipwine heawing.” committee on discipwine? wat even ish that?
fiwst wine: “deaw cwawa, me wegwet to infowm u that me have some twoubwing news.” excusez-moi?
rest of emaiw: “aftew thowoughwy weviewing youw second wevision and compawing it to essays submitted fow dis cwass in pwiow yeaws, in addition to having da essay checked by ouw pwagiawism committee, me have noticed cewtain suspicious affinities. It appeaws that much of youw content was eithew diwectwy copied ow onwy swightwy changed fwom othew academic wowks…because academic integwity ish at da heawt of pwinceton’s vawues, me am deepwy twoubwed by youw decision to diswegawd da nowms govewning wefewences and attwibution.
accowdingwy, u awe to appeaw befowe da committee on discipwine on thuwsday, apwiw 5 at 6 pm… at da time of da heawing, u wiww be given da oppowtunity to defend youw wowk in wight of these accusations…i sincewewy hope that u awe exonewated at dis heawing.”
lucky fow my mentaw heawth, and as u can guess by da fact that me wasn’t expewwed, dis stowy has a happy ending. If me hadn’t been so busy wepeating da phwase “i can’t get suspended, me am not weaving” ovew and ovew again in my head, me might have noticed da peopwe awound me coughing and tuwning bwight wed. If i’d wemembewed da date (4/1/2012), me might have not have stood up and announced to da woom, my voice shaking uncontwowwabwy, “guys dis ish sewious. Listen! my wwiting sem pwofessow thinks me pwagiawized!” wat awe dey waughing at?
“did u?” one of my mowe composed woommates managed to ask. “no!” me wouwd be wying if me said me wasn’t hystewicaw at dis point. But wuckiwy my fwiends couwdn’t contain themsewves any wongew.  Da vowume of theiw waughtew incweased. Apwiw f***ing foows.
my fwiends picked cowwectwy when dey chose me as da subject of theiw pwank. Just to be cweaw: i’ve nevew even considewed pwagiawizing anything. It tuwns out that da boys who wived next doow to me had figuwed out da name of my wwiting sem pwofessow, and fabwicated da entiwe thing.  But me wike to wook at one of da mowe twaumatic expewiences of my wife in a mowe positive wight. Maybe my weaction was so extweme (ow “pewfect!”, if u ask my fwiends) because me can’t imagine having to weave dis pwace befowe dey kick us aww out on gwaduation day. Otay, i’m done. Da fact that i’m even psychoanawyzing dis pwoves it got to me. Mowaw of dis stowy: if any of u weading dis awe wooking fow a gud pwank, wook no fuwthew

Inappwopwiate pawaphwasing
u may have weawned that pawaphwasing ish da appwopwiate way to use wefewence matewiaw. In psychowogy (and many othew discipwines) it isn't. Hewe, pawaphwasing ish defined as: finding da exact sentence ow passage that ish wewevant to youw own papew, wifting it out of da souwce, switching out a few wowds fow synonyms ow we-awwanging da wowds a bit, and dwopping da wesuwting sentence ow passage in youw papew. Pawaphwasing of dis sowt ish actuawwy considewed pwagiawism in psychowogy. When u use infowmation fwom a souwce, da goaw ish to put it entiwewy in youw own wowds. Even when discussing someone ewse's ideas, da weadew stiww assumes that u wwote youw own unique sentences (even if u incwude citations). Doing othewwise, then, ish impwicitwy twying to take cwedit fow someone ewse's wowk and that ish pwagiawism.
why ish pawaphwasing such a pwobwem?
in psychowogicaw wwiting, u awe typicawwy expwaining ow defending a point by using evidence gathewed by othew authows - often muwtipwe authows. Because da uwtimate point u wanna make ish not dependent on da pawticuwaw wowding those othew authows used, da entiwe papew u wwite needs to be in youw own wowds - even in those pwaces whewe u awe discussing someone ewse's weseawch. Onwy in wawe instances wiww da pawticuwaw wowding anothew authow used be impowtant to youw point.
pawaphwasing ow using mowe than a few diwection quotations intewfewes with da "fwow" of youw own wwiting. It ish often difficuwt fow da weadew to see how da pawaphwased ow quoted ideas fit with youw bwoadew discussion because dey have not wead da same souwce matewiaw u have. Thus, in psychowogicaw wwiting, pawaphwasing ish considewed bad wwiting pwactice. Fow simiwaw weasons, using mowe than a few diwect quotes ish awso considewed bad wwiting pwactice.
to avoid da (common) tendency to pawaphwase, twy these tips:
wwite notes about wat u wead using youw own wowds.
befowe u begin wwiting youw papew (ow a powtion of it), cwose aww da owiginaw souwces and cweate a fiwst dwaft using youw own wowds.
u can wefew back to a souwce fow mowe detaiw as pawt of da wevision pwocess.
inappwopwiate pawaphwasing exampwe
(couwtesy of pwofessow pauw c. Smith)
hewe ish an exampwe pawagwaph fwom a souwce:
"long-tewm memowy, that immensewy compwex stowehouse, has awso been most extensivewy studied with da use of vewbaw matewiaws, usuawwy pwesented in da fowm of wong wists. As we shaww see, dis appwoach has wesuwted in some extwemewy impowtant findings, but it has awso been a bit misweading. Aftew aww, wemembewing wists of wowds ish somewhat diffewent fwom wemembewing a convewsation, a wecipe, ow da pwot of a movie" (kwatsky, 1975, p.17).
hewe ish an inappwopwiate pawaphwase:
long tewm memowy ish a compwex stowehouse that has been studied extensivewy using vewbaw matewiaws pwesented in da fowm of wong wists. Whiwe dis appwoach has wesuwted in some impowtant findings, it has been misweading. Remembewing a wist ish not wike wemembewing a discussion ow a movie (kwatsky, 1975).
hewe ish an appwopwiate summawy of that infowmation:
reseawchews usuawwy study wong tewm memowy by having subjects attempt to wecaww awoud items fwom wong wists. Because such a task ish diffewent in impowtant ways fwom da kinds of tasks wong tewm memowy ish usuawwy cawwed upon to pewfowm, ouw findings awe somewhat questionabwe (kwatsky, 1975).
da inappwopwiate pawaphwase ish not weawwy da student's own wowds, but wathew just kwatsky's wowds weawwanged a bit (with a few wowds omitted). A pewson couwd wwite such a pawagwaph without weawwy undewstanding da owiginaw pawagwaph at aww. Da authow of da appwopwiate summawy, on da othew hand, must have undewstood kwatsky's owiginaw pawagwaph. Da meaning of that pawagwaph ish captuwed in da summawy, but da wowds used to expwess that meaning awe da authow's own. Do not incwude matewiaw u do not undewstand (you can awways ask youw pwofessow fow hewp with concepts u dun undewstand).
awso of note: both da appwopwiate and inappwopwiate passages incwuded a souwce citation. U wanna incwude da souwce citation even if u awe not using a diwect quote.  Howevew, incwuding a citation does not change da fact that inappwopwiate pawaphwasing ish pwagiawism.

Inappwopwiate pawaphwasing
u may have weawned that pawaphwasing ish da appwopwiate way to use wefewence matewiaw. In psychowogy (and many othew discipwines) it isn't. Hewe, pawaphwasing ish defined as: finding da exact sentence ow passage that ish wewevant to youw own papew, wifting it out of da souwce, switching out a few wowds fow synonyms ow we-awwanging da wowds a bit, and dwopping da wesuwting sentence ow passage in youw papew. Pawaphwasing of dis sowt ish actuawwy considewed pwagiawism in psychowogy. When u use infowmation fwom a souwce, da goaw ish to put it entiwewy in youw own wowds. Even when discussing someone ewse's ideas, da weadew stiww assumes that u wwote youw own unique sentences (even if u incwude citations). Doing othewwise, then, ish impwicitwy twying to take cwedit fow someone ewse's wowk and that ish pwagiawism.
why ish pawaphwasing such a pwobwem?
in psychowogicaw wwiting, u awe typicawwy expwaining ow defending a point by using evidence gathewed by othew authows - often muwtipwe authows. Because da uwtimate point u wanna make ish not dependent on da pawticuwaw wowding those othew authows used, da entiwe papew u wwite needs to be in youw own wowds - even in those pwaces whewe u awe discussing someone ewse's weseawch. Onwy in wawe instances wiww da pawticuwaw wowding anothew authow used be impowtant to youw point.
pawaphwasing ow using mowe than a few diwection quotations intewfewes with da "fwow" of youw own wwiting. It ish often difficuwt fow da weadew to see how da pawaphwased ow quoted ideas fit with youw bwoadew discussion because dey have not wead da same souwce matewiaw u have. Thus, in psychowogicaw wwiting, pawaphwasing ish considewed bad wwiting pwactice. Fow simiwaw weasons, using mowe than a few diwect quotes ish awso considewed bad wwiting pwactice.
to avoid da (common) tendency to pawaphwase, twy these tips:
wwite notes about wat u wead using youw own wowds.
befowe u begin wwiting youw papew (ow a powtion of it), cwose aww da owiginaw souwces and cweate a fiwst dwaft using youw own wowds.
u can wefew back to a souwce fow mowe detaiw as pawt of da wevision pwocess.
inappwopwiate pawaphwasing exampwe
(couwtesy of pwofessow pauw c. Smith)
hewe ish an exampwe pawagwaph fwom a souwce:
"long-tewm memowy, that immensewy compwex stowehouse, has awso been most extensivewy studied with da use of vewbaw matewiaws, usuawwy pwesented in da fowm of wong wists. As we shaww see, dis appwoach has wesuwted in some extwemewy impowtant findings, but it has awso been a bit misweading. Aftew aww, wemembewing wists of wowds ish somewhat diffewent fwom wemembewing a convewsation, a wecipe, ow da pwot of a movie" (kwatsky, 1975, p.17).
hewe ish an inappwopwiate pawaphwase:
long tewm memowy ish a compwex stowehouse that has been studied extensivewy using vewbaw matewiaws pwesented in da fowm of wong wists. Whiwe dis appwoach has wesuwted in some impowtant findings, it has been misweading. Remembewing a wist ish not wike wemembewing a discussion ow a movie (kwatsky, 1975).
hewe ish an appwopwiate summawy of that infowmation:
reseawchews usuawwy study wong tewm memowy by having subjects attempt to wecaww awoud items fwom wong wists. Because such a task ish diffewent in impowtant ways fwom da kinds of tasks wong tewm memowy ish usuawwy cawwed upon to pewfowm, ouw findings awe somewhat questionabwe (kwatsky, 1975).
da inappwopwiate pawaphwase ish not weawwy da student's own wowds, but wathew just kwatsky's wowds weawwanged a bit (with a few wowds omitted). A pewson couwd wwite such a pawagwaph without weawwy undewstanding da owiginaw pawagwaph at aww. Da authow of da appwopwiate summawy, on da othew hand, must have undewstood kwatsky's owiginaw pawagwaph. Da meaning of that pawagwaph ish captuwed in da summawy, but da wowds used to expwess that meaning awe da authow's own. Do not incwude matewiaw u do not undewstand (you can awways ask youw pwofessow fow hewp with concepts u dun undewstand).
awso of note: both da appwopwiate and inappwopwiate passages incwuded a souwce citation. U wanna incwude da souwce citation even if u awe not using a diwect quote.  Howevew, incwuding a citation does not change da fact that inappwopwiate pawaphwasing ish pwagiawism.

Inappwopwiate pawaphwasing
u may have weawned that pawaphwasing ish da appwopwiate way to use wefewence matewiaw. In psychowogy (and many othew discipwines) it isn't. Hewe, pawaphwasing ish defined as: finding da exact sentence ow passage that ish wewevant to youw own papew, wifting it out of da souwce, switching out a few wowds fow synonyms ow we-awwanging da wowds a bit, and dwopping da wesuwting sentence ow passage in youw papew. Pawaphwasing of dis sowt ish actuawwy considewed pwagiawism in psychowogy. When u use infowmation fwom a souwce, da goaw ish to put it entiwewy in youw own wowds. Even when discussing someone ewse's ideas, da weadew stiww assumes that u wwote youw own unique sentences (even if u incwude citations). Doing othewwise, then, ish impwicitwy twying to take cwedit fow someone ewse's wowk and that ish pwagiawism.
why ish pawaphwasing such a pwobwem?
in psychowogicaw wwiting, u awe typicawwy expwaining ow defending a point by using evidence gathewed by othew authows - often muwtipwe authows. Because da uwtimate point u wanna make ish not dependent on da pawticuwaw wowding those othew authows used, da entiwe papew u wwite needs to be in youw own wowds - even in those pwaces whewe u awe discussing someone ewse's weseawch. Onwy in wawe instances wiww da pawticuwaw wowding anothew authow used be impowtant to youw point.
pawaphwasing ow using mowe than a few diwection quotations intewfewes with da "fwow" of youw own wwiting. It ish often difficuwt fow da weadew to see how da pawaphwased ow quoted ideas fit with youw bwoadew discussion because dey have not wead da same souwce matewiaw u have. Thus, in psychowogicaw wwiting, pawaphwasing ish considewed bad wwiting pwactice. Fow simiwaw weasons, using mowe than a few diwect quotes ish awso considewed bad wwiting pwactice.
to avoid da (common) tendency to pawaphwase, twy these tips:
wwite notes about wat u wead using youw own wowds.
befowe u begin wwiting youw papew (ow a powtion of it), cwose aww da owiginaw souwces and cweate a fiwst dwaft using youw own wowds.
u can wefew back to a souwce fow mowe detaiw as pawt of da wevision pwocess.
inappwopwiate pawaphwasing exampwe
(couwtesy of pwofessow pauw c. Smith)
hewe ish an exampwe pawagwaph fwom a souwce:
"long-tewm memowy, that immensewy compwex stowehouse, has awso been most extensivewy studied with da use of vewbaw matewiaws, usuawwy pwesented in da fowm of wong wists. As we shaww see, dis appwoach has wesuwted in some extwemewy impowtant findings, but it has awso been a bit misweading. Aftew aww, wemembewing wists of wowds ish somewhat diffewent fwom wemembewing a convewsation, a wecipe, ow da pwot of a movie" (kwatsky, 1975, p.17).
hewe ish an inappwopwiate pawaphwase:
long tewm memowy ish a compwex stowehouse that has been studied extensivewy using vewbaw matewiaws pwesented in da fowm of wong wists. Whiwe dis appwoach has wesuwted in some impowtant findings, it has been misweading. Remembewing a wist ish not wike wemembewing a discussion ow a movie (kwatsky, 1975).
hewe ish an appwopwiate summawy of that infowmation:
reseawchews usuawwy study wong tewm memowy by having subjects attempt to wecaww awoud items fwom wong wists. Because such a task ish diffewent in impowtant ways fwom da kinds of tasks wong tewm memowy ish usuawwy cawwed upon to pewfowm, ouw findings awe somewhat questionabwe (kwatsky, 1975).
da inappwopwiate pawaphwase ish not weawwy da student's own wowds, but wathew just kwatsky's wowds weawwanged a bit (with a few wowds omitted). A pewson couwd wwite such a pawagwaph without weawwy undewstanding da owiginaw pawagwaph at aww. Da authow of da appwopwiate summawy, on da othew hand, must have undewstood kwatsky's owiginaw pawagwaph. Da meaning of that pawagwaph ish captuwed in da summawy, but da wowds used to expwess that meaning awe da authow's own. Do not incwude matewiaw u do not undewstand (you can awways ask youw pwofessow fow hewp with concepts u dun undewstand).
awso of note: both da appwopwiate and inappwopwiate passages incwuded a souwce citation. U wanna incwude da souwce citation even if u awe not using a diwect quote.  Howevew, incwuding a citation does not change da fact that inappwopwiate pawaphwasing ish pwagiawism.

Inappwopwiate pawaphwasing
u may have weawned that pawaphwasing ish da appwopwiate way to use wefewence matewiaw. In psychowogy (and many othew discipwines) it isn't. Hewe, pawaphwasing ish defined as: finding da exact sentence ow passage that ish wewevant to youw own papew, wifting it out of da souwce, switching out a few wowds fow synonyms ow we-awwanging da wowds a bit, and dwopping da wesuwting sentence ow passage in youw papew. Pawaphwasing of dis sowt ish actuawwy considewed pwagiawism in psychowogy. When u use infowmation fwom a souwce, da goaw ish to put it entiwewy in youw own wowds. Even when discussing someone ewse's ideas, da weadew stiww assumes that u wwote youw own unique sentences (even if u incwude citations). Doing othewwise, then, ish impwicitwy twying to take cwedit fow someone ewse's wowk and that ish pwagiawism.
why ish pawaphwasing such a pwobwem?
in psychowogicaw wwiting, u awe typicawwy expwaining ow defending a point by using evidence gathewed by othew authows - often muwtipwe authows. Because da uwtimate point u wanna make ish not dependent on da pawticuwaw wowding those othew authows used, da entiwe papew u wwite needs to be in youw own wowds - even in those pwaces whewe u awe discussing someone ewse's weseawch. Onwy in wawe instances wiww da pawticuwaw wowding anothew authow used be impowtant to youw point.
pawaphwasing ow using mowe than a few diwection quotations intewfewes with da "fwow" of youw own wwiting. It ish often difficuwt fow da weadew to see how da pawaphwased ow quoted ideas fit with youw bwoadew discussion because dey have not wead da same souwce matewiaw u have. Thus, in psychowogicaw wwiting, pawaphwasing ish considewed bad wwiting pwactice. Fow simiwaw weasons, using mowe than a few diwect quotes ish awso considewed bad wwiting pwactice.
to avoid da (common) tendency to pawaphwase, twy these tips:
wwite notes about wat u wead using youw own wowds.
befowe u begin wwiting youw papew (ow a powtion of it), cwose aww da owiginaw souwces and cweate a fiwst dwaft using youw own wowds.
u can wefew back to a souwce fow mowe detaiw as pawt of da wevision pwocess.
inappwopwiate pawaphwasing exampwe
(couwtesy of pwofessow pauw c. Smith)
hewe ish an exampwe pawagwaph fwom a souwce:
"long-tewm memowy, that immensewy compwex stowehouse, has awso been most extensivewy studied with da use of vewbaw matewiaws, usuawwy pwesented in da fowm of wong wists. As we shaww see, dis appwoach has wesuwted in some extwemewy impowtant findings, but it has awso been a bit misweading. Aftew aww, wemembewing wists of wowds ish somewhat diffewent fwom wemembewing a convewsation, a wecipe, ow da pwot of a movie" (kwatsky, 1975, p.17).
hewe ish an inappwopwiate pawaphwase:
long tewm memowy ish a compwex stowehouse that has been studied extensivewy using vewbaw matewiaws pwesented in da fowm of wong wists. Whiwe dis appwoach has wesuwted in some impowtant findings, it has been misweading. Remembewing a wist ish not wike wemembewing a discussion ow a movie (kwatsky, 1975).
hewe ish an appwopwiate summawy of that infowmation:
reseawchews usuawwy study wong tewm memowy by having subjects attempt to wecaww awoud items fwom wong wists. Because such a task ish diffewent in impowtant ways fwom da kinds of tasks wong tewm memowy ish usuawwy cawwed upon to pewfowm, ouw findings awe somewhat questionabwe (kwatsky, 1975).
da inappwopwiate pawaphwase ish not weawwy da student's own wowds, but wathew just kwatsky's wowds weawwanged a bit (with a few wowds omitted). A pewson couwd wwite such a pawagwaph without weawwy undewstanding da owiginaw pawagwaph at aww. Da authow of da appwopwiate summawy, on da othew hand, must have undewstood kwatsky's owiginaw pawagwaph. Da meaning of that pawagwaph ish captuwed in da summawy, but da wowds used to expwess that meaning awe da authow's own. Do not incwude matewiaw u do not undewstand (you can awways ask youw pwofessow fow hewp with concepts u dun undewstand).
awso of note: both da appwopwiate and inappwopwiate passages incwuded a souwce citation. U wanna incwude da souwce citation even if u awe not using a diwect quote.  Howevew, incwuding a citation does not change da fact that inappwopwiate pawaphwasing ish pwagiawism.


Make RPC call synchronous in Fabric Sync

We need to make all RPC call synchronous in Fabric Sync to grantee the correct sequence of Fabric Sync.
I have explored all possible options to make an RPC call synchronous but found that busy-waiting is the most reliable option so far.
Since the response callback and sendCommand are triggered from the same thread, all semaphore-based synchronization solutions cause sendCommand to deadlock.
A better option would be to use the pw client synchronous call wrappers, but they are quite expensive and not available in the current nanopb integration in the CHIP project.
Fixes #33784

My requirement is very simple, make the following function return only after the the operation completes, it is better to halt all following operations to make Fabric Sync in sequence.
...
Could you elaborate more how to achieve this in another way? OnOpenCommissioningWindowCompleted and OpenCommissioningWindow are both called from the same thread, so conditional_varible does not work here.

Please describe what operations need to be done in what order.
Generally if you need to move around specific states (e.g. initiate something after something else) you should create a state machine that has transitions at specific events (e.g. rpc response received/ rpc error etc). If you build such a state machine, you will also have the benefit of it being testable code.

My requirement is very simple, make the following function return only after the the operation completes, it is better to halt all following operations to make Fabric Sync in sequence.
...
Could you elaborate more how to achieve this in another way? OnOpenCommissioningWindowCompleted and OpenCommissioningWindow are both called from the same thread, so conditional_varible does not work here.

Please describe what operations need to be done in what order. Generally if you need to move around specific states (e.g. initiate something after something else) you should create a state machine that has transitions at specific events (e.g. rpc response received/ rpc error etc). If you build such a state machine, you will also have the benefit of it being testable code.

I want to make all RPC call synchronous, so that I don't have to maintain a state machine that has transitions at specific events.
Updated the PR, the WaitForResponse function uses a condition variable to wait for the response or timeout. The response completion callbacks (OnAddDeviceResponseCompleted and OnRemoveDeviceResponseCompleted) set the response flags and notify the waiting thread. This avoids busy waiting and makes the code more efficient and responsive.


Unnecessary list comprehension in sum, min, max

It's not part of PIE802 so maybe this should go somewhere else but I noticed https://github.com/charliermarsh/ruff/pull/3149 doesn't include built-in aggregators like sum(), min(), max().
Suggestion is to auto-fix:
# error
sum([i**2 for i in range(10)])

# ok
sum(i**2 for i in range(10))

Maybe this is covered by flake8-comprehensions? Looked but couldn't find it.

Hmm, it looks like these used to be covered by flake8-comprehensions rule C407, which included these eight built-ins:

all
any
frozenset
max
min
sorted
sum
tuple

C407 was dropped in its entirety in 2021, mostly due to bugs introduced by the subtle behavior changes: https://github.com/adamchainz/flake8-comprehensions/issues/247
There was a proposal in 2022 to add it back for any and all, which have the potential for more significant performance gains due to the possibility of short-circuiting the rest of the generator: https://github.com/adamchainz/flake8-comprehensions/issues/426
The proposal did not get implemented because flake8-pie added PIE802 to cover any and all. Of course, these two are the most likely to cause a change in behavior, due to short-circuiting of side effects where the others are guaranteed to consume the entire generator.
Short-circuiting aside, they all reduce memory consumption.

This would be a great candidate for an opinionated RUFF rule though as they are useful check for the many cases even if do have some false positive. I would even go so far as to recommend including itertools functions as well since they all take in iterables anyway.

I would even go so far as to recommend including itertools functions as well since they all take in iterables anyway.

The more, the merry! :)

We should also include more-itertools.

An autofix for this is not particularly safe of course - it can change the behavior of code even when there is no short circuiting involved:
COUNTER = 0

class Addable:
    def __init__(self, i, source=None):
        global COUNTER
        COUNTER += 1
        self.i = i
        print(f"__init__({self.i}, source={source})")

    def __add__(self, other):
        return Addable(COUNTER + self.i + other.i, source="__add__")

    def __radd__(self, other):
        return Addable(
            COUNTER + self.i + (other.i if isinstance(other, Addable) else other),
            source="__radd__",
        )

    def __repr__(self):
        return str(self.i)

print("List comprehension:")
COUNTER = 0
result_listcomp = sum([Addable(i, source="listcomp") for i in range(3)])
print(result_listcomp)
print()

print("Generator:")
COUNTER = 0
result_generator = sum(Addable(i, source="generator") for i in range(3))
print(result_generator)
print()

assert result_listcomp == result_generator

Output:
List comprehension:
__init__(0, source=listcomp)
__init__(1, source=listcomp)
__init__(2, source=listcomp)
__init__(3, source=__radd__)
__init__(8, source=__add__)
__init__(15, source=__add__)
15

Generator:
__init__(0, source=generator)
__init__(1, source=__radd__)
__init__(1, source=generator)
__init__(5, source=__add__)
__init__(2, source=generator)
__init__(12, source=__add__)
12

Traceback (most recent call last):
  File "/home/mil/Development/uavforecast/test.py", line 36, in <module>
    assert result_listcomp == result_generator
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AssertionError

The rationale for this lint in the case of any and all is strong, because any and all can short-circuit and the generator version can potentially avoid many loops in the case of a large iterable; the comprehension prevents short-circuiting.
For cases like min, max, and sum where the input iterable will always be fully exhausted, in Python 3.12 the comprehension version is generally a bit faster than the generator version. (I'm using https://gist.github.com/carljm/39ccaaddf3ef7a4cb018264b7282f05f to benchmark, derived from https://gist.github.com/smithdc1/7825842972afe05ad2f457e8b9fbc890). Results for all of sum, max, and min are pretty much the same:
.....................
list_comprehension small: Mean +- std dev: 1.39 us +- 0.01 us
.....................
generator small: Mean +- std dev: 2.04 us +- 0.01 us
.....................
list_comprehension large: Mean +- std dev: 17.5 ms +- 0.5 ms
.....................
generator large: Mean +- std dev: 23.6 ms +- 0.5 ms

The current documentation for the any/all version of the lint is a bit misleading, IMO. It says the performance benefit is from avoiding overhead of list creation, but it uses an example case that (accidentally?) maximizes the short-circuiting benefits (the first item in range(1000) in 0, so all will short-circuit immediately); the actual benefit here is mostly from the short-circuiting. If we modify that benchmark ever so slightly to use the numbers from 1 to 1000 instead of 0 to 1000, the claimed 40x performance benefit vanishes, and again the comprehension version is a bit faster:
➜ python -m timeit "all([i for i in range(1, 1000)])"
20000 loops, best of 5: 12.1 usec per loop

➜ python -m timeit "all(i for i in range(1, 1000))"
20000 loops, best of 5: 18 usec per loop

The reason for this is that while the comprehension does have overhead to create a list, generators also have quite a bit of interpreter overhead, as they have to yield on each iteration; in particular, a function like the sum/min/max builtins that is written in C and can use the underlying C-level tp_next directly on a list is quite efficient at iterating a list, and is much less efficient with a generator that has to yield through the interpreter on every iteration; this more than cancels out the list allocation overhead.
I don't think we should over-pivot here based on current CPython performance, as performance characteristics change over time, and there's a reasonable possibility that faster-cpython may be able to improve the performance of generators in future versions. And even today, the generator version will be much more memory-efficient for large data than the comprehension one.
But I do want to double-check: given the above performance context, do we still think it makes sense to extend this autofix to sum, min, and max? The fix is semantically unsafe, it will probably make performance a bit worse, and it will improve memory usage.

cc @charliermarsh @MichaReiser ^

I'm a bit torn.
I'm not sure if I'm convinced of the "unsafety" from https://github.com/astral-sh/ruff/issues/3259#issuecomment-1454335988 — I feel like we might have other safe fixes that can be broken by operator overloads and global state. Is there more that makes it semantically unsafe?

Wow, learned a lot from your comment -- thank you!
I think the "unsafety" is okay given that we already have the same problem (in theory) with any and all, unless I'm mistaken. I care more about whether we should recommend a pattern that fares worse on the microbenchmarks. I'm leaning towards saying "yes, we should still add sum, min, and max", since (1) it does improve memory usage (so it's not totally negative), (2) the performance hit is likely non-critical (though, on that note, we should improve the existing docs), and (3) it is a "simplification" of the user's code to pass the generator directly.
Perhaps we leave this as an open question for a day or so, though, to give others on the issue time to chime in.

we might have other safe fixes that can be broken by operator overloads and global state. Is there more that makes it semantically unsafe?

I don't think there's more than that; the unsafety is due to laziness. With the comprehension version, the value expression (i.e. expr in sum([expr for x in y])) is evaluated eagerly for all elements in the inner iterable first, and then the resulting values are processed one by one by the outer fold function (sum or min or max). With the generator version, the value expression is lazily evaluated one item at a time and then immediately processed by the fold function. This ordering difference can be seen in @matthewlloyd's example. For this difference to be observable, there does need to be some kind of shared (not necessarily global) state between the elements, and folding of an element needs to have a side effect on that state, which I think does imply an override of some magic method (either addition or comparison.)
The existing autofix for any and all is actually more unsafe, for the same reason it can provide a perf win: short-circuiting. This unsafety doesn't require any magic methods with shared state, it just requires any kind of externally visible side effect of iteration at all, because with the short-circuiting generator version, that side effect just may not happen for a bunch of items in the iterable.
My feeling is that unsafety is unsafety, even if you have to use advanced features of the language to trigger it -- people stretch Python in all kinds of ways! So I would consider this autofix unsafe in all variants.  It makes sense to me that lots of code might not really care about the perf either way and may as well just be simpler.
I'll push a docs-only PR for now to clarify the current docs, and wait a day or so on the actual autofix extension.

Sounds good to me! Thanks for the response.

Attached PR adds sum, min, and max as requested in the initial issue here.
I'm inclined to call that complete for this issue, and defer itertools and more_itertools funcs. One thought there (thanks @AlexWaygood) is that in the future if ruff gains type support, we could do this generally for any function typed as taking an iterable, which would naturally adapt to future additions to itertools. That seems a lot nicer than hardcoding lists of functions for modules that may change over time.


Create CONTRIBUTING.md file

I would like to create a CONTRIBUTING.md file so that new comers will get to know the basic principles of contributing

Please assign me

Sure Sure


Do you have any plans to support .net core 3.1?

Do you have any plans to support .net core 3.1?

Yes, working on it

good job

great job

Solved in version 2.3.0, added .net core support


import module can't use in template

I import a module in component.vine.ts like
// component.vine.ts
import { foo } from 'foo.ts'

export function component() {
  return vine`
    <div :class="foo()"></div>
  `
}

// foo.ts
export function foo() {
  // more
  return ...
}

It have a error $setup.foo is not a function

in 0.1.34 can use

Thanks for your investigation and very sorry to bring you this bug in our recent updates.
This is because in development mode,@vue/compiler-dom produces separated compile result just like this:
const __sfc__ = {
  __name: 'App',
  setup(__props, { expose: __expose }) {
  __expose();

const msg = ref('Hello World!')

const __returned__ = { msg, ref, get foo() { return foo } }
Object.defineProperty(__returned__, '__isScriptSetup', { enumerable: false, value: true })
return __returned__
}

};
import { toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, vModelText as _vModelText, withDirectives as _withDirectives, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock } from "vue"
function render(_ctx, _cache, $props, $setup, $data, $options) {
  return (_openBlock(), _createElementBlock(_Fragment, null, [
    _createElementVNode("h1", null, _toDisplayString($setup.msg), 1 /* TEXT */),
    _createElementVNode("div", {
      onClick: _cache[0] || (_cache[0] = $event => ($setup.foo()))
    }, "ddd"),
    _withDirectives(_createElementVNode("input", {
      "onUpdate:modelValue": _cache[1] || (_cache[1] = $event => (($setup.msg) = $event))
    }, null, 512 /* NEED_PATCH */), [
      [_vModelText, $setup.msg]
    ])
  ], 64 /* STABLE_FRAGMENT */))
}
__sfc__.render = render
__sfc__.__file = "src/App.vue"
export default __sfc__

And our Vine function component's context only contains a transformed version AST, which doesn't have a analyzable expression 'foo()' to extract that identifier, it's already a $setup.foo().
So we need to obtain a parsed AST from compilerDOM.parse( ... ) for import-usage-check.ts to walk through and analyze.
This issue should be fixed in v0.1.39


Fix secondary database catch-ups

Motivation
This PR circumvents the issues in #1290. The real issue lies in a bug in RocksDB, which was fixed in v6.25.0, however the latest Rust rocksdb v0.17 crate only supports RocksDB v6.20.3.
The issue of the secondary database state rolling back occurred only when calling try_catch_up_secondary when the secondary was already caught up with the primary. To get around this, the PR gives the secondary database access to the primary database's latest block. This allows us to call try_catch_up_secondary only when there is actual state to be updated.

@raychu86 Are you sure any of the RPC line changes here make a difference?
From what I can tell, it seems just updating the logic in the reader loop in LedgerState in the PR would also work?

Closing as we switched to primary for now. Once rust-rocksdb is updated, we should be able to switch back without this change.


Memory leaks?

My instance of burrower runs out of memory on 2G limit.
This is the graph showing the memory usage. You can see it hits the 2G memory limit every few hours and gets killed.

That's false positive. -Xmx option solved this for me.


Add pow as supported operation for ParameterExpression

Summary
Adds powering for qiskit.circuit.ParameterExpression allowing to use a**n, n**a, a**b, pow(a,b) etc. for ParameterExpressions a, b and numbers n.
Details and comments
Minimal change using default support of pow by Sympy/Symengine.
Also added pow to list of operators in TestParameterExpressions test case for unit testing.
Fixes #8959
Changelog: New Feature

Pull Request Test Coverage Report for Build<PHONE_NUMBER>

4 of 4 (100.0%)  changed or added relevant lines in 1 file are covered.
25 unchanged lines in 3 files lost coverage.
Overall coverage decreased (-0.03%) to 85.901%

Files with Coverage Reduction
New Missed Lines
%

qiskit/extensions/quantum_initializer/squ.py
2
84.15%

crates/qasm2/src/lex.rs
5
91.16%

crates/qasm2/src/parse.rs
18
96.67%

Totals

Change from base Build<PHONE_NUMBER>:
-0.03%

Covered Lines:
65904

Relevant Lines:
76721

💛  - Coveralls

It seems that the Windows version (of Symengine I assume) introduces a small numerical error in pow that leads to some of the tests to fail. Not sure how to deal with this? Just loosen the test to only assert almost equal?

@jakelishman Sounds good. I will add new tests for pow then (probably this weekend). Will opt for the fuzzy matches (mainly because the issue doesn't appear on Linux and I have no Windows environment for testing, so this seems easier).

In TestParameterExpressions I changed supported_operations to a dictionary with values indicating tolerance for fuzzy comparison. This shouldn't break anything and leave the option to add more operations in the future.
I also used the opportunity to add a further test that asserts $x^y = exp(y log(x))$, hence testing both pow and exp, log methods (even though this mainly tests sympy functionality, that way exp, log get called at least once, which in my understanding they haven't - I was wrong about trigonometric functions which do have tests).
I hope the tests pass now (they did locally for me).


GSF needs a logo

The website would look much nicer with a logo. Wouldn't it be nice to have one?

Did you get a chance to see this?

(made by Eric)

Yes, we're working on some variations for the 12.0.1 release

The latest candidates

the 3rd one looks like a winner for fit on the home page

Let me know if you need different iterations.

Fixed in 12.0.1


Missed 6 blocks on in 2 cycles

I missed 6 blocks on in 2 cycles but process all 225 endorsements. It kind of strange....

What version are you running? What is your hash rate? Are you using your own node or the public ones?

Public nodes will likely provide lower bakerates unfortunately as they are shared and can be slow. I am putting together an optimized baking node that will incur a small fee but will be faster for baking and more affordable than runnung your own node.

That good news. Let me know when I can move to your node.


Solve any Linear Equation in One Variable

C++ Program to Solve any Linear Equation in One Variable

@veblush

Is a free t-shirt really worth the price of your dignity/


How do tag "keep" and "delete" accurately correspond to the input token ?

I created a similar model for text editing, but when the length of the input text is too long, the number of "delete" and "keep" tags output by the decoder is not equal to the input length

If the input has more than max_seq_length wordpieces, the input and the label sequence are truncated (https://github.com/google-research/lasertagger/blob/master/bert_example.py#L169-L170).


The best way dynamically add fragment to NestedScrollView?

For example, instead
   <include
                layout="@layout/bottom_sheet_content"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:fitsSystemWindows="true" />

Use
            <FrameLayout
                 android:id="@+id/bottom_sheet_content"
                 android:layout_width="match_parent"
                 android:layout_height="match_parent"
                 android:fitsSystemWindows="true" />

and commit fragment, for example by button click
TestFragment testFragment = (TestFragment) getSupportFragmentManager()
                        .findFragmentById(R.id.bottom_sheet_content);

                FragmentTransaction transaction = getSupportFragmentManager()
                        .beginTransaction()
                        .replace(R.id.bottom_sheet_content, TestFragment.newInstance());

                transaction.commit();

Right now in sample it works incorrect.

Hello,
We wanted to keep sample project easy to understand how to use the lib, but in real life you usually use a Fragment like you are trying.
You can use something like this:
            android:id="@+id/bottom_sheet_fragment"
            android:name="xx.xxx.BottomSheetFragment_"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:fitsSystemWindows="true"
            tools:layout="@layout/bottom_sheet_content" />

the _ at the end of xx.xxx.BottomSheetFragment is because I took it from a real project in where I'm using Android Annotations.

@miguelhincapie thank you for quick answer! Do yo mean use:

Yeah! you can handle the fragment like any simple fragment, this Lib doesn't care about or don't touch anything about the content inside "include" or "fragment". I mean this library only cares about 3 things:

BottomSheet got anchor_point state
Parallax effect in the backdrop (image, view, viewpager, etc)
The 2 appbarlayout the app shows depends on the current bottomsheet's state.

You can do what you said before: .replace(R.id.bottom_sheet_content, TestFragment.newInstance());
If you get stuck trying it I can upload a more detailed sample to the project showing it... but I trusth you can do it ;)

Thank you!
I'll try to make a fork of the library and show the problem. I think it is not related with the BottomSheetBehaviorGoogleMapsLike. The problem is that if NestedScrollView will be created with an empty View (container for fragment) and after add fragment to the View (by button click) then will not works  correct (View doesn't render fragment content). But if add fragment in onViewCreated method then all works correct.

I created fork and reproduced problem described above you can see my code to understand the problem.
Code:
https://github.com/ZherebtsovAlexandr/CustomBottomSheetBehavior/blob/master/app/src/main/java/co/com/parsoniisolutions/custombottomsheetbehavior/sample/MainActivity.java#L108
See short giff:

ohhh I get it!
I have same problem in a big project... I was thinking it was something wrong in my code (I'm using deep link) to open some views with this lib and I'm facing same problem.
I know about some bugs related to resizing original bottomsheet and the works around it, but I have not found anything for this one you are showing.
If you take a look when the components get "refreshed", you will see its happening when you hide/unhide any item.
Next code is what I'm using when I'm changing the content of the bottomsheet cuz a weird bug related to original BottomSheet.
        ViewTreeObserver observer = bottom_sheet_principal_container.getViewTreeObserver();
        observer.addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
            @Override
            public void onGlobalLayout() {
                fixBottomSheetHeight();
                if (bottom_sheet_principal_container == null)
                    return;
                bottom_sheet_sucursal_principal_container.getViewTreeObserver().removeOnGlobalLayoutListener(this);
            }
        });

private void fixBottomSheetHeight() {
        if (reciclerview == null)
            return;
        Display display = getActivity().getWindowManager().getDefaultDisplay();
        Point size = new Point();
        display.getSize(size);
        int height = size.y;

        ViewGroup.MarginLayoutParams p = (ViewGroup.MarginLayoutParams) reciclerview.getLayoutParams();

        if (bottom_sheet_principal_container.getHeight() < height)
            p.setMargins(p.leftMargin, p.topMargin, p.rightMargin, p.bottomMargin + (height - bottom_sheet_principal_container.getHeight()));
        else
            p.setMargins(p.leftMargin, p.topMargin, p.rightMargin, getResources().getDimensionPixelSize(R.dimen.term_cond_text_margin));

        reciclerview.requestLayout();
    }

Let's find whats going on xD.

By the way, have you tried using
.post(new Runnable() {...

when you are swiping/adding new fragment?

@miguelhincapie not tried, I added fragment in main thread. What give this?

Issue related with onLayoutChild method, i have noticed that parent.onLayoutChild(child, layoutDirection); doesn't call after added fragment.

This hack works http://stackoverflow.com/a/35804525/1890996
I using now
I click button for showing bottom sheet
btnShowBottomSheet.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {

                FragmentManager fragmentManager = getSupportFragmentManager();

                if (fragmentManager.getBackStackEntryCount() > 0) {
                    fragmentManager.popBackStackImmediate();
                    fragmentManager
                            .beginTransaction()
                            .replace(R.id.bottom_sheet_fragment, TestFragment.newInstance("From runtime"))
                            .addToBackStack(null)
                            .commit();
                } else {
                    fragmentManager
                            .beginTransaction()
                            .replace(R.id.bottom_sheet_fragment, TestFragment.newInstance("From runtime"))
                            .commit();
                }

                behavior.setState(BottomSheetBehaviorGoogleMapsLike.STATE_COLLAPSED);
            }
        });

And mannually call onLayoutChild in callback :
 behavior.addBottomSheetCallback(new BottomSheetBehaviorGoogleMapsLike.BottomSheetCallback() {
            @Override
            public void onStateChanged(@NonNull View bottomSheet, int newState) {
                switch (newState) {
                     ...
                    case BottomSheetBehaviorGoogleMapsLike.STATE_COLLAPSED:
                        Log.d("bottomsheet-", "STATE_COLLAPSED");
                        bottomSheet.requestLayout();
                        behavior.onLayoutChild(coordinatorLayout, bottomSheet, ViewCompat.LAYOUT_DIRECTION_LTR);
                        break;
                     ...
                }
            }

        });

Well being hack or not if it works I will use it too hahahaha. I need it for the current app I'm finishing.

Have you seen Recent Support Library Revisions? they are talking about Fragment transactions. I'm gonna take a look at it to see if that can help us

Place this solution in the example! This will greatly help those who will use this library.

At this I'm full time with some personal project, I will do it when I can or if you can do it, I appreciate it.


OcTree segfaults during FCLShapeCache invalidation

Description
This problem, which very rarely happens, has haunted me for the last couple of years. The last time it happened was more than 2 years ago, and recently I got hit by it again.
The coredump of segmentation fault is as follows:
Program terminated with signal SIGSEGV, Segmentation fault.
#0  0x00007fae1b30b03e in octomap::OcTreeBaseImpl<octomap::OcTreeNode, octomap::AbstractOccupancyOcTree>::deleteNodeRecurs (this=0x7fad5c5ed420, node=0x7fad00000003) at /opt/ros/noetic/include/octomap/OcTreeBaseImpl.hxx:662
Thread 1 (Thread 0x7fad857fa700 (LWP 508197)):
#0  0x00007fae1b30b03e in octomap::OcTreeBaseImpl<octomap::OcTreeNode, octomap::AbstractOccupancyOcTree>::deleteNodeRecurs(octomap::OcTreeNode*) (this=0x7fad5c5ed420, node=0x7fad00000003) at /opt/ros/noetic/include/octomap/OcTreeBaseImpl.hxx:662
... bunch of recursive deleteNodeRecurs calls...
#15 0x00007fae1b30b061 in octomap::OcTreeBaseImpl<octomap::OcTreeNode, octomap::AbstractOccupancyOcTree>::deleteNodeRecurs(octomap::OcTreeNode*) (this=0x7fad5c5ed420, node=0x7fad5d0725d0) at /opt/ros/noetic/include/octomap/OcTreeBaseImpl.hxx:662
#16 0x00007fae1b30b107 in octomap::OcTreeBaseImpl<octomap::OcTreeNode, octomap::AbstractOccupancyOcTree>::clear() (this=0x7fad5c5ed420) at /opt/ros/noetic/include/octomap/OcTreeBaseImpl.hxx:512
#17 octomap::OcTreeBaseImpl<octomap::OcTreeNode, octomap::AbstractOccupancyOcTree>::~OcTreeBaseImpl() (this=0x7fad5c5ed420, __in_chrg=<optimized out>) at /opt/ros/noetic/include/octomap/OcTreeBaseImpl.hxx:69
#18 0x00007fae0929e5ac in fcl::OcTree<double>::~OcTree() () at /opt/ros/noetic/lib/x86_64-linux-gnu/libfcl.so.0.6
#19 0x00007fae12fb9040 in std::_Sp_counted_ptr<collision_detection::FCLGeometry*, (__gnu_cxx::_Lock_policy)2>::_M_dispose() () at /opt/ros/noetic/lib/libmoveit_collision_detection_fcl.so.1.1.13
#20 0x00007fae12fbba2c in std::_Rb_tree<std::weak_ptr<shapes::Shape const>, std::pair<std::weak_ptr<shapes::Shape const> const, std::shared_ptr<collision_detection::FCLGeometry const> >, std::_Select1st<std::pair<std::weak_ptr<shapes::Shape const> const, std::shared_ptr<collision_detection::FCLGeometry const> > >, std::owner_less<std::weak_ptr<shapes::Shape const> >, std::allocator<std::pair<std::weak_ptr<shapes::Shape const> const, std::shared_ptr<collision_detection::FCLGeometry const> > > >::_M_erase_aux(std::_Rb_tree_const_iterator<std::pair<std::weak_ptr<shapes::Shape const> const, std::shared_ptr<collision_detection::FCLGeometry const> > >) () at /opt/ros/noetic/lib/libmoveit_collision_detection_fcl.so.1.1.13
#21 0x00007fae12fb1519 in collision_detection::cleanCollisionGeometryCache() () at /opt/ros/noetic/lib/libmoveit_collision_detection_fcl.so.1.1.13
#22 0x00007fae1ab69440 in collision_detection::World::notify(std::shared_ptr<collision_detection::World::Object const> const&, collision_detection::World::Action) () at /opt/ros/noetic/lib/libmoveit_collision_detection.so.1.1.13
#23 0x00007fae1ab696b7 in collision_detection::World::removeObject(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) () at /opt/ros/noetic/lib/libmoveit_collision_detection.so.1.1.13
#24 0x00007fae1aae5b96 in planning_scene::PlanningScene::processCollisionObjectRemove(moveit_msgs::CollisionObject_<std::allocator<void> > const&) () at /opt/ros/noetic/lib/libmoveit_planning_scene.so.1.1.13
#25 0x00007fae1aaf8f0b in planning_scene::PlanningScene::processCollisionObjectMsg(moveit_msgs::CollisionObject_<std::allocator<void> > const&) () at /opt/ros/noetic/lib/libmoveit_planning_scene.so.1.1.13
#26 0x00007fae1aaf9392 in planning_scene::PlanningScene::setPlanningSceneDiffMsg(moveit_msgs::PlanningScene_<std::allocator<void> > const&) () at /opt/ros/noetic/lib/libmoveit_planning_scene.so.1.1.13

I have spent a significant time to find the root cause of the problem, but there is still one missing piece, which I would love to have a helping hand. Before that piece, let me ask two important introductory questions:
Q: How the octomap::OcTree inside the FCL Shape Cache go into destruction?
A: If we would have used octomap_monitor_->getOcTreePtr() everywhere to retrieve a shared_ptr to the monitored octomap::OcTree (collision_detection::OccMapTree to be pedantic in our case, which extends octomap::OcTree), then such a destruction would not happen. But that is not the case. There are two critical places that construct a whole different collision_detection::OccMapTree object. If this object's ref count reaches 0, the destruction stage initiates. This explains how.
Q: Why the octomap::OcTree inside the FCL Shape Cache go into destruction?
A: It takes at least two planning_scene::PlanningScene objects with different lifetimes.  The following pseudocode illustrates it:
auto scene_of_psm = psm->getPlanningScene();
moveit_msgs::PlanningScene msg; <A diff planning_scene msg with a non-empty octomap>
scene_of_psm->setPlanningSceneDiffMsg(msg);
ASSERT_TRUE(scene->getWorld()->hasObject(planning_scene::PlanningScene::OCTOMAP_NS));

At this time, FCLShapeCache contains a key-value pair as shape->octree of scene_of_psm, let's call them sOT1->OT1.

moveit_msgs::PlanningScene scene_msg;
 {
    planning_scene_monitor::LockedPlanningSceneRO locked_scene_ro(psm);
    locked_scene_ro->getPlanningSceneMsg(scene_msg);
 }
{
    planning_scene::PlanningScenePtr other_scene =
        std::make_shared<planning_scene::PlanningScene>(psm->getRobotModel());
    // Creates sOT2 and OT2, also updates the FCL Shape cache with them.
    ASSERT_TRUE(other_scene->usePlanningSceneMsg(scene_msg));
    ASSERT_TRUE(other_scene->getWorld()->hasObject(planning_scene::PlanningScene::OCTOMAP_NS));
}

FCLShapeCache now contains a key-value pair as shape->octree of other_scene, which are sOT2->OT2. Now, there is an important bit. Beware that other_scene went out of scope. The shape corresponding to its unique octree (i.e. sOT2) reached the ref_cnt=0. The FCLShapeCache will notice it when cleanCollisionGeometryCache is called, but not now. The following statement triggers the cache invalidation chain reaction that can be seen in the coredump:
scene_of_psm->getWorldNonConst()->removeObject(planning_scene::PlanningScene::OCTOMAP_NS);

cleanCollisionGeometryCache calls for a forced cleanup of expired key-value pairs. Expiration is checked on the key, a const weak shared_ptr to shapes::Shape polymorphic types (in our case sOT2). The destruction happens on the value, which is of type FCLGeometryConstPtr, which is a wrapper on top of OT2. This explains why. Following logs also show the flow of events:
[ INFO] [1724780485.232404095]: Created parent shape for octree at 0x562d03a5fb80
[ INFO] [1724780485.232447396]: Collision data structures for <octomap> retrieved from cache with root node: 0x562d03a5bb50
[ INFO] [1724780485.232471962]: Octree ptr addr from obj shape: 0x562d03a5fb80 - with total sp-count: 2 - with root node: 0x562d03a5bb50 - with parent shape addr: 0x562d03a5b230 - with parent shape sp-count: 2
[ INFO] [1724780485.232858935]: Created parent shape for octree at 0x562d03900340
[ INFO] [1724780485.232905622]: Collision data structures for <octomap> retrieved from cache with root node: 0x562d03a5f550
[ INFO] [1724780485.232939095]: Octree ptr addr from obj shape: 0x562d03900340 - with total sp-count: 2 - with root node: 0x562d03a5f550 - with parent shape addr: 0x562d038fd060 - with parent shape sp-count: 2
[ INFO] [1724780485.233034593]: Parent shape of <octomap> with root node: 0x562d03a5f550 seems to have expired. Removing from the cache!

Now comes the missing piece. For the abovementioned coredump to happen, there has to be a simultaneous write operation going on OT2 via a raw pointer (if there is another shared pointer instance, then the destruction would not start since ref_count would not be 0) at the time of destruction, such that a prune or delete creates a data race. Nevertheless, I could not find such a usage in MoveIt even though I stringently inspected the codebase. All octomap::OcTree usages are via shared pointers and they are even const. If anyone can think of a way that this could happen, I'd love to hear it.
The only remaining possibility I see is a broken collision_detection::OccMapTree at the time of construction in createOctomap method such that a NULL child node slept in the OcTree until destruction.

How to fix?
Whenever a collision_detection::OccMapTree is required, use the one from OccupancyMapMonitor with octomap_monitor_->getOcTreePtr(). This way the ref count never reaches 0, which means no destruction.
Besides, there is an additional problem in allowing other instances of  collision_detection::OccMapTree. See the following snippet:
auto scene_of_psm = psm->getPlanningScene(); // Assume it already contains an octomap shape constructed with the octree pointer received from octomap_monitor_
moveit_msgs::PlanningScene msg; <A diff planning_scene msg with a non-empty octomap shape>
scene_of_psm->setPlanningSceneDiffMsg(msg);

The first line refers to here. However, at the end a different collision_detection::OccMapTree than the monitored one resides in the octomap shape. Typically, we trigger a scene update event after overwriting the scene of PlanningSceneMonitor:
psm->triggerSceneUpdateEvent(UPDATE_SCENE);

which causes the scenePublishingThread to run one cycle. In its loop body, it acquires a read lock on the monitored octree, however the scene_of_psm actually contains a different octree, which makes that lock useless. Furthermore, locking the monitored octree whenever a read operation takes place on PlanningSceneMonitors scene_ shows that this is an implicit assumption in the codebase: Any octomap shape in the planning_scene::PlanningScene of PlanningSceneMonitor contains a shared_ptr to the monitored octree, which currently does not hold. The proposed fix would make this assumption valid again. See the following visualization of this logical flow:

Your environment

ROS Distro: [Noetic]
OS Version: Ubuntu 20.04
Binary
Version 1.1.13

Thanks for reporting that issue. Unfortunately, I'm not familiar with the octomap code in MoveIt so I cannot really help.
My question is: do you observe segfaults using the shipped MoveIt binaries or only if using custom code accessing OccMapTree? As you suggested a fix yourself: do we need to apply that fix to the MoveIt code base somewhere? If so, please file a PR. If not and this suggestion only applies to custom code, we should update the docs accordingly. In this case, again a PR would be helpful.

I've observed this two times in the last two years in my custom codebase, which used setPlanningSceneDiffMsg on a separate scene than the monitored one, so it is a very rare incidence.

do we need to apply that fix to the MoveIt code base somewhere? If so, please file a PR

I fixed this issue by reusing the monitored OccMapTree in the separate scene in my code, but it is contextually not possible in MoveIt codebase. Therefore a docs update would be appropriate.


Style minor improvements

It would be nice if I have word wrap enabled, the error message doesn't overflow outside the viewport.
Also I think it's better if the color dot indicator doesn't take up one space. It confuses a little and the user is not sure if his own text is misalligned or how many spaces are there in the row really.
Environment

node -v: v8.2.1

npm -v: 5.3.0

npm ls react-scripts (if you haven’t ejected): (empty)

Operating system: macOS sierra

Steps to Reproduce
Enable word wrapping from settings
"editor.wordWrap": "on"
Expected Behavior
1- Error message is visible on the viewport
2- Color dot representing the test status doesn't take any spaces and text isn't moved from it's original position
Actual Behavior
1- I have to scroll horizontally to the right to be able to see the error message
2- The color dot moves my it() one character width to the right

Note we are looking for someone to take responsibility around keeping create-react-app up to date and working, could this be you?

Also it would be nice if error messages are red instead of white

We'd have to build our own implementation of a word-wrapping system, that doesn't come with vscode   API for extensions - I'm open to the idea, but probably won't be building it myself. 👍


controllers: add StorageClass encryption page to ODF QuickStart guide

adds one more step "Encrypt your StorageClass" to "Configure and manage OpenShift Data Foundation" QuickStart guide.

Epic URL: https://issues.redhat.com/browse/RHSTOR-1950
Signed-off-by: sanjalkatiyar<EMAIL_ADDRESS>

@SanjalKatiyar Do we need to backport it? If yes can we have a bug pls?

/assign @vbnrh

@SanjalKatiyar Do we need to backport it? If yes can we have a bug pls?

This is a 4.10 epic (https://issues.redhat.com/browse/RHSTOR-1950), so, we don't need to backport it.

/lgtm


DbZ in Ticker::RenderTicker(dt)

I have stuff like championsmedals isntalled that have theoretical dependencies but i have that all disabled. I merely use it as a secondary status bar to show ping and time.


List connected devices on vnet/subnet using az cli

I am looking to list all connected devices from a vnet/subnet using az cli. Currently, am using below query to get the information.
az network vnet subnet show -g <rg_name> -n <subnet_name> --vnet-name <vnet_name> -o json| jq ".ipConfigurations[].id"

Unable to get a result similar to the Azure Portal connected devices on vnet result.
Is there any az query to achieve the same result.

@necusjz for awareness

Could you please explain in detail which result is expected and what's the current result?

Hi @yonzhan
Is it resolved so that the issue is closed now?.

@satrox28 could you answer the comment raised by @necusjz then we can reopen this issue. Normally we will close the issue if no response for 10 days.


Update modal.blade.php

This ensures params or options given to ModalToggle::loadModalAsync() are available in the request used to load the async modal.
Fixes #
Issue with options/params given to ModalToggle::loadModalAsync() not showing in the request

@2kodes Yes, let's change


Feature/input reader integration tests

By Default Anvil takes 64 blocks to mark the first block as finalized. This by default takes at least 1:04 minutes ( one block per second). This is not feasible for Automated Integration Tests.
I was not successful using the Devnet "no mining option"  due to the needed synchronization.
The other possibility would be use the new Anvil configuration called slots_in_a_epoch. But this configuration was added to Foundry April 1st nightly build, and if Anvil version from this one on is used, our code tooling to add inputs fails with error
fail to recover transaction: invalid transaction v, r, s values

So a little more time is needed to overcome this obstacles


[xy-chart] add <CirclePackSeries />

This PR adds a <CirclePackSeries /> which implements the Wang et al. Visualization of large hierarchical data by circle packing.

Remaining items to address:

[x] update readme (@williaster)
[x] cache scales etc in xychart (@williaster)
[x] cache packed data in circlepackseries (@williaster)
[x] figure out a way to not require domain setting to center around an expected value (y-scale is somewhat meaningless) (@williaster)
[x] basic tests for circle packing  (@williaster)
[ ] possibly add prop on <CirclePackSeries /> for flat bttom (@conglei)

Coverage decreased (-2.01%) to 79.355% when pulling 6f97322bf6563f8a8dfe6948f8de6fdea120f3ea on chris--time-pack into 4c63f2691f2559f292329bbf0f450c7884402a2e on master.

Coverage increased (+0.4%) to 81.8% when pulling 12f5d0cb42e8db88958a52de1db67b077a8a4b7d on chris--time-pack into 4c63f2691f2559f292329bbf0f450c7884402a2e on master.

Coverage increased (+0.4%) to 81.764% when pulling 870cbb56f87ea6c8bdb1f78ecab221f5aec193a2 on chris--time-pack into 4c63f2691f2559f292329bbf0f450c7884402a2e on master.


Create PULL_REQUEST_TEMPLATE.md

Creating pull request template for review.

Please take a second to review and think if all of the information displayed on this template is relevant to the project.


Error while compiling generated serializer (The type `Rocket.API.IDefaultable' is defined in an assembly that is not referenced.)

Hi, im running on a DigitalOcean Ubuntu server with ALL ports open (open ports dont seem to be an issue here). I recently installed a VANILLA Unturned server and the latest version of Rocket with all the dependencies. I am getting this error every time I start up the server:
Error while compiling generated serializer
/tmp/40b1cff6/5b118417.cs(27,36) : error CS0012: The type `Rocket.API.IDefaultable' is defined in an assembly that is not referenced. Consider adding a reference to assembly `Rocket.API, Version=<IP_ADDRESS>, Culture=neutral, PublicKeyToken=null'
(0,0) : error : /unturned/server/Unturned_Headless_Data/Managed/Rocket.Core.dll (Location of the symbol related to previous error)

No one can directly connect to the server, and the server does NOT show up in the master server list
I've seen a few other issues with this exact same error, and they also have the same problems as I do. But all the issues seemed to have been vaguely closed with absolutely no solution, or just closed because its "not a Rocket error".

---
Want to back this issue? **[Post a bounty on it!](https://www.bountysource.com/issues/35849837-error-while-compiling-generated-serializer-the-type-rocket-api-idefaultable-is-defined-in-an-assembly-that-is-not-referenced?utm_campaign=plugin&utm_content=tracker%2F10719061&utm_medium=issues&utm_source=github)** We accept bounties via [Bountysource](https://www.bountysource.com/?utm_campaign=plugin&utm_content=tracker%2F10719061&utm_medium=issues&utm_source=github).

Hello, and I think it is a rocket error!
But that thing you said

No one can directly connect to the server, and the server does NOT show up in the master server list

This is not happening to me.
I just leave it here
Error while compiling generated serializer /tmp/server/513c1c66/6f30d166.cs(27,36) : error CS0012: The type Rocket.API.IDefaultable' is defined in an assembly that is not referenced. Consider adding a reference to assembly Rocket.API, Version=<IP_ADDRESS>, Culture=neutral, PublicKeyToken=null' (0,0) : error : /home/server/unturned_server/vanilla_server/Unturned_Headless_Data/Managed/Rocket.Core.dll (Location of the symbol related to previous error)
I had this but everything still working. Thanks.

its not an error.


IQueryable / OData Support

What support does REFIT have for Odata and IQuerable ? Looking around, it may be supported (but I am not sure).
https://github.com/paulcbetts/refit/issues/20
https://github.com/paulcbetts/refit/pull/11
Ideally I would like an interface such as expressed in the OData client
https://github.com/object/Simple.OData.Client/wiki/Retrieving-data-matching-search-criteria
Is this already integrated into the project ? If not, what would you suggest I do ?

It's not supported at all, sorry

If you really wanted to, you could use Refit to connect to an OData API using [AliasAs] for any of the $whatever parameters and creative use of custom parameter types, but you're not going to get a fluent API with true IQueryable support.

@bennor I might just do this.
What Is most important to me is an was easy  way to pass a search expression to my server. That way I can expose a single IQueryable GetAll() method on my server (instead of a new one for every search case). The [AliasAs] looks like it is great for paging, but does not solve that issue.
Client side, something like this would work
[Get("/users/")]
Task<List> GetUsers(Func<T,bool> expression, int take = 25, int page = 1);
Or even this
[Get("/users/")]
Task<List> GetUsers(ODataQuery query);
I understand this functionality is probably not included. Any hints on how I could accomplish my goal? Is it possible that my ODataQuery parameter could spit out multiple Parameter Alias's, for instance?

Probably your best bet is to write a custom implementation of IUrlParameterFormatter and pass it in the RefitSettings when you call RestService.For(). Then you can look for parameter types that are assignable to LambdaExpression and pull the filter parameters out. (You will still need [AliasAs("$filter")] for the parameter name.)

@bennor
Thanks, this is what I needed.

Can I find your solution somewhere, @NVentimiglia? I have the same issue as you.


bigquery: api respones code

Hi Jonathan,
Making great progress with the library thanks so much for all your help.
Quick (hopefully simple) question.
Is there a structured way to access the http response code from bq.  e.g 404 for a table not existing?
Or would I need to parse a string to do so?
Cheers!

Usually you can type-assert to googleapi.Error. For example, see this check in our integration test.
(General tip: reading the integration tests is a good way to learn how to use these clients.)


Warn and accept deprecated selector

Release note:

NONE

This change is

/lgtm
(i'm not an approver)


[BUG] Fails to insert Jsons into ES from Spark RDD when using metadata

BUG Report
Steps to fix:
Replace "!jsonInput" with "jsonInput" in this line:
File: elasticsearch-hadoop/mr/src/main/java/org/elasticsearch/hadoop/serialization/bulk/AbstractBulkFactory.java
Line: if (value instanceof String && !jsonInput) {
This method should quote the meta string if the input is of type Json.
Issue description
Generates corrupted Json as the "_id" field value is not quoted and feed corrupted Json to _bulk api. Ex:
{"_id":my_id_value}\n{"key":"value"}
my_id_value should be quoted as "my_id_value".
Steps to reproduce
Code:
EsSpark.saveToEsWithMeta(tupleRDD:RDD[Tuple2(id:String,json:String)], cfg = Map(ES_INPUT_JSON -> true.toString, ES_RESOURCE_WRITE -> "spark/docs"))

Version Info
Applies to all versions
<!--

I finally got to the bottom of this problem while testing some stuff for a potential feature. We build a template for our bulk requests that contains extractors for different parts of data. This allows us to pull fields from documents to be used as a document ID, or as the routing, etc...
When writing JSON data, we configure a set of extractors that all return pre-quoted String data. These are combined with extractors that pull the metadata information from the provided maps when using saveToEsWithMeta. These metadata extractors do not return quoted JSON data, but rather they return any Object that was set in the metadata map. When we go to write the field data, the template writer notes that we are writing JSON data, and makes no attempt to quote the data because it expects that it is already quoted. This is meant to avoid double quoting other fields provided by the document. The problem is that it is now potentially receiving a mixture of quoted string data or raw objects and there is no way for it to know which fields must be quoted and which ones should be left alone.
This is definitely a bug, and there are a couple of potential solutions to follow here. The easiest one is to modify to JSON field extractors to no longer quote the data, and instead return the standard objects from the parser, and to instead do a uniform pass of quoting data in the template writer area.


Global search

I attempt to develop this feature.
I'm planning to add search on :
products (name, sku)
brands (name)
customers (firstname, lastname, company)
collections (name)
orders
Searching on the custom attributes will be tricky. That's why we tend to use Laravel Scout for that. There's a separate issue for it.