 I would happy to remove those but that got me thinking, why don't we pull the scope of the gem into lets-encrypt interactions. We could then either have a directory of integrations (starting with Rails) to wire it up to frameworks or the framework integrations could be their own gem?
To me that clarifies testing, and widens the ability for this gem to help people.

Sorry for silly question (my RoR knowledge is still quite basic), but by interactions you mean something like ActiveInteractions mentioned in this article: http://taylor.fausak.me/2014/01/23/confidently-manage-business-logic-with-active-interaction/ ?

Since this issue has the name "Rails", may I chime in that Rails 5 is around the corner and I it would be nice to have this requirement loosened up a bit so that it allows for Rails 5?

Worst case: Allow people to test letsencrypt in the Rails 5 beta already without forking this gem
Best case: It already works out of the box :)

Would you accept a PR?

Well look at that I'm sorry I didn't notice that rails5  branch earlier. Keep up the good work! :)


Future: analytics should use extractor package to get email

:+1: yes we need to publish that package too :-)

Yea, I also have another issue for that, it would be nice to make it more generic, like a general extractor, so you can pluck any property like full_name, first_name, last_name, username, emails, email, etc
Extractor.get('full_name', user)
Extractor.get('email', user) // first email
Extractor.get('emails', user) // all emails

Just posting this as a reminder.
Cheers

I guess I'm late to the party on this one - what is Extractor ?


renderdoc.EnumerateRemoteTargets Block Process in Python

Description
when i call the function renderdoc.EnumerateRemoteTargets in python, it will block the process due to GIL. when CreateClientSocket failed, it will block a long time.
Environment

RenderDoc version: 1.22
Operating System: Win10
Graphics API: dx11

Yes this is normal, EnumerateRemoteTargets can take over a second in the worst case if there are no programs running on the remote host. If that's a concern I suggest putting the call on a different thread.

but in python, even if it is executed in a different thread, the main thread will block

Yes that is a python limitation and not something I can address.


The Big One: How to Display Credit and Trustworthiness

Ideally, we'd want to pop up a modal before Honouring any Proposal, or Accepting any Forgiveness.
This modal must explain that you balance is equivalent to your creditworthiness (higher balance == less creditworthy) and that your transaction history is equivalent to your trustworthiness.
Therefore, you don't want to honour proposals that put you too much in debt, nor do you want to honour proposals from accounts that have 'strange' transactions in their history. You also don't want to just accept Forgiveness from a random account (even if they offer a lot of forgiveness) because this would make your own account look suspicious.
This raises the question: "what is strange?" That is, what kinds of transactions in a given history make an account "suspicious".
My hunch is that it is largely contextual. There are some big giveaways though:

Taking on large debt only to forgive large amounts to a "botnet" like shape of inter-related accounts (i.e. dense interconnections, not many connections to other accounts outside the net)
Sudden forgiveness of a large debt from an account that the forgiven account has not interacted with before.

That said, how do "botnets" differ from local trade in a tight network of friends? Is there a way to reliably discern between the two. This gets us to:

Large transaction volume relative to the rest of the network (local groups are not likely to exchange more than once or twice a day at most).

So, in building our "trust model", we're looking at anomalous transactions (where anomalous == sudden change in relative magnitude of transaction size, either honouring - taking on debt - or forigiving - removing the debt of others) and anomalous transaction volumes.
For a v1, I think that simply putting up a modal which displays the transaction history of the proposer of the forgiver, before anyone either honours or accepts a given transaction is a good start. However, we will definitely need to do more to make it easy and intuitive for people to decide upon trustworthiness when interacting via HON.

I've begun work on this here: https://github.com/kernel-community/honour/commit/85e76afc93d5643f2b819094307c56891d9a6992
Specifically, this file: https://github.com/kernel-community/honour/blob/main/packages/dapp/src/hooks/calculateTrustScore.js
If anyone sees this and would like to provide feedback, I'd welcome it.

Added a comparison of accounts I have transacted with vs accounts you have transacted with (i.e. trust graph of depth 2)
https://github.com/kernel-community/honour/commit/4b425e9fe7d9cb23900ef65a30c8bf09b6e4533b


replace hard coded port to getFreePort() in switch_unittest.cpp

fix #1810: reduce the chance for port to conflict
add getFreePort() in C++ code
similar to heron/common/src/java/com/twitter/heron/common/basics/SysUtils.java:getFreePort()

see #1847


How to getHighestDataRow with only a $reader

I am using this code:
class ExtractController extends Controller {

    /**
     * Extract data from an excel file
     */
    public function excel()
    {
        $path = '/home/vagrant/Code/laravel/excel';
        $file = 'sample_data.xlsx';
        $filepath = $path .DIRECTORY_SEPARATOR.$file;
        $results = \Excel::load($filepath, function($reader) {
            $reader->limit(100);
            $reader->toObject();
        })->get();
        return view('extract')->with('results',$results);
    }

}

My view prints 100 rows as expected, but how do I get a worksheet handle to call getHighestDataRow with force_sheets_collection false? My $reader is just a RowCollection object. I'm just wanting to replace 100 in the limit, with the highest data row. Is that the recommended approach or is there another way?

Why do you want to do that? Behind the scenes it limits the results based on the last result.


Translation for invalid milestone due date format ISO 8601 fix.

Hello,
Just something I have noticed when going through the translation files...
As per https://en.wikipedia.org/wiki/ISO_8601 format, I have changed the translation strings (taking into account each country's ISO 8601 standard format (except for a few which haven't been translated).
So 'year-mm-dd' becomes 'yyyy-mm-dd' or the country's equivalent.
If I need to do anything else or if I have missed something, please let me know.
Thanks,
Matt

This won't get merged because the translations are managed through crowdin: http://gogs.io/docs/features/i18n

Thanks! But the only file will take effect is locale_en-US.ini, because as @tboerger mentioned, all other language local files are generated from Crowdin.

But, I'll do that for you on Crowdin :eyes:


cosmic number(gssoc'21)

Given a single integer N, your task is to find the smallest number such that the sum of its digits is N and it is divisible by 10N.
Examples:
Input : N = 5
Output : 500000
500000 is the smallest number divisible
by 10^5 and sum of digits as 5.
Input : N = 20
Output :<PHONE_NUMBER>0000000000000

Hello! I am a participant in GSSoC'21. I am really intrigued by this issue. Would be highly obliged if you could assign this issue to me. I will work on this using Java. Thanks!

Hi, @anubhavitis @dheerajkotwani @diyajaiswal11 @geekquad @nakul-19 @plazzy99 @rudrakshi99 @tarun26091999 @todi-2000 @Simar05519
I am a GSSoC'21 Participant,
Its my request that you please assign this issue to me.
I ensure you efficient and neat code in C++.


#JetStream Retention Policy Interest

##nats-server: v2.2.0-beta.46
##natscli : development
Hi,I have a question  insterest policy.
when I  consume message from stream as below ,I find  that msgs are removed after ack, and the msgs remains after I delete the consumer,is that just  right ?In my understanding ,the msgs in stream like below can only be removed after deleting the consumer and it's workqueue policy's behavior to remove msgs after ack...Thanks
Stream information:
Information for Stream MMMM created 2021-01-22T02:42:22-08:00

Configuration:

             Subjects: mmmm.>
     Acknowledgements: true
            Retention: File - Interest
             Replicas: 1
       Discard Policy: New
     Duplicate Window: 2m0s
     Maximum Messages: unlimited
        Maximum Bytes: unlimited
          Maximum Age: 0.00s
 Maximum Message Size: unlimited
    Maximum Consumers: unlimited

State:

             Messages: 0
                Bytes: 0 B
             FirstSeq: 0
              LastSeq: 0
     Active Consumers: 0

Consumer information:
Information for Consumer MMMM > MMMM created 2021-01-22T02:49:46-08:00

Configuration:

        Durable Name: MMMM
           Pull Mode: true
      Filter Subject: mmmm.1
         Deliver All: true
          Ack Policy: Explicit
            Ack Wait: 30s
       Replay Policy: Instant
     Max Ack Pending: 1

State:

   Last Delivered Message: Consumer sequence: 0 Stream sequence: 0
     Acknowledgment floor: Consumer sequence: 0 Stream sequence: 0
         Outstanding Acks: 0 out of maximum 1
     Redelivered Messages: 0
    Waiting Pull Requests: 0
     Unprocessed Messages: 0

When I send 20 msgs:
Information for Stream MMMM created 2021-01-22T02:42:22-08:00

Configuration:

             Subjects: mmmm.>
     Acknowledgements: true
            Retention: File - Interest
             Replicas: 1
       Discard Policy: New
     Duplicate Window: 2m0s
     Maximum Messages: unlimited
        Maximum Bytes: unlimited
          Maximum Age: 0.00s
 Maximum Message Size: unlimited
    Maximum Consumers: unlimited

State:

             Messages: 20
                Bytes: 820 B
             FirstSeq: 1 @ 2021-01-22T10:50:47 UTC
              LastSeq: 20 @ 2021-01-22T10:50:47 UTC
     Active Consumers: 1

when I consume 8 msgs:
Information for Stream MMMM created 2021-01-22T02:42:22-08:00

Configuration:

             Subjects: mmmm.>
     Acknowledgements: true
            Retention: File - Interest
             Replicas: 1
       Discard Policy: New
     Duplicate Window: 2m0s
     Maximum Messages: unlimited
        Maximum Bytes: unlimited
          Maximum Age: 0.00s
 Maximum Message Size: unlimited
    Maximum Consumers: unlimited

State:

             Messages: 12
                Bytes: 492 B
             FirstSeq: 9 @ 2021-01-22T10:50:47 UTC
              LastSeq: 20 @ 2021-01-22T10:50:47 UTC
     Active Consumers: 1

after I delete consumer:
Information for Stream MMMM created 2021-01-22T02:42:22-08:00

Configuration:

             Subjects: mmmm.>
     Acknowledgements: true
            Retention: File - Interest
             Replicas: 1
       Discard Policy: New
     Duplicate Window: 2m0s
     Maximum Messages: unlimited
        Maximum Bytes: unlimited
          Maximum Age: 0.00s
 Maximum Message Size: unlimited
    Maximum Consumers: unlimited

State:

             Messages: 12
                Bytes: 492 B
             FirstSeq: 9 @ 2021-01-22T10:50:47 UTC
              LastSeq: 20 @ 2021-01-22T10:50:47 UTC
     Active Consumers: 0

Hmm, the messages should definitely not be deleted after consuming - and I can't reproduce that:
With 200 messages and 1 active consumer:
$ nats s info INTEREST -j|jq '{"retention": .config.retention, "messages": .state.messages, "consumers": .state.consumer_count}'
{
  "retention": "interest",
  "messages": 200,
  "consumers": 1
}

I consume and ack and confirm num_pending decrease:
$ nats c info INTEREST X -j|jq .num_pending
190
$ nats c next INTEREST X
[12:15:07] subj: js.in.interest / tries: 1 / cons seq: 3 / str seq: 111 / pending: 189

11

Acknowledged message

$ nats c info INTEREST X -j|jq .num_pending
189

But the stream doesnt delete any messages:
$ nats s info INTEREST -j|jq '{"retention": .config.retention, "messages": .state.messages, "consumers": .state.consumer_count}'
{
  "retention": "interest",
  "messages": 200,
  "consumers": 1
}

I think yes the messages should be deleted if the consumer is removed and thats a bug yeah

Hmm, the messages should definitely not be deleted after consuming - and I can't reproduce that:
With 200 messages and 1 active consumer:
$ nats s info INTEREST -j|jq '{"retention": .config.retention, "messages": .state.messages, "consumers": .state.consumer_count}'
{
  "retention": "interest",
  "messages": 200,
  "consumers": 1
}

I consume and ack and confirm num_pending decrease:
$ nats c info INTEREST X -j|jq .num_pending
190
$ nats c next INTEREST X
[12:15:07] subj: js.in.interest / tries: 1 / cons seq: 3 / str seq: 111 / pending: 189

11

Acknowledged message

$ nats c info INTEREST X -j|jq .num_pending
189

But the stream doesnt delete any messages:
$ nats s info INTEREST -j|jq '{"retention": .config.retention, "messages": .state.messages, "consumers": .state.consumer_count}'
{
  "retention": "interest",
  "messages": 200,
  "consumers": 1
}

I think yes the messages should be deleted if the consumer is removed and thats a bug yeah


While Importing Cluster: Cluster stucks  in Wait Check-In state.

Hi Team,
I have imported AWS EKS Cluster to rancher 2.6.0. When I see the details I found that the Wait Check-In state occurs. Please find the screenshot below for reference.

The same issue: https://github.com/rancher/rancher/issues/34719

My problem is:

The error info

The detail error is :

+1 same issue !


Add profile, module, application layers with different classloading strategy

The main KarafConfig (populated via karaf.json or programmatically) should describe a multi layer model:

spec only load specification (no implement) in the "main/system" classloader (shared by all applications and Karaf itself)
profile is a classloader populated with a set of jar
a module is an application (spring boot, microprofile, osgi bundle) with its own classloader. It can optionally use a profile classloader
an application (previously extension) is a group of module (just a convenient way to install a set of modules)

I think that profile (classloader), module (bundle) and application (previously extension) make sense. Not sure about spec.
@fpapon thoughts ?

@fpapon my proposal is: stack (classloader), module (bundle), profile (group of bundles). Thoughts ?

+1 make sense, we can add specs in library for example

Completely refactore to use SPI and new wording.


[Feature Request] To have a similar status page and the ability to solve captchas

Pretty much what the title says, the app is great, but with all the captchas i'm getting i can't let the map run without being at my PC solving them. It would also be awsome if there is a place to know which account is working.

Hi, good idea, I'm currently finishing the brand new 2.5 update (allow theme for Pokemon annoation). When this version will be released, I will work on this !

Thanks! I'' looking forward to this new update

v2.5 submitted, I'm waiting for the review 👍


rename oragono.yaml

Currently we distribute oragono.yaml and conventional.yaml. We instruct operators to copy oragono.yaml to ircd.yaml and modify it. All oragono commands, in particular run assume ircd.yaml in the absence of a --conf argument. This is a source of confusion because oragono.yaml sounds like "the oragono config file used by your running server", not like "the example config file".
We should rename both of these files to make it more clear that they are examples. (We're probably stuck with ircd.yaml as the default name of the live config file, to avoid a compatibility break.)

Note: some automation stuff in distrib/docker (and possibly elsewhere?) will have to be updated as well.

Other things that need to be updated: both readme files, the manual, and the website.

I could go for default.yaml and conventional.yaml?


Reduce balance operator about empty region

Feature Request
Describe your feature request related problem
There is a problem: cluster has many empty regions, we always see there are many operators of the balance region(because there has the store limit, so the balanced regions should be empty regions. )

Describe the feature you'd like
We may do not need to balance them.

Teachability, Documentation, Adoption, Migration Strategy

Go

because there has the store limit, so the balanced regions should be empty regions

Sorry for my poor comprehension, what does this actually mean?

@JmPotato I mean the balance operator is caused by the empty regions(the region size is 1), maybe you can check the function shouldBalance in the server/schedulers/utils.go

closed by https://github.com/tikv/pd/pull/3129


does CDK need to expose kubernetes-worker?

We currently expose the k8s-worker here(ish):
https://github.com/juju-solutions/bundle-canonical-kubernetes/blob/master/fragments/k8s/cdk/bundle.yaml#L32
But workers are related to kubeapi-load-balancer.  It feels like the LB should route ingress traffic to the workers for us.  If that's true, then we should stop exposing workers.
I'm not sure how to test ingress, but i'd be happy to kick the tires on unexposed workers if someone can give me a test case.

That's what you would think, butts not the case. We could write a custom load balancer in k8s that would configure the kube-api-loadbalancer but that would be a custom solution

Fair enough. Against my better judgement, i'm going to trust @marcoceppi and close this out.  We can revisit if someone has an actual requirement to un-expose the workers in the future.

We could do something like this with Envoy, where we juju deploy it then
connect it into k8s. It's a good idea, just not how our cluster works
On Wed, Nov 29, 2017, 19:52 Kevin W Monroe<EMAIL_ADDRESS>wrote:

Fair enough. Against my better judgement, i'm going to trust @marcoceppi
https://github.com/marcoceppi and close this out. We can revisit if
someone has an actual requirement to un-expose the workers in the future.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/juju-solutions/bundle-canonical-kubernetes/issues/446#issuecomment-347976462,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AAET1TAz7r4hfxyFP4olSq_qfbs3RWUsks5s7bYIgaJpZM4QvgfY
.


saved topology format .pth -> .pothos

.pth is some kind of python format. Possibly switch this to .pothos, and support loading the old name of course in the file open dialog

https://github.com/pothosware/pothos-gui/commit/ccac69803e2492408d61f97ac2dea1334c36dbae


config example directly into the readme

How about adding an actual config example directly into the readme?
I'm probably not the first one missing that this is needed, regardless of which driver one actually wants to use.
I believe this can be helpful to people looking through the readme for a quickstart setup.

@littlekid thank you very much ~!


[dashboard] add link to export CSV from dashboard

fixes #1304

Coverage increased (+0.08%) to 69.353% when pulling a4329723964f37470d1f30b0656305f575763149 on mistercrunch:csv_from_dash into bd4a4c2753d9411c0032f4bd24ea36faba8cd3f5 on apache:master.

Coverage remained the same at 69.419% when pulling eed33190d0e24087c3d861283e8e8cd62d188682 on mistercrunch:csv_from_dash into<PHONE_NUMBER>2cfa1126df1954cfa58d99cd23fc39 on apache:master.

Coverage remained the same at 69.419% when pulling eed33190d0e24087c3d861283e8e8cd62d188682 on mistercrunch:csv_from_dash into<PHONE_NUMBER>2cfa1126df1954cfa58d99cd23fc39 on apache:master.

I'm trying to get the latest changes/version related to "Export CSV from Download".
when I did pip superset upgrade, I don't see any changes on the Dashboard view.
am' I missing any steps to bring in the latest changes.
pip install superset --upgrade
superset db upgrade
superset init

@annusri did you restart your web server?

@mistercrunch  - sorry for the late response. I restarted the web server and everything is working fine now. thank you for your response


proposal: Go 2: language: here documents

I would like to propose Go add support for a HEREDOC syntax to make adding literals of particular precarious strings easier.
A common syntax in many programming language is <<< (boundary) to open and a line containing just said boundary to close.
I would propose something along the lines of:
sql := <<< SQL
SELECT `foo` FROM `bar` WHERE `baz` = "qux"
SQL

My personal reasoning is for MySQL queries.
Myself and my company work with MySQL a great deal.  Backticks are used to quote tables and fields in MySQL. Our queries will often contain both numerous quotes and backticks - particularly queries generated by tooling.
There is no way to escape a backtick in a backtick string in Go, so we end up either a using double quotes string and escaping all the quotes within or using backticks and breaking out of the string on backtick (ala `x` + "`" + `y`)
Currently we end up with something like
sql := "SELECT `foo` FROM `bar` WHERE `baz` = \"qux\""

or in cases with massively more quotes than backticks I'll do something like
sql := `SELECT foo FROM bar WHERE `+"`baz`"+` = "qux"`

These examples are toys obviously, but this become much more of an issue on large 30+ line report queries - and more importantly makes copying queries out of code and into a MySQL client a real pain.

One possible approach that doesn't require changing the language is something like
sql := strings.ReplaceAll(`string with doubled quotes where ""bar"" == ""quuz""`, `""`, "`")

This is not a compelling use case, one should not be constructing sql query strings by hand. ~dragons~vulnerabilities lurk there

@davecheney writing the query with bind parameters doesn't mean there aren't backticks, right?
SELECT `foo` FROM `bar` WHERE `baz` = ?

Or do you literally mean that developers shouldn't write SQL at all and should construct queries via ORMs or other tools? (In which case that sounds quite subjective.)

Number one of the top ten OWASP security vulnerabilities is SQL injection. I think the OPs case would be strengthened by choosing a different example.

@davecheney I don't believe that addresses my questions. Avoiding SQL injections doesn't imply that you never write SQL text in Go code. OWASP's own SQL injection cheat sheet has plenty of SQL text including column names.

This example is perhaps not ideal because foo, bar, and baz don't actually need any backtick quoting in MySQL as far as I know.
But I am sympathetic to the problem that the OP has text they would like to copy-paste into Go code and cannot simply do it without some kind of O(n) text transformation. I have run into this in the past when copy-pasting text into a Go program (I believe it was Go source code that included backticks). The copy-paste problem isn't helped much by @ianlancetaylor's workaround, either.

Perhaps, as in some other languages, double backticks could become an escape for a backtick? This would likely be a backwards compatible approach that doesn't require a new string quoting type. Eg:
const query = `SELECT ``foo`` FROM ``bar`` WHERE ``baz`` = "qux"`

Maybe use double back quotes?

sql := `` SELECT `foo` FROM `bar` WHERE `baz` = "qux" ``

But I am sympathetic to the problem that the OP has text they would like to copy-paste into Go code and cannot simply do it without some kind of O(n) text transformation

This to me is the crux of the problem. I can’t paste from my tooling into Go, and I subsequently can’t paste from Go into my tooling. Suggest solutions that still involve some form of escaping don’t solve that.
Further I don’t think the sql injection argument is relevant here. My example is not injecting any user data into the string.

As someone who has dealt with Shell syntax for years, please don't add heredoc strings to Go. They are a can of worms.
For example, a number of questions start popping up:

What happens to any tabs indenting the heredoc body? Are they included as part of the string?
What about other whitespace, like leading or trainling spaces?
Can leading or trailing whitespace be used in the line that finishes the heredoc?
What if the heredoc is never finished?
What is a valid heredoc delimiter? Any valid identifier? What if the identifier is already declared in the scope?

I don’t see any of those questions as actual problems perse with heredoc.
Some of them like the internal white space aren’t really in question at all. Some are up to the language designer as implementation details. None are problems.

What happens to any tabs indenting the heredoc body? Are they included as part of the string?
What about other whitespace, like leading or trainling spaces?

All white space within the boundaries is part of the string. That’s not a hard question, thats not in question. That’s the point of heredoc. “Literal” here be the document, WYSIWYG.

Can leading or trailing whitespace be used in the line that finishes the heredoc?

Depends on the language rules, I’ve used languages that allow it, iced used languages that don’t. I’d personally vote no, I think allowing leading whitespace on the closing boundary just adds trouble.
func main() {
     sql := <<< SQL
Everything between the boundaries taken
  As literal
    String
        Content
SQL
}

What if the heredoc is never finished?

Same as if you don’t close a quoted or backtick string? Syntax error. I don’t think that’s a legitimate question. Is there a language where this is not the case?

What is a valid heredoc delimiter? Any valid identifier? What if the identifier is already declared in the scope?

Another implementation detail. I’d vote any non whitespace containing series of runes. Maybe limit it to Unicode letter and number runes? It’d be nice for internationalization though to allow non ascii for sure,

I am not suggesting heredoc syntax as the only solution. But sometimes the inability to escape a backtick in a raw string literal becomes very painful depending on the type of application one is writing.
As a general rule, I do not like to use concatenation to write string literals. So whenever I have a situation where a string has a mix of backticks and double-quotes, I have to jump some mental hoops in calculating whether the string has more double-quotes or does it have more backticks, and which escaping scheme do I use to make the code more readable.
There have been past proposals which all have been declined https://github.com/golang/go/issues/24475, https://github.com/golang/go/issues/23228, https://github.com/golang/go/issues/18221. The suggestion throughout seems to be to use + to join the strings. But readability wise, I personally think, it takes more mental effort to read a + concatenated multi-line string, than a single \ escaped string (or any other non-concatenating mechanism).

Better SQL example where quoting is actually required under MySQL:
SELECT `group` FROM my_table;

Y’all need to find a better justification for this change.
https://dev.mysql.com/doc/refman/8.0/en/string-literals.html

On 24 May 2019, at 19:25, MOZGIII<EMAIL_ADDRESS>wrote:
Better SQL example where quoting is actually required under MySQL:
SELECT group FROM my_table;
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub, or mute the thread.

Y’all need to find a better justification for this change.
https://dev.mysql.com/doc/refman/8.0/en/string-literals.html

On 24 May 2019, at 19:25, MOZGIII<EMAIL_ADDRESS>wrote:
Better SQL example where quoting is actually required under MySQL:
SELECT group FROM my_table;
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub, or mute the thread.

I think it's good enough. There are a few practical cases where the lack of the ability to use both quotes and backticks in the strings is a real pain point. Working around it is currently possible, but ugly. The lack of a sound and complete way to specify string literals in the language is a real issue, ignoring it is a poor response. I don't think it requires justification, because to me it's obvious. Is it not to everyone else?

In fact, it boils down to the fact that using the following for coding backtick really sucks:
`+"`"+`

This is what we have to use right now, and it derives naturally from the language rules.
However, it's too long to type and is extremely ugly.
Yes, it's possible to use string replace instead, but it hurts readability too, cause you still can't put actual backticks where they're supposed to be. This sucks, because not only the runtime has to do additional work to evaluate the actual value, but humans reading and writing the code can't too. This immediately skyrockets the difficulty of working with a particular code base.
There are other workarounds, but all of them has serious drawbacks if think about them. That is why I think it's really a language flaw.
No, the natural solution to this issue would be heredoc syntax. I don't see any argument on why you wouldn't want that to be in the language, except the "it's not justified" one. Is it hard to implement, does it violate some design constraints on the lexer? Why not just add it?

First of all, I think many of us can agree that having a nicer way to have multiline string literals without worrying about quotes would be nice. All I'm saying is that I don't think heredocs is a good solution.
Can we please have a civil discussion about it without resorting to "this sucks", "not a legitimate question", or dismissals like "to me it's obvious" and "why not just add it"?

That’s not a hard question, thats not in question. That’s the point of heredoc.

Well, that's not how heredocs work in shell. See https://pubs.opengroup.org/onlinepubs/9699919799.2008edition/utilities/V3_chap02.html#tag_18_07_04, in particular <<-, which has support for stripping tab indentation.
It's fine if you just want the equivalent of <<, but then clarify that in your proposal. If you borrow the language from POSIX shell, I'm going to wonder if the equivalent of <<- is also supported.

I think allowing leading whitespace on the closing boundary just adds trouble.

Not allowing any leading indentation is a possible outcome, but it means that heredocs within indented code would look out of place. It's a tradeoff, and the proposal should be clear about what side it decides on.

Is there a language where this is not the case?

Yes, bash, which I presume is your point of reference.

Another implementation detail. [...] It’s just a boundary for the string. It’s scope begins and ends with the string.

Sorry, but I disagree. A proposal to make such a large change to the language spec should be very clearly defined. This includes what can be a valid delimiter token/word/identifier/etc.

Please excuse me, bad day :)

I'd prefer to borrow heredoc syntax from Ruby, it has very nice properties: https://ruby-doc.org/core-2.5.0/doc/syntax/literals_rdoc.html#label-Here+Documents

Also, here's an alternative from @rogpeppe almost ten years ago: https://groups.google.com/forum/#!msg/golang-nuts/IVyT2ovIljQ/KJggKkrYGCMJ
var render = Parsetemplate("|
        |
        |
        |

        |$text $etc
        |
        |
        ")

It wasn't implemented, and it hasn't been formally proposed since, but it has the nice properties that it supports indentation and nesting.

You still can't use ` and " in the same string with that, can you?

I still think a better solution would simply be to figure out a way to allow backticks in a raw string rather than add yet another way to declare strings. I feel that improving the current features is a better idea than introducing new, non-orthogonal features.

The pipe format doesn’t solve one of my at least biggest wishes - that format still would not fulfill my goal of being able to paste text to and from a literal string without transformation.

@mvdan I apologize. I didn’t mean offense and have never used heredoc in bash. Only PHP, Perl and Ruby. I wrongly assumed some things constants of the classification that apparently are not.

The pipe format doesn’t solve one of my at least biggest wishes - that format still would not fulfill my goal of being able to paste text to and from a literal string without transformation.

This is program text. If you want to be able to include arbitrary text in your program, you're always going to need some transformation unless you put the text in some external file.
That said, the pipe format does make it trivial to take arbitrary text and put it in your program: take your text and pipe it through:
sed 's/^/|/'

(alternatively use whatever "indent-by-a character" functionality you might have available in your editor of choice).

The transformation can be applied to the surrounding code though, and not to the actual text you want to embed in the program text. Heredoc is one particular implementation of an idea that for any finite text we can build a sequence of codepoints that won't appear in that text, and use that as a boundary on both ends of the text. This has one interesting property that the text between the boundaries can be left intact. Heredoc is not the only implementation of this, Rust, for example, utilizes the same idea for raw string literals: https://rahul-thakoor.github.io/rust-raw-string-literals/. Another example if this is mime format: boundaries are exactly this. The downside of this approach is the boundary string is non-universal and in theory it's difficult to come up with a unique character sequences. In practice though, it's often trivial when the code is hand-written.
Escaping is another approach, it's more compact but it actually requires transformations to be applied to the literal you're embedding.

Proposal One:
Since Go is UTF-8 native, perhaps there is a "rare, very unlikely to ever be in any naked text symbol" that we could add as a synonym for back-tick. I recently used...
const (
sCotangentL = "[" // "\u005b" left square bracket
sCotangentR = "]" // "\u005d" right square bracket
sMeasureL   = "⦗" // "\u3014" left tortoise shell bracket
sMeasureR   = "⦘" // "\u3015" right tortoise shell bracket
sPrimeL     = "{" // "\u007b" left curly bracket
sPrimeR     = "}" // "\u007d" right curly bracket
sHistoryL   = "«" // "\u00ab" left-pointing double angle quotation mark
sHistoryR   = "»" // "\u00bb" right-pointing double angle quotation mark
)
...the left and right tortoise shell brackets and double angle quotation marks, for example, in a textual data format. Double angle quotation marks appear too frequently in German text to be used here, but I bet collisions between tortoise shell brackets and things people want to quote in Go code is slight. (My const declaration above being the one counterexample. ;-)
But we can do better. Choose a symbol or symbol pair that "nobody" uses. Here is my candidate for a pair:
sql := ⇶SELECT foo FROM bar WHERE baz = "qux"⬱
Is it not abundantly clear that something special is happening between the THREE RIGHTWARDS ARROWS and the THREE LEFTWARDS ARROWS? They have a solidity and suggest to my mind "everything between here and here."
If that makes you think too much of Neptune's trident, we could look to math. Here is what "is identical to" looks like...
sql := ≡SELECT foo FROM bar WHERE baz = "qux"≡
...which is nicer from the meaning standpoint and suits the single-marker nature of back tick. This single-character raw text UTF synonym is my vote:
proposed: add U+2261 IDENTICAL TO as an alternative to back tick in marking raw text.
A further general comment is to recall a subtle feature Ken Thompson built into ed, sed, etc. We all know the basic syntax for substitutions -- "s/old/new/" -- but how do you deal with the awkwardness of slash in the pattern or replacement text? People seem quick to reach for the '' to escape the special meaning, but ken built a simpler way, the '/' is whatever character follows the s. (Sed is just as happy with "s5old5new5" and "s~old~new~".) The result is that so long as you know a safe character, it can be your marker. Perhaps there could be some way to say "here comes raw text with the next code point as my marker." (Still, though, in the days of UTF let's just use a really-low-conflict symbol or symbol pair, even though ken is a genius.)

I personally don't like the idea of just picking an arbitrary UTF8 symbol and using that as a quotation. I think the idea of letting the user define a symbol is an okay idea, however I still believe that figuring out a way to improve what we already have with raw strings is a better idea. Go already has two ways to define a string literal, and it doesn't need a third.
Perhaps if any identifier appears directly before a raw string, the raw string must also terminate with the identifier. So that way you would do something like:
oldRawString := `this
still
      works
`

moreConvenient := SQL`
SELECT `foo` FROM `bar` WHERE `baz` = "qux"
`SQL

newRawString := נ`this
also
      works
you can also use נ in the string as long as it isn't preceded by a `!
`נ

I think this brings the best of both worlds, making it so that we aren't introducing an entirely new way to define a string. It's similar to heredoc, but in my opinion it works a bit better since it's improving on existing features rather than introducing yet another way to define a string

Although it's now been withdrawn (or perhaps postponed), JEP 326 is still a good read about the problems of adding raw string literals to Java. Heredocs get a mention towards the end but not in a particularly favorable light.
As far as Go is concerned, it seems to me that the only really satisfactory solution to embedded back-ticks is to have an alternative syntax for raw string literals. Introducing a form of escaping for back-ticks simply doesn't cut it as far as copy/pasting is concerned and wouldn't be backwards compatible in any case.
That means you need a different kind of delimiter which preferably doesn't involve single quotes, double quotes or back-ticks as they're often used together. Possible candidates are #, $ or ~ which I don't think are currently used for anything else.
The question, of course, is whether it's really worthwhile introducing an alternative syntax to solve what for many people isn't a serious problem. The answer to that is that it probably isn't worthwhile but that I think is the reality of the situation.

We don't have to use a new character.  We could, for example, emulate C++ and write
sql := R"delimiter(SELECT `foo` FROM `bar` WHERE `baz` = "qux")delimiter"

where delimiter can be any string that does not appear in the string constant itself.

I'd like to say that one thing I find awkward about backquote-quoted strings is that you can't indent the contents along with the rest of the code. Reading code with multiline backquoted strings in it can be confusing.
That's why I have a soft spot for my idea outlined above, because with that, you can easily indent without worrying about messing with the string contents.

I feel like that could be made into a separate proposal, maybe a function in the strings package. I definitely like the idea, I've used it quite a bit in Kotlin.

Well, I suppose you could mimic the C++11 way of doing things but, for a simple language like Go, that really would be using a sledgehammer to crack a nut :)

@rogpeppe - IIUC, your proposal does not address the escaping concerns voiced in this thread.
Especially from this line -

Other than that, all the rules are the same as for the
other kinds of string literals.

Have I missed something ?
@ianlancetaylor - Any thoughts on @deanveloper's proposal ? That does nearly what you say but extending the backtick syntax and using a user-picked identifier as the terminating string.
I agree that we don't need a third way to define a string. Backticks are the ones most commonly used for raw string literals. I am leaning towards extending the backtick syntax to allow `, ", ' anywhere. But I think allowing a user-picked identifier to terminate things will make codebases non-uniform. Different developers will choose different identifiers depending on their use-cases.
How about we choose a fixed identifier to start the string, but stop only if we encounter a single backtick as the last line, immediately followed by a newline ?
Something like -
raw`
hi this is `a cool text
with back`ticks or "" allowed anywhere
even ' quotes
closing with
`

I think this takes care of the most common cases where backticks are usually mixed with other characters in a single line. This does have a glaring issue that strings will always end with a newline, which I don't like. But maybe this can be improved upon.

To me, one of the key features would be to allow encoding of the arbitrary text, as long as boundary identifiers are not in that text. The reason it's so important to me is because it would be a generic solution.
This means that the codebases will become non-uniform, indeed but I feel that functionality is more important here. To make code more uniform with user-defined identifiers, we could apply certain restrictions to the identifiers. For example, similar to how it's done it rust, we could only allow the use of # in the identifier. This would make identifiers configurable, yet user-specified, which is merely enough to cover all possible cases.
Example:
str := ##`
My value!
Can contain ` and # (and other stuff like " ' etc...)
`# is even allowed, since it doesn't have two #-s
... string literal still continues
`##

It is always possible to add more # if there's a need - therefore every possible string can be encoded.

@agnivade I like that idea too, however it means that all of those raw strings' data will always end in a newline. This also may not be intuitive:
worksFine := raw`
Hey look, this works!
`

compileError := raw`my test string`

What if one needs to encode a string that contains a single backtick on a line followed by an empty line? Or a string with multiples of those? I don't think it'd be very convenient to escape all such cases.

@agnivade @deanveloper Yes, I think
delimiter`string`delimiter

also works.

@agnivade

@rogpeppe - IIUC, your proposal does not address the escaping concerns voiced in this thread.
Especially from this line -

Other than that, all the rules are the same as for the
other kinds of string literals.

Have I missed something ?

Yeah, I think that sentence is misleading. I believe I intended to mean that they behave just like normal string constants from a language point of view. There is no quoting necessary between the start-of-text character | and the terminating newline. Specifically, it's OK to have any number of other |, \, or any other unicode characters except newline without further interpretation.
So you can take any text that holds valid UTF-8 with every line is terminated with a newline character, and quote it by inserting a | character at the start of each line. This includes text that's already quoted that way (so quoting Go programs that contain this kind of string constant is easy, which isn't the case for backquotes).

@MOZGIII -

What if one needs to encode a string that contains a single backtick on a line followed by an empty line? Or a string with multiples of those?

Yes I know. I believe that is a corner case, and since it is a single character in the entire line, concatenating doesn't hurt that bad. Anyways, I don't like it. I like the Rust approach better. Have a single identifier, yet make it configurable. Strikes a good balance IMO.
@rogpeppe - Got it. While I think that is a neat solution, it involves writing an extra character for every newline and does not allow for copy pasting text easily. I think the tradeoffs are a bit skewed towards drawbacks. I would also like to address your point (a) (if it spans more than a page, it's not easy to see where string stops and program starts). I think with syntax highlighting, it is not very hard. Atleast for me.
I think
anyIdent`string`anyIdent

or
configurableIdent`string`configurableIdent

both are good candidates with varying tradeoffs.
I am very slightly leaning towards configurable ident because while writing the string, I don't have to think much on what identifier to choose. I can start off with a normal backtick literal, and if I see that I need to escape a backtick, just add a configurableIdent on both ends. If that does not suffice, add more. While in the case of anyIdent, there is a slight mental overhead of scanning the string and coming up with the best identifier. Especially while copy-pasting text.

I think perhaps allowing any identifier, but having convention on what identifier to pick, would be good.
For instance, something like "raw" would be conventional:
raw`contents`raw

However, you are allowed to change it to something else if you want. Sorta like for-loop indices - people typically use i, but can of course change it if they want.
Perhaps some other convention such as using all caps should be put in place too? That way it's much easier to see where the string starts and ends. I'm not entirely sure about this one, but I think it could be a good idea. So instead the above example would become:
RAW`contents`RAW

However this choice was mainly targeted towards long strings:
RAW`
invoice: 34843
date   : 2001-01-23
bill-to: &id001
    given  : Chris
    family : Dumars
    address:
        lines: |
            458 Walkman Dr.
            Suite #292
        city    : Royal Oak
        state   : MI
        postal  : 48046
ship-to: *id001
product:
    - sku         : BL394D
      quantity    : 4
      description : Basketball
      price       : 450.00
    - sku         : BL4438H
      quantity    : 1
      description : Super Hoop
      price       : 2392.00
tax  : 251.42
total: 4443.52
comments: >
    Late afternoon is best.
    Backup contact is Nancy
    Billsmer @ 338-4338.
`RAW

Implementation-wise, the problem with user-specified delimiters is that they have to be handled during lexing, which adds complexity to a simple, though still somewhat involved, stage and would need a lot of explanation in the language spec.
Using doubled-up backticks to escape the backtick in a raw string is much easier to handle during lexing and specification.
This is not meant as endorsement or to say that one way is better than the other—just to note the differences in complexity.

still pleased at the simplicity of using a unicode replacement/alternative
to back tick (as in my previous comment. the "is identical to" is pretty,
has logical meaning, and i bet would never have a conflict in the future
history of go.)
On Thu, May 30, 2019 at 10:38 AM jimmyfrasche<EMAIL_ADDRESS>wrote:

Implementation-wise, the problem with user-specified delimiters is that
they have to be handled during lexing, which adds complexity to a simple,
though still somewhat involved, stage and would need a lot of explanation
in the language spec.
Using doubled-up backticks to escape the backtick in a raw string is much
easier to handle during lexing and specification.
This is not meant as endorsement or to say that one way is better than the
other—just to note the differences in complexity.
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
https://github.com/golang/go/issues/32190?email_source=notifications&email_token=AB4DFJLEPUJXMOUDPOT7IGTPYAGJRA5CNFSM4HOXWGAKYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGODWS7KLI#issuecomment-497415469,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AB4DFJJPUKCGPGW7BNJOEWLPYAGJRANCNFSM4HOXWGAA
.

--
Michael T<EMAIL_ADDRESS><EMAIL_ADDRESS>

i bet would never have a conflict in the future history of go.

Until you're embedding Go code in Go code more than two levels deep...

fair enough.
On Fri, May 31, 2019 at 5:01 AM Roger Peppe<EMAIL_ADDRESS>wrote:

i bet would never have a conflict in the future history of go.
Until you're embedding Go code in Go code more than two levels deep...
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
https://github.com/golang/go/issues/32190?email_source=notifications&email_token=AB4DFJPUZP2TC7DEEUOK2XDPYEHTHA5CNFSM4HOXWGAKYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGODWVAYEI#issuecomment-497683473,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AB4DFJNFEIJ6VIEWUAJHHU3PYEHTHANCNFSM4HOXWGAA
.

--
Michael T<EMAIL_ADDRESS><EMAIL_ADDRESS>

We are not going to adopt "here documents".  That is not a Go-like syntax.
If this is a problem worth addressing, it would be nice to adopt an approach that makes the current raw string literals a simple case of the overall approach.  For example, perhaps an odd number of backquotes could start a raw string literal that must end with the same number of backquotes.
```This raw string can contain ` characters```

We permit any odd number so that the string can contain any sequence of backquotes.
We do not permit an even number because
``

is a valid string literal today (the empty string).

We are not going to adopt "here documents". That is not a Go-like syntax.

I don't personally feel
	foo := <<< title
This is my string
title

is any more out of place in the language than
title:
	for {
		break title
	}

That said, I relent.

Also re: the foo purposal, what if the string I want to encapsulate starts or ends with a backtick?

Fair point.  (Although SQL doesn't seem like a good example since it also permits double quotes.)

How about > 2 backticks instead of just odd number?
Four backticks are syntax error currently, so it's safe to introduce.

@MOZGIII no, because it introduces ambiguities:
var str = ````+```` // is this "" or "+"?

@deanveloper you used two backticks in the example, but I proposed more than two. Two backticks clearly does not fit for the reasons you gave. However, with 3, 4 and any greater number of backticks there are no ambiguities - in Go 1 all of them are syntax errors.
The edge case here would probably be the ability to encode an empty string with this notation. I'd just prohibit that altogether - it'd probably be easier for the lexer that way, and it doesn't seems like a big issue to me. At least I could live with that.
What I don't like is the collision with the Markdown notation for code decoration. It may complicate using Go code in Markdown code sections. Maybe I can live with that too - but for me personally it kind of matters more than the ability to represent an empty string...
What do you think? I'm ok even with the must-be-odd number of backticks proposal - it's better than nothing, and it has it's own advantages.

Sorry for all of the edits to my comment which probably looks confusing post-edits.
I'm personally still a fan of my initial idea with requiring an identifier immediately before/after the respective opening/closing backtick. I don't know how parsing/lexing/compiling/etc works however, so I'm not sure of the severity about how much it would complicate the compiler. But it definitely doesn't collide with Markdown code fences :wink:
I'm not upset with the odd number of backticks rule however, it just seems "odd" to only allow odd numbers.

Actually, there is another pretty serious downside with the backticks - and that's collision with the backticks inside the string itself:
"`test`" != ````test````

This is a serious problem for me, cause it suffers from the kind of similar issue to the one that regular ` have - and that is support for representing backticks inside the string itself.
This brings me back to how well though this is in ruby. It has enough string literal forms to cover every case I can think of.

@MOZGIII Yeah, that was brought up by @donatj a few posts ago.
Also speaking of which, @ianlancetaylor, backticks and quotes are not synonymous in SQL. Backticks are used for quoting identifiers in order to make sure that you can select tables/columns named after keywords, while quotes are used for string literals.
For instance:
 -- valid (MariaDB)
SELECT * FROM `database`.`table`

 -- invalid (MariaDB)
SELECT * FROM "database"."table"

It would be great to have "is identical to" (or another Unicode marker) as a way to ultra-backtick ASCII text.
sql := ≡SELECT foo FROM bar WHERE baz = "qux"≡
...feels categorically simpler than a gang of backticks or any other in-band signaling. That’s the core issue, that using an ASCII delimiter for arbitrary ASCII text always has exceptions by definition, and a surprisingly high incidence of them in cases like this SQL example (and Markup and ...) where you’re quoting something that is likely to already be quoting things. Recursive quoting tempts fate because “smart people just like us” had the same ideas for quoting their thing, so when Go wants to quote it, the probability of collisions is very high.
OTOH, if Go used “mango” at each end, and SQL used “rose”, then the space would be huge and collisions rare. It would look dumb, of course, but would not have the collisions of everyone using the same four quotation delimiters.
This is why I propose adding U+2261 IDENTICAL TO as an alternative to back tick in marking raw text.

I don't like rarely-used single rune unicode sequences mainly for the following reasons:

I don't want to copy-paste it every time, and I'm not used to type non-ascii unicode symbols; this may be odd, but I feel like the program text should only consist of symbols people are used to. So I'm pretty much against using any symbol that's non-acsii (if we can do it doesn't mean we should do it).
Second reason, and probably a more compelling one, is that the solution with just swapping backticks with some other character will retain all fundamental flaws of the backticks: it will for now reduce the probability of collision with other languages, but not with the Go code itself, and it does not make the coding more flexible in principle. I'd rather have a solution that brings significantly more flexibility to the table, than one just works around the backtick collision.

A further possibility which I don't think has been mentioned so far is to introduce a new single-character escape  \`  which would only be valid within raw string literals.
This would be analogous to the existing escapes \' (only valid in rune literals) and \" (only valid in 'ordinary' string literals).
The new escape wouldn't be ideal from a 'cut and paste' perspective as you'd need to go through and prepend each back-tick with a slash. However, this would be easier than having to split each back-tick out into an ordinary string literal and (at least to my eye) would stand out more than simply doubling each back-tick as well as being a rarer combination of symbols.
Compared to solutions which involve using an odd number of back-ticks as a delimiter, it also has the advantage that leading and trailing back-ticks are easier to read.

@alanfo Then you would have to escape \ as well, which is not backwards compatible.

Perhaps it would be best to continue the discussion elsewhere, as it's drifting further apart from the original heredoc proposal. It's always simple to file another, separate proposal once another idea has fully formed.

@mibk I don't follow why you would have to escape \ as well. Unless it was followed by a back-tick, a slash would be treated literally as it is now.
Also it would be backwards compatible as, at present, a raw string literal can't include a back-tick at all.

@alanfo Consider this example:
`\`

Is it an unterminated raw string with an escaped backslash, or a raw string containing a single backslash?

It's a raw string containing a single backslash as it is now.
I'll admit it's an awkward case for the parser to deal with but `\`` would be fine (a raw string containing a single back-tick) whereas ```` might be problematic.

@mvdan
Given that @ianlancetaylor said we're not going to adopt "here documents" but didn't close the issue and indeed came up with a suggestion on how else to deal with the same problem, I don't see why we shouldn't continue the discussion here. Otherwise the same points will have to be made all over again and there doesn't seem to be a consensus on an alternative proposal in any case.

@mvdan what @alanfo said, and also note that @ianlancetaylor retitled the issue to be more generic.
Of the ideas listed here, @deanveloper's original idea (now unfortunately hidden in the fold) seems by far the best to me.
All of @MichaelTJones's Unicode suggestions don't really work for quoting Go code itself, and are awkward for many of us to type.
The "more backticks" ideas discussed by @ianlancetaylor and others has the problem that it does not work for text that begins or ends with a backtick.
@deanveloper's idea doesn't have these issues. Really, the only one I see is the one pointed out by @jimmyfrasche: it adds a certain complexity to lexing that's different from anything in the language today. But I think that might be fundamental to any syntax which allows quoting arbitrary text.

I personally think that these syntaxes are quite a bit different from the original proposal which was asking for a feature that other languages implement, while the current discussion is simply about improving raw strings rather than implementing HEREDOC. I'll start a new proposal, which will include a lot of the discussion from this post.

@deanveloper It seems to me that most of these suggestions are things that other languages implement, or similar to them.  Most current languages have some form of raw string literal these days.
My only concern with
delimiter`raw string with ` characters`delimiter

is that it doesn't lead with the fact that it is a string.  C++ (R"delim( string )delim")) and Rust (r#" string "#) and Swift (#" string "#) are more clear as to when a string is starting.

My only concern with  is that it doesn't lead with the fact that it is a string.

That's a valid concern, it's a bit hard to see where the string starts and ends with long delimiters. However, with short delimiters, it seems to be much less of a problem:
// keep it with short delimiters
raw`this is a string with ` characters`raw

// or all-capital letters? not previously seen as convention anywhere else in Go?
// this would make it much easier to see that it is representing a raw string.
RAW`this is a string with ` characters`RAW

Perhaps establishing some sort of convention to use brief delimiters, maybe all-capital as well (such as SQL and RAW) is a good idea. Maybe golint should enforce something like this? I'm not 100% it's a good idea to enforce it with golint, but I do think that having a convention to use short and possibly capital delimiters would help with that aspect significantly.
I brought up the idea of this convention in this comment: https://github.com/golang/go/issues/32190#issuecomment-497315188 although it was for a different reason.

By the way I think I can partially revive my broken earlier suggestion by saying that writing N backquotes (N >= 2) followed by a double quote is a raw string literal that is terminated by a double quote followed by N backquotes.
s := ``"this is a `raw` "string" literal "``
fmt.Print(s)

prints
this is a `raw` "string" literal

It doesn't collapse nicely to the current raw string literals, but it does have the advantage of sticking to existing string quotation characters.  Unless I've missed something again.

I actually like that idea. My only real issue with the original N backticks idea was that the "N is odd-only" restriction made it seem very inconsistent. I'll make sure to bring up this one in the proposal that I am working on (along with others that were in this thread).
I think the only real concern is that it would make current raw strings that start or end with quotes (ie `"my string"`) confusing to look at for future learners of Go who do not know the history of raw strings.

I just bumped on a non-SQL use case regarding this, which I wanted to add as a datapoint.
I have an html template which I am storing as a backtick-quoted string. Now in that template, I have

@deanveloper did a nice job of summarizing the general issue over in #32590.  We aren't going to adopt a here-document syntax, for the reasons discussed above.  Closing this issue in favor of #32590.
Writing for @golang/proposal-review .


Invalid Link - Overview of media technology on the web

Request type

[ ] Correction or update

Page to change
https://developer.mozilla.org/en-US/docs/Web/Media
Details
The link to section "Overview of media technology on the web" is invalid.
Related issues

@a2sheppy Is this already on your plate?

This is an article I intend to write. I have not yet scheduled doing so, however.


Geode-8925: port legacy singleHop tests

Captures the following flaky tests into the new PartitionedRegionOps test:

testThinClientPRSingleHop
testThinClientPutAllPRSingleHop

Will resubmit this PR after removing outdated commits.


Support multiple Fragments

At the moment it is required to have only one tag in the mounted component, otherwise these errors will appear.

--> Solution:
This is basically the same approach as before 0.1 - adding inheritAttrs: false to each mounted component. However it was removed due to the fact that attributes then, including props etc are automatically removed, which might be not ideal.
It should automatically check if a component contains multiple fragments and then apply inheritAttrs: false, this should align with vue 3

Workaround: You can achieve this currently yourself by using
defineOptions({
inheritAttrs: false

on the component that you want to mount with multiple fragments!

This is now part of the mountComponent configuration and is set default to false.
mountComponent({
inheritAttrs: false
})

its the same, as using defineOptions.


--target=dev in all environments

When running task (within DbtTaskGroup), when checking the logs both in dev and prod, the target doesn't seem to change (it stays target='dev').

I believe it's to do with astronomer-cosmos generating a snowflake profile (aka "snowflake_profile") based on the Airflow connection, but is there a possibility to set this as a dbt_arg?

Hey @eldan-dario - you're correct that astronomer-cosmos takes care of translating Airflow connections to profiles for you. This means the profiles should stay the same across environments, but the values in the profile should change depending on the Airflow connection. To ensure this is a bug, can you confirm:

you're using different Airflow connections for dev and prod (where, for example, the schema is different)
the dbt models are being run against the same connections (e.g. the schema remains the same)

If you are providing different Airflow connections but the target values remain the same, then this is a bug and I can look into it!

I would advocate for target being an option that can actually be used. We're using macros which reference the target name to help determine the database to be written to, or the sources to read from. While we can use different Airflow connections to change the database depending upon the environment, this will only apply to the single database set as the default in the connection, and will not apply to all of the databases referenced in our dbt project.
For reference, we're using target.name in a similar manner to the examples in the following dbt documentation: https://docs.getdbt.com/reference/dbt-jinja-functions/target#examples

@dschultz5197 I agree here - do you think the solution is as simple as passing a target_name? Then Cosmos could ensure the profile name gets translated properly.

Hey @jlaneve, following your requests on confirming:
1. Using different Airflow connections for dev and prod (where, for example, the schema is different)

Prod connection:

Prod connection dbt dag run  (logs --target='dev'):

Dev connection:

Dev connection dbt dag run  (logs --target='dev'):

2. The dbt models are being run against the same connections (e.g. the schema remains the same).
Do you mean running the same connections as in the previous section ("test_snowflake_prod_con" and "test_snowflake_dev_con") but with the same schema?
Because if so it has the same issue - both runs show --target=dev
Prod:

Dev:

I guess the issue here is that the "snowflake_profile" generated from astronomer-cosmos based on the Airflow connection always sets the target='dev'. Although we have the flexibility from the Airflow connection and also the option of overriding the "db_name" in the dbt_args, it still can be confusing that in the log we see that target='dev'.

In addition, I noticed in the code (cosmos/providers/dbt/core/profiles/snowflake.py) that "dev" is hard coded, so this may be the reason that always the target='dev' in the airflow logs.


The remote session with the name WinPSCompatSession  is not available

Steps to reproduce
Import-Module ModuleName -UseWindowsPowerShell

Expected behavior
Module loads without errors.

Actual behavior
The remote session with the name WinPSCompatSession  is not available.

Environment data

PSVersion                      7.0.0-rc.2
PSEdition                      Core
GitCommitId                    7.0.0-rc.2
OS                             Microsoft Windows 10.0.18363
Platform                       Win32NT
PSCompatibleVersions           {1.0, 2.0, 3.0, 4.0…}
PSRemotingProtocolVersion      2.3
SerializationVersion           <IP_ADDRESS>
WSManStackVersion              3.0

I can not duplicate this.
First - I do not have a module name 'modulename'
You only get the remoting session if you are loading via compatibility not by default. that is, only the modules in System 32 are remoted.  I have tested this extensively and can not, in general, duplicate this.

"ModuleName" was simply an example, not a real name obviously. I got the error with every module I tried, so I omitted the real names.
For example modules AzureAD and ExchangeOnlineManagement which are available in the PSGallery do not work in PS7. And as such I attempted to use the UseWindowsPowerShell switch to load them in PS5.1 remote session.
But instead I get the described error, which is not really helpful. I did not know the switch is limited to modules located in system32. If this is intended behavior, then the error message should be clarified to say so.

I can not reproduce your error. With the exception of the three modules we know are problematic, I can load the others just fine in compatibility mode.
You say AZUREAD module is an issue. I just installed it and it works fine in PowerShell 7.   Here is what I see:

Not ALl modules automatically use remoting. The Azure AD module is cross-platform and is used natively in PWSH 7 without using remoting.

You can import the modules fine in PS7, but neither Connect-AzureAD nor Connect-ExchangeOnline cmdlets work. They produce error "Could not load type System.Security.Cryptography.SHA256Cng' from assembly 'System.Core".
Which is the reason I wanted to use the UseWindowsPowerShell switch.

I see what you mean! I was using the AZ..accounts module (which does work) with the AzureAD commands - my bad. I can duplicate what you see.
This appears to be an issue with the module. The module is marked only with Desktop as the supported edition.  To resolve this is a challenge for the Azure team.
The Connect=EXOService has the same issue and the module is not marke as Core compatible.
@iSazonov  - should both these modules get added to the deny list?

I think it could be a temporary solution.

I really think it is the best solution for RTM.
I strongly feel the product can not go out if there are unexpected surprises like this (and these are two module sets I had not yet tested).
It basically tells the user: this is not going to work (today) in PowerShell 7. I think this is a better solution then failing with an error message that is NOT in any way actionable. I get why the error we are seeing here is generated, but the new user is not given any clues as to how to fix this issue.
At least with putting these modules in the deny list, you shift the problem to where the solutions lies, ie at the MSOnline and AzureAD product teams.
I like the idea of PowerShell team having my back and not letting me load modules that just are not going to work. Today. And bacause that block list is in text - if a working module IS produced, i

Please also note that there are two Exchange Online modules; Microsoft.Exchange.Management.ExoPowershellModule and ExchangeOnlineManagement.
Former is installed from https://portal.office.com and the latter from https://www.powershellgallery.com.

/cc @anmenaga for information.

The The remote session with the name WinPSCompatSession  is not available error is not supposed to happen; we need to get to the bottom of this, but I'm having difficulty with repro (tried on 2 machines) - module AzureAD version <IP_ADDRESS> from PSGallery:
When loaded directly in PS Core Connect-AzureAD does produce Cryptography.SHA256 errors;
but when loaded using -UseWindowsPowerShell Connect-AzureAD successfully logs me into AzureCloud.
@doctordns do you also see The remote session with the name WinPSCompatSession  is not available. error?
@lehtoj can you please try loading any other module with  -UseWindowsPowerShell, for example, what output do you get for following?:
# start a fresh PS Core
Import-Module -Name PKI -UseWindowsPowerShell
Get-Module
Get-PSSession

Some other hopefully clarifying thoughts:

I did not know the switch is limited to modules located in system32
it is not limited to system32 modules. In fact it was added for scenarios like you are trying to do - when the module is Not in system32, but user wants to use it with WindowsPS anyway.
The module is marked only with Desktop as the supported edition.
This is actually kind of misleading... Install-Module by default installs into user directory (e.g. C:\Users\me\Documents\PowerShell\Modules\AzureAD). But PS Core considers any module that is Not in system32 as PS Core-compatible. In other words, any module downloaded from PSGallery by default is considered PS Core-compatible.
Modules\AzureAD\<IP_ADDRESS>\AzureAD.psd1 does not specify CompatiblePSEditions and get-module AzureAD -ListAvailable displays that as PSEdition == Desk, which is misleading. Looks like this is issue #7856

@anmenaga I made a fresh Windows 10 virtual machine to test and installed PS7.0 RC3 on it.
I tried importing the PKI module with the UseWindowsPowerShell switch, which worked as expected. Then I tried importing the AzureAD module, which also worked.
Unfortunately Connect-AzureAD produces following errors.
Connect-AzureAD: One or more errors occurred.: The handle is invalid
Connect-AzureAD: One or more errors occurred.
Connect-AzureAD: The handle is invalid
Connect-AzureAD: One or more errors occurred.: The handle is invalid

Then I attempted to import the ExchangeOnlineManagement module with the UseWindowsPowerShell switch and run Connect-ExchangeOnline, all worked fine. Very nice.
Next Monday I will test what happens on PS7.0 RC2 as well as RC3 on my work laptop, which is where I originally experienced the "The remote session with the name WinPSCompatSession is not available" error. So I'll get back to you in a few days.

Right, so. I tested again on my work laptop and... now the UseWindowsPowerShell switch works as expected. And I haven't even rebooted the laptop since, only opened a fresh PS7.0 RC2 session. Which I did multiple times last week as well, without results changing any.
Unlike on the virtual machine earlier, both AzureAD and ExchangeOnlineManagement modules do work. I did not get "The handle is invalid" error.
I honestly don't know why the UseWindowsPowerShell  switch produced the reported error last week, but now it does not. Perhaps there might be relation to VSCode and the PS extension, as I tend to only use VSCode. But I did do test VSCode too and could not replicate the error.
All things considered, seems to generally work as expected, with a few mysterious bugs. If you have any ideas how I might help to investigate the original issues as well as the invalid handle issue further, please let me know.

I can confirm this on PowerShell 7.0.0-rc.3. Example:
> Import-Module PKI
Get-PSSession: The remote session with the name WinPSCompatSession  is not available.

SO far as I can tell, the PKI module is core compatible
PS Cert:\CurrentUser\My\> gmo pki | ft name, CompatiblePSEditions

Name CompatiblePSEditions
---- --------------------
pki  {Desktop, Core}

So after importing the module, there should be no compatibility remoting serssion as the cmdlets are native.

PKI module is core compatible - this is good find. It turns out they've added CompatiblePSEditions field to pki.psd1. So on older systems (like Server 2016) the PKI module is considered PS-Core-incompatible and WinCompat will be auto-engaged when loading it; but on newer systems the module is marked as PS-Core-compatible so it will load naively.
@MovGP0, @lehtoj  do you know if your environment uses some sort of error redirection mechanism (e.g. redirect error stream to the regular output stream) ?

I have this problem with Import-Module on PowerShell 7.0 RTM (Get-PSSession: The remote session with the name WinPSCompatSession  is not available), with these built-in Windows 10 modules:

FailoverClusters, it must be loaded with -SkipEditionCheck
ScheduledTasks, it must be loaded with -SkipEditionCheck
DnsClient. Using -SkipEditionCheck gives another error, using -UseWindowsPowerShell gives the same error, and the two can't be used together. It must be loaded with Import-WinModule instead.

@anmenaga Nope, no such redirection is taking place.

In my testing (using Server 1809):

Failover clusters - works in compat mode. Does NOT work natively in Pwsh 7 (ie don't bother trying to load it with -SkipEditionCheck). It loads fine using -UseWindowsPowerShell. This module does NOT declare a CompatiblePSEditions tage.

Importing ScheduledTasks module works OK natively. This module declares itslef as Desktop AND Core.

3.DNS CLient works natively. This module also declares itself as Desktop AND Core.

I manage a few hundred servers and OSs not just Server 2019 so your observations aren’t valid for my environment.
Furthermore the stuff I listed is accurate and the reason -UseWindowsPowerShell is broken is because of a bug that exhibits when $ErrorActionPreference = ‘Stop’. Later I found there’s an open issue and a merge request in for it from someone else.

This may be a compatibility issue - can you post the version numbers of the modules that are not working and which OS you tested under? And what specific issues.
For reference - I tested (client and server-side) on Windows Server 2019 1809. running from PowerShell <IP_ADDRESS> Here are the module versions  I saw
FailoverClusters - Module Version <IP_ADDRESS>  which is marked as Desktop (aka Windows PowerShell) only but loads/works in compatibility mode. I tested using both Import-Module and module autoload - both create the remoting session and import the module from that session successfully. I was able to test,  the module's commands via building and managing a 2-node failover cluster using iSCSI CSV, and to build a SOFS on the cluster.
What, specifically, is meant by modules does 'not load'?
Can you check to see if your version of this module is moarked accordingly as core compatible?
ScheduledTasks - Module version <IP_ADDRESS> and marked as compatible with Core. Some basic testing works as expected but have not delved deeply.  Are you meaning ScheduledTasks or PSScheduledTasks? The latter does not work.
The Scheduled Tasks module is marked as core compatible so loads natively - there is no reason to use the -UseWIndowsPowerShell switch to load the module.
DNSClient - version <IP_ADDRESS> and marked as compatible with Core. Built a 2 domain forest, created a second forest, with X-forest trusts, and carried out a wealth of other operations all of which required DNS. Created multiple zones (forward and ptr), RRs etc. I see no issues at all in the Client (or Server0 modules.
As this module is marked as core compatible - no need to use the -UseWIndowsPowerShell script. Can you check to see if your version of this module is marked accordingly as core compatible?
Finally - you mention Import-WinModule. That command is no longer needed. Import-Module has, in effect, incorporated the functionality of Import-WInModule (and even stops known to not work at all in PowerShell 7 modules).

No need to go into it further.
For others, the fix is on #11980 (disclaimer: I haven’t tested the fix)


Full Fidelity Change Feed Processor with public surface changes

This PR introduces public surface changes for full fidelity Change Feed Processor.

Same ChangeFeedProcessorBuilder which is already GA for incremental mode ->

public ChangeFeedProcessorBuilder handleAllVersionsAndDeletesChanges(Consumer<List<ChangeFeedProcessorItem>> consumer)

ChangeFeedProcessorItem -> contains JsonNode current, JsonNode previous and ChangeFeedMetaData metadata

ChangeFeedMetaData -> contains long crts, long lsn, ChangeFeedOperationType operationType, long previouslsn, boolean timeToLiveExpired

ChangeFeedOperationType -> CREATE, REPLACE and DELETE

Deprecated old APIs in ChangeFeedPolicy

    @Beta(value = Beta.SinceVersion.V4_12_0,
        warningText = Beta.PREVIEW_SUBJECT_TO_CHANGE_WARNING)
    @Deprecated(since = "V4_37_0", forRemoval = true)
    public static ChangeFeedPolicy createIncrementalPolicy();

   @Beta(value = Beta.SinceVersion.V4_12_0,
        warningText = Beta.PREVIEW_SUBJECT_TO_CHANGE_WARNING)
    @Deprecated(since = "V4_37_0", forRemoval = true)
    public static ChangeFeedPolicy createFullFidelityPolicy(Duration retentionDuration);

   @Beta(value = Beta.SinceVersion.V4_12_0,
        warningText = Beta.PREVIEW_SUBJECT_TO_CHANGE_WARNING)
    @Deprecated(since = "V4_37_0", forRemoval = true)
    public Duration getFullFidelityRetentionDuration();

New APIs added in ChangeFeedPolicy

    @Beta(value = Beta.SinceVersion.V4_37_0,
        warningText = Beta.PREVIEW_SUBJECT_TO_CHANGE_WARNING)
    public static ChangeFeedPolicy createAllVersionsAndDeletesPolicy(Duration retentionDuration)

    @Beta(value = Beta.SinceVersion.V4_12_0,
        warningText = Beta.PREVIEW_SUBJECT_TO_CHANGE_WARNING)
    public static ChangeFeedPolicy createLatestVersionPolicy()

    @Beta(value = Beta.SinceVersion.V4_37_0,
        warningText = Beta.PREVIEW_SUBJECT_TO_CHANGE_WARNING)
    public Duration getAllVersionsAndDeletesRetentionDuration()

Deprecated APIs in CosmosChangeFeedRequestOptions

    @Beta(value = Beta.SinceVersion.V4_12_0, warningText =
        Beta.PREVIEW_SUBJECT_TO_CHANGE_WARNING)
    @Deprecated(since = "V4_37_0", forRemoval = true)
    public CosmosChangeFeedRequestOptions fullFidelity()

New APIs added in CosmosChangeFeedRequestOptions

    @Beta(value = Beta.SinceVersion.V4_37_0, warningText =
        Beta.PREVIEW_SUBJECT_TO_CHANGE_WARNING)
    public CosmosChangeFeedRequestOptions allVersionsAndDeletes()

API change check
APIView has identified API level changes in this PR and created following API reviews.
azure-cosmos

/azp run java - cosmos - tests

/azp run java - cosmos - ci

/azp run java - cosmos - tests


Documentation and source listings out of sync

The "src" link on http://rust.unhandledexpression.com/nom/macro.value.html links to http://rust.unhandledexpression.com/src/nom/src/macros.rs.html#581-599, which seems to be off by a few lines. I'm guessing the documentation and source files have gone out of sync somehow?

yes, they were out of sync. I just released nom 2.2 and updated the docs, it should be fixed now

Cool, thanks! :)


new installation on Firefox gave error.

Checking for more messages
Traceback (most recent call last):
File "echo.py", line 14, in
for contact in driver.get_unread():
File "/usr/lib/python2.7/site-packages/webwhatsapi/init.py", line 317, in get_unread
raw_message_groups = self.wapi_functions.getUnreadMessages(include_me, include_notifications)
File "/usr/lib/python2.7/site-packages/webwhatsapi/wapi_js_wrapper.py", line 102, in call
raise JsException("Error in function {0} ({1}). Command: {2}".format(self.function_name, e.msg, command))
webwhatsapi.wapi_js_wrapper.JsException: Error in function getUnreadMessages (ReferenceError: Store is not defined). Command: return WAPI.getUnreadMessages(false,false, arguments[0])
I did sudo pip install requirements , sudo pip install webwhatsapi
and then did python echo.py

how to install from source ??
is docker mandatory ??
please guide.

pip install git+https://github.com/mukulhase/WebWhatsapp-Wrapper.git


Alphapeptdeep Integration

Rename existing PythonInstaller to PythonInstallerLegacyDlg
Add new PythonInstaller implementation to support Python virtual environment
Add functional tests for new PythonInstaller implementation

Something went wrong with the merge here. It shouldn't show changes from other PRs. Maybe try fetching latest master and rebasing your branch on it. Do you need help doing that?.

Something went wrong with the merge here.
My guess is that pushing "Update branch" will fix everything.
This branch has changes from master but does not know that it is up to date with master.
If we push the "Update branch" button it will notice all the files that it wants to change are identical to what is already there and everything will be good.

Something went wrong with the merge here. It shouldn't show changes from other PRs. Maybe try fetching latest master and rebasing your branch on it. Do you need help doing that?.

Yeah. Thanks for asking. I did a rebase which treated the updated changes and anything in between as new commits. I rolled back those changes and added the updates as a new commit. That fixed this branch. I will do a merge from master later on.

On TeamCity the TestData test runs from an installed directory (installed with the WIX-based installer). Any non-vendor DLLs have to be added into Product-template.wxs manually. We didn't hit this on the Ardia PR because the Ardia tests are in TestConnected, which doesn't run under the admin-installed instance. Nick, we have both hit this snag many times over the years and it's funny how easily we forget it. :) I think I once proposed grepping for DLLs in the csproj files in the past but never got around to implementing it.

I moved the InstallPythonVirtualEnvironment function to ToolInstallUI, which is more appropriate than either Model space or BuildLibraryDlg.


feat: add large Input and Select variants

FX-2125
FX-2126
Description
Describe the changes and motivations for the pull request.
How to test

compare designs for Large variants with Abstract:
Select: design
Input: design
More designs can be found in the tickets
Figma designs trump Abstract designs: https://www.figma.com/file/5SCTOPrCDcHuk5We091GBn/Product-Library?node-id=223%3A10922 - unfortunately, we don't have Figma designs for everything

Screenshots

Before.
After.

Insert screenshots or screen recordings
Insert screenshots or screen recordings

Review

[ ] Read CONTRIBUTING.md and Component API principles
[ ] Annotate all props in component with documentation
[ ] Create examples for component
[ ] Ensure that deployed demo has expected results and good examples
[ ] Ensure that tests pass by running yarn test
[ ] Ensure that visuals tests pass by running yarn test:visual. If not - check the documentation how to fix visual tests
[ ] Ensure the changed/created components have not caused accessibility issues. How to use accessibility plugin in storybook.

PR commands

List of available commands:

@toptal-bot run all - Run whole pipeline
@toptal-bot run build - Check build
@toptal-bot run visual - Run visual tests
@toptal-bot run deploy:documentation - Deploy documentation
@toptal-bot run package:alpha-release - Release alpha version

PR Review Guidelines

When to approve? ✅
You are OK with merging this PR and

You have no extra requests.
You have optional requests.

Add nit: to your comment. (ex. nit: I'd rename this variable from makeCircle to getCircle)

When to request changes? ❌
You are not OK with merging this PR because

Something is broken after the changes.
Acceptance criteria is not reached.
Code is dirty.

When to comment (neither ✅ nor ❌)
You want your comments to be addressed before merging this PR in cases like:

There are leftovers like unnecessary logs, comments, etc.
You have an opinionated comment regarding the code that requires a discussion.
You have questions.

How to handle the comments?

An owner of a comment is the only one who can resolve it.
An owner of a comment must resolve it when it's addressed.
A PR owner must reply with ✅ when a comment is addressed.

According to design height should be 16px for large input as well.

According to design height should be 16px for the text in the large input as well.

Actually, we also have Figma designs. I've added them to the description.
We should follow those first. And the line height for the text is 16px there, so this is correct.

Actually, we also have Figma designs. I've added them to the description.
We should follow those first. And the line height for the text is 16px there, so this is correct.

height for the text is 16px in Figma as well

For reviewers: ignore the last commit for now, with the latest screenshot change. I don't think it's correct and might need to be fixed. Checking. 👀


Rename notebooks

Renamed.
renamed:    ../Workflow_Interface_1001_Workspace_Creation_from_JupyterNotebook.ipynb -> ../1001_Workspace_Creation_from_JupyterNotebook.ipynb
renamed:    ../Workflow_Interface_101_MNIST.ipynb -> ../101_MNIST.ipynb
renamed:    ../Workflow_Interface_102_Aggregator_Validation.ipynb -> ../102_Aggregator_Validation.ipynb
renamed:    ../Workflow_Interface_103_Cyclic_Institutional_Incremental_Learning.ipynb -> ../103_Cyclic_Institutional_Incremental_Learning.ipynb
renamed:    ../Workflow_Interface_104_Keras_MNIST_with_GPU.ipynb -> ../104_Keras_MNIST_with_GPU.ipynb
renamed:    ../Workflow_Interface_104_MNIST_XPU.ipynb -> ../104_MNIST_XPU.ipynb
renamed:    ../Workflow_Interface_201_Exclusive_GPUs_with_Ray.ipynb -> ../201_Exclusive_GPUs_with_Ray.ipynb
renamed:    ../Workflow_Interface_301_MNIST_Watermarking.ipynb -> ../301_MNIST_Watermarking.ipynb
renamed:    ../Workflow_Interface_401_FedProx_with_Synthetic_nonIID.ipynb -> ../401_FedProx_with_Synthetic_nonIID.ipynb
renamed:    ../Workflow_Interface_401_MNIST_Aggregator_Validation_Ray_Watermarking.ipynb -> ../401_MNIST_Aggregator_Validation_Ray_Watermarking.ipynb
renamed:    Workflow_Interface_Vertical_FL.ipynb -> Intro.ipynb
renamed:    Workflow_Interface_VFL_Two_Party.ipynb -> TwoParty.ipynb
renamed:    Workflow_Interface_VFL_Two_Party_Workspace_Creation_from_JupyterNotebook.ipynb -> TwoPartyWorkspaceCreation.ipynb

Closes #1086.

@kta-intel @psfoley I think only one test uses notebook for CI. Do you expect this change to break anything in OpenFL or contrib?
Please approve otherwise.

@kta-intel @psfoley I think only one test uses notebook for CI. Do you expect this change to break anything in OpenFL or contrib?
Please approve otherwise.

LGTM, thanks @MasterSkepticista


"Uncaught ReferenceError: Android is not defined"

Hi,
My web page is using some native function which work fine if i'm using android native with webView.addJavascriptInterface(this, "Android");
On the other hand in flutter_inappwebview i understand we can pass in javascript too but so far i'm using below but it's not working still having the "Uncaught ReferenceError: Android is not defined" error
onLoadStop: (InAppWebViewController controller, String url) {   webView = controller;   controller.evaluateJavascript(source: """   window.flutter_inappwebview.addJavascriptInterface(new WebAppInterface(this),'Android').then(function(result) {   console.log(result);   });   """); },
I have tried researching this but to no avail. Am i using the wrong method?

Hi, all i wanted to do is add webView.addJavascriptInterface(this, "Android") to support some of the Android functionality :(

@xylim666  I'm facing the same issue right now. Were you able to solve this problem?


Possibility to set custom distribution algorithm

Table of Contents

Description
Motivation and Context
How Has This Been Tested?
Screenshots (if appropriate):
Types of changes
Checklist:

Description
After defining experiments user can also set a custom distribution algorithm to be used instead of default one. Although the default one is very good there is sometimes need to use something different.
Motivation and Context
We have couple of different clients running AB tests (React native, extension and webapp). Some of these are legacy and very hard to change. They are using in-house distribution algorithm. I want the variants to match on all clients so I need a way to override default used here with algorithm used on other clients.
How Has This Been Tested?
This has only been tested with unit tests. In case client does not set a custom distribution algorithm the library will behave the same way it did before. It's a non-breaking change.
Types of changes

[ ] Bug fix (non-breaking change which fixes an issue)
[x] New feature (non-breaking change which adds functionality)
[ ] Breaking change (fix or feature that would cause existing functionality to change)

Checklist:

[x] My code follows the code style of this project.
[x] My change requires a change to the documentation.
[x] I have updated the documentation accordingly.
[x] I have added tests to cover my changes.
[x] All new and existing tests passed.

I really like this library and haven't had any issues integrating it. We've been using it for couple of months now. :)
We are AB testing features on multiple clients. Some of these clients are using legacy AB testing tools. I need to adapt the distribution algorithm in this library to match other clients. Does this feature seem reasonable?


feat!: add a way to specify a plugin name

This refactors the config option to allow for custom plugin names for people who want to use this tool with a plugin
BREAKING: This completely changes the configuration Struct into a custom one
This also adds a flake.nix with a devshell for NixOS users. Not sure if that should also be in this PR

I would also prefer if the nix stuff isn't committed to the repo.

Should I rather add that in a seperate PR? Once LGTM you can remove the flake.nix, flake.lock, and .envrc files along with the .direnv/ entry in the gitignore

I would rather just remove the Nix-related files before merging this PR! Nix is very cool but I don't use it and from my understanding, it isn't used widely enough for it to be worth adding extra clutter to the root of the repo.

I would rather just remove the Nix-related files before merging this PR! Nix is very cool but I don't use it and from my understanding, it isn't used widely enough for it to be worth adding extra clutter to the root of the repo.

What I meant is remove the files before the merge but first make sure the rest is alright.

Remove the nix files and I am happy to merge this into the v2 branch.
I am going to hold off doing a release until I finish some more work on Specta's next release candidate and release it. You should be able to safely lock to a Git commit for now, but be aware you will want to use specta = "=2.0.0-rc.1" in your project when using the tauri_specta v2 branch.

Thanks heaps for your contribution. This has come up before and is very needed feature!


status listener not working correctly when server goes away?

hi there,
i am playing with ddp connector, and i am wondering, how to listen to an event, when the server shuts down. ConnectStatus.disconnected is not triggered in this case.
client = DdpClient("meteor", "ws://localhost:3000/websocket", "meteor");
    client.connect();
    client.addStatusListener((status) {
      if (status == ConnectStatus.connected) {
        print("connected");
      }
      if (status == ConnectStatus.connecting) {
        print("connecting");
      }
      if (status == ConnectStatus.disconnected) {
        print("disconnected");
      }
      if (status == ConnectStatus.dialing) {
        print("dialing");
      }
    });

Was there ever any resolution on this issue? I'm seeing the same problem myself.


Test about sub page

The scope of this branch changed due to pytest-django setup issues with transaction rollbacks on the test database. These issues now being fixed, it seems like a good time to merge down and work from a more relevant branch name.
These fixes are needed for functional tests in the wider scope so these should be merged down for a better workstream.

Locally have merged in add-page-models and I am now getting new errors. Will look into this.

@allthatilk the following process got my tests passing:
git checkout add-page-models
git pull origin add-page-models
git checkout test-about-sub-page
git pull origin test-about-sub-page
git merge add-page-models #Merge made automatically by recursive method
psql -U postgres # DROP DATABASE iati; CREATE DATABASE iati; \q
find . -path "*/migrations/*.py" -not -name "__init__.py" -delete
git checkout home/migrations
git checkout search/migrations
./manage.py makemigrations
./manage.py migrate
./manage.py createsuperuser
./manage.py createdefaultpages
./manage.py runserver
pytest


v2 kafka json analysis

Search before asking

[X] I had searched in the feature and found no similar feature requirement.

Description
source {
Kafka {
topic = "Log"
bootstrap.servers = "hdp01:9092"
schema = {
fields {
a1= "string"
b1=
}
}
result_table_name = test
}
}
How to configure schema
{
"a1": "cs",
"b1": {
"proxy": 100
}
}
Usage Scenario
v2 kafka json
How to configure schema
{
"a1": "cs",
"b1": {
"proxy": 100
}
}
Related issues
No response
Are you willing to submit a PR?

[X] Yes I am willing to submit a PR!

Code of Conduct

[X] I agree to follow this project's Code of Conduct

schema {
a1 = string
b1 = {
proxy = int
}
}


[Scalability] Enable Horizontal Pod Autoscaler (HPA) for Alcor deployment

Feature Requirements
The K8s HPA automatically scales the number of Pods in a replication controller, deployment, replica set or stateful set based on observed CPU utilization (or, with custom metrics support, on some other application-provided metrics). This naturally fits into Alcor's performance requirement to scale up the number of replicas for each Microservice when the load increases.
Detailed Requirements

Define HorizontalPodAutoscaler including target metrics (like CPU)
Tune scaling policies including ScaleDown and ScaleUp policies (like periodSecond, selectPolicy and stabilizationWindowSeconds etc.). Make recommended default behavior for each Microservice.
Stress testing a few key Microservices (PM for example) to trigger scale up and down policies.

Reference
K8s HPA: https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale/

@kevin-zhonghao Checking if you can help on this issue.

@kevin-zhonghao Checking if you can help on this issue.

NP, the current question is we may find a suitable test environment.

@kevin-zhonghao Checking if you can help on this issue.

NP, the current question is we may find a suitable test environment.

Good point. I will see if we can bring up a few AWS VMs for testing.


Dockerfile Exposes port 8000

First, thanks for making this tool!
Second, I may be missing something, but image in Docker Hub exposes port 8000, should it be 8080? I couldn't see where 8000 was used with this utility. Thanks!

Hey @duganth-va, thanks! Can you share where you see that the image is exposing port 8000?
Here is the image hosted: https://hub.docker.com/r/trallnag/prometheus_ecs_discoverer
And here is the Dockerfile: https://github.com/trallnag/prometheus-ecs-discoverer/blob/master/Dockerfile
So there shouldn't be any port exposed by default I assume.

So when I ran the app on ECS I pulled from docker hub, I saw the port 8000 exposed. I was a bit confused becauase the documentation was referencing 8080, so I looked at the file below and saw line 10.
https://hub.docker.com/layers/trallnag/prometheus_ecs_discoverer/latest/images/sha256-b77a9dceba18eb1653b1e4cec8c97cbf999ae7323ef55b0ae693032ee68bed62

Ah, interesting. So it's the parent image I'm using. If you are worried about this EXPOSE being unsafe, notice that there is a big difference between port mappings (for example with -P when you use docker run) and exposing ports. EXPOSE is really nothing more than a kind of meta data and it does not mean that this port is actually open.
I think EXPOSE was introduced a long time ago when linking Docker containers with --link was still a thing. Back then you would declare what ports should be available for the Docker own name resolution and other containers linked to the container could access it with <container-name>:<exposed-port>. But if you knew the concrete IP you could still access any port you like.

Great clarification on the differences and thank you! I think the biggest part was confusion more than anything, running docker ps I would see 8000 exposed (but not mapped to host). I was making sure I wasn't missing something.


why wsarecv: An existing connection was forcibly closed by the remote host     ollama windows preview

What is the issue?
Error: pull model manifest: Get "https://registry.ollama.ai/v2/library/llama3/manifests/latest": read tcp <IP_ADDRESS>:51514-><IP_ADDRESS>:443: wsarecv: An existing connection was forcibly closed by the remote host
OS
No response
GPU
No response
CPU
No response
Ollama version
No response

Looks like it's most likely a dup of #4042


Transparency also matters!

I would love to be able to adjust transparency of neovide (vim.g.neovide_transparency) with keyboard shortcuts. And I believe you can easily make an extension for that, or add that feature to this extension.
I look forward to hearing from you!
Anyway, thanks a lot for this awesome extension!

Hey @1qh,
thanks for reaching out. Sorry for taking so long with my response, it was a busy week!
Transparency also indeed does matter!
But this is  a "won't implement" for me. For two reasons.

It is a neovide only setting, and this plugin is more "general-use" - for GUI clients that support guifont.

The second reason is that it's already quite simple to change transparency.

One way is to modify the variable, which becomes pretty simple if you use a wild-menu with auto completion.

https://user-images.githubusercontent.com/34311583/219135115-cc7b77dd-c41e-40d9-82a3-65277068fc22.mov

If you want to have a keymap you can map a function containing something like:

vim.g.neovide_transparency = vim.g.neovide_transparency - 0.05

Thanks a lot!


Sample draft

Please add a meaningful description for your change here

Thank you for your contribution! Follow this checklist to help us incorporate your contribution quickly and easily:

[ ] Choose reviewer(s) and mention them in a comment (R: @username).
[ ] Format the pull request title like [BEAM-XXX] Fixes bug in ApproximateQuantiles, where you replace BEAM-XXX with the appropriate JIRA issue, if applicable. This will automatically link the pull request to the issue.
[ ] Update CHANGES.md with noteworthy changes.
[ ] If this contribution is large, please file an Apache Individual Contributor License Agreement.

See the Contributor Guide for more tips on how to make review process smoother.
To check the build health, please visit https://github.com/apache/beam/blob/master/.test-infra/BUILD_STATUS.md
GitHub Actions Tests Status (on master branch)

See CI.md for more information about GitHub Actions CI.

@yirutang - Could you please add a description or close this PR?

Sorry, please ignore this PR.