HAProxy proxy protocol

does anyone ever had the haproxy proxy protocol implementation in aiosmtpd? Thanks in advance.

I'm not sure what you're asking - did you mean someone using HAProxy in front of aiosmtpd?

I refer to the proxy protocol. Simply put, when I connect to a load balancer (such as haproxy or nginx) and it forwards it to a PROXY-supported SMTP server, the SMTP server will "receive" the source IP (my ip), not the load balancer IP.
Here's an example when I connect to a proxy-enabled postfix server, look at the "PROXY" command:
shell # telnet host1 25 Trying <IP_ADDRESS>... Connected to host1. Escape character is '^]'. PROXY TCP4 <IP_ADDRESS> <IP_ADDRESS> 33504 25 220 host1.domain.tld ESMTP ehlo somedomain.tld 250-host1.domain.tld 250-PIPELINING 250-SIZE 152400000 250-VRFY 250-ETRN 250-STARTTLS 250-AUTH PLAIN LOGIN 250-AUTH=PLAIN LOGIN 250-ENHANCEDSTATUSCODES 250-8BITMIME 250-DSN 250-SMTPUTF8 250 CHUNKING
where <IP_ADDRESS> is my own IP and <IP_ADDRESS>, but the ip that is connecting directly is the load balancer IP.
seems to be something monkey patching smtp.py in the function
async def _handle_client(self):
Any direction?

Looks like it's just sending bytes that tell the smtp server that a proxy is routing the bits.
PROXY TCP4 <IP_ADDRESS> <IP_ADDRESS> 33504 25

That's not part of a typical smtp exchange. If we have something handling that right now, I haven't noticed it

There is nothing implemented with this in aiosmtpd for sure. It would be nice to have this as https://haraka.github.io/ do.

I'd be supportive of a solid PR implementing this - @joaoreis81 is this something that you would feel capable implementing?

Yes, I think I can handle this.  I will keep in touch, thanks

@joaoreis81 Any update from your side?

i will take a look to do this :) give me some time. Postfix is supporting this  - its really nice feature if smtp server is after LB and you want to keep malformations about client IP's

@pkalemba Happy to review your work. I've quite a bit of experience with the proxy protocol, but not that much with Python. Feel free to ping me in a future PR!

Is there any progress for this @joaoreis81 @pkalemba @TimWolla ?
Or is there any documentation for the PROXY verb?

Is there any progress for this @joaoreis81 @pkalemba @TimWolla ?
Or is there any documentation for the PROXY verb?

Or is there any documentation for the PROXY verb?

https://github.com/haproxy/haproxy/blob/master/doc/proxy-protocol.txt
For PROXYv1 you basically only need to read a single line off the socket and parse it as PROXY <TCP4|TCP6> <src_ip> <dst_ip> <src_port> <dst_port>: https://github.com/haproxy/haproxy/blob/23cc52d34b89fa1f2ec2c4b3ac1526bae84aff93/doc/proxy-protocol.txt#L195-L310
PROXYv2 is a bit more complex, as it is a binary protocol, but it can transport additional information, such as TLS information (suitable for port 465) or unique connection IDs.

Or is there any documentation for the PROXY verb?

https://github.com/haproxy/haproxy/blob/master/doc/proxy-protocol.txt
For PROXYv1 you basically only need to read a single line off the socket and parse it as PROXY <TCP4|TCP6> <src_ip> <dst_ip> <src_port> <dst_port>: https://github.com/haproxy/haproxy/blob/23cc52d34b89fa1f2ec2c4b3ac1526bae84aff93/doc/proxy-protocol.txt#L195-L310
PROXYv2 is a bit more complex, as it is a binary protocol, but it can transport additional information, such as TLS information (suitable for port 465) or unique connection IDs.

Or is there any documentation for the PROXY verb?

https://github.com/haproxy/haproxy/blob/master/doc/proxy-protocol.txt
For PROXYv1 you basically only need to read a single line off the socket and parse it as PROXY <TCP4|TCP6> <src_ip> <dst_ip> <src_port> <dst_port>: https://github.com/haproxy/haproxy/blob/23cc52d34b89fa1f2ec2c4b3ac1526bae84aff93/doc/proxy-protocol.txt#L195-L310

Okay, thanks. I do not see what an SMTP server should respond with after receiving the PROXY verb, though.
250 ? 220 ? Empty string ? Something else?

PROXYv2 is a bit more complex, as it is a binary protocol, but it can transport additional information, such as TLS information (suitable for port 465) or unique connection IDs.

Considering how _handle_client works, I don't think we'll ever want to even try recognizing PROXYv2. The changes would be much too significant for my liking.

Or is there any documentation for the PROXY verb?

https://github.com/haproxy/haproxy/blob/master/doc/proxy-protocol.txt
For PROXYv1 you basically only need to read a single line off the socket and parse it as PROXY <TCP4|TCP6> <src_ip> <dst_ip> <src_port> <dst_port>: https://github.com/haproxy/haproxy/blob/23cc52d34b89fa1f2ec2c4b3ac1526bae84aff93/doc/proxy-protocol.txt#L195-L310

Okay, thanks. I do not see what an SMTP server should respond with after receiving the PROXY verb, though.
250 ? 220 ? Empty string ? Something else?

PROXYv2 is a bit more complex, as it is a binary protocol, but it can transport additional information, such as TLS information (suitable for port 465) or unique connection IDs.

Considering how _handle_client works, I don't think we'll ever want to even try recognizing PROXYv2. The changes would be much too significant for my liking.

I also noticed this snippet:

The receiver MUST NOT start processing the connection before it receives a
complete and valid PROXY protocol header. This is particularly important for
protocols where the receiver is expected to speak first (eg: SMTP, FTP or SSH).
The receiver may apply a short timeout and decide to abort the connection if
the protocol header is not seen within a few seconds (at least 3 seconds to
cover a TCP retransmit).

I personally don't know about this.
It's not simple to implement a "wait for several seconds for any incoming data and continue if none" logic.
I definitely won't be making a PR for this. It's beyond my current asyncio skill.

I also noticed this snippet:

The receiver MUST NOT start processing the connection before it receives a
complete and valid PROXY protocol header. This is particularly important for
protocols where the receiver is expected to speak first (eg: SMTP, FTP or SSH).
The receiver may apply a short timeout and decide to abort the connection if
the protocol header is not seen within a few seconds (at least 3 seconds to
cover a TCP retransmit).

I personally don't know about this.
It's not simple to implement a "wait for several seconds for any incoming data and continue if none" logic.
I definitely won't be making a PR for this. It's beyond my current asyncio skill.

Okay, thanks. I do not see what an SMTP server should respond with after receiving the PROXY verb, though.

Nothing. It's not part of the SMTP protocol, instead the SMTP protocol is wrapped in the proxy protocol (similar to SMTP being wrapped inside of TLS for encrypted connections).
A correct implementation must do the following:

Add a configuration flag to indicate whether PROXY support is enabled.
If support is enabled:

2a. Upon receiving a new connection.
2b. Expect to see the PROXY header.
2c. If no PROXY header is given the connection MUST be dropped.
2d. Otherwise the information in the PROXY header replace the information received from the kernel (basically the source address / port is taken from the PROXY header not from the socket).

If support is not enabled.

3a. Upon receiving a new connection.
3b. Expect not to see the PROXY header.
3c. If a PROXY header is given the connection either should be dropped or the proxy header should flow into the regular SMTP processing logic which expects to see the HELO.

The simplest correct implementation would perform a "blocking" read for the first line off the socket if proxy support is enabled. If it does not parse the connection is dropped, if it parses it hands of the socket to the regular SMTP processing.

Okay, thanks. I do not see what an SMTP server should respond with after receiving the PROXY verb, though.

Nothing. It's not part of the SMTP protocol, instead the SMTP protocol is wrapped in the proxy protocol (similar to SMTP being wrapped inside of TLS for encrypted connections).
A correct implementation must do the following:

Add a configuration flag to indicate whether PROXY support is enabled.
If support is enabled:

2a. Upon receiving a new connection.
2b. Expect to see the PROXY header.
2c. If no PROXY header is given the connection MUST be dropped.
2d. Otherwise the information in the PROXY header replace the information received from the kernel (basically the source address / port is taken from the PROXY header not from the socket).

If support is not enabled.

3a. Upon receiving a new connection.
3b. Expect not to see the PROXY header.
3c. If a PROXY header is given the connection either should be dropped or the proxy header should flow into the regular SMTP processing logic which expects to see the HELO.

The simplest correct implementation would perform a "blocking" read for the first line off the socket if proxy support is enabled. If it does not parse the connection is dropped, if it parses it hands of the socket to the regular SMTP processing.

It's not simple to implement a "wait for several seconds for any incoming data and continue if none" logic.

@pepoluan
You must not continue or you open yourself up to security issues. What that requirement tries to say in other words: You must fully process the PROXY header before starting the SMTP logic. So if you currently immediately write the greeting upon accepting a new connection you must first perform a read of the PROXY header and only then send the greeting. I am no experienced Python programmer, but that should not be hard to implement given my rephrasing.

It's not simple to implement a "wait for several seconds for any incoming data and continue if none" logic.

@pepoluan
You must not continue or you open yourself up to security issues. What that requirement tries to say in other words: You must fully process the PROXY header before starting the SMTP logic. So if you currently immediately write the greeting upon accepting a new connection you must first perform a read of the PROXY header and only then send the greeting. I am no experienced Python programmer, but that should not be hard to implement given my rephrasing.

You must not continue or you open yourself up to security issues. What that requirement tries to say in other words: You must fully process the PROXY header before starting the SMTP logic.

Okay, so if the "proxy_protocol" flag is set to True, then client must send a valid PROXY verb, or connection will be dropped?

You must not continue or you open yourself up to security issues. What that requirement tries to say in other words: You must fully process the PROXY header before starting the SMTP logic.

Okay, so if the "proxy_protocol" flag is set to True, then client must send a valid PROXY verb, or connection will be dropped?

Okay, so if the "proxy_protocol" flag is set to True, then client must send a valid PROXY verb, or connection will be dropped?

Yes. Or rather: The reverse proxy that is in front of aiosmtpd must send the PROXY header. If it does not do this it is a misconfiguration by the system administrator.
See also: https://github.com/haproxy/haproxy/blob/23cc52d34b89fa1f2ec2c4b3ac1526bae84aff93/doc/proxy-protocol.txt#L854-L859

Edit 2: Okay, some reading later: This is mostly meant for SMTP servers behind public-facing HAProxy, so HAProxy will always preface SMTP with "PROXY", and this leads to the SMTP server being exclusively for handling proxied SMTP traffic. CMIIW

Yes, exactly. Proxy protocol is meant to provide the client's IP address behind some reverse proxy (similar to x-forwarded-for for HTTP). Proxy protocol was “invented” by HAProxy, but is also supported by e.g. Amazon's ELB or Varnish's hitch TLS offloader.

I do wonder though if that is what is actually meant by the protocol designer?

FWIW: While I am not authoritative I'm a community contributor to HAProxy and I worked quite a bit on HAProxy's proxy protocol implementation, making various bugfixes and implementing the unique ID TLV for PROXY v2.

Okay, so if the "proxy_protocol" flag is set to True, then client must send a valid PROXY verb, or connection will be dropped?

Yes. Or rather: The reverse proxy that is in front of aiosmtpd must send the PROXY header. If it does not do this it is a misconfiguration by the system administrator.
See also: https://github.com/haproxy/haproxy/blob/23cc52d34b89fa1f2ec2c4b3ac1526bae84aff93/doc/proxy-protocol.txt#L854-L859

Edit 2: Okay, some reading later: This is mostly meant for SMTP servers behind public-facing HAProxy, so HAProxy will always preface SMTP with "PROXY", and this leads to the SMTP server being exclusively for handling proxied SMTP traffic. CMIIW

Yes, exactly. Proxy protocol is meant to provide the client's IP address behind some reverse proxy (similar to x-forwarded-for for HTTP). Proxy protocol was “invented” by HAProxy, but is also supported by e.g. Amazon's ELB or Varnish's hitch TLS offloader.

I do wonder though if that is what is actually meant by the protocol designer?

FWIW: While I am not authoritative I'm a community contributor to HAProxy and I worked quite a bit on HAProxy's proxy protocol implementation, making various bugfixes and implementing the unique ID TLV for PROXY v2.

Okay with the simplification of logic, maybe my branch will do?
https://github.com/pepoluan/aiosmtpd/tree/proxy-protocol

Okay with the simplification of logic, maybe my branch will do?
https://github.com/pepoluan/aiosmtpd/tree/proxy-protocol

Okay with the simplification of logic, maybe my branch will do?

The handling looks good to me. However from an API ergonomics perspective I would prefer that the proxy protocol would be handled automatically for me (i.e. that a default handler simply does the right thing by replacing self.session.peer). It might also be useful to plan ahead for a PROXY v2 support, even if that is not implemented in the initial version. Thus it would probably be more useful if the handler would be called with a dictionary of the (ip, port) tuples instead of the 5 pieces. Something like: { "src": (ip, port), "dst": (ip, port) }.

Okay with the simplification of logic, maybe my branch will do?

The handling looks good to me. However from an API ergonomics perspective I would prefer that the proxy protocol would be handled automatically for me (i.e. that a default handler simply does the right thing by replacing self.session.peer). It might also be useful to plan ahead for a PROXY v2 support, even if that is not implemented in the initial version. Thus it would probably be more useful if the handler would be called with a dictionary of the (ip, port) tuples instead of the 5 pieces. Something like: { "src": (ip, port), "dst": (ip, port) }.

Okay with the simplification of logic, maybe my branch will do?

The handling looks good to me. However from an API ergonomics perspective I would prefer that the proxy protocol would be handled automatically for me (i.e. that a default handler simply does the right thing by replacing self.session.peer).

That will change the semantics for self.session.peer too much. As it is now, self.session.peer is the "peer" of the TCP communication, so whatever host that actually connects to aiosmtpd.
I'm -1 on changing this semantic.

It might also be useful to plan ahead for a PROXY v2 support, even if that is not implemented in the initial version.

That will require significant rework of _handle_client, because currently I just leverage that method's readuntil() which pulls in one textual line.
I'm neutral on this suggestion, but I definitely won't be doing that.

Thus it would probably be more useful if the handler would be called with a dictionary of the (ip, port) tuples instead of the 5 pieces. Something like: { "src": (ip, port), "dst": (ip, port) }.

Well, if anyone wants to pick up on this, then feel free.
My branch there is as far as I'll go for this issue.

Okay with the simplification of logic, maybe my branch will do?

The handling looks good to me. However from an API ergonomics perspective I would prefer that the proxy protocol would be handled automatically for me (i.e. that a default handler simply does the right thing by replacing self.session.peer).

That will change the semantics for self.session.peer too much. As it is now, self.session.peer is the "peer" of the TCP communication, so whatever host that actually connects to aiosmtpd.
I'm -1 on changing this semantic.

It might also be useful to plan ahead for a PROXY v2 support, even if that is not implemented in the initial version.

That will require significant rework of _handle_client, because currently I just leverage that method's readuntil() which pulls in one textual line.
I'm neutral on this suggestion, but I definitely won't be doing that.

Thus it would probably be more useful if the handler would be called with a dictionary of the (ip, port) tuples instead of the 5 pieces. Something like: { "src": (ip, port), "dst": (ip, port) }.

Well, if anyone wants to pick up on this, then feel free.
My branch there is as far as I'll go for this issue.

I do think that this enhancement will be quite useful, make no mistake.
But I'm marking this for 1.4 milestone ... main reason being that we'll transition fully to pytest in 1.3 (PR #202 ), and the strategy for merging #202 is to merge all planned changes for 1.3, then convert the test cases not already in #202 (because I can't convert tests for non-existent features). If PROXY support gets marked for 1.3, it will delay #202 even more.
tl;dr: This is a good enhancement request. Marking for 1.4 release because reasons.

I do think that this enhancement will be quite useful, make no mistake.
But I'm marking this for 1.4 milestone ... main reason being that we'll transition fully to pytest in 1.3 (PR #202 ), and the strategy for merging #202 is to merge all planned changes for 1.3, then convert the test cases not already in #202 (because I can't convert tests for non-existent features). If PROXY support gets marked for 1.3, it will delay #202 even more.
tl;dr: This is a good enhancement request. Marking for 1.4 release because reasons.

Learnt a lot about asyncio StreamReader interface...
Tore down previous code and do some major snip'n'snap...
I think my branch below is about 90% finished for PROXY Protocol support:
https://github.com/pepoluan/aiosmtpd/tree/proxy-protocol
Will make a PR after 1.3 is on its way (1 PR to go)

@pepoluan Thank you for tackling this. I had a look at your diff and it appear to be good as far as I am qualified to tell with my Python expertise.

Both v1 and v2 are supported (Except that I don't implement TLV decoding -- can't understand their documentation w.r.t. TLV).

I'll attempt to give you an easy explanation here. My understanding is that proxy_data.rest is the remaining bytes after the address specification (i.e. the TLV blob). Then you would do the following to parse these:

Read a single byte and store this as your type.
Read two bytes in big endian order and store this as your length.
Read length bytes and store this as your value.
Repeat this until you read the end of the PROXYv2 header.

Then depending on the type do one of the following:

PP2_TYPE_ALPN: Return the value as a bytestring within an alpn key in e.g. a Python dict.
PP2_TYPE_AUTHORITY: See alpn (except with a key authority).
PP2_TYPE_CRC32C: Implement the algorithm as explained here: https://github.com/haproxy/haproxy/blob/1c0a722a83e7c45456a2b82c15889ab9ab5c4948/doc/proxy-protocol.txt#L569-L597. If the checksum verification fails then you must return an error. I'd say this one can safely be skipped.
PP2_TYPE_NOOP: Ignore skip.
PP2_TYPE_UNIQUE_ID: See authority.
PP2_TYPE_SSL:

Read 1 byte. Store this as ssl.client
Read a 4-byte integer. Store this as ssl.verify. This one actually appears to be undefined with regard to endianness.
Perform TLV parsing for the varios PP2_SUBTYPE_SSL_* until you reach the end of the value.

PP2_TYPE_NETNS: See authority.

PP2_TYPE_UNIQUE_ID: See authority.

This one is probably the most interesting one in the context of an SMTP server. The SSL ones (including alpn) are less interesting, because usually STARTTLS on port 25 / 587 is used, not SSL on port 465.

If you'd like to test then you can use this as a PROXY v2 header:
base64:
DQoNCgANClFVSVQKIREAcn8AAAF/AAABsFJipQMABFT9xv8CAAlBVVRIT1JJVFkFAAlVTklRVUVf
SUQgAEQBAAAAACEAB1RMU3YxLjIlAAdSU0E0MDk2JAAKUlNBLVNIQTI1NiMAG0VDREhFLVJTQS1B
RVMyNTYtR0NNLVNIQTM4NFRlc3QgZGF0YSB0aGF0IGlzIG5vdCBwYXJ0IG9mIFBST1hZdjIuCg==

hex:
00000000: 0d0a 0d0a 000d 0a51 5549 540a 2111 0072  .......QUIT.!..r
00000010: 7f00 0001 7f00 0001 b052 62a5 0300 0454  .........Rb....T
00000020: fdc6 ff02 0009 4155 5448 4f52 4954 5905  ......AUTHORITY.
00000030: 0009 554e 4951 5545 5f49 4420 0044 0100  ..UNIQUE_ID .D..
00000040: 0000 0021 0007 544c 5376 312e 3225 0007  ...!..TLSv1.2%..
00000050: 5253 4134 3039 3624 000a 5253 412d 5348  RSA4096$..RSA-SH
00000060: 4132 3536 2300 1b45 4344 4845 2d52 5341  A256#..ECDHE-RSA
00000070: 2d41 4553 3235 362d 4743 4d2d 5348 4133  -AES256-GCM-SHA3
00000080: 3834 5465 7374 2064 6174 6120 7468 6174  84Test data that
00000090: 2069 7320 6e6f 7420 7061 7274 206f 6620   is not part of
000000a0: 5052 4f58 5976 322e 0a                   PROXYv2..

I generated it with the following HAProxy configuration:
listen test
	mode tcp
	bind :25252
	bind :25253 ssl crt ssl/haproxy.pem

	unique-id-format "UNIQUE_ID"

	server aiosmtpd localhost:2525 send-proxy-v2 proxy-v2-options ssl,cert-cn,ssl-cipher,cert-sig,cert-key,authority,crc32c,unique-id

and then using openssl s_client:
openssl s_client -connect <IP_ADDRESS>:25253 -servername AUTHORITY

Thanks for the explanation! Now I understand what value[0] means in the Proxy Protocol documentation.
That said,
I don't know if I want aiosmtpd to decode all the TLV fields, though... I feel that it's outside the scope or needs of an SMTP server. IMHO such decoding should be the purview of handle_PROXY hook, which already receive all proxy information anyways.
I'm not against decoding per se, I just can't see the use case for all the TLV-encoded info in the context of an SMTP server.

Thanks for the explanation! Now I understand what value[0] means in the Proxy Protocol documentation.

That's C variable length array member syntax. Sometimes it's written as value[0], sometimes value[]. See: https://en.wikipedia.org/wiki/Flexible_array_member

I don't know if I want aiosmtpd to decode all the TLV fields, though...

I don't think that is necessary, especially for the SSL ones.

I'm not against decoding per se, I just can't see the use case for all the TLV-encoded info in the context of an SMTP server, especially one that already implemented STARTTLS.

The one I am interested in and the one that might be useful generally is the UNIQUE_ID TLV. Its purpose is to allow for easy correlation between HAProxy logs and aiosmtpd logs. That way I can identify a single session using a unique identifier, without needing to match up port numbers and timestamps.
Maybe the following solution might be acceptable:

Parse the TLV into distinct fields.
For specific fields perform further processing.
The other fields are returned as the raw bytestring.

For most fields simply returning the value as a bytestring is all it takes.
Maybe the following would be a sane data model (written by a Python newbie):
class TLV:
  def __init__(self, type, value):
    self.type = type # The type number
    self.value = value # Value being the raw Bytestring

class UniqueIdTLV(TLV):
  def get_unique_id():
    return self.value

If the type can be parsed then a specific object would be created, otherwise the catch-all TLV object works. The parsed proxy data would then be a list of TLV objects.

That's C variable length array member syntax. Sometimes it's written as value[0], sometimes value[]. See: https://en.wikipedia.org/wiki/Flexible_array_member

That part I understand; it was the description that did not clearly state that value[0] was the first byte of the actual value, because somehow they insist on making (part of) value as a TLV "header" struct. IMO, they need to rewrite the docs 😜

The one I am interested in and the one that might be useful generally is the UNIQUE_ID TLV. Its purpose is to allow for easy correlation between HAProxy logs and aiosmtpd logs. That way I can identify a single session using a unique identifier, without needing to match up port numbers and timestamps.

Ah, that is a very good use case 👍
TBH, it's relatively simple to parse the TLV records after you explained its structure. I'm just trying to prevent an "explosion of complexity". But since you've presented a strong and useful use case, I have no objection.
Let me play around a bit and I'll update when I've implemented the TLV parser. There are some interesting design decisions I have to think about 😉

I'm hitting a roadblock.
The latest version on my branch works and the tests works ... but only on Windows.
All timeout-related tests failed in Linux. This test and this test simply fail on Linux; somehow the required ConnectionAbortedError exception is not raised. Heck, no exception is raised at all!
It's as if the TCP connection lingers around...
I'm so mind-boggled by this, I've asked on StackOverflow.
@asvetlov , do you know why self.transport.close() doesn't seem to close TCP connection on Linux, while it does in Windows? Or how do you abort TCP connection in aiohttpd?
Currently that's the only reason why I still haven't created a PR for this.

Okay, so I implemented a workaround: These lines and these lines.
I am totally not happy with these workaround, but it was a very irritating blocking.
At least now I can continue.


Adding path to avoid error during reconciling

Q
A

Bug fix?
yes

New feature?
no

API breaks?
no

Deprecations?
no

Related tickets
N/A

License
Apache 2.0

What's in this PR?

I have added a missing syntax, which will make sure that you don't get any errors while applying an audit device using bank-vaults
Why?

Current example is incorrect and leads to error.
vault-configurer-68cc75cc7d-bkqhs:bank-vaults {"level":"error","msg":"error configuring vault: error configuring audit devices for vault: error configuring managed audits: error enabling audit device  in vault: Error making API request.\n\nURL: PUT https://vault.vault-operator:8200/v1/sys/audit\nCode: 405. Errors:\n\n* 1 error occurred:\n\t* unsupported operation\n\n","time":"2022-07-29T10:42:45Z"}
vault-configurer-68cc75cc7d-bkqhs:bank-vaults {"level":"info","msg":"Failed applying configuration file: /config/vault-configurer/vault-config.yml , sleeping for 1m0s before trying again","time":"2022-07-29T10:42:45Z"}

Additional context

https://github.com/banzaicloud/bank-vaults/issues/290
https://github.com/banzaicloud/bank-vaults/pull/311 (Thanks for the original contribution for cr-audit)
Checklist

[ ] Code meets the Developer Guide
[ ] User guide and development docs updated (if needed)
[ ] Related Helm chart(s) updated (if needed)

To Do

[ ] If the PR is not complete but you want to discuss the approach, list what remains to be done here

 Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.You have signed the CLA already but the status is still pending? Let us recheck it.

@k4kratik sorry for the late response it looks good, thank you for the fix


Not working in IE8

When I try to activates the completion more than one time it does not work

I'm not sure whether the bug is fixed, but Microsoft had already stop supporting IE8. So I close the issue. Thanks for the comments though!


not working in dark backgrounds

not working in dark backgrounds.

but working well in light backgrounds

kindly try with these two example QR codes above. thanks

Having the same issue with this as well, it seems like the underlying ZXing library doesn't support negative scans by default.
It may be possible to invert the camera's input according to https://github.com/zxing/zxing/issues/194#issuecomment-284010397. Curious if there's any plans to support this


chore: add prettier, commitlint, swap husky

and reformat package.json

Current dependencies on/for this PR:

master

PR #813

PR #814   👈

This comment was auto-generated by Graphite.


Rule fixes post scratch-vm review

This adds the whitespace rules @thisandagain pointed out in https://github.com/LLK/scratch-vm/pull/298.
I missed a lot of whitespace-related rules because I mistook the "autofix" symbol on http://eslint.org/docs/rules/ for the "included in eslint/recommended" symbol.  So I added the ones that make sense for us (we already adhere to them in scratch-vm).
One more worth pointing out is 'quote-props': [2, 'consistent-as-needed']: Object properties should not use quotes unless necessary, in which case all properties of the object should use quotes.
After I added and fixed this in scratch-vm, it pointed out I was too strict with the camelcase rule, so that now excludes object properties from needing to be camelcase (we use many underscores in object properties in scratch-vm).

(Merged so I can update the scratch-vm PR)


edit block not displaying on certain page

Hello,
I have some pages with cms content where when I turn on the edit mode, the content dissapears and I can not edit it when I hover over the block, there's no option to edit being displayed yet on all the other pages that are cms'd I can edit just fine. I know this is vague. I am running version 2.4.3.
I'm hoping I can start a discussion to help me fix this issue.
Thanks!

I've since upgraded to the latest version of django-cms and am no longer experiencing any issues.


Separate Owin-MixedAuth into MVC UI calling WebAPI Service

Hi Mohammand,
I've successfully split your MVC-MixedAuth solution proof of concept into a MVC UI layer calling a WebAPI service to read the SQL identity database.
I'm having a few difficulties doing the same thing for your OWIN-MixedAuth solution.
Do you have any recommendation or advice ?

I recommend you implement this in a custom UserStore

So the UserStore must pass around the web context ?
It was easier using the MVC5-Mixed auth proof of concept as we could have a base controller that understood the WebAPI interface it was calling.

You'll need to use a web client to make the API calls. Not sure how did you implement it, but the UserStore will act as a data access layer.

As part of the UserStore calling the WebApiAuthService, I also need to secure the WebApiService (resource) with Bearer tokens.
We are building a Template Solution for multiple projects to use.
I still don't have a successful implementation for the UserStore working correctly.

May be this would help https://aaronparecki.com/2012/07/29/2/oauth2-simplified

Closing as this is out of scope of this repo.
Thanks!


Develop

Deploy preview for oscartegiffel processing.
Built with commit 3e9936043fa92b2c011bf0d1f2b3fec1adca8e0a
https://app.netlify.com/sites/oscartegiffel/deploys/5bab58381f12b76b4a5f9a21


Fix GCC 14 -Wtemplate-id-cdtor warnings

Fixes #91206.

This fixes the compile issues on my end too.

Cherry-picked for 4.2.3.


PDLL isn't enabled during llvm_byo (installed llvm/mlir) builds

#17144 adds support for pdll plugins but is disabled during builds that use out of tree llvm/mlir. As noted in the PR, MLIRPDLLParser is not installed by llvm. An upstream change to llvm is needed to be able to install all PDLL deps.
Here is a potential fix:

https://github.com/llvm/llvm-project/pull/90411

At this point, I'm not sure that would fully solve the issue. There might be some issues with mlir-tblgen's ODR violations.

Does this pass with the upstream PR? (it looks sensible, but didn't try)

Same here.. looks sensible to me to do that.

Okay, I did some testing because I was having problems even with an updated upstream. For some reason, byo_llvm is able to build and link successfully but then segfaults on some of the tests. These tests aren't related to PDLL at all either.

For some reason, byo_llvm is able to build and link successfully but then segfaults on some of the tests. These tests aren't related to PDLL at all either.

Got logs we can look at?

For some reason, byo_llvm is able to build and link successfully but then segfaults on some of the tests. These tests aren't related to PDLL at all either.

Got logs we can look at?

Yep https://gist.github.com/IanWood1/c2ea38035453b8a17b9d7c8b78fb9cd6

I think byo_llvm works in very limited use cases. I expect such things to happen on mismatched LLVM versions.


optusing mv's derived stats

Proposed changes
Issue Number: close #xxx

run buildall

run buildall

run p0

run performance

add description

run p0


:bug: Add tests/ directory to lint

The CI checks that are broken are confirmation, not failures. CI is working as intended. Pushing this through to main.


Request to publish a release

Hey dmikushin,
I am working on getting this repo included as a library in vcpkg. Could you please publish a release so the version tag can be referenced by vcpkg?
https://docs.github.com/en/repositories/releasing-projects-on-github/managing-releases-in-a-repository
Note: could you also make sure you update the CMakeLists.txt with the version. Please see example here
Thanks
Alexander

Hello, @applyinnovations yes, I will look into it.
I would also gratefully merge changes from the community members addressing this request.


Update appveyor.yml

Updated Encrypted Key from AppVeyor

:white_check_mark: Build MarkdownPS 1.0.80 completed (commit https://github.com/Sarafian/MarkdownPS/commit/7b4513f9b6 by @Sarafian)


add subshell to USERS.md

@philmtd Please fix DCO issue.

Done. :)

@philmtd Thanks very much. Are you interested in contributing together?

@philmtd oh. welcome. Thanks very much.


Update README.md

Note however that
leak checking is currently disabled on Windows targets.
Windows issue are fixed

Good point, thanks. :)
@bors r+

:pushpin: Commit e6665109e0708675563d391ede46b2bdf24e8ecc has been approved by RalfJung

:hourglass: Testing commit e6665109e0708675563d391ede46b2bdf24e8ecc with merge 9d4c80e787f400e0ac36685b51460e52c1f31412...

:sunny: Test successful - checks-actions, checks-travis, status-appveyor
Approved by: RalfJung
Pushing 9d4c80e787f400e0ac36685b51460e52c1f31412 to master...


Appstudio update test-component-pac-ozak

Pipelines as Code configuration proposal
To start the PipelineRun, add a new comment with content /ok-to-test
For more detailed information about running a PipelineRun, please refer to Pipelines as Code documentation Running the PipelineRun
To customize the proposed PipelineRuns after merge, please refer to Build Pipeline customization

Pipelines as Code CI/test-component-pac-ozak-on-pull-request has successfully validated your commit.

StatusDurationName

✅ Succeeded
9 seconds
init

✅ Succeeded
22 seconds
clone-repository

✅ Succeeded
17 seconds
sast-snyk-check

✅ Succeeded
57 seconds
build-container

✅ Succeeded
21 seconds
inspect-image

✅ Succeeded
20 seconds
deprecated-base-image-check

✅ Succeeded
12 seconds
clair-scan

✅ Succeeded
40 seconds
clamav-scan

✅ Succeeded
20 seconds
sbom-json-check

✅ Succeeded
8 seconds
show-sbom

✅ Succeeded
7 seconds
show-summary

Pipelines as Code CI/test-component-pac-ozak-on-pull-request has successfully validated your commit.

StatusDurationName

✅ Succeeded
6 seconds
init

✅ Succeeded
27 seconds
clone-repository

✅ Succeeded
1 minute
build-container

✅ Succeeded
7 seconds
sast-snyk-check

✅ Succeeded
11 seconds
inspect-image

✅ Succeeded
45 seconds
clamav-scan

✅ Succeeded
7 seconds
deprecated-base-image-check

✅ Succeeded
8 seconds
clair-scan

✅ Succeeded
7 seconds
sbom-json-check

✅ Succeeded
5 seconds
show-summary

✅ Succeeded
6 seconds
show-sbom


Rapid API not returning states for selected country

Hi @Owoade, thanks for raising the issue. Please, could you provide a brief description of the issue. Perhaps, what you were trying to do. What methods you were calling

Hello there, I was trying to use the checkout link to make a test payment and the form field for state of residence wasn't returning the states for the selected country which in my case was Nigeria  After a little digging, I discovered that it was as a fault from the API as reported earlier. Thanks in anticipation as I await rectification.

Hi @Owoade, The issue has been resolved.


[READY] Merge master into v2.x (please don't squash commits!)

@pitbulk can you please merge this?

If I try "Rebase and Merge", it says there are conflicts. It is ok to Create a Merge commit ("Merge PR")?

Yes please!


Optimizations for Large Video Upload in v4

When uploading large videos (>15 MB?), I ran into a couple issues:

If a video file is big enough, the media_category should default to "tweet_video" otherwise the finalize will fail (as per https://github.com/twitterdev/large-video-upload-python/blob/master/async-upload.py#L49)
Would be nice to default the chunk size to 5 MB if file size is big enough
When setting the chunk size from upload_media, it hits a Unexpected parameter: chunk_size in https://github.com/tweepy/tweepy/blob/master/tweepy/api.py#L3500 before it is popped in https://github.com/tweepy/tweepy/blob/master/tweepy/api.py#L3509 - maybe those lines can be flipped?

Example mp4 to test on: https://sdo.gsfc.nasa.gov/assets/img/latest/mpeg/latest_1024_0094.mp4
api.media_upload(image_path, chunk_size=5*1024*1024, media_category="tweet_video") seems to work but emits the warning about chunk_size.

Thanks for the feedback / report.

If a video file is big enough, the media_category should default to "tweet_video" otherwise the finalize will fail (as per https://github.com/twitterdev/large-video-upload-python/blob/master/async-upload.py#L49)

Tweepy purposefully does not set a media_category by default. There's no way for Tweepy to determine the proper media_category for the user without knowing the user's intention for the media in question. For videos, tweet_video, dm_video, and amplify_video are all valid media_category values. Twitter's API documentation on this could be better, but I don't think there's anything to be changed about this on Tweepy's end. I might write up some documentation on it for Tweepy at some point, but feel free to PR that if you'd like.

Would be nice to default the chunk size to 5 MB if file size is big enough

I'm not set on not doing this, but this is probably not going to happen. There are pros and cons to smaller and larger chunk sizes, and it's really up to the user and what they would prefer depending on their situation. Even the current default of 1 MiB is a bit arbitrary, but it's mentioned as an example chunk size in the Twitter API documentation for the POST media/upload (APPEND endpoint) and it seems like a good balance. Having the chunk size be dependent on different ranges of file sizes would make the default even more arbitrary. What file size would be "big enough"? Without any specific and consistent guidelines or recommendations from Twitter API documentation (e.g. https://github.com/twitterdev/large-video-upload-python seems to use a chunk size of 4 MiB for some reason), any answer or range chosen would probably be pretty much completely arbitrary. I think leaving it up to the user to choose the chunk size they'd like to use is probably the best option.
I think chunk_size is an undocumented parameter at the moment though, so feel free to PR that if you'd like.

When setting the chunk size from upload_media, it hits a Unexpected parameter: chunk_size in https://github.com/tweepy/tweepy/blob/master/tweepy/api.py#L3500 before it is popped in https://github.com/tweepy/tweepy/blob/master/tweepy/api.py#L3509 - maybe those lines can be flipped?

This is indeed a bug. I'll fix this before v4.0 is released. For now, you can simply ignore the warning.

#3 should now be resolved with https://github.com/tweepy/tweepy/commit/e4a588eb3fc5733fca81f67b01eb64e288cb887b.

Great, thank you! I’ll pull down the changes.
Makes sense on the chunk size, would be nice to have it default internally but might be nice to have. Can always reopen this issue - thanks!


Update docker-compose to version3

issue-76
Signed-off-by: Cherry Wang<EMAIL_ADDRESS>

@cloudxxx8 please help review this PR


issue 1226 : Solve the problem of Method not allowed

Original PR:
https://github.com/perwendel/spark/pull/1234


Review and refactor or rewrite the project as needed

Need to ensure it has a good structure for future improvements; refactor or rewrite as necessary.

Probably fine to keep the UI as is for now, the backend is mostly what I think needs improvement.


Use of code

Hello authors of PVN3D,
I was wondering what the terms of usage for your code are, as I can't see a licence on any file in the git repository.
Could you please clarify the licence type? Is it open source/ MIT licensing?
Thank you!

It's MIT licensing.


Make sure Templates folder gets installed during Gem install

Is there any reason why this folder does not get copied currently? I can submit a pull request if this is a desired feature!

Can you clarify when you are picturing this getting copied over? In the current version, it should copy all the files in the templates folder into your host app when you run rails g leather:install - is that not working properly for you?

That is correct!
I Believe the issue is due to the gemspec
 s.files = Dir["{app,config,db,lib}/**/*", "MIT-LICENSE", "Rakefile", "README.rdoc"]
should be
s.files = Dir["{app,config,db,lib,templates}/**/*", "MIT-LICENSE", "Rakefile", "README.rdoc"]
As when I install this (have tried a few times), the only folders that get moved over are app, config, lib, and test

Gotcha - yeah, feel free to submit a PR if you've verified that the change fixes the issue. Thanks! Hopefully this is helpful in your app!

Actually, just to clarify, are you saying you've actually copied the app/config/lib/test directories into your host app? Those should not get copied when you run the install generator, only the files in templates. Everything else should just get served directly from the gem.

I have submitted a pull request to alleviate that issue! I was copying the templates directory as that was not getting copied over or getting served directly from the gem (that PR fixes that problem for me though).

Thank you @dvanderbeek!


Unable to build or install using cargo

Cargo install tinydancer
error: failed to compile `tinydancer v0.0.8`, intermediate artifacts can be found at `/tmp/cargo-installGxBshx`.
To reuse those artifacts with a future compilation, set the environment variable `CARGO_TARGET_DIR` to that path.

Caused by:
  failed to select a version for `tokio`.
      ... required by package `solana-ledger v1.16.0`
      ... which satisfies dependency `solana-ledger = "^1.15.0"` of package `tinydancer v0.0.8`
  versions that meet the requirements `~1.14.1` are: 1.14.1

  all possible versions conflict with previously selected packages.

    previously selected package `tokio v1.37.0`
      ... which satisfies dependency `tokio = "^1.25.0"` of package `tinydancer v0.0.8`

  failed to select a version for `tokio` which could resolve this conflict

Cargo build master
Compiling solana-storage-proto v1.15.0 (https://github.com/tinydancer-io/diet-rpc-validator?branch=master#e7cf3223)
error: unsupported output in build script of `solana-storage-proto v1.15.0 (https://github.com/tinydancer-io/diet-rpc-validator?branch=master#e7cf3223)`: `cargo::rerun-if-changed=proto/confirmed_block.proto`
Found a `cargo::key=value` build directive which is reserved for future use.
Either change the directive to `cargo:key=value` syntax (note the single `:`) or upgrade your version of Rust.
See https://doc.rust-lang.org/cargo/reference/build-scripts.html#outputs-of-the-build-script for more information about build script outputs.

Cargo build v0
Compiling` solana-storage-proto v1.15.0 (https://github.com/tinydancer-io/diet-rpc-validator?branch=master#e7cf3223)
error: unsupported output in build script of `solana-storage-proto v1.15.0 (https://github.com/tinydancer-io/diet-rpc-validator?branch=master#e7cf3223)`: `cargo::rerun-if-changed=proto/confirmed_block.proto`
Found a `cargo::key=value` build directive which is reserved for future use.
Either change the directive to `cargo:key=value` syntax (note the single `:`) or upgrade your version of Rust.
See https://doc.rust-lang.org/cargo/reference/build-scripts.html#outputs-of-the-build-script for more information about build script outputs.

Cargo build v1
error: failed to load manifest for workspace member `/home/user/ore/tinydancer/tinydancer`

Caused by:
  failed to load manifest for dependency `copy`

Caused by:
  failed to read `/home/user/ore/tinydancer/solana-spv-plugin/onchain_programs/programs/copy/Cargo.toml`

Caused by:
  No such file or directory (os error 2)

cargo install --git https://github.com/tinydancer-io/tinydancer tinydancer
Compiling spl-token-2022 v0.5.0
error[E0412]: cannot find type `CloseAccountData` in this scope
   --> /home/user/.cargo/registry/src/index.crates.io-6f17d22bba15001f/spl-token-2022-0.5.0/src/extension/confidential_transfer/instruction.rs:688:18
    |
688 |     proof_data: &CloseAccountData,
    |                  ^^^^^^^^^^^^^^^^ not found in this scope

error[E0412]: cannot find type `WithdrawWithheldTokensData` in this scope
    --> /home/user/.cargo/registry/src/index.crates.io-6f17d22bba15001f/spl-token-2022-0.5.0/src/extension/confidential_transfer/instruction.rs:1086:18
     |
497  | pub struct WithdrawWithheldTokensFromMintData {
     | --------------------------------------------- similarly named struct `WithdrawWithheldTokensFromMintData` defined here
...
1086 |     proof_data: &WithdrawWithheldTokensData,
     |                  ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: a struct with a similar name exists: `WithdrawWithheldTokensFromMintData`

error[E0412]: cannot find type `WithdrawWithheldTokensData` in this scope
    --> /home/user/.cargo/registry/src/index.crates.io-6f17d22bba15001f/spl-token-2022-0.5.0/src/extension/confidential_transfer/instruction.rs:1151:18
     |
497  | pub struct WithdrawWithheldTokensFromMintData {
     | --------------------------------------------- similarly named struct `WithdrawWithheldTokensFromMintData` defined here
...
1151 |     proof_data: &WithdrawWithheldTokensData,
     |                  ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: a struct with a similar name exists: `WithdrawWithheldTokensFromMintData`

........

I see you guys haven't gotten ton these issues lmfao I'm on the same problem I'm going to try and work on it but if not i just need the rpc might just use the regular version

Error E0635: Unknown Feature proc_macro_span_shrink
This error indicates that the feature proc_macro_span_shrink might not be available in your current Rust version. Ensure you're using the latest Rust stable version as this feature might only be available in recent versions.


Remove Window Border/Outline

I'm creating app for windows. Is it possible to remove window black border/outline?

+1

same problem

+1

+1 for osx and windows
I need to create an app that spans multiple monitors and appears full screen. I can set the OSX menu bar to auto hide, set window pos to top left and width and height to span all monitors etc but the only thing remaining is the rounded corners and 1 pixel border. I saw that the old desktop_window package has some unexposed border functions for this that might be useful: https://github.com/mix1009/desktop_window/blob/master/macos/Classes/DesktopWindowPlugin.swift

does setAsFrameless() close this?

can add the following code in main.cpp
LONG lStyle = ::GetWindowLong(window.GetHandle(), GWL_STYLE);  lStyle &= ~(WS_CAPTION | WS_THICKFRAME | WS_MINIMIZEBOX | WS_MAXIMIZEBOX | WS_SYSMENU); ::SetWindowLongPtr(window.GetHandle(), GWL_STYLE, lStyle);

await windowManager.setAsFrameless();

await windowManager.setAsFrameless();

This is correct


AUTH un pw is attempted even on versions prior to 6.0

Cloud hosting providers like Heroku that offer hosted Redis tend to have bogus usernames in their REDIS_URL environment variables. Version 8 assumes that if a username is present in the options, it should issue an AUTH username password command instead of a plain AUTH password, but this breaks when run against versions of Redis prior to 6.0. Instead, I think the library should first determine the version of Redis it's connecting against and issue the appropriate AUTH command. Either that, or attempt to AUTH with the username and fall back to the password-only variant if it fails with the ERR wrong number of arguments for 'auth' command error.
In the mean time, the workaround is to explicitly set the Username to "" after parsing the URLs from these providers:
opt, err := redis.ParseURL(os.Getenv("REDIS_URL"))
opt.Username = ""
c := redis.NewClient(opt)

I can also understand if you chalk this up to just a breaking change from v7.

@Bogdanp we are aware of this issue in Heroku Redis, but it's a bug in how the Redis URL is created on Heroku, I think it should've been fixed by now and new Redis 5 DBs don't have this issue anymore

OK, that makes sense. Thanks!


[docs] Give more examples of importing generics-heavy APIs

Hi, this issue seems about related: I’m currently reading the online tutorial and on the generics page https://eta-lang.org/docs/eta-concepts/java-interop/java-generics the import syntax on the top of the page doesn’t match the example on the bottom. I’d guess that that example needs an update.

Hi @staffehn I'm not quite sure I understand. Can you copy/paste the two parts you're comparing?

Sure. The "Importing Generiv Classes" part presents this syntax:
data List a = List (@java.util.List a)
Whereas in the Example right below the syntax is:
data {-# CLASS "java.util.List" #-} List a = List (Object# (List a)).
As this example is a small example for (part of) a API with generics (and also about the only one in the tutorial right now, as far as I can see), I thought this issue seemed related.

Thanks @staffehn ! We've updated the docs. https://eta-lang.org/docs/eta-concepts/java-interop/java-generics


Doc Update: Apple M1 Setup Instruction

This PR adds a document on how to set up an Apple M1 Mac.
Test Steps:
NA
Changes

Only doc changes

Checklist
Testing

[x] Tested locally?
[x] Ran ./prime test or ./gradlew testSmoke against local Docker ReportStream container?
[ ] Added tests?

Process

[ ] Are there licensing issues with any new dependencies introduced?
[ ] Includes a summary of what a code reviewer should test/verify?
[ ] Updated the release notes?
[ ] Database changes are submitted as a separate PR?
[ ] DevOps team has been notified if PR requires ops support?

Fixes

#issue - List GitHub issues this PR fixes

To Be Done
Create GitHub issues to track the work remaining, if any

#issue

Specific Security-related subjects a reviewer should pay specific attention to

Does this PR introduce new endpoints?

new endpoint A
new endpoint B

Does this PR include changes in authentication and/or authorization of existing endpoints?
Does this change introduce new dependencies that need vetting?
Does this change require changes to our infrastructure?
Does logging contain sensitive data?
Does this PR include or remove any sensitive information itself?

If you answered 'yes' to any of the questions above, conduct a detailed Review that addresses at least:

What are the potential security threats and mitigations? Please list the STRIDE threats and how they are mitigated

Spoofing (faking authenticity)

Threat T, which could be achieved by A, is mitigated by M

Tampering (influence or sabotage the integrity of information, data, or system)
Repudiation (the ability to dispute the origin or originator of an action)
Information disclosure (data made available to entities who should not have it)
Denial of service (make a resource unavailable)
Elevation of Privilege (reduce restrictions that apply or gain privileges one should not have)

Have you ensured logging does not contain sensitive data?
Have you received any additional approvals needed for this change?

@RickHawesUSDS Did you need to add more to this document or is it ready to be merged?
Also, Carlos' comment above suggests this document and the 'Getting Started' doc could be consolidated. (https://github.com/CDCgov/prime-reportstream/blob/master/prime-router/docs/getting-started/faster-development.md)

I reference this doc. I suggest that this doc could be referenced in the amd64.

Closing because of verification problems. Will reopen in a fresh PR.


Adding screenshots in the README.md file

Description

Adding screenshots in README

Links

Issue: Add Screenshots of the demo app

I don't have permission to merge this PR. Could you @gianei / @hofmanntm  merge it for me? Thanks


iOS: Build Error

Maybe add a setup instruction in README for iOS as Podfile should be modified
I had to replace
use_frameworks!
with
use_frameworks! :linkage => :static

It's included in the example, but you are right, will add it to readme too

Done


Investigate the need for running categorize over the database

Problem

Currently, we do the categorization of the images in both the API ingestion server and the catalog.
Description

We should investigate whether the categorization is needed for images in the catalog. If so, we should run categorization over the catalog database, and then leave this step only for the first ingestion. That would mean removing categorize from the ingestion server cleanup step.

Currently, some providers have a single category that should be applied to them:
https://github.com/WordPress/openverse-catalog/blob/3ee97b6cbe45337bec6289bd77b9a57512a82522/openverse_catalog/dags/common/loader/provider_details.py#L122-L143
Note that the Flickr value is inaccurate because Flickr has some other categories, too. And Stocksnap's category is already filled in in the database.
We can run UPDATE queries per provider to back-fill the category value. I tried doing so for the smallest set, thorvaldsensmuseum:
UPDATE image SET category = 'digitized_artwork' WHERE provider='thorvaldsensmuseum';
You're about to run a destructive command.
Do you want to proceed? (y/n): y
Your call!
UPDATE 5356
Time: 4.780s (4 seconds), executed in: 4.780s (4 seconds)

Here is the plan of queries we would need to run to finish the category back-filling queries for all providers with single default categories. Numbers are taken from Openverse sources page.

provider
category
image count
note

"animaldiversity"
photograph
15,554
CommonCrawl source

"brooklynmuseum"
digitized_artwork
63,340
-

"capl"
photograph
15,143
CommonCrawl source

"clevelandmuseum"
digitized_artwork
37,332
-

"deviantart"
digitized_artwork
238,982
CommonCrawl source

"digitaltmuseum"
digitized_artwork
289,769
CommonCrawl source

"floraon"
photograph
55,010
CommonCrawl source

"mccordmuseum"
digitized_artwork
108,815
CommonCrawl source

"met"
digitized_artwork
255,420
-

"museumsvictoria"
digitized_artwork
160,720
-

"phylopic"
illustration
3,967
-

"rijksmuseum"
digitized_artwork
29,999
CommonCrawl source

"sciencemuseum"
photograph
82,277
-

"svgsilh"
illustration
358,942
-

"thorvaldsenmuseum"
digitized_artwork
5,356
CommonCrawl source

"worms"
photograph
19,783
CommonCrawl source

Because the number of the media items that needed to be updated is rather low, I decided to run the updates. Now, all the providers listed in the table above have the correct category in the upstream table.

category
updated images count
providers

digitized_artwork
1 242 237
'brooklynmuseum', 'clevelandmuseum', 'deviantart', 'digitaltmuseum', 'mccordmuseum', 'met', 'museumsvictoria', 'rijksmuseum'

illustration
362 909
'svgsilh', 'phylopic'

photograph
153 736
'animaldiversity', 'capl', 'floraon', 'sciencemuseum', 'worms'

With this, after we can run the data refresh, we can remove the categorize.py module from the API that tries to compute the image category for Elasticsearch models during the ingestion.

This is great, thank you for running those updates @obulat!

I am going to close this issue as completed because the categories have been assigned.


fine-tuned model - not found using ConversationalRetrievalQAChain

Hi Guys,
I've created a fine-tuned model for openai, i can view it under openai playground mode "Complete", however, not available under mode "Chat".
Currently using the following chain from 'langchain/chains' -
ConversationalRetrievalQAChain

PS - can access the model using the following -
openai api completions.create -m <FINE_TUNED_MODEL> -p <YOUR_PROMPT>

Any ideas which chain i should be using to make use of this fine-tuned model?
    const chat = new ChatOpenAI({
        modelName: <MY_FINE_TUNED_MODEL_HERE>,
        openAIApiKey: openAIKey,
    });

I am using vectorStore for the above -
    let chain = ConversationalRetrievalQAChain.fromLLM(
        chat,
        vectorStore.asRetriever(),
        { returnSourceDocuments: true }
    );

Thanks for following up. Not relevant anymore.


Update README with  CATALYST and imcRtools

Hi there,
I hope you are doing well!
As we recently had users that were quite desperate to run this code for doing actual compensation (issue #5  ), I think it would be fair to state clearly that nowadays CATALYST respectively imcRtools should be used directly and save everybody time.
Would you agree?
Cheers, Vito

Thanks @markrobinsonuzh! I'd still like to add the link to the workflow so that users can see how to use the new script.

Hi team,
Thanks for approving @markrobinsonuzh  and thanks for adding the better links  to the imcRtools workflow.
Cheers!


Example script gives error

I installed gdrivefs using pip. When I run your example script (in example_w_xarray_zarr.ipynb):
import gdrivefs
# use this the first time you run
token = 'browser'
# use this on subsequent attempts
#token = 'cache'

# shareable link to folder generated with
# https://drive.google.com/open?id=1FQzXM2E28WF6fV7vy1K7HdxNV-w6z_Wx
root_file_id = '1FQzXM2E28WF6fV7vy1K7HdxNV-w6z_Wx'

gdfs = gdrivefs.GoogleDriveFileSystem(token=token, root_file_id=root_file_id)
gdfs

I get the following error:
AttributeError: module 'gdrivefs' has no attribute 'GoogleDriveFileSystem'

It is right here in the package init. Perhaps you have another file called "gdrivefs.py" or "gdrivefs/" on your path that python is picking up?

I installed with pip, not from source. And nope, no issues with path.
The init.py  that's downloaded with pip only has one line
version = '0.14.13'

I see. So it seems there is a name conflict: this gdrivefs has never been released on PyPI (or elsewhere), you can only install it directly
pip install git+https://github.com/fsspec/gdrivefs

or by cloning the repo by hand. I suppose in your case you would need to uninstall the other gdrivefs, which is something else, a CLI and FUSE layer.
I was not at all aware of the other project, we could probably merge the code here into theirs, especially since they appear to have solved the auth situation in a robust way.
cc @dsoprea

Ah, didn't spot that. OK this explains it. Thanks for your help.


Add coverage to more functions in compose.js

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

I think Travis just flaked here on provisioning.  Tests/lint work fine for me.
I'm about to merge the first three as-is and the fourth with some minor cleanup.

yeah travis thing was fixed in later commit this morning.

Merged! Thanks @adnrs96!


Research how to decode multiple contracts events

Research what needs to be done to decode events of smart contracts in the frontend with a particular focus on cases when multiple events of different smart contracts should be decoded.
The current possible sections are:

Contract events page
Token events
Account activities

Collect some ACIs for non-standard contracts
Collect some events
Check with SDK if it's possible to decode events, especially with tables with events coming from different smart contracts

Example contract:
https://github.com/aeternity/ga-multisig-contract/tree/4d6fd1355bbfb9e8dd09c96f23d7176e45e8a4ae/contracts

It is possible to decode any contract transaction or event referring to the root transaction by transactionId and ACI.
Currently, it's not possible to decode event from the middleware without the the transaction because it doesn't provide the complete event data, which is address, data (in bytecode format), and topics. The contract address is known, but the data and full topics are missing.
Example of required event data:

Example of event representation from the mdw:

I suppose it shouldn't be very tricky to add the original raw node event data to the partially decoded entity

If the HTTP compiler is needed I see an issue here, the plan is to shut it down.

I did a quick test and it seems to be not necessary for the decoding.

@lukeromanowicz could you open an issue on mdw?

Created: https://github.com/aeternity/ae_mdw/issues/1532
Closing this task as discussed during the daily


fix: wrong name for corrupt button group item

The error message for invalid Button group items referenced the wrong dataset, resulting in spitting out Error Messages regarding Items, that aren't relevant to the issue itself.

Good catch! Completely overlooked it. This change has been added to the Development branch manually since there are merge conflicts.


ENS.js package size is too heavy?

I've integrated ENS.js on a frontend, i've noticed that it take a size of 1.28mb (363kb gzipped) in my app bundle which is relatively heavy. The issue seem that Ethers.js is loaded twice on the pkg, once from @0xproject/utils and another with ethers.js directly. Anyone have the same issue? You can see the details of the pkgs size within our app here: https://snapshot.org/modern-report.html

@makoto Would you mind taking a look?

Thanks it's much lighter now!


coprocessor: fix Duration::parse while input is empty

Signed-off-by: Lonng<EMAIL_ADDRESS>
What have you changed? (mandatory)
There is different behavior in TiDB and Coprocessor when Duration::parse input string is empty.
What are the type of the changes? (mandatory)
The currently defined types are listed below, please pick one of the types for this PR by removing the others:

Bug fix (change which fixes an issue)

How has this PR been tested? (mandatory)
Unit tests

/run-all-tests


⚠ otzivi-tut has degraded performance

In fbd22f4, otzivi-tut (https://отзывы-тут.рф/) experienced degraded performance:

HTTP code: 200
Response time: 21887 ms

Resolved: otzivi-tut performance has improved in 7425b81.


Add: static pages

Issue Number
fixes #48

Describe the changes you've made
Created  DocsLayout & document folders
Now we can convert md file to jsx.

Describe if there is any unusual behavior (Any Warning) of your code(Write NA if there isn't)
Due to eslint there are some error occured due to which some changes were made in unretated file.

Checklist

[x] My code follows the code style of this project.
[ ] My change requires a change to the documentation.
[ ] I have updated the documentation accordingly.
[x] All new and existing tests passed.
[x] The title of my pull request is a short description of the requested changes.

Could you please share screenshots of your output? It is very hard to make intuition based on your code

Hi @KeenWarrior, @Abhishek-kumar09  can you please review.


Request: Use the taskbar itself to show battery percentage

Is your feature request related to a problem? Please describe.
I'm almost done removing tray icons from my taskbar. I figured out a keyboard shortcut for the time (Win + Alt + D), I removed the action center icon altogether, and the only tray icon left on my taskbar is the battery one - I always need to know how much battery my laptop has.
Describe the solution you'd like
What if part of the taskbar was a different color?
 (this was the first time I used GIMP)
As you can see, part of the taskbar is tinted red while the rest is the original color. The red part shows that there's about 55% battery in the screenshot.
It would be even better if the color could change depending on how much battery was there. And even better still if we could choose those colors.

To be able to focus on major/current bugs I had to close all issues. The issues section has gotten very messy to a point that I couldn't follow it anymore. Most issues are duplicates, very old or are already fixed/solved. Feel free to reopen this issue if you still have this issue on the latest version of TaskbarX to get my attention. All feature requests have been put in a list here: 💡| Feature requests #870
I hope you understand ❤


Error

2024/11/08 05:42:14 printIR.go:107: 3 Validation errors:
2024/11/08 05:42:14 printIR.go:113: ERROR: cannot have CNAME and MX record with same name: test.is-truly-a.pro
2024/11/08 05:42:14 printIR.go:113: ERROR: cannot have CNAME and MX record with same name: test.is-truly-a.pro
2024/11/08 05:42:14 printIR.go:113: ERROR: cannot have CNAME and TXT record with same name: test.is-truly-a.pro
exiting due to validation errors

I know that having both CNAME ,MX and TXT records on the same hostname is against DNS standards and can cause compatibility issues, but some DNS providers like Cloudflare allow it, which means it might work in certain cases.
For eg http://test2.is-truly-a.pro/ has cname with MX which u can check at digger.tools

@LightHostingFree  look please


Add a script for getting stats about a reindex

Closes https://github.com/wellcomecollection/platform/issues/4959
This shows you how far along a reindex is in terms of Elasticsearch documents. It shows us if the pipeline is leaky:

Just checking my understanding here, we expect there to always be as many source docs as indexed docs (but with different states)?

Yup.

Just checking my understanding here, we expect there to always be as many source docs as indexed docs (but with different states)?

Yup.


[dependencies] Allow use with Wagtail 5.x

I just did a quick test on the project I'm currently working on, and it seems that nothing prevents wagtail-footnotes from doing its job on a Wagtail 5.0 instance, so this should be rather safe to merge? :slightly_smiling_face:
Whether it's in the Wagtail Admin or the frontend, everything seems to be working correctly.
(I would attach screenshots if I could, but it seems to be disabled on this GitHub repo?)

Note that we already have https://github.com/torchbox/wagtail-footnotes/pull/49 doing the same thing; but that other PR is much bigger (41 files changed), as it has a much wider scope - so merging it will likely take some time as it involves some chat to happen before an agreement is made with everything it covers.
On the other hand, this PR is on the contrary very minimalist, only relaxing the constraint as for the version of Wagtail that can be used, so the goal would just be to be able to use the wagtail-footnotes package with Wagtail 5.x setups in the short term :slightly_smiling_face:

@olivierphi we'll get #49 tidied up and merged today. Will cut a release.
Thank you for this, nonetheless


react-template: update to React 18

React 18 has been released for around a month now (blog post), and its about time that we upgrade to it. The React team has promised that the upgrade should be fairly easy and smooth (outlined this blog post).
However, we should not just blindly bump the version numbers and follow the upgrade guide - we use a number of libraries and have utilities setup for them that might no longer be ideal. This requires some additional research and testing:
state management
For state management we are using mobx, and according to https://github.com/mobxjs/mobx/issues/2526, it does not seem like mobx has or will have proper concurrent feature support. The issue boggles down to the maintainers suggesting to structure your app in such a way that the observable mobx store is separated from your React components, and all state is still managed by useState. In my eyes this makes things more complicated, and might only makes sense for large scale applications where we can control the architecture and be more strict with it. For most projects, we need something simple and easy to use.
I think we need to investigate other state management solutions, as a there is a lot to choose from now, and some of those solutions like zustand, do support concurrent features.
strict mode
StrictMode has become even more strict. I think we should disable it by default, but provide an easy way to enable it, so developers know that its is an option and something that they should test.
something else?
...

state management ... as a there is a lot to choose from now

That's opening a can of worms :D
Mostly if we should go (back) to something redux-like (what zustand is), and has both benefits and could be considered a bit more complex, versus something like mobx, which although potentially simpler, also has downsides.
https://recoiljs.org/ is also still a candidate, but not 1.0, so maybe not good enough to be using in production. It does support React 18 with concurrent though :) And seems to be somewhat in between the two above-mentioned options.
Do we consider this decision a blocker for updating to React 18, or would we consider upgrading but know that concurrent will not work nicely (or at all) until we switch state management later?

StrictMode has become even more strict. I think we should disable it by default

I'm wondering what the motivation behind that suggestion is?
Too noisy in the console? Too much work to address reported issues? Too much false positives?

StrictMode has become even more strict. I think we should disable it by default

I'm wondering what the motivation behind that suggestion is? Too noisy in the console? Too much work to address reported issues? Too much false positives?

React 18 has new features, but the developer does not have to learn and start using them right away, however because StrictMode got stricter, developers will have to adapt to its additional strictness.
The additional strictness boggles down to effects, and their cleanups running multiple times - this is for good reason, to force you to write your component state in a manner that is resilient between re-renders. However, if you are not used to writing your component state this way, then it might be a shock. As if for example you were doing an API call from your effect, and don't cache the promise (plain fetch) and/or don't use AbortController, you would fire of 2 requests.
So we can either:
A) disable it, avoid developer headaches and let them be free, but have less optimized apps by default.
B) enable it and force developers to learn how to write state that is reusable.
I am initially leaning towards A), as understanding what exactly StrictMode does is an important prerequisite for B) to work. As this is not as simple as following the "rules of hooks" or having an eslint rule that helps, you really do have to examine your effects thoroughly.
B) can be possible, if we make sure that the template covers:

a lot of the more major and complex uses of useEffect, such as data fetching.
add some base documentation next to the StrictMode wrapper, so developers know what it is doing and where to look for help in figuring out how to write reusable state.

Okay clear! I agree that we should go forward with A) now, and start working on B) to enable it down the road.

Is there a resolution to the state management discussion yet or are we blocked until that is resolved?
My two cents: I'd vote for Redux with toolkit. I personally prefer zustand but you can't argue with Redux's prevalence and support. Using a widley-known library like redux means easier onboarding of new devs, and solid legacy support for platforms. As our React skeleton is largely used for platforms, we need to think what will the state management space be like in 5+ years. And in 5+ years I hope zustand will still be around, but I know Redux will be.
MobX is too OOP-y. The syntax is clunky and outdated, for me, and the fact they haven't updated for concurrent mode after it's been around for years is not a great sign.

I think an external state management package could be a project specific problem to figure out. The React State and Context APIs are probably the best tools to use in a skeleton. Any state management package that we're going to add is an abstraction for those APIs anyway.

I think an external state management package could be a project specific problem to figure out.

I would agree with that, but only for the react-base template. The main react one should be opinionated with the tools that we know work best for building great apps of any scale, this is why for example it contains storybook. Moreover, state management, depending on the library, can become quite boilerplate prone, so putting it on the developer to figure out, means that for each project, they might have redo (copy over) the same setup.

I don't think we need a state management library for every project, it can be something that a specific project needs (Can't really go into details here 😉) . I think the React State/Context APIs will be fine for 95% of the projects that we do.


LabelOverlapMeasures produces csv file with garbled label id

There is a bug in generating label names in https://github.com/stnava/ANTs/blob/master/Examples/LabelOverlapMeasures.cxx#L91
the contents of  convert is reused to generate label titles 1, second 12, third 123 etc

https://github.com/stnava/ANTs/commit/fd89a011b2394af4dc7035e0e9e552cf6612f956


What is the 1.x -> 2.x breaking change?

I see a major version change from 1.x -> 2.x. Assuming this repo follows semver semantics, what breaking change was introduced?
Thanks for your time on this project.

Nothing broke with 2.0.0. I just introduced support for ES6 Maps and Sets.
I intend to never break the API of this library.

Thanks. When following semver, major is reserved for api incompatible changes. 👍


bug: Unbound variable error with NO_COLOR

Describe the bug
This was introduced with the last merge; our bash scripts are coded to abort on an unbound variable, and we are checking to see if NO_COLOR is bound in order to turn colors off or on with fart/lolcat.
The work-around is to just set NO_COLOR in your environment in the short term. Long term it will be addressed.
To Reproduce
Steps to reproduce the behavior:

Do not have NO_COLOR set in your environment.
Try and deploy via one of the start scripts.

Expected behavior
Color use by fart/lolcat to be dictated by setting of NO_COLOR variable.
Your environment

n/a

Additional context
n/a

Closed by #108


Finished React challenges. How to use JSX outside of CodePen?

This is a wonderful tutorial - clear, focused and I am sure very useful when I get started tomorrow. Obviously a lot of thought went into this, for topics covered, sequence of challenges ,and the explanations.
Two final questions:  (1) Away from the CodePen environment, do I need a ReactDOM.render() function to actually draw something, or does JSX take care of that? (Probably JSX, but I thought I'ld ask.)  (2)  I will go with JSX after being enlightened here. What is the best way of using Babel in my local environment (where I do all my coding)? Is there a CDN, or a downloadable executable which I have to reference or import into the browser? Are there two files involved (like SCSS)? What option do you recommend for creating the React challenges in FCC? (You might mention this somewhere in the tutorial.)
Thanks again for this brilliant tutorial.

So the final challenge in this series (React-Redux 10) makes some suggestions about moving forward and working with React in a different environment. You do have to have react, react-dom, and babel all available but how this is done will vary depending on your setup. In Codepen babel can be enabled as a pre-processor and the react libraries included as dependencies. That's a pretty easy way to get started. Create React App which is the advice in given in this tutorial is also a very good way.


Doesn't skip intended slide content

Pptxindex does not attempt to index the content of slides bearing the words "Course Roadmap" anywhere on the slide bullets or slide title.  This is currently broken, parsing these pages as index-appropriate.

The issue is related to double-parsing of slide content (not notes) using the python-pptx module, and the custom XML parser implemented by pptxindex.
I'm dropping the python-pptx module, and sticking to pure XML parsing instead.


Add qdcae

This adds the library qd-cae-python. This generally is a python library, but because of its C++ backend it can be used as a C++ library.

Thanks!

Thanks!


Support for character-based models

Hi team,
More of a question rather than an issue. I saw the discussion from #438 that there was going to be support for custom tokenizer/dictionary, so wanted to check if this is a thing already, and how to go about achieving this? Is there a flag that we can specify from fairseq-preprocess perhaps? Thanks.

We still mostly expect tokenization to be handled outside of fairseq, but character tokenization should be fine. Just split your input into characters (with spaces between them) and use the standard fairseq-preprocess process.


Add support for Microsoft Azure Linux to Facter 4.x

Add support for Microsoft Azure Linux, previously known as CBL-Mariner, Microsoft's Linux distribution for cloud infrastructure and edge products and services.
Before:
# facter os
{
  architecture => "x86_64",
  family => "Linux",
  hardware => "x86_64",
  name => "Linux",
  release => {
    full => "<IP_ADDRESS>-2.azl3",
    major => "6",
    minor => "6"
  },
  selinux => {
    enabled => false
  }
}

After:
# facter os
{
  architecture => "x86_64",
  family => "Redhat",
  hardware => "x86_64",
  name => "AzureLinux",
  release => {
    full => "3.0.20240401",
    major => "3",
    minor => "0"
  },
  selinux => {
    enabled => false
  }
}

Can one of the admins verify this patch?

This looks good to me other than the hierarchy in lib/facter/config.rb and the minor conflict in lib/facter/framework/core/file_loader.rb. Today is feature complete for our next release of Puppet (during which we will also be including a new release of Facter), so I've created a new PR with your work and those minor changes: https://github.com/puppetlabs/facter/pull/2738


Suggestion Backlog Slog Log

We'll be meeting weekly to get through the large number of suggestion-tagged issues that have sat idle for too long. I'll be posting notes here.

4/27/2015
Approved, Accepting PRs
#6 Abstract classes: Approved. Extremely highly-requested. See design notes in my comment at the bottom
#669 External modules with AMD always requires "exports" even when it is not used: Approved. Minor codegen improvement.
#1003 Singleton types under the form of string literal types: Approved. Everyone gets excited when we talk about this one.
#1007 Support user-defined type guard functions: Approved. Meaningfully improves type guards.
#1283 type guards by constructor signature: Approved. Meaningfully improves type guards.
#1295 Type Property type: Approved. Common pattern in JS libraries.
#1544 No output with --out when using import statement: Approved. Catches a common source of user confusion
#1554 typeof this.xxx gives "identifier expected" error: Approved. Patches an oversight in the grammar
#1616 Type aliases requiring type parameters: Approved. Anders believes this will be quite difficult to implement.
#1706 Union Type inference not working in class: Approved, tentatively. Type guards on dotted expressions.
#1789 Make tsc runnable on Nashorn: Approved. Straightforward addition to our I/O wrapper to gain platform support.
Committed
#247 Support looking for modules under node_modules when importing: Commited, assigned to Vlad as part of some other work he's doing
Converted to bug
#282 Rename function / find all references doesn't affect inline object literals
PR desired, but not Approved
#1213 Allow classes to be parametric in other parametric classes: Need to see an implementation here to try it out in more depth
Needs More Info
#943 Use different relation when checking overload vs implementation signature compatibility: Need a concrete proposal here
#1260 Consider property access a form of type guards: Too many open questions at this point
#1790 Support super.apply from child constructor: Does the spread operator suffice here?
#1809 The object primitive type: Needs more use cases / likely errors
Declined
#293 Specify (absolute) path for library projects: Out of scope. Revisit post-2.0 and see if the third-party build ecosystem has landed on anything.
#311 Traits: Too much overlap with a potential future ECMAScript feature
#983 Global type references: Not enough use cases

Nice :) thanks for the notes !

wow, great!

5/4/2015
Approved, Accepting PRs (4)
#2214 Allow switch type guards. Useful expansion of type guard syntax
#1940 Do we need to use "declare" for type aliased in d.ts files? ‘declare’ should be optional on type aliases (and interfaces), but is a no-op.
#2694 Define assignability relation for primitive-constrained type parameters. For flowing through enum types in generics.
#2369 Spread operator in 'new' expressions support for ES5? User-side workaround is really ugly.
Declined (7)
#1824 Rest binding element should contextually type initializer as a tuple. Too much complexity for not enough gain. Matches existing behavior for not inferring tuples when none exist
#1844 Add downlevel and typing support for const enum members in computed properties. Not needed until we have string enums; re-visit if we get those.
#1857 Make the Compiler and Language Service API Asynchronous. Too complex for not a lot of gain since we are not really I/O bound
#2000 Support override keyword on class methods. Doesn’t provide a consistent experience (methods not marked override would not necessarily not be overrides, which would be too confusing). Not going to add a compiler flag for this. Maybe could solve with an attribute?
#2172 Contextual typing of spread elements. Why spread literals in the first place? Low-priority.
#2328 Generic type constraint does not apply to rest parameters. Does not actually make sense – the array type does not actually flow in to ‘args’ here
#2357 Proposal: new ES6 style syntax to apply typeof on an ambient external module. Not enough gain for a fair bit of complexity
Needs More Info (2)
#2361 Allow wrapped values to be used in place of primitives. Ask for explicit proposal.
#2176 Suggestion: errors based on control flow analysis. What is this asking for, precisely? Lump in with issue 228 maybe

5/19/2015
Approved, Accepting PRs (2)
#2341 Allow visibility on constructors - Accepted. No other good workarounds for forcing external consumers of your class to use a factory method
#3079 tsc init to generate tsconfig.json - Very useful
Committed / In Progress (1)
#2499 Support single-module transpilation mode - Already in progress.
Needs More Info (4)
#1882 Make periodic pre-release builds available on npm - Assign to Jonathan to figure out what we should do here
#2568 Generate a single declaration file for external modules - Needs clarification on what this work item represents
#2709 Importing files other than TS modules - Needs clarification on whether a proposal in-thread covers the use cases being requested
#2749 Typescript aborts on shebang - Do people intend to run the .ts file, or the .js file? This is somewhat confusing
Postponed (1)
#2176 Suggestion: errors based on control flow analysis - Very desired feature, but the scope and complexity of this are too large to fit before 2.0. Postpone and definitely revisit
Declined (4)
#1824 Rest binding element should contextually type initializer as a tuple - Didn't really see a compelling reason to do this
#2714 Tuple suffix associated with rest element in a binding pattern - the current behavior is the intended behavior
#3022 Embedded syntax block - Far too complex
#2876 Contextual type assertion operator - Unclear that most people can actually reason about this correctly