NEXT-7788 Fixes #852 Add config for disabling reviews

1. Why is this change necessary?
Currently there is no way to disable reviews in the storefront except editing the templates.
2. What does this change do, exactly?
This change adds a config option. If this option is set, reviews are shown in the storefront. If not set, reviews are disabled.
3. Describe each step to reproduce the issue or behaviour.
4. Please link to the relevant issues (if any).
https://github.com/shopware/platform/issues/852
5. Checklist

[ ] I have written tests and verified that they fail without my change
[X] I have squashed any insignificant commits
[ ] I have written or adjusted the documentation according to my changes
[X] This change has comments for package types, values, functions, and non-obvious lines of code
[X] I have read the contribution requirements and fulfil them.

@sebi007 you need to do a rebase :blush: there are conflicts

@sebi007 you need to do a rebase 😊 there are conflicts

Can you help me with rebasing?

Thanks for your Contribution! @sebi007


Only show plots which are available for selected revisions

Currently, the plots path tree works additively. Every time that a new revision is collected we check to see which plots have been returned and add newly found paths to the existing ones. This can become an issue where we have unstable plots between revisions. E.g in the hackathon project where each experiment generates a list of misclassified images. These images will rarely match between experiments.
The solution in this PR is to collect which plots are associated with which revisions. We can then display only the available paths for each of the selected revisions.
Demo
https://user-images.githubusercontent.com/37993418/206943556-34ee6aa4-2065-4627-8d4d-a416eaa67054.mov
https://user-images.githubusercontent.com/37993418/207228331-46f489a9-1d1d-4ba4-a6c7-2cf25bec3b72.mov

Looks like Storybook created an incorrect screenshot:

Is it just a one-time thing or was it caused by the pr 🤔

Looks like Storybook created an incorrect snapshot:

Is it just a one-time thing or was it caused by the pr 🤔

This reflects the new behaviour


[Feature Request] Evaluation of tasks without running it.

It would be good to have a way to evaluate the task, if all it's dependencies are OK but not run it.
Something like FloRunner.evaluateTask(task). This can be useful if the the task you want to evaluate
a) runs for a long time (data pipelines)
b) makes a permanent or hard to revert change in an external system

This is interesting. One thought is that this might require Flo to gain an understanding of external dependencies. Currently Flo does not have any external dependency primitive or representation. Everything is just tasks. For example, evaluating a bigquery input dependency is done by running a lookup task. But Flo doesn't understand that it is a lookup or a dependency resolution.
To compare with Luigi, it does not have any first class external dependency primitive either, but at least it has ExternalTask.
An easy to implement Flo analog to the luigi ExternalTask could be a ExternalDependencyOperator that could be implemented by BigQueryLookupOperator, etc. This would then allow the implementation of a general mechanism for evaluating just the dependencies of a Flo dag.


TypeError: 'type' object is not subscriptable

Installed via pip, running I get:
mac-cleanup -h
Traceback (most recent call last):
  File "/Users/rich/.pyenv/versions/3.8.7/bin/mac-cleanup", line 5, in <module>
    from mac_cleanup.cli import main
  File "/Users/rich/.pyenv/versions/3.8.7/lib/python3.8/site-packages/mac_cleanup/cli.py", line 1, in <module>
    from mac_cleanup.utils import CleanUp, cmd, bytes_to_human, catch_exception
  File "/Users/rich/.pyenv/versions/3.8.7/lib/python3.8/site-packages/mac_cleanup/utils.py", line 13, in <module>
    tuple[Type[BaseException]],
TypeError: 'type' object is not subscriptable

python -V
Python 3.8.7

Hey 👋🏻, thanks for the bug report.
It's already been fixed in develop branch. Gonna draft new release soon so the problem will be fixed this week.
Bug was related with the new way you can use generics in >=Python 3.9 (using type classes instead of importing from typing).


Implemented 'to have text' assertion.

Coverage increased (+0.14%) to 85.44% when pulling 382130858b79b38d185674e0f71d6e7c5c1108fa on papandreou:feature/toHaveText into 129c6da5a40becb2908d0e07682505b8920f756c on Munter:master.

Awesome :D

Published in v0.5.0


Update alias description and Jonas PPP

Frankly I wanted to make an activity diagram for the alias but it's honestly just:
Verify alias valid -> verify alias valid -> verify command valid -> add which ends up looking really ugly and not very helpful

Codecov Report

Merging #291 (edaead6) into master (88ce8df) will increase coverage by 0.00%.
The diff coverage is 78.21%.

@@             Coverage Diff             @@
##             master     #291     +/-   ##
===========================================
  Coverage     75.88%   75.88%
+ Complexity     1872      936    -936
===========================================
  Files           210      105    -105
  Lines          5863     2932   -2931
  Branches        788      394    -394
===========================================
- Hits           4449     2225   -2224
+ Misses         1198      599    -599
+ Partials        216      108    -108

Impacted Files
Coverage Δ

...c/main/java/seedu/sourcecontrol/AppParameters.java
100.00% <ø> (ø)

src/main/java/seedu/sourcecontrol/Main.java
0.00% <ø> (ø)

src/main/java/seedu/sourcecontrol/MainApp.java
0.00% <0.00%> (ø)

.../java/seedu/sourcecontrol/commons/core/Config.java
68.18% <ø> (ø)

.../seedu/sourcecontrol/commons/core/GuiSettings.java
73.33% <ø> (ø)

...a/seedu/sourcecontrol/commons/core/LogsCenter.java
78.37% <ø> (ø)

...ava/seedu/sourcecontrol/commons/core/Messages.java
0.00% <ø> (ø)

...java/seedu/sourcecontrol/commons/core/Version.java
82.50% <ø> (ø)

.../seedu/sourcecontrol/commons/core/index/Index.java
100.00% <ø> (ø)

...ol/commons/exceptions/DataConversionException.java
100.00% <ø> (ø)

... and 95 more

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 88ce8df...edaead6. Read the comment docs.


Translate not_in_tx error in Java and PHP clients.

@alainjobart
According to the mapping defined in Vitess, NOT_IN_TX translates to gRPC
canonical code ABORTED:
https://github.com/grpc/grpc-go/blob/9e3a674ceba65708273cf1cd8e71a1bdce68107b/codes/codes.go#L115
In Java, this corresponds to SQLRecoverableException, meaning your
transaction is no longer valid and you must start over from the
beginning:
https://docs.oracle.com/javase/7/docs/api/java/sql/SQLRecoverableException.html
Thus by catching SQLRecoverableException, you can find out when your transaction session cookie is no longer valid, as in https://github.com/youtube/vitess/pull/1966.

LGTM


Setup Re-Occurring Job That Will Kick of Data Scraping of Ski Resort Websites

Need to have something akin to a Cron job that will kick off the process of running the web scraping for the resorts. This job should run twice a day, ideally at 5:30 in the morning and 1:30 in the afternoon. At some point I should do a little research into what the best time would be to take data. For now I am choosing 5:30 am because it is a half hour after the snow stakes are cleared, so the snow accumulations reported should be pretty accurate. I chose 1:30 pm because it's at the height of the sun and the hottest part of the day.

After doing some minimal research, it looks like that Heroku provides a free add-on that will do simplistic interval job scheduling. This will be perfect for what I am trying to do. One thing I noticed is that it will spin up one-off dynos to execute the scheduled jobs. This is fine other than I noticed that the dyno's count towards my usage. After researching more into what that meant, I found what the true limitations of the free Heroku account is. You only get 550 hours of free dyno hours per month. Free dyno hours are as follows:
An app actively consumes free dyno hours if the app is set to use free dynos and any of the following are true:
It has a web dyno that is receiving traffic (i.e., not sleeping)
It has a worker dyno running
It has a one-off dyno running. For example, one started via the CLI or Scheduler


Working QT client build, with alternative language support....and more read below

Primary purpose of this update is to release source that will allow you to interact with optional languages when building and using Anoncoin-QT.  We now also have all the Transifex support machinery defined and working with these changes.
Many edits and hours getting that working right, plus fast work by our team on Transifex, allowed an initial language package to be included in this release..
Included a very early start on a possible alternative difficulty algo, we may soon move away from the KGW algo and hard fork the chain.
Our contrib/anoncoin-qt.pro file is used by the platform builder software, when creating a new master English file to be submitted when source code or QT forms change and warrants translation updates be done on Transifex.  A recent small edit to this file, caused a merge conflict for me, as I had updated and corrected it for that use.
Additionally the latest upstream merge for me cause two other deleted file problems, in the doc/ folder, both are important & have now been restored & edited for content, see the details below:
The README_windows.txt is used when constructing a windows setup.exe deployment package, it can be edited at any time, but not deleted.  The other bootstrap.md file will soon become important as it explains how to find/download & install the bootstrap.dat file.  Soon  to be released for Anoncoin, a bootstrap.dat file can offer the user and extremely fast blockchain setup and go install.  Recent python software edits and configuration files have been setup, testing is underway and that work is found in the contrib/linearize folder.
Small change to the text strings returned for peertable node display should now indicate what network service bits 2 and 7 are, aka 2) node supports BLOOM filters and 7) the node is capable of I2P network communications service.
Additionally a change was introduced here, that IF there is no anoncoin.conf file and no command line parameter disabling I2P, the software will start out and attempt to connect in onlynet=i2p mode, with default parameters.  This needs to be tested, and confirmed that we want this behavior for new installs.
Probably more, but that brings things up to a little more current condition.  We will soon will be starting Pre-release build #4....
GR

Fonts work fine on OS 10.9, however, I haven't checked on 10.10 (don't have this installed on any of my machines yet).

If the default behavior is to connect to I2P, that is fine: but, what happens if the I2P router isn't started? In my opinion, until we have a built in i2pd router, if nothing else works, the client should connect by clearnet.

Thanks on the fonts feedback, was concerned that I had broken something in your builds.
As to the initial I2P connect behavior, Please you and CS talk this over.  And let me know.
FWIW I agree with you...
My testing shows it works here, it first comes up and shows the Running on Clearnet warning.  For most people, it will then exit and what is left displayed on the users console are those few message errors remaining as output, because of the I2PSAM session creation failures.
In my case, I've indexed the blockchain, as required for mutisig transaction testing, having set the txindex=1 in my normally used anoncoin.conf file.    So in addition to the Clearnet warning, it asks me, if I want to now reindex the blockchain, because that option was not found to be set.  It allows me to click ok or abort, so once I abort, it exits as one would expect.  I had simply renamed the file, for this test.
Will test tonight if the program starts up properly with default values and connects when the router is available.  I can then comment the code out, or leave it in, whatever you two decide.....

BTW...these couple of lines of code needed, are in the section where we are about to attempt to write a brand new, first time use anoncoin.conf file (aka WriteFirstConfig()).  An issue, I've not yet had time to get back to.  Default values for everything that can be in one of those needs to be defined.  My anoncoin.conf.sample file in the doc/ folder is now an attempt to do that.  Some are there as only to be informative and will have a leading # in front of the parameter.  Others are not commented out in the sample, and would be the values I'll intend to write directly into the first config file, when I get back to that project.  At the moment I have onlynet=i2p  set as one of those defined.
So please consider also going over all our settings, and deciding which ones need to be written on a FirstConfigFile, and what value they should be set at.

I was thinking i2pd is too much buggy to use it for next release. We will see how it will be for release of myriad 3chain but until it is not buggy we cannot use a i2plib embedded in the client.
So well maybe in the default anoncoin.conf we put onlynet=i2p and dyn, but if no anoncoin.conf we connect clearnet after the warning.

I turned off the code by commenting it out for now, it no longer forces i2p, plus it makes testing various things a real pain, working on testnet/regtest operation now....sometimes there has been no data folder or configure file to start with...

Without my code change, protocol service bit #2, shows up as an 'unknown service' in our PeerTable entries, because most (if not all) nodes on our network are advertising it set.
The technology came out about the same time as our original v8 technology wallet, thus it had the support, my current understanding anyway.  That is why it is being seen and shown to us in the v9 node entry details.  How our new software is handling support of it, is important to understand, as well as the other 2 bits that are showing up as set.  NETWORK and I2PNET, the later being something Meeh invented, which I've tried my best to port to v9, yet still have many hours of work to get done, before I would call that working really well.
On BLOOM filters....here is some links and ideas to consider:
Read this document, at least starting at the section called Specification:
http://sourceforge.net/p/bitcoin/mailman/message/31298904/
After that section, is one called Design rational.  This is the last sentence from that paragraph "Note how in this example DoS attacks are made prohibitively expensive by the work required to create a valid block header."
Bloom filers definitely help with security, and apparently we have lots of nodes operating on a network which are broadcasting support of it, as protocol bit #2 is coming in set for everyone I've looked at.   BIP37 is all about this topic.
https://github.com/bitcoin/bips/blob/master/bip-0037.mediawiki
After that lite reading, try: http://en.wikipedia.org/wiki/Bloom_filter
About then, is when I decided I have no idea if this is working, or how to test it, open to ideas.  Our v9 code is passing a basic low level Bloom filter test, that is about all I know.  Reading this helped me allot though:
http://chimera.labs.oreilly.com/books/1234000001802/ch06.html#_bloom_filters
Basically at this point I'm of the opinion that when/if Anoncoin starts having SPV peers show up on the network, those lite-weight wallets will create bloom filter requests to hide what addresses in transactions they are really looking for, full nodes, capable of BLOOM protocol, will be able to respond to that request, as the SPV peer does not have a complete copy of the blockchain, this protects them from snoopers trying to find what addresses they have in their wallet, but I am not the best person to document this.
I sure can drop that displayed item, call it something else, or let it revert back to Unknown Service(x02).  Perhaps the best idea is to just documentation it as is, and allot of other stuff related to the PeerTable display in a new wiki page: Understanding the PeerTable
Then by the time I get the part of our QT interface code working better, we can all refer to that wiki page, as a place to understand what all the data really means...


feature: add query to support fetching transaction metadata

Accepts an array of transaction hashes, returns just the metadata
and reflects the hash.

query transactionMetadata(
  $hashes: [Hash32Hex!]!
) {
  transactions(
    where: {
      hash: {
        _in: $hashes
      }
    }
  ) {
    hash
    metadata {
      key
      value
    }
  }
}

{ "hashes": ["f910021138e553c65b96cf3e4647927fcd9f634e06544251f83cffb1891876e8"]}

{
  "data": {
    "transactions": [
      {
        "hash": "f910021138e553c65b96cf3e4647927fcd9f634e06544251f83cffb1891876e8",
        "metadata": [
          {
            "key": "1",
            "value": {
              "Choices": [
                {
                  "VoteRank": 1,
                  "VoteWeight": 1,
                  "CandidateId": "aaa9503a-6fc5-46ea-9aa0-b4c90f361a4c"
                },
                {
                  "VoteRank": 2,
                  "VoteWeight": 1,
                  "CandidateId": "8d649c12-936e-46be-b65a-c17f30f59574"
                },
                {
                  "VoteRank": 0,
                  "VoteWeight": 0,
                  "CandidateId": "81ce7f8e-94c3-4835-91fc-2146d51fa1fc"
                },
                {
                  "VoteRank": 3,
                  "VoteWeight": 1,
                  "CandidateId": "407540aa-58b5-40ca-b484-f40040eb2990"
                }
              ],
              "VoterId": "d990a1e8-cb90-4f59-b5cf-a8b59c9ba8ae",
              "NetworkId": "TheRealAdamDean",
              "ObjectType": "VoteBallot",
              "ProposalId": "80064c28-1b03-4f1c-abf0-ca8c5a98d5b9"
            }
          },
          {
            "key": "0",
            "value": {
              "La_RepsistancE": "Was here"
            }
          }
        ]
      }
    ]
  }
}

curl 'http://localhost:3100/' -H 'Accept-Encoding: gzip, deflate, br' -H 'Content-Type: application/json' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'DNT: 1' -H 'Origin: http://localhost:3100' --data-binary '{"query":"query transactionMetadata(\n  $hashes: [Hash32Hex!]!\n) {\n  transactions(\n    where: {\n      hash: {\n        _in: $hashes\n      }\n    }\n  ) {\n    hash\n    metadata {\n      key\n      value\n    }\n  }\n}","variables":{"hashes":["f910021138e553c65b96cf3e4647927fcd9f634e06544251f83cffb1891876e8"]}}' --compressed
{"data":{"transactions":[{"hash":"f910021138e553c65b96cf3e4647927fcd9f634e06544251f83cffb1891876e8","metadata":[{"key":"1","value":{"Choices":[{"VoteRank":1,"VoteWeight":1,"CandidateId":"aaa9503a-6fc5-46ea-9aa0-b4c90f361a4c"},{"VoteRank":2,"VoteWeight":1,"CandidateId":"8d649c12-936e-46be-b65a-c17f30f59574"},{"VoteRank":0,"VoteWeight":0,"CandidateId":"81ce7f8e-94c3-4835-91fc-2146d51fa1fc"},{"VoteRank":3,"VoteWeight":1,"CandidateId":"407540aa-58b5-40ca-b484-f40040eb2990"}],"VoterId":"d990a1e8-cb90-4f59-b5cf-a8b59c9ba8ae","NetworkId":"TheRealAdamDean","ObjectType":"VoteBallot","ProposalId":"80064c28-1b03-4f1c-abf0-ca8c5a98d5b9"}},{"key":"0","value":{"La_RepsistancE":"Was here"}}]}]}}


MySQL Aggregate Functions in Multiple Tables with Subqueries

Topic Suggestion
Pre-submission advice
By following all our pre-submission advice and reviewing our Resources folder, you will maximise your chances of your topic being approved.
We ask that you please be patient as our team works through approving and publishing all articles/tutorials in a timely manner.
Allow 1-3 days for a topic to be reviewed and/or approved - allow 3-7 days for an articles to be reviewed and/or published.
Be sure to visit our Resources Page for tools, resources, and example articles that will help you propose and write a successful article.
Please ensure that you have only one open issue + linked pull request at a time. This will ensure that we complete the article in a timely manner from inception to publishing.)
We tend to stray away or tend not to publish reviews/comparisons of commercial product offerings.
Proposal Submission
Proposed title of article
MySQL Aggregate Functions in Multiple Tables with Subqueries
Use keyword research to improve your article's SEO.
Proposed article introduction
MySQL aggregate functions are self-contained modules built into the database that perform calculations on multiple user-defined values and return a single value. SUM(), AVG(), MIN(), and MAX() are some of the most common examples.
When creating a summary value for reporting purposes based on different tables in a database, aggregate functions come in handy. Instead of saving summary data in a table permanently, you simply retrieve a dynamic value based on a function result. This increases the scalability and ease of maintenance of your MySQL applications.
Key takeaways
By the end of this tutorial, the reader will be able to:

Use MySQL Aggregate Function to retrieve current stock
Check the Aggregate Function after the new insert
WIll be able to understand some queries in MySQL

Article quality
Creating MySQL Aggregate Function in Multiple Tables with Subqueries
References
N/A
Conclusion
In this article, you'll gain knowledge on how to use MySQL aggregate functions and subqueries to generate columns for reporting. This is a timely and efficient method for creating summaries for various related columns that you can use in your applications.
Templates to use as guides

How To Guide Template
Software Review Template
Tutorial Template

Good afternoon and thank you for submitting your topic suggestion.
Your topic form has been entered into our queue and should be reviewed (for approval) as soon as a content moderator is finished reviewing the ones in the queue before it.

Thank you for submitting your topic.
After some careful consideration, it struck us that this topic may be a bit over-saturated throughout other blog sites and official documentation.
We believe this is the best way for students to build a great portfolio (for potential employers) is by building what does not exist and what can provide the most value.
Please feel free to suggest an alternate topic to explore. 🚀 @AndrewOdera


make builds use temp directory instead of home and always build debug images

Changes:

change ipxe to use a build directory in the temp-space instead of in the users home directory
change syslinux to use a build directory in the temp-space instead of in the users home directory
change ipxe tasks to:

always build the monorail.ipxe.debug (see below for reason)
also build a communications style ipxe.debug. The existing one was more for pci-bus stuff vs looking at dhcp traffic debug.

a note on building the debug images. The contents of static-common has included the hand generated
debug image for awhile. However, since folk didn't know to go and uncomment-out the build for
it, it was not getting updated alongside the actual image. While it is only used in debug
cases, having the two version drift apart so much without any indication caused some
ackward issues in the field.
Using reviewer list from previous folk's PRs: @RackHD/corecommitters @rolandpoulter @tldavies @VulpesArtificem

:+1:

:+1:

:+1:


build: bump alpine version to 3.16.2

:green_heart: Build Succeeded

the below badges are clickable and redirect to their specific view in the CI or DOCS

Expand to view the summary

Build stats

Start Time: 2022-08-23T14:10:40.457+0000

Duration: 8 min 41 sec

Test stats :test_tube:

Test
Results

Failed
0

Passed
160

Skipped
2

Total
162

:robot: GitHub comments
To re-run your PR in the CI, just comment with:

/test : Re-trigger the build.

run elasticsearch-ci/docs : Re-trigger the docs validation. (use unformatted text in the comment!)


Update CMakelists.txt to C++17, src directory and adding .vscode into…

This is the new pull request to address the previous changes and fix existing issues. The changes made include:
Update CMakeLists.txt:
Transition to C++17 to support file recognition using filesystem.
Update .gitignore:
Added .vscode to ignore Visual Studio Code configuration files.
Removed the old .vscode directory from the repository.
Changes in src Directory:
Various updates and improvements as required.

I created a new PR hopefully it works now.


output problem

Hi
i tested BitMapperBS recently ,it was really an ultrafast and memory-efficient aligner.
i runned the software successfully.but i have same problems with the output. the output didn't contain Methylation information .but just report the alignment info ,how can i get the the Methylation information ?
here is my command:
/opt/software/BitMapperBS-master/bitmapperBS --search /data/project/Program_zhouj/BS-seq_test/BitMapperBS/genome_index/Tibetan.fa --seq1 /data/project/Program_zhouj/BS-seq_test/BitMapperBS/test/SA_0226_S_24_1.clean.fq --seq2 /data/project/Program_zhouj/BS-seq_test/BitMapperBS/test/SA_0226_S_24_2.clean.fq --pe -t 4  -o SA_0226_S_24

Hi
i tested BitMapperBS recently ,it was really an ultrafast and memory-efficient aligner.
i runned the software successfully.but i have same problems with the output. the output didn't contain Methylation information .but just report the alignment info ,how can i get the the Methylation information ?
here is my command:
/opt/software/BitMapperBS-master/bitmapperBS --search /data/project/Program_zhouj/BS-seq_test/BitMapperBS/genome_index/Tibetan.fa --seq1 /data/project/Program_zhouj/BS-seq_test/BitMapperBS/test/SA_0226_S_24_1.clean.fq --seq2 /data/project/Program_zhouj/BS-seq_test/BitMapperBS/test/SA_0226_S_24_2.clean.fq --pe -t 4 -o SA_0226_S_24

Now you can use MethylDackel (https://github.com/dpryan79/methyldackel) to extract methylation information. For example, if you have the the ouput file of BitMapperBS named output.sam:
(1) Converting SAM directly to a sorted BAM file;
samtools sort -@ 4 -o output.bam output.sam (SAMtools version 1.3 or newer, using 4 CPU threads)
or
samtools view -bS output.sam | samtools sort - -o output.bam (SAMtools version 1.2 or older)
(2)Extract methylation information:
MethylDackel extract reference_genome.fa alignments.bam
I am now also developing a new methylation extract algorithm. For the next several days, the new version of BitMapperBS will be resleased to directly output the methylation information rather .sam or .bam.

Hi
i tested BitMapperBS recently ,it was really an ultrafast and memory-efficient aligner.
i runned the software successfully.but i have same problems with the output. the output didn't contain Methylation information .but just report the alignment info ,how can i get the the Methylation information ?
here is my command:
/opt/software/BitMapperBS-master/bitmapperBS --search /data/project/Program_zhouj/BS-seq_test/BitMapperBS/genome_index/Tibetan.fa --seq1 /data/project/Program_zhouj/BS-seq_test/BitMapperBS/test/SA_0226_S_24_1.clean.fq --seq2 /data/project/Program_zhouj/BS-seq_test/BitMapperBS/test/SA_0226_S_24_2.clean.fq --pe -t 4 -o SA_0226_S_24

Now you can use MethylDackel (https://github.com/dpryan79/methyldackel) to extract methylation information. For example, if you have the the ouput file of BitMapperBS named output.sam:
(1) Converting SAM directly to a sorted BAM file;
samtools sort -@ 4 -o output.bam output.sam (SAMtools version 1.3 or newer, using 4 CPU threads)
or
samtools view -bS output.sam | samtools sort - -o output.bam (SAMtools version 1.2 or older)
(2)Extract methylation information using 4 CPU threads:
MethylDackel extract reference_genome.fa output.bam -@ 4
I am now also developing a new methylation extract algorithm. For the next several days, the new version of BitMapperBS will be resleased to directly output the methylation information rather than .sam or .bam.
Thank you for the interest in BitMapperBS.

Thank you very much ,i'll try this software right away!


nixos/sing-box: test inbunds and outbounds

Description of changes
Follow the docs of the latest release: https://github.com/SagerNet/sing-box/tree/main-next/docs/configuration
WIP

[x] log
[ ] dns

[x] normal remote
[ ] fakeip

[ ] inbounds

[x] direct
[x] mixed
[x] shadowsocks
[x] vmess
[x] trojan
[x] hysteria
[x] hysteria2
[x] shadowtls
[x] tuic
[x] vless
[x] tun
[ ] naive
[ ] redirect
[ ] tproxy

[ ] outbounds

[x] direct
[x] block
[x] socks
[x] shadowsocks
[x] vmess
[x] trojan
[x] hysteria
[x] hysteria2
[x] tuic
[x] shadowtls
[ ] wireguard
[ ] tor
[ ] ssh
[x] dns
[ ] selector
[ ] urltest

[ ] route

[x] rules
[ ] rule_set
[ ] auto_detect_interface

[ ] experimental

[x] clash api
[ ] cache file

[ ] dial

[x] detour
[ ] bind_interface
[ ] inet4_bind_address
[ ] routing_mark
[ ] domain_strategy

[ ] listen

[ ] sniff
[ ] detour
[ ] domain_strategy

[ ] TLS

[ ] ech
[ ] reality

[ ] udp over tcp
[ ] v2ray transport

[ ] HTTP
[x] WebSocket
[ ] QUIC
[ ] gRPC
[ ] HTTPUpgrade

[ ] real world usages

[x] vmess+WebSocket+TLS

Things done

Built on platform(s)

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

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

[ ] sandbox = relaxed
[ ] sandbox = true

[x] Tested, as applicable:

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

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

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

[ ] Fits CONTRIBUTING.md.

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

I suppose this is a response to the recent regression in wireguard support? It's more of a problem with upstream test/release tooling than something we should solve with comprehensive downstream testing. I suggest we focus on testing distribution specific things like tun/tap support and leave the rest to the upstream,  and it would be great if this can be part of upstream CI.

How about including the tun, dns (fakeip), wireguard system interface, and tproxy?

That would be great, especially tproxy!

@ofborg test sing-box


Incorrect JavaDoc for KafkaMessageHeaderAccessor.getBlockingRetryDeliveryAttempt()

Version 3.2.2
JavaDoc says:
Access the header value when the blocking delivery attempt header is present.
Returns:
1 if there is no header present; the decoded header value otherwise.
Throws:
IllegalStateException – if the header is not present.
See Also:
org.springframework.kafka.listener.ContainerProperties.setDeliveryAttemptHeader(boolean)

Actually, it doesn't return 1, if no header present, it throws IllegalStateException

Agreed.
Feel free to contribute the fix: https://github.com/spring-projects/spring-kafka/blob/main/CONTRIBUTING.adoc
Thanks

I can take this issue and update the docs

@MichaelMoyles, please send a PR addressing this issue. See the contribution guidelines above.

Thanks. @MichaelMoyles , for suggesting the help!
You definitely can take and open PR.
However only team members can be assigned for the issue.
Either way your contribution will be accepted and credited on release motes.


Fix function signatures for back compatibility

Hello, @leimao
Thank you very much for your research and this tool in general without it I wouldn't go anywhere with frozen_graph problem.
Please share your thoughts on problem of unconsistent function signatures when translating layers from TF>2 to TF 1.X.
I mean for example if we had tf.nn.Conv2d which has explicit_padding attribute on TF>2 and we want to deploy it on TF==1.12, we'll see an error:
Traceback (most recent call last):
  File "/root/anaconda2/envs/tf1/lib/python3.6/site-packages/tensorflow/python/framework/importer.py", line 418, in import_graph_def
    graph._c_graph, serialized, options)  # pylint: disable=protected-access
tensorflow.python.framework.errors_impl.InvalidArgumentError: NodeDef mentions attr 'explicit_paddings' not in Op<name=Conv2D; signature=input:T, filter:T -> output:T; attr=T:type,allowed=[DT_HALF, DT_BFLOAT16,
DT_FLOAT, DT_DOUBLE]; attr=strides:list(int); attr=use_cudnn_on_gpu:bool,default=true; attr=padding:string,allowed=["SAME", "VALID"]; attr=data_format:string,default="NHWC",allowed=["NHWC", "NCHW"]; attr=dilatio
ns:list(int),default=[1, 1, 1, 1]>; NodeDef: {{node import/spnas_net/features/init_block/conv1/conv/conv/Conv2D}} = Conv2D[T=DT_FLOAT, data_format="NHWC", dilations=[1, 1, 1, 1], explicit_paddings=[], padding="V
ALID", strides=[1, 2, 2, 1], use_cudnn_on_gpu=true](import/spnas_net/features/init_block/conv1/conv/zero_padding2d/Pad, import/spnas_net/features/init_block/conv1/conv/conv/Conv2D/ReadVariableOp). (Check whether
 your GraphDef-interpreting binary is up to date with your GraphDef-generating binary.).

Is it possible to work with frozen graph to change signatures to valid ones?

TF2 ops might not be downward compatible. Since you can deploy using TF 2.x, why would you bother using TF 1.x?

Oh.. I am converting models to TF 1.12.0 that is max suitable version for Huawei HiAI DDK for NPU inference

In that case, it will be too trivial to troubleshoot and I think I don't have time to investigate that. Apologize.

I've ended up with the following solution:
import tensorflow as tf

graph_def = tf.GraphDef()
graph_def.ParseFromString(
    open('model.pb', 'rb').read()
)

for node in graph_def.node:
    if node.op == 'FusedBatchNormV3':
        node.op = 'FusedBatchNorm'
        node.attr.pop('exponential_avg_factor')
        node.attr.pop('U')
    if node.op == 'Conv2D':
        node.attr.pop('explicit_paddings')


Add --hot flag to enable dev server hot reloading

Yet another CLI flag for the dev command! This time to enable hot reloading, which I have found to be quite handy when trying things out.
From the commit:

The underlying Webpack Dev Server supports hot reloading, and the
feature is hardcoded to false here. This changeset keeps that default
behaviour while allowing to enable the feature with the --hot command
line flag (takes no additional arguments).

Thanks for merging! Interesting, I have been testing with the Mac app, a glorified browser, and I did not get that behaviour.


Allow to add callbacks directly to items, handle item ids internally

Awesome updates @Ouri028 made it a lot cleaner :blue_heart:!
The change I thought of that I mentioned here https://github.com/Ouri028/VTray/pull/2 is still applicable.
The changes will allow to add on_click callbacks directly to items instead of needing to create an additional handler and match for items ids. It might make vtray even more simple and straightforward to use. It's a breaking change. Let me know your thoughts.

Example current:
module main

import ouri028.vtray

enum MenuItems {
	edit = 1
	copy = 2
	quit = 3
}

fn main() {
	icon := $if macos {
<EMAIL_ADDRESS>	} $else {
<EMAIL_ADDRESS>	}
	mut systray := &vtray.VTrayApp{
		identifier: 'VTray!'
		tooltip: 'VTray Demo!'
		icon: icon
		items: [
			&vtray.VTrayMenuItem{
				id: int(MenuItems.edit)
				text: 'Edit'
				checkable: true
			},
			&vtray.VTrayMenuItem{
				id: int(MenuItems.copy)
				text: 'Copy'
				disabled: true
			},
			&vtray.VTrayMenuItem{
				id: int(MenuItems.quit)
				text: 'Quit'
			},
		]
	}
	on_click := fn [systray] (mut menu_item vtray.VTrayMenuItem) {
		println(menu_item)
		if menu_item.id == int(MenuItems.quit) {
			systray.destroy()
		}
	}
	systray.on_click = on_click
	systray.vtray_init()
	systray.run()
	systray.destroy()
}

Example with the PRs changes:
module main

import ouri028.vtray

fn main() {
	icon := $if macos {
<EMAIL_ADDRESS>	} $else {
<EMAIL_ADDRESS>	}
	mut systray := &vtray.VTrayApp{
		identifier: 'VTray!'
		tooltip: 'VTray Demo!'
		icon: icon
	}
	systray.items = [
		&vtray.VTrayMenuItem{
			text: 'Edit'
			checkable: true
		},
		&vtray.VTrayMenuItem{
			text: 'Copy'
			disabled: true
		},
		&vtray.VTrayMenuItem{
			text: 'Quit'
			on_click: fn [systray] () {
				systray.destroy()
			}
		},
	]
	systray.vtray_init()
	systray.run()
	systray.destroy()
}

Awesome updates @Ouri028 made it a lot cleaner 💙!
The change I thought of that I mentioned here #2 is still applicable.
The changes will allow to add on_click callbacks directly to items instead of needing to create an additional handler and match for items ids. It might make vtray even more simple and straightforward to use. It's a breaking change. Let me know your thoughts.
* Example current:
  ```v
  module main

  import ouri028.vtray

  enum MenuItems {
  	edit = 1
  	copy = 2
  	quit = 3
  }

  fn main() {
  	icon := $if macos {
<EMAIL_ADDRESS>  	} $else {
<EMAIL_ADDRESS>  	}
  	mut systray := &vtray.VTrayApp{
  		identifier: 'VTray!'
  		tooltip: 'VTray Demo!'
  		icon: icon
  		items: [
  			&vtray.VTrayMenuItem{
  				id: int(MenuItems.edit)
  				text: 'Edit'
  				checkable: true
  			},
  			&vtray.VTrayMenuItem{
  				id: int(MenuItems.copy)
  				text: 'Copy'
  				disabled: true
  			},
  			&vtray.VTrayMenuItem{
  				id: int(MenuItems.quit)
  				text: 'Quit'
  			},
  		]
  	}
  	on_click := fn [systray] (mut menu_item vtray.VTrayMenuItem) {
  		println(menu_item)
  		if menu_item.id == int(MenuItems.quit) {
  			systray.destroy()
  		}
  	}
  	systray.on_click = on_click
  	systray.vtray_init()
  	systray.run()
  	systray.destroy()
  }
  ```

* Example with the PRs changes:
  ```v
  module main

  import ouri028.vtray

  fn main() {
  	icon := $if macos {
<EMAIL_ADDRESS>  	} $else {
<EMAIL_ADDRESS>  	}
  	mut systray := &vtray.VTrayApp{
  		identifier: 'VTray!'
  		tooltip: 'VTray Demo!'
  		icon: icon
  	}
  	systray.items = [
  		&vtray.VTrayMenuItem{
  			text: 'Edit'
  			checkable: true
  		},
  		&vtray.VTrayMenuItem{
  			text: 'Copy'
  			disabled: true
  		},
  		&vtray.VTrayMenuItem{
  			text: 'Quit'
  			on_click: fn [systray] () {
  				systray.destroy()
  			}
  		},
  	]
  	systray.vtray_init()
  	systray.run()
  	systray.destroy()
  }
  ```

Hey @ttytm ,
I like it! Will do some testing on my end to make sure everything is still working as intended, even though there are some breaking changes, currently VTray is in very early stages, so I am expecting some breaking changes 😆 .
I would like to have VTray as simple and easy to use as possible for the future as I can definitely see a Electron / Tauri framework coming to V in the near future with your webview library 😄 , so having a systray is a MUST!

Hey thanks for the review!
Awsm! Lets build things brick by brick 👍

Giving it a short run there are some more awesomeizations to add. They would build on the changes so I'm gonna add it here as they might fit into a breaking merge.
The changes add an API that removes as many friction points as possible and makes it even more straightforward to use.
E.g. usage now:
module main

import ouri028.vtray

fn main() {
	icon := $if macos {
<EMAIL_ADDRESS>	} $else {
<EMAIL_ADDRESS>	}
	mut tray := vtray.create(icon, tooltip: 'VTray Demo!')
	tray.add_item(vtray.MenuItem{
		text: 'Edit'
		checkable: true
	})
	tray.add_item(vtray.MenuItem{
		text: 'Copy'
		disabled: true
	})
	tray.add_item(vtray.MenuItem{
		text: 'Quit'
		on_click: fn [tray] () {
			tray.destroy()
		}
	})
	tray.init()
	tray.run()
	tray.destroy()
}

vtray.create() only requires an icon the rest are optional params.
pub fn create(icon_path string, opts CreatOptions) &Tray {

It includes renaming of structs like VTrayMenuItem to MenuItem. Not prefixing with the lib name is the convention for V it would be redundant in usage e.g. vtray.VTrayMenuItem -> vtray.MenuItem. It's also less text :D.
Gonna refine it to not need tray.init() anymore then it's pretty neat I think.

Ok I thing it might be ready 👍

Okay now it might be it.
Result:
module main

import ouri028.vtray

fn main() {
	icon := $if macos {
<EMAIL_ADDRESS>	} $else {
<EMAIL_ADDRESS>	}
	mut tray := vtray.create(icon, tooltip: 'VTray Demo!')
	tray.add_item('Edit', checkable: true)
	tray.add_item('Copy', disabled: true)
	tray.add_item('Quit',
		on_click: tray.destroy
	)
	tray.run()
	tray.destroy()
}

Sorry about the spam.

Okay now it might be it. Sorry about the spam 😅.
Result:
module main

import ouri028.vtray

fn main() {
	icon := $if macos {
<EMAIL_ADDRESS>	} $else {
<EMAIL_ADDRESS>	}
	mut tray := vtray.create(icon, tooltip: 'VTray Demo!')
	tray.add_item('Edit', checkable: true)
	tray.add_item('Copy', disabled: true)
	tray.add_item('Quit', on_click: tray.destroy)
	tray.run()
	tray.destroy()
}

Just the definitions in the readme would need an update.
Eventually, using vdoc to generate a doc site automatically on changes and hosting it for free via github pages as V webview does instead could be nice: https://ttytm.github.io/webview/webview.html

All good, just glad you took an interest in it 😄 .
This does look a lot cleaner compared to defining the complete struct, will test it and merge it 👍
I agree regarding the V doc, will have a look at implementing that as well as better code comments.
As a quick update as well, I have added two new functions
pub fn (v &VTrayApp) set_icon(icon string)
pub fn (v &VTrayApp) set_tooltip(tooltip string)
Which allows the end user to update the icon and tooltip in realtime without needing to restart the app.

I was thinking it would be great to have an option to get the menu item values, so how does this look?

	tray.add_item('Edit',
		on_click: fn [tray] () {
			if x := tray.get_item('Edit') {
				println(x.checked)
			}
		}
		checkable: true
	)

// get_item returns the menu item with the given text.
pub fn (t &Tray) get_item(item string) ?&MenuItem {
	for menu_item in t.items {
		if menu_item.text == item {
			return menu_item
		}
	}
	return none
}

We also add the MenuItem to the heap and make the items public.
[heap]
struct MenuItem {
pub:
	id        int
	text      string
	checked   bool
	checkable bool
	disabled  bool
}

I was thinking it would be great to have an option to get the menu item values, so how does this look?
	tray.add_item('Edit',
		on_click: fn [tray] () {
			if x := tray.get_item('Edit') {
				println(x.checked)
			}
		}
		checkable: true
	)

// get_item returns the menu item with the given text.
pub fn (t &Tray) get_item(item string) ?&MenuItem {
	for menu_item in t.items {
		if menu_item.text == item {
			return menu_item
		}
	}
	return none
}

We also add the MenuItem to the heap and make the items public.
[heap]
struct MenuItem {
pub:
	id        int
	text      string
	checked   bool
	checkable bool
	disabled  bool
}

Yep that'll be useful.
// get_item returns the menu item with the given text.
pub fn (t &Tray) get_item(item string) ?&MenuItem {
	return t.items.filter(it.text == item)[0] or { return none }
}

would be a short variant of:
// get_item returns the menu item with the given text.
pub fn (t &Tray) get_item(item string) ?&MenuItem {
	for menu_item in t.items {
		if menu_item.text == item {
			return menu_item
		}
	}
	return none
}

It maybe even better to store the items in a map then. I'll just send the lib.v for copy pasting you can see the diffs in your editor then:

lib.v
module vtray

// Tray is the main struct that represents the tray app.
[heap; noinit]
pub struct Tray {
mut:
	instance   &VTray = unsafe { nil }
	icon       string
	identifier string
	tooltip    string
	items      map[string]&MenuItem
	callbacks  map[int]fn ()
	last_id    int = 1
}

[params]
pub struct CreatOptions {
	identifier string = 'VTray'
	tooltip    string
}

// MenuItem is a menu item that can be added to the tray.
[params]
pub struct MenuItemOptions {
	checked   bool
	checkable bool
	disabled  bool
	on_click  ?fn ()
}

// create creates the tray.
// On macOS, the tray icon size must be 22x22 pixels to be rendered correctly.
pub fn create(icon_path string, opts CreatOptions) &Tray {
	return &Tray{
		icon: icon_path
		identifier: opts.identifier
		tooltip: opts.tooltip
	}
}

// add_item adds an item to the tray.
pub fn (mut t Tray) add_item(text string, opts MenuItemOptions) {
	id := t.last_id++
	t.items[text] = &MenuItem{
		id: id
		text: text
		checked: opts.checked
		checkable: opts.checkable
		disabled: opts.disabled
	}
	if cb := opts.on_click {
		t.callbacks[id] = cb
	}
}

// get_item returns the menu item with the given text.
pub fn (t &Tray) get_item(item string) ?&MenuItem {
	return t.items[item] or { return none }
}

// run runs the tray app.
pub fn (mut t Tray) run() {
	t.instance = C.vtray_init(&VTrayParams{
		identifier: t.identifier
		tooltip: t.tooltip
		icon: t.icon
		on_click: fn [t] (menu_item &MenuItem) {
			if cb := t.callbacks[menu_item.id] {
				cb()
			}
		}
	}, usize(t.items.len), t.items.values().data)
	C.vtray_run(t.instance)
}

// destroy destroys the tray app and frees allocated memory.
pub fn (t &Tray) destroy() {
	C.vtray_exit(t.instance)
}

It maybe even better to store the items in a map then. I'll just send the lib.v without further refinements for copy pasting, probably easiest to see the diffs in your editor and work with it then:
lib.v
module vtray

// Tray is the main struct that represents the tray app.
[heap; noinit]
pub struct Tray {
mut:
	instance   &VTray = unsafe { nil }
	icon       string
	identifier string
	tooltip    string
	items      map[string]&MenuItem
	callbacks  map[int]fn ()
	last_id    int = 1
}

[params]
pub struct CreatOptions {
	identifier string = 'VTray'
	tooltip    string
}

// MenuItem is a menu item that can be added to the tray.
[params]
pub struct MenuItemOptions {
	checked   bool
	checkable bool
	disabled  bool
	on_click  ?fn ()
}

// create creates the tray.
// On macOS, the tray icon size must be 22x22 pixels to be rendered correctly.
pub fn create(icon_path string, opts CreatOptions) &Tray {
	return &Tray{
		icon: icon_path
		identifier: opts.identifier
		tooltip: opts.tooltip
	}
}

// add_item adds an item to the tray.
pub fn (mut t Tray) add_item(text string, opts MenuItemOptions) {
	id := t.last_id++
	t.items[text] = &MenuItem{
		id: id
		text: text
		checked: opts.checked
		checkable: opts.checkable
		disabled: opts.disabled
	}
	if cb := opts.on_click {
		t.callbacks[id] = cb
	}
}

// get_item returns the menu item with the given text.
pub fn (t &Tray) get_item(item string) ?&MenuItem {
	return t.items[item] or { return none }
}

// run runs the tray app.
pub fn (mut t Tray) run() {
	t.instance = C.vtray_init(&VTrayParams{
		identifier: t.identifier
		tooltip: t.tooltip
		icon: t.icon
		on_click: fn [t] (menu_item &MenuItem) {
			if cb := t.callbacks[menu_item.id] {
				cb()
			}
		}
	}, usize(t.items.len), t.items.values().data)
	C.vtray_run(t.instance)
}

// destroy destroys the tray app and frees allocated memory.
pub fn (t &Tray) destroy() {
	C.vtray_exit(t.instance)
}

Yeah. This will make it more easier to work with and we avoid unnecessary looping.
Thanks! 😄


fix: Fix types for components wrapping FormattedField

:tada: This PR is included in version 2.0.2 :tada:
The release is available on GitHub release
Your semantic-release bot :package::rocket:


Add blocks for customizing the TOC drawer

Typo with the reg-head height, it should contain the sub-head height
Adds block for the sub-head drawer icons
Adds block for sub-head content

Small question, but otherwise works for me

:+1:


Cannot create CoreML model with Flexible input shapes.

When trying to convert either the Decoder or the UNET with flexible shapes, coremltools fails.
The first op to blame is the group_norm op.
I found a related issue: https://github.com/apple/coremltools/issues/1303 where they provided a work around for the group_norm op - which worked, but then another layer/op throws and error. It might be add element wise or something else. Maybe there is another work around for other ops?
I thought that maybe  I could use the neural_network.flexible_shape_utils to modify the network after the fact, but that apparently only works with the old neural network type of CoreML and not the MLProgram type that probably is maybe required for the ANE and thus faster initialization. Maybe could test that with by omitting convert_to="mlprogram", but I'm sure that's probably a lot slower.
I did investigate two UNET models generated with ORIGINAL attention. One with a latent height of 96 and the other the normal 64x64. I diffed the weights and there is no difference. Seems like the main difference is in the architecture part of the MLPackage. deploying such large files for each aspect ratios made available to users sounds insane. Potentially, maybe there is a way to compile these on device and switching out the architecture portions of the MLPackage files/folder?
I've not had any luck with the SPLIT_EINSUM setting with regards to different aspect ratios. Because when testing them, I'll get kernel panics...  see: SPLIT_EINSUM - Kernel Panic when testing UNET created with height 96 and width 64 and SPLIT_EINSUM

@littleowl the groupnorm fix is not working.
with ct 6.1 or 6.2
what did you do?
Pls see https://github.com/apple/coremltools/issues/1303#issuecomment-1432481763

Well, the group norm fix seemed to work for me, but then it was a different layer that was a problem next. I couldn't find any reference to a work around for that layer. If you implemented the fix that I did reference, then could you double check the error messages you are getting? I don't have the changes and need to try again.

Oh, I see the comment you referenced.


Moved phantomjs from npm dependencies to devDependencies

Should PhantomJS really be a normal dependency and not a dev dependency?

PhantomJS is used for determining the dimensions of SVG files that don't have width / height / viewBox attributes properly set. So yes, unfortunately, PhantomJS is a regular requirement. I'd love to make this configurable, however I don't know of a way to do so. I'm open for suggestions into this direction — but removing PhantomJS as regular requirement is not an option right now. Thanks for thinking about this, however.

Ok, thanks for the explanation.


Support map as input/output type

TL;DR
Add native map support as input/output type.
Type

[ ] Bug Fix
[x] Feature
[ ] Plugin

Are all requirements met?

[x] Code completed
[ ] Smoke tested
[x] Unit tests added
[ ] Code documentation added
[ ] Any pending items have an associated Issue

Complete description
Largely copied implementation of list, and fixed where NotImplementedError was raised.
Tracking Issue
https://github.com/lyft/flyte/issues/637
Follow-up issue
NA

cc @kumare3

@honnix do you mind waiting on the new flytekit api for adding map type support. It is already supported in the new api

Here is the code for it
https://github.com/lyft/flytekit/blob/annotations/flytekit/annotated/type_engine.py#L303
And the usage
https://github.com/lyft/flytekit/blob/annotations/tests/flytekit/unit/annotated/test_type_hints.py#L948-L1024

@kumare3 Thanks for taking a look. Yes I took a look at the new type engine before and it looks a lot simpler and cleaner!
This is not that urgent because we have a workaround to skip returning a map as output. We would love to use the new API/SDK. What is the expected time to get out of alpha?

@honnix alpha0 is out https://pypi.org/project/flytekit/0.16.0a0/. @wild-endeavor and I are working on releasing alpha1 which makes it almost feature complete (except for array/map tasks - different from dynamic tasks). We are hoping to have alpha1 early next week?

@kumare3 That sounds great. I guess it won't hurt that we start using (at least trying) alpha version.
BTW, is there any example showing how to use FlyteContext to set auth_role? Also how do we set schedule now when creating a launch plan (the factory method doesn't have such argument as I can see). I guess we can take this on Slack. Sorry for derailing. :)

There is a problem with the new API, as I see it requires Python 3.7+ due to from __future__ import annotations. Is that absolutely needed?

@honnix I thought I asked everyone that, sorry!  Can you not do 3.7?  We changed our minds a while back and decided to do 3.7 instead of just 3.6 and there's better typing support (even if hidden behind a future import).

@wild-endeavor Yeah I remember that conversion. It's not a big deal and we can prepare to get move to 3.7+. I will close this for now, unless we get an urgent need for it (things like we cannot wait for readiness of the new API, but unlikely to happen).


Modules

Dependent on #4, a standard way to include new modules, preferably within the one-file structure, is needed.

Not sure what I was thinking then, but since the rebuild, this seems superfluous.


I have Scopus abstracts in my outputs

they are allowed to be there, comment added to dashboard to reflect this


RFE: could enums be added to the library to cover the flag values some API points take?

For example, the interfaces field is a good example (on the host.create() API):
    interface = [         {             "type": 1,  # 1 is 'agent', 2 is 'SNMP', 3 is 'IPMI', 4 is 'JMX'             "main": 1,  # 0 is 'not default', 1 is 'default'             "useip": 0,  # 0 is 'use DNS', 1 is 'use IP'             "ip": "",  # doc says can be blank but not _undefined_ if using DNS             "dns": f"{host['name']}.{hg_config['dns_domain']}",             "port": "10050",  # default port for zabbix agent   # BUG: this is wrong for other template types         }     ]
Would be more clear if
"type": interface.agent,
"main": interface.default,
etc etc
were allowed.

Hello @matthewsht, thanks for your comment.
Sorry, I'm not sure I got your example. Could you clarify what is the principal issue in your case? Maybe you can provide more examples or a longer description of the problem.
In general, the ZabbixAPI class is just a wrapper for Zabbix API. So, it provides literally the same methods and fields as the API.

Issue closed due to long time no feedback from the author.


[Py 3.9.7] Says Lang Not Supported?

Hello, I am using Python 3.9.7 on Windows and it says lang not supported? When I expand the lang section it is also empty, why?

same, React with file extension .js cause Language not supported in Documentation Progress tab and empty in Generate Docs tab.

Hi there! That seems to be a particularly interesting bug, likely caused by an error from parsing JSX when it assumes it's a JS file. Looking into it and the issue from @Ozeitis as well


SynchronizationMode in top level wrapper?

Hello. I want to create/modify keychain entry so it will not synchronize with icloud. Is it possible with "classic methods" from SSKeychain.h without using custom queries?

No new features are being added to the "classic methods" until it's ported to Swift with optional arguments. Sorry.

You're definitely welcome to add a category in your own code if you really want it.


Normalize how the global heap size is defined across iwasm apps.

Hello,
When creating some benchmarks for WAMR, I realized I needed a way to modify the global heap size provided in core.h. Nonetheless, this definition is not always picked up, depending on which iwasm application is used. For many of them, some sizes are hardcoded and cannot be easily changed except by editing the source code file directly.
Therefore, I propose a PR that unifies the global heap size in a single CMake configuration variable WAMR_BUILD_GLOBAL_HEAP_SIZE, that the developers may override when executing cmake. This variable is taken into account by all the iwasm implementations and adequately documented.
As a result, the developers who build iwasm can easily change the size of the global heap regardless of the iwasm implementation, without manually finding and patching the right location for that value.
As always, I'm open to any feedback regarding how it has been implemented.
Cheers!

Some updates for this PR: I added the flag WAMR_BUILD_GLOBAL_HEAP_POOL globally, to reflect the internal flag WASM_ENABLE_GLOBAL_HEAP_POOL that is used in some iwasm implementations.
Harmonizing this flag makes it convenient to compile every iwasm app with the global heap pool enabled, and with a given size. As such, we can now compile iwasm apps with these additional flags:
cmake .. -DWAMR_BUILD_GLOBAL_HEAP_POOL=1 -DWAMR_BUILD_GLOBAL_HEAP_SIZE=$((200 * 1024 * 1024))
make

@lum1n0us Could you help review this PR? And check whether we need to modify the makefile of nuttx?

Hello @wenyongh,
Thanks for your feedback! I have applied the changes related to not using the global heap pool for the SPEC test in SGX, but it seems the unit tests failed. Have you an idea to make it works? It seems you indicated to have made it works on your side.
I'm waiting on the feedback of @lum1n0us regarding the Makefile for the platform nuttx. :)
Thanks!

@lum1n0us Could you help review this PR? And check whether we need to modify the makefile of nuttx?

Sorry, should add @no1wudi to help review the PR.

Hello @wenyongh,
Thanks for your feedback! I have applied the changes related to not using the global heap pool for the SPEC test in SGX, but it seems the unit tests failed. Have you an idea to make it works? It seems you indicated to have made it works on your side.
I'm waiting on the feedback of @lum1n0us regarding the Makefile for the platform nuttx. :)
Thanks!

@JamesMenetrey, for the SGX spec case test issue, it is due to memory allocation failed, how about enlarging HeapMaxSize in Enclave.config.xml?
--- a/product-mini/platforms/linux-sgx/enclave-sample/Enclave/Enclave.config.xml
+++ b/product-mini/platforms/linux-sgx/enclave-sample/Enclave/Enclave.config.xml
@@ -3,7 +3,7 @@
   <ProdID>0</ProdID>
   <ISVSVN>0</ISVSVN>
   <StackMaxSize>0x100000</StackMaxSize>
-  <HeapMaxSize>0x2000000</HeapMaxSize>
+  <HeapMaxSize>0x8000000</HeapMaxSize>

Changing from 32MB to 128MB works for ./test_wamr.sh -s spec -t aot -S -x -p -P

I have increased the heap max size as requested and the SPEC tests are passing now. :)

Hey @no1wudi, thanks for your review. I have removed the changes to nuttx.


I get "Callbacks are not supported when broadcasting" error when implementing acks

I'm trying to emit data (with ack) to a specific socket based on socket id. I use redis-adapter and I want to be able to send the message even if the other user is connected to another node.
I use io.of(namepsace).to(socketId).emit(event, data, (ack) => { ...code })
But I get the error: Callbacks are not supported when broadcasting.
Copilot gives me a solution where I should use:
const socket = io.sockets.sockets.get(socketId)
socket.emit(event, data, (ack) => { ...code })

but io.sockets.sockets.get(socketId) returns undefined since io.sockets.sockets is an empty Map
io.of(namespace).sockets only returns sockets from the current node, not all nodes.
the io.of(namespace).adapter.fetchSockets() gives an error: Cannot read property 'rooms' of undefined
I got recommended to use serverSideEmit. which should be usable with the socket.io and socket.io-redis versions I use but I get the error: "TypeError; io.serverSideEmit is not a function"
How do I implement acks for more robust communication?
I currently use socket.io v4.0.0 and socket.io-redis v6.1.0.
Please help

Used the new @socket.io/redis-adapter package and got serverSideEmit to work. However, you can't send a socket in a callback.
Now I use a solution including io.of(namepsace).fetchSockets(). However the same problem occurs when emitting with ack (Callbacks are not supported when broadcasting). I guess then using acks is not possible when on a multi-node solution like @socket.io/redis-adapte offers.

Used the new @socket.io/redis-adapter package and got serverSideEmit to work. However, you can't send a socket in a callback.
Now I use a solution including io.of(namepsace).fetchSockets(). However the same problem occurs when emitting with ack (Callbacks are not supported when broadcasting). I guess then using acks is not possible when on a multi-node solution like @socket.io/redis-adapte offers.


Boundary Wave Simulation

Interested if your simulation can reproduce the "faster than light" boundary wave pulse, see Section 3.2 of the PDF here: https://github.com/AaronWebster/directdebye

Thank you! I'll have to look into it...
Best, Nils


@material-ui/utils package doesn't have correctly setup types main and module fields.

Material-ui/utils are not private package and can be downloaded from npm. It would be great to use them outside of material-ui. Which is not possible in typescript right now.
https://github.com/mui-org/material-ui/blob/next/packages/material-ui-utils/package.json

[x] The issue is present in the latest release.
[x] I have searched the issues of this repository and believe that this is not a duplicate.

Current Behavior 😯
Cannot find module '@material-ui/utils' or its corresponding type declarations.
Expected Behavior 🤔
Possibility to use this package in typescript.
Steps to Reproduce 🕹
https://www.typescriptlang.org/play?#code/JYWwDg9gTgLgBAKjgQwM5wEoFNkGN4BmUEIcA5FDvmQNwBQokscA3gL5xEnkACIyMLFGDIANgFoArsAD0kmMFGpadOgUkA7fMAga4AESwgIACgCUrOnDgyZcAJoRJUOLggATLHTZA
Steps:

npm install --save @material-ui/utils
try to import import {} from '@material-ui/utils';
Cannot find module '@material-ui/utils' or its corresponding type declarations.

Tech
Version

@material-ui/utils
^4.9.12

React
not-relevant

Browser
not-relevant

TypeScript
4.1.2

Thanks for the report.
Can confirm that this works with @material-ui/utils@next but fails with latest i.e. 4.x.

@eps1lon Sound we close in this case, as it was fixed by #22367?

It would be great to use them outside of material-ui.

@rajzik Is there a specific helper you are interested in? Is there a module exported from @material-ui/utils@next that is prefixed with unstable_?

@oliviertassinari I am interested in deepMerge.
Next version is correct.

@rajzik Our deepmerge is a simplified version of the logic, it might not handle all the edge cases, you might want to use https://github.com/TehShrike/deepmerge if you need a sounder approach. It's +319 kB gzipped larger.

@eps1lon Sound we close in this case, as it was fixed by #22367?

I can't make that decision since LTS policy interpretation is not up to me.

Ok so considering that we have lived without TypeScript support for this package for a long time now, I don't think that it covers any of:

⚠ All ongoing work has moved to v5. The development of v4 is limited to important bug fixes, security patches and easing the upgrade path to v5.

@rajzik Feel free to migrate to v5 to take advantage of these new features :). However, mind that the unstable_ modules don't respect SemVer, we might never make them public. Also, feel free to make a case for turning unstable_ modules into stable ones. We area eager to hear more about the use cases.


Make hopTo public again

This makes the hopTo(eventLoop:) function public again.
Motivation:
In combination of 6b914e891f6c30f332b14dc15bcc78a1985942f5 and 26bee216743165ee6ce32e27a7c6e82a2b0e52e5, the hopTo(eventLoop:) function was accidentally made internal, because the public modified was removed from both, the extension and the func itself.
Modifications:
Re-add public to the definition of hopTo(eventLoop:).
Result:
Projects using hopTo(eventLoop:) will build fine again. They're broken with the current 1.14.0 release.

Ugh, sorry. Missed that there's already #963. Closing this.


Long Form

i have a form with 1200 input.
Work like a charm.
But all input is showing outside the chat white main box. So i scroll down and down over 1200 input.
Any way to make chat 100% fluid and 100% width and height for hidding completely all input down after chat window and in the same times, disable scroll down of all input after chat window

error on mycside. no issue

i confirm
long form with many inputs make a very long height of entire form and blank space for.
its could be great if the size of global chat be dynamic depending how much input you have. svrolling is there anyway...no need to show entire history (and blank more than 2680px on my page)

or if we can set a max-height in entire fkrm...but keep scroling of history. The oroblem is when yiu have 1200 input....the form make space for all chat allready. how we can keep a chat of 600px by example, and hide history and use scrolling as he's

@xblix it sounds like you need to define cf-context and control the height of that element.

cf-context style="height:300px;visibility:hidden;overflow:hidden" works like a charm!


Add SPARQL filter example to the e-Link tutorial

work in progress: http://api-dev.freme-project.eu/doc/tutorials/getting-started-with-e-link.html

done, however creation/updata/removal of a template is not working due to https://github.com/freme-project/e-Link/issues/67
@jnehring please check

Done. when needed we can discuss it further in https://github.com/freme-project/Documentation/issues/167#issuecomment-186189195


sanic works like a charm on Windows 10 with "Bash on Ubuntu on Windows"

I think  "No wheels for uvloop and httptools on Windows :("  is not a limitations.
I like uvloop and this framework. But I have to work on Windows since UE4 is not handy on other system, It's painful to have a linux virtual machine or dual system,  I thought I can try "Bash on Ubuntu on Windows", it just works! :)

I have also run Sanic on Windows 10 Anniversary Edition by following these steps:

Activate developer mode
Install ubuntu bash support from add/remove Windows features
Upgrade Ubuntu to 16.04 (you should run apt-get remove screen first
Run my app.

It works :)


MWPW-155099 - renew banner update

Resolves: MWPW-155099
LINKS:
US page:
Before: https://stage--dme-partners--adobecom.hlx.page/channelpartners/drafts/dragana/announcements
After: https://mwpw-155099-renew-banner-update--dme-partners--adobecom.hlx.page/channelpartners/drafts/dragana/announcements
DE page:
Before: https://stage--dme-partners--adobecom.hlx.page/de/channelpartners/drafts/dragana/announcements
After: https://mwpw-155099-renew-banner-update--dme-partners--adobecom.hlx.page/de/channelpartners/drafts/dragana/announcements

Codecov Report
Attention: Patch coverage is 55.55556% with 8 lines in your changes missing coverage. Please review.

Project coverage is 80.69%. Comparing base (65f0abb) to head (9579676).

Files
Patch %
Lines

edsdme/scripts/utils.js
55.55%
8 Missing :warning:

Additional details and impacted files
@@            Coverage Diff             @@
##            stage      #39      +/-   ##
==========================================
- Coverage   81.91%   80.69%   -1.23%
==========================================
  Files           8        8
  Lines        2793     2792       -1
==========================================
- Hits         2288     2253      -35
- Misses        505      539      +34

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

@draganatrajkovic since this does not include announcements, it may be smart to use a simple page for before/after so the Lighthouse scores are better.


CI: introduce codecov

https://codecov.io/

Current coverage is 68.40% (diff: 100%)

No coverage report found for master at 81dd95f.

Powered by Codecov. Last update 81dd95f...8f416fd

chrome extension: https://chrome.google.com/webstore/detail/codecov-extension/keefkhehidemnokodkdkejapdgfjmijf
source: https://github.com/codecov/browser-extension

Really nice!


fix(build): run script would continue even if an error occured in build

#5  👈
main

This stack of pull requests is managed by Graphite. Learn more about stacking.

Join @delta1024 and the rest of your teammates on  Graphite


Make CustomOptionsFlags public

Make CustomOptionsFlags of Selection public in order to let users provide additional contextual information about selections

 Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.Daniel Wust seems not to be a GitHub user. You need a GitHub account to be able to sign the CLA. If you have already a GitHub account, please add the email address used for this commit to your account.You have signed the CLA already but the status is still pending? Let us recheck it.


Bank tags - Withdraw all option

Allow you to right click the tab and "Withdraw all"
Would be insanely useful not having to withdraw one by one.
Especially farm runs o boy

This would be macroing, we cannot implement this feature.

sad


Restrict the number of stack inputs and outputs to 16

Currently, we allow users to specify an arbitrary number of stack inputs and outputs. This adds quite a bit of complexity to the constraint system (i.e., needing to manage the initial and final states of the stack overflow table). Moreover, practical benefit of this capability are limited (and in some ways, may be actually detrimental).
So, I think we should remove the ability to provide an arbitrary number of stack inputs/outputs and instead limit these values to 16.
As a part of this, we should also make sure all documentation related to the stack overflow table is up to date.

Most of this has been addressed in #1456 - but we still need to update the documentation before we can close this issue.

Closed by #1456 and #1530.


Transaction payment runtime api: query call info and fee details

Related #11665
New rpc and runtime api calls to query weights and fee for Call.
Use case:

BuyExecution for XCM Transact operation, to execute Call.

Requirements:

provide runtime api calls to utilize api.rpc.state.call for light clients (not only RPC calls)
no new custom RPCs

Useful links:

Substrate Recepis: Runtime APIs
Substrate Recepis: Custom RPCs
RPC state call

Just as note since we talked about it yesterday:
This does not solve the problem of estimating costs in the XCM use-case (eg. BuyExecution) since its executed on the source chain, not the destination one.

Just as note since we talked about it yesterday: This does not solve the problem of estimating costs in the XCM use-case (eg. BuyExecution) since its executed on the source chain, not the destination one.

@ggwpez have looked into it again and double checked with Kieth.
When XCM message sent with BuyExecution and Transact, the fees and weights calculated on the destination chain.
But there is another problem which not related to the use case addressed in this PR.
For teleport and reserve transfer via XCMpallet the weight calculated on sender side.

The problem here being that a runtime api should always use a "stable" api.

Why is this a problem?

The problem here being that a runtime api should always use a "stable" api.

Why is this a problem?

I know that I'm a little bit pedantic here.

The problem here being that a runtime api should always use a "stable" api.

Why is this a problem?

I know that I'm a little bit pedantic here.

It was an honest question. I want to know why you think it is better to fail later within the runtime. I don't understand why that changes anything compatibility wise. Clients still need to encode it according to whatever the runtime expects.
I think it is better to have the type defined on the runtime API so it is obvious for clients what the signature of the API is. Otherwise they need to look into the actual code that decodes it later to know what is expected. Additionally, the plan is to expose runtime APIs through metadata just like extrinsics which would be totally pointless if all types are opaque.

Hmm yeah good point and sorry for my useless answer.
Yeah, maybe we should treat them as some sort of special runtime api. In the future we should probably provide some way to expose these apis more easily from the runtime. Aka not requiring first to declare the api somewhere else.

So we go back to declaring the proper type in the API? I am not sure what the implications are. i.e where does the decoding failure happen.

@bkchr @athei using Call type now for api.
@athei decoding failure is upstream, somewhere within state_call.
I also tested the runtime api with Call type, by calling state_call and passing string of bytes from (Call, len).encode(). It works.

bot merge


Reth on Goerli periodically loses sync

Describe the bug
Every so often, --full Reth on Goerli will lose sync
Steps to reproduce
Sync Reth on Goerli, with --full flag
Observe
When the issue occurs, a curl to the syncing endpoint will return something like
curl -s -m2 -N -X POST -H "Content-Type: application/json" --data '{"jsonrpc":"2.0","method":"eth_syncing","params":[],"id":1}' "https://goerli-a.cryptomanufaktur.net"
{"jsonrpc":"2.0","result":{"startingBlock":"0x94fec2","currentBlock":"0x9515b5","highestBlock":"0x9515b5","warpChunksAmount":null,"warpChunksProcessed":null},"id":1}

This does not last long, just long enough to be declared "down" by our custom haproxy check
I didn't see a smoking gun in logs, but I did see a prune log right around when this happened. I am wondering whether the prune run causes it to lose sync.
The node is also serving RPC
reth.log
Node logs
No response
Platform(s)
Linux (x86)
What version/commit are you on?
reth Version: 0.1.0-alpha.9 Commit SHA: b701cbc
What database version are you on?
No response
If you've built Reth from source, provide the full command you used
No response
Code of Conduct

[X] I agree to follow the Code of Conduct

looking at the logs,
eth-goerli-execution-1  | 2023-09-27T21:36:26.387735Z  INFO reth::node::events: Forkchoice updated head_block_hash=0x661c654a105f0d4d6fa8091f388296cad9e7aded10a2806406239392e8664db4 safe_block_hash=0x1c85a0d2a3599181274bbe52750f5b3851d94190afde45e33c080e7c7c016f73 finalized_block_hash=0xdc24c315714ded39afb28893fc62a2165237ade500f1e5e060315ffbecbccc06 status=Valid
eth-goerli-execution-1  | 2023-09-27T21:36:29.183070Z  INFO reth::cli: Status connected_peers=110 latest_block=9770430
eth-goerli-execution-1  | 2023-09-27T21:36:37.293529Z  INFO try_insert_validated_block{block=(9770431, 0x6f4d3577ee094cf6659d9c33d3722467fb5ae74f34d5af01ca378ffd5ca67ef1)}: blockchain_tree: return=Ok(Valid)
eth-goerli-execution-1  | 2023-09-27T21:36:37.293553Z  INFO reth::node::events: Block added to canonical chain number=9770431 hash=0x6f4d3577ee094cf6659d9c33d3722467fb5ae74f34d5af01ca378ffd5ca67ef1
eth-goerli-execution-1  | 2023-09-27T21:36:37.331840Z  INFO make_canonical{block_hash=0x6f4d3577ee094cf6659d9c33d3722467fb5ae74f34d5af01ca378ffd5ca67ef1}: blockchain_tree: Committing new canonical chain: [(9770431, 0x6f4d3577ee094cf6659d9c33d3722467fb5ae74f34d5af01ca378ffd5ca67ef1)]

looks like it's still synced?
are you specifically referring to the rpc endpoint?

It's reporting it is no longer synced via RPC, which causes our haproxy to mark it down

fyi @shekhirin

This occurs repeatedly, but not "all the time" ... a few times a day maybe.

Probably when HAProxy healthcheck coincides with pruner run which sets the eth_syncing to non-false value.
We'll think what to do with it, because CL also uses the eth_syncing endpoint to determine whether to send us new updates or not, and when the pruner is running, we can't process any.

Due to how eth_syncing works, I think the best would be calling eth_getBlock for two different nodes to check sync

Hmm interesting. How long should a pruning run take? I think my haproxy needs to see 3 failures and checks every 10s, so returning “busy” for 30s seems a bit worrisome even for staking / validation purposes

@yorickdowne we found a bug that made the eth_syncing return true not just for the time pruning is running (which is <1s), but for ~12s until the next FCU/payload arrives. https://github.com/paradigmxyz/reth/pull/4847 should fix that, we're testing it right now.

@yorickdowne can you update your node to latest main and check again?

Yep definitely can

@shekhirin #4854 may have gotten in the way. My Reth did not catch back up. So I'll focus on that for a bit, then back to this :sweat_smile:

This appears to be resolved. We haven't seen the issue in the last 2 weeks. Thanks!


Rename local_settings_root_makers to local_settings_root_markers_fallback and use lspconfig.<server_name>.get_root_dir instead

I was working on a rust project and I noticed that root for the package was wrong because of "manual" root deduction.
Instead of using root markers I'm using the builtin root finder in lspconfig that you are already using and root markers as a fallback, so I renamed variable configuration to better represent it.
Nice work btw 😃

Thank you for your contribution.
Could you also fix doc/nlspsettings.txt?

I'm thinking about insert .nlsp-settings as default in local_settigns_root_markers_fallback so you can use it as a marker if you had to manually configure the project. What do you think about it?

I think its a good idea!
Let's add .nlsp-settings.

Thank you!


Provisioning Service - setup

Do you have any documentation on how to set up infrastructure and deploy sp-provisioning-service?

Hi,
Thanks for your request. Right now, we don't have technical documentation about how to setup the SP Provisioning Service in your own infrastructure. I'm sorry.


How to transmit NULL character through uart in esp-idf 3.3 (IDFGH-2735)

How to transmit NULL(0x00) character through uart in esp-idf 3.3  .
I need to pass a string which contains NULL in middle of strings  .

Hi, @manojsai17
uart_write_bytes  can transmit NULL character ,Have you tried？
thanks !!

ok


AJAX

I haven't really used native fetch before, so I took a closer look and found that it's not supported in Safari, IE or Edge, which is a huge gap, and most of the recommended replacement libraries / polyfills are quite large.
Seeing as AJAX a common need ( #15, #99 ), it may be worthwhile to keep a simple AJAX method with IE9+ support using XMLHttpRequest & script for JSONP.
I was able to work out a rough method that only weighs 1kb minified, 0.6kb gzipped, with a decent set of functionality. Is this something that would be worth integrating into cash and building some tests for or do we want to keep AJAX out?
POST request: http://jsfiddle.net/qfrqxgac/3/
GET & JSONP (CORS) request: http://codepen.io/shshaw/pen/QNxprm?editors=0010
http://httpbin.org/ would be a good resource for running tests.
function noop(){};

var ajaxOpts = {
      success: noop,
      error: noop,
      complete: noop,
      type: 'GET',
      async: true
    };

var uid = Date.now();
cash.guid = function(){
  return '_cash'+(uid++).toString(16);
};

cash.ajax = function(url,options) {

  if ( arguments.length === 1 ) {
    options = url;
    url = options.url;
  }

  if ( !url ) { return false; }

  options = cash.extend({},ajaxOpts,options);

  var request,
      queryData,
      callbackName;

  if ( options.dataType === 'jsonp' || options.dataType === 'script' ) {
    request = document.createElement('script');
    callbackName = cash.guid();

    options.data.callback = callbackName;
    window[callbackName] = function(data){
      options.success.call(request, data, null, request);
    };

    request.onload = request.onerror = function(e){
      if ( e && e.type === "error" ) {
        options.error.call(this, request);
      }
      options.complete.call(this, request);
      request.remove();
    }

    queryData = '?';
    for (var key in options.data){
      queryData += encodeURIComponent(key) + '=' + encodeURIComponent(options.data[key]) +'&';
    }

    request.src = url + queryData;
    document.head.appendChild(request);

  } else {
    request = new XMLHttpRequest();
    request.open(options.type, url, options.async);

    request.setRequestHeader("X-Requested-With","XMLHttpRequest");

    request.onload = request.onerror = function onload() {
      var text = request.statusText;
      if ( request.status >= 200 && request.status < 400 ) {
        var response = request.responseText;
        if ( options.dataType === 'json' ) { response = JSON.parse(response); }
        options.success.call(this, response, text, request);
      } else {
        options.error.call(this, request, text);
      }
      options.complete.call(this, request, text);
    };

    if ( options.data ) {
      queryData = cash.isString(options.data) ? options.data : JSON.stringify(options.data);
    }

    request.send( queryData );
  }

  return request;
};

Any way to maintain the chaining of .done(), .fail(), .always() ? ... guess it would require promises... which would require browser checks/polyfills... meh.
I still think using a library is better, because the user then has the choice of how big their codebase is. I also see that if we implemented this, then we'd have 100+ issues raised immediately with AJAX requests (ie: add more features, chainable callbacks (promises))

done, fail and always shouldn't be too difficult to implement without Promises as they're basically just another way to do the success, error and complete callbacks, respectively. The $.ajax function could return a promise-like class that wraps the request with those methods on the prototype. I expect that will still be pretty lightweight overall.
I think that if we decide to include AJAX, we should set the limitations and document that in the README to prevent feature creep or tons of issues.
Alternatively, this could be a separate file (a plugin, if you will) so that users who don't need it don't get any bloat, and users who do want it have a familiar way to handle AJAX requests without learning a new library or adding another 10+kb to their codebase.

Something along these lines:
function Request(url,options){
  ...
}

Request.prototype = {
  done: function(){},
  fail: function(){}
  always: function(){}
};

cash.ajax = function(url,options) {
  return new Request(url,options);
}

well, I'm not against a module that is separate to the core :)
cash.dom, cash.ajax or something... but I would like to get the unit tests finished first so it can be properly covered :) Making some good progress on that front. We should get a gitter/slack channel so we can talk a bit easier.

Absolutely. Unit testing will definitely be vital. AJAX isn't a high priority, but it seems to be functionality people would get use out of, whether it's a plugin/separate module or a part of the main library.
Gitter/Slack could be worthwhile for larger planning. I don't have much experience with either, so I'm flexible if you or @kenwheeler would like to get something going.

I am not in favor of adding Ajax since we already have well tested and robust libraries out there, isn't cash was supposed to handle dom and be lightweight?

@shshaw @simeydotme @vivekimsit I agree with this sentiment. Fetch is polyfilled fantastically in current form. Outside of that, there are plenty of 3rd party libs that are great for ajax func. My vision of cash is, generally speaking, dom traversal, manipulation only. The only reason I would use jquery now is to query and operate on the DOM. Cash, in theory, should serve that need.

@kenwheeler @simeydotme @vivekimsit I understand the desire to keep Cash DOM only, however AJAX is an action that's often heavily tied to the DOM (inserting additional content, submitting data from a form & showing a response, etc.).
Looking at the main polyfills / alternate libraries, you'll be adding at least 10kb to your codebase (more if the browser doesn't support promises), you're still having to learn another syntax, and fetch doesn't support JSONP by default, meaning yet another polyfill/library.
At the very least, we should consider providing a simple $.ajax wrapper for fetch with the familiar API, much like the rest of Cash provides a familiar API and convenient methods for modern browser functionality.
If fetch needs to be polyfilled (IE, Safari and mobile browsers), we can warn in the console, and could add simple JSONP support like fetch-jsonp. All in all, this would likely be 1kb or less, and again could be provided as a separate module/plugin to keep the core Cash library light.

There is a polyfill for those old browsers. https://github.com/github/fetch
This polyfill is written as closely as possible to the standard Fetch specification at https://fetch.spec.whatwg.org.

Yeah, I've looked at few polyfill options, @teamgroove. Problem is for most of these you still need a 30kb Promise Polyfill library for IE in addition to the Fetch polyfill, and I think IE9 is still left out in the cold.

It will only be polyfilled with conditional-comments, right? So - this 32kb payload will only hit the ones that deserved it :)
IE10 should do it, or am i wrong? https://github.com/github/fetch/issues/129

Little off-topic, but the same kind of issue on the horizon, if we'd like to do ES6-promise. IE is by far not the benchmark for adding extra code into a lib. shim es6-promise: https://github.com/stefanpenner/es6-promise

Not necessary to increase the size of the library, in addition, the entire code for ajax - essentially sugar.
http://blog.garstasio.com/you-dont-need-jquery/ajax/
Best usecase is using something like Vue.js for UI and cash for other low level features and rest data loading into plain js objects. Vue.js has no model fetching from server and will be good use simple and clear api in cash for it.

@menangen @teamgroove Yes, modern browsers have Fetch built in that works great and there are polyfills for adding that support in older browsers, but supporting all relevant browsers is a pain and requires a lot of knowledge from the developer on how to set that all up.
There are a lot of major browsers do not support Fetch, like IE11-, Edge 13- and Safari 9-, and many of them would require the additional Promise polyfill. Several of those browsers don't support conditional comments, so you're looking at adding feature detection/conditional loading libraries to load the polyfilll.
Cash is designed to make relatively simple tasks even easier with a common interface and helpful utilities. Using the code from youdontneedjquery.com is a lot to remember or setup for a lot of developers that just want a clear and easy API that works across browsers. There are other libraries that do AJAX requests, but that's just another dependency for developers to learn and integrate with Cash. Requiring external dependencies, conditional comments, and/or conditional loading to support a basic function isn't really simple and means a lot of bloat and setup on the developer's end.
The initial code I have posted is a small wrapper for XHR & JSONP requests, making it easy to create basic requests to fetch and post data all the way back to IE9 without any polyfills or external dependencies. It would be a separate file from Cash for users that need the functionality so it won't add any bloat, and developers that like Fetch are still free to use it and manage their own polyfills.
@kenwheeler Feel free to shut this down or confirm that AJAX is something worthwhile to add as a separate add-on. I've made my case for why AJAX would be valuable to have in the Cash toolkit, but it's ultimately your call.

@shshaw Your last reply basically is the answer to why people still uses jQuery.
It works and is pretty reliable for all common tasks. I can't stress enough how important that is.
The problem with youdontneedjquery.com is that it completely ignores cross browser niggles and issues. Just because something works doesn't mean that it really works to a 100%. Often one has to be extremely aware of all current cross browser issues when doing native JS. For the most time one is fine but not always... This "not always" can steal a lot of hours and in a professional environment with 10k different users per day with different browsers, hardware etc etc etc one simply do not got the time.

Maybe  https://github.com/axios/axios or https://github.com/typicode/fetchival (smaller) as plugin?

I use native ‘fetch’ anywhere, also in Vue and Preact environment...with ‘await’ of course.

Because of compatibility to jQuery maybe some other solution would be better then axios or fetchival.
https://github.com/fdaciuk/ajax

I think we shouldn't add support for this if the API would be completely different from jQuery's implementation, in that case just include that other thing into your bundle along with cash.
I'm ok with including support for AJAX as a plugin, basically included in the repo but disabled by default in our bundles, that's basically a subset of what jQuery implements.

I signed up to Github solely to ask for basic $.get and $.post in Cash. Thank to you @fabiospampinato, this library is now in fantastic shape. So much so that we're going to use it in a new project. But AJAX is all that's necessary to make Cash a perfect, single-dependency framework for client-side development, and therefore a true jQuery replacement.
Please consider implementing it, in as few bytes as possible, naturally 😄

@DzigaV I'm personally using a modified version of unfetch that provides a similar API to jQuery.ajax, returns a fetch-like Response object, and implements a few other things I need, you might want to consider it maybe, you can find it here.
I currently don't have the time nor the need for writing an ajax plugin for Cash, but if you want to submit any I'll be happy to consider it.

axios
https://github.com/axios/axios

After playing with fetch I would prefer a modern fetch() solution as plugin...
Works nice also with php $_POST if body is converted to FormData.

There is already a lot of good fetch wrappers, (eg. https://github.com/elbywan/wretch).
I think another implementation in cash is not necessary to keep the Cash library simple and thin.

@SamyCookie
Thanks for sharing wretch!  I have  to take a look :)

Add the script https://polyfill.io/v3/polyfill.min.js?features=fetch. Start writing your fetch. Polyfill.io will automatically detect the browser and adds polyfill to supported-browsers, if necessary.

@fabiospampinato I really like the idea of cash. I also just researched unfetch and agree that might be the better way. Leave it separate. 500 bytes.

Closing as an official ajax plugin won't be written, use one of the suggested ones. If anybody knows of any plugin that's compatible with Cash and implements the same API as jQuery well I'll link to it in the readme.


Add --input-has-vars flag to control variable substitution in input

Make template variable substitution in input opt-in via --input-has-vars flag
Problem
When users paste Ansible, Jekyll, or other content containing {{variable}} syntax into fabric,
our template processor attempts to resolve these variables, leading to unwanted variable
substitution and errors about missing variables.
Solution

Added new --input-has-vars flag
Template variable substitution in user input only occurs when flag is set
All other template processing (patterns, etc.) remains unchanged
Preserves literal curly braces by default

Testing
# Without flag - preserves template syntax
echo "Hello my name is {{name}}" | ./fabric -v=name:Matt
> Hello! It looks like there might have been a small error...

# With flag - performs substitution
echo "Hello my name is {{name}}" | ./fabric -v=name:Matt --input-has-vars
> Hello Matt! How can I assist you today?

Relates to :
https://github.com/danielmiessler/fabric/issues/1184
https://github.com/danielmiessler/fabric/issues/1171

Thank you!

Looks like there's still something wrong. I'm running the latest version.
$ git diff | summarize_git_diff
could not get pattern summarize_git_diff: missing required variable:  domain

$ fabric --version
v1.4.120

$ fabric --help | grep input-has
      --input-has-vars      Apply variables to user input

Hmm, this is the test I used
Echo "my name is {{name}}" | ./fabric
Can you try some tests and report back?

I created https://github.com/danielmiessler/fabric/pull/1197


Updates compatibility notes for ##vso[release.updatereleasename]

##vso[release.updatereleasename] is supported as of Azure DevOps Server 2020.

This change is

@jessehouwing : Thanks for your contribution! The author(s) have been notified to review your proposed change.

#sign-off

@vtbassmatt: I'm sorry - only the author of this article, @juliakm, can sign off on your changes. But we do have an exception process - if you are on the Microsoft content or product team for this product area, you can ask the PR review team to review and merge it by sending mail to the techdocprs alias.

Well then, robot, I guess I'll let @juliakm sign off on it 😁

Haha poor Matt!
On Thu, Oct 15, 2020, 15:28 Matt Cooper<EMAIL_ADDRESS>wrote:

Well then, robot, I guess I'll let @juliakm https://github.com/juliakm
sign off on it 😁
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/MicrosoftDocs/azure-devops-docs/pull/9489#issuecomment-709324384,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AA724S7SHBCMGLHIE4DUTEDSK32GVANCNFSM4SR5UYGQ
.

@ktoliver : Thanks for your contribution! The author(s) have been notified to review your proposed change.

Well then, robot, I guess I'll let @juliakm Julia Kulla-Mader FTE sign off on it 😁

A close match, but I think @vtbassmatt won in the end. Thanks for your review.


HTML5 Custom Elements

Since HTML5 allows us to define custom tags, has any thought been given to using custom tags to make simpler markup for Semantic?
I could see it being useful in defining custom form input elements like a calendar, spinner, slider, etc.
Or would this be better suited as a third party add-on that users could choose to use?

my first thought was angular directives, they are great for such a job.

This is W3C's web components spec. If you havent looked at "Shadow DOM" spec I encourage you to check it out.
I have doubts about W3C web component adoption given the obtuseness of the spec. I've addressed my thoughts on the nature of standards bodies in other threads, so I'll avoid sounding like a broken record or ideologue.
I'll be in the audience at the W3C TAG Q&A in NYC on Wednesday if anyone is around.