Add emoji from Unicode 7, 8, 9, 10, 11, 12, and 13

Chat thread:
https://chat.zulip.org/#narrow/stream/2-general/topic/emoji.20version.3F/near/1200650
Our emoji list dates to Unicode 6, so it's missing a number of years' worth of new emoji. Among them are :tooth: and :exploding_head:. We should add newer emoji.
We should generally do this without trying to make up our own names for the emoji. The task of doing that adds a lot of stop energy to updating the list; and where we have, the results have often been unhelpful anyway. (See also #18121 for a proposal to switch to the names from the Unicode CLDR. But no need to block on that before updating the list.)

I think @akshatdalton is working on this; correct me if I'm wrong.

No, I am working on fixing the unicode emoji with the ZWJ sequence (https://github.com/zulip/zulip/issues/11767).

Thanks @akshatdalton!
This issue and #11767 make sense for the same person to work on both of, because they're both about our emoji subsystem. But I want to mention explicitly here that they're independent tasks -- neither one should block on the other.
For example, :tooth: and :exploding_head: which I mention above aren't affected by #11767 because they aren't (nontrivial) emoji sequences; they're each a single codepoint. And on the other hand, fixing #11767 will be good even without adding new emoji data. More details in chat.

Is there any way to add an option for macOS and iOS emojis?

Is there any way to add an option for macOS and iOS emojis?

@sanfords Please file a separate issue for this request, or ask in chat. This thread is for discussion of the issue described at the top.

The status of this is that the main obstacle is resolving what to do with emoji that the Google Classic emojiset (the one with people drawn as blobs) doesn't support. See https://github.com/zulip/zulip/pull/19637#issuecomment-912871140 and https://github.com/zulip/zulip/issues/19398 .
I think the logical possibilities here are basically:

We never end up adding support for emoji that were created in the years since the Google Classic emojiset stopped being maintained. In other words, we never fix the issue this thread is about.
This is the choice we've implicitly made so far. I think for us to stick with this would be a very bad choice.

We drop support for the unmaintained Google Classic emojiset.
This seems like a pretty reasonable answer to me. But some community members strongly prefer that emojiset, and in previous discussions we've been reluctant to drop it.

We implement some kind of fallback, where when a user has chosen the Google Classic emojiset and we show them an emoji that it doesn't support, we do something else: probably show them a glyph from a different emojiset.
I think this is likely to be the solution that works for us.

The solution of falling back to a different emojiset is going to inevitably look somewhat odd, because the emoji for different faces will be in different styles (unless we go so far as to, say, commission a designer to make glyphs in the style of Google Classic for the hundreds of new emoji.)
But the oddity will only be for people with the Google Classic emojiset. We changed the default in #19672, so among new users this will only mean people who've explicitly chosen that emojiset. Effectively we'd be saying that if the best version of Google Classic we can offer, even though it has mismatches of style, is still something you'd prefer over the other emojisets, then here it is.
I think the most unfortunate aspect of that solution is then what happens for all our existing users (those who had an account before #19672 a few months ago, or before their server admins later upgrade to 5.0 with that change), when they haven't tried to express an opinion on what emojiset they get and have instead seen it as our job to show them emoji in a reasonable way. I believe that all those users are currently still on Google Classic.
One good solution might be to have a migration to move existing users who are on the old default of Google Classic over to Google Modern instead. Users who strongly prefer Google Classic could still switch back to it, and get the hybrid set of glyphs.
I think that migration also doesn't have to happen prior to shipping the hybrid-emojiset solution, if we do that. For example, we could implement a hybrid emojiset; ship that in a 5.x point release; but then hold back the migration for 6.0, so that it can be communicated to users as refreshing the emoji glyphs for the new version of Zulip.


Suppor for authentication

AWS has launched a new feature to authenticate with cognito, it will be supported here ?

@hendrixroa Any reason you closed this issue? This feature seems to be still missing in tf_aws_elasticsearch.

Yes, it is. Aws Elasticsearch support cognito.

I have the same question - How can I configure the cognito setting with this module?


Implement restricting Zenoh sessions and router to a specific network interface

This is important for certain use cases, like sensors which use ethernet.  In that case, the user has to be sure to not run Zenoh on those specific interfaces.

@JEnoch Is this something you can work on? Chris said you might be the right assignee 🧇

Follow up #192 with some comments/notes on configuring other network interfaces.

@JEnoch Is this something you can work on? Chris said you might be the right assignee 🧇

Sure, will do!


WIP: fast WASM execution engine

We're going to use wasmtime-hs to optimize the WASM execution engine.


ng serve blocked when adding md-spinner

I'm following the guide and when I add md-spinner, ng serve not load !
Without md-spinner :
$ ng serve
Livereload server on http://localhost:49152
Serving on http://localhost:4200/

Build successful - 3454ms.

Slowest Trees                                 | Total
----------------------------------------------+---------------------
AppShellPlugin                                | 1502ms
BroccoliTypeScriptCompiler                    | 1286ms
vendor                                        | 533ms

Slowest Trees (cumulative)                    | Total (avg)
----------------------------------------------+---------------------
AppShellPlugin (1)                            | 1502ms
BroccoliTypeScriptCompiler (1)                | 1286ms
vendor (1)                                    | 533ms

With md-spinner :
$ ng serve
Livereload server on http://localhost:49152
Serving on http://localhost:4200/

Seeing the same thing. I tried using md-progress-circle instead which loaded the application just fine, but it doesn't seem to render the spinner

Could be an issue with material2, md-progress-bar works just fine as of the current build


Feature: SASL Auth (PLAIN and SCRAM)

Description:
This PR adds support for SASL Auth, both PLAIN and SCRAM.
Tests:
~I bumped into this issue while testing the current implementation, which might be a configuration issue on Kafka/Zookeeper. Till then, it needs more testing.~
I was able to test this feature after some fixes and a proper test environment. I added a test_sasl_auth.js file that shows how to configure reader and writer for SASL authentication. Refer to https://github.com/mostafa/xk6-kafka/issues/2#issuecomment-851002005.
Issue:
https://github.com/mostafa/xk6-kafka/issues/2

Hello,
I am interested in this feature, is there anything I could help with ?

I'll clean and merge this PR tomorrow if nobody objects.


UnhandledPromiseRejectionWarning: TypeError [ERR_INVALID_CHAR]: Invalid character in header content ["Last-Modified"]

https://github.com/vladmandic/build/blob/c04284746e6ac7eaa84861e22029f5161b8a229b/src/serve.ts#L119
Adding .toUTCString() worked for me

strange as date object should be treated as number and auto-cast to string to start with
but yes, explicit cast is a good practice - thanks for chasing this down!
new version is published


twitch problem

When i try to watch livestream on twitch using puppeteer i got error #4000, sometimes error #1000 is there any way to fix that?
my simple code for this
async function main(){
const browser = await pup.launch({ headless: false})
const page = await browser.newPage()
await page.goto('https://www.twitch.tv/anomaly')
}
main()

Same here. Is there any chrome flags or headers that puppeteer is injecting that might trigger this? I can confirm that twitch works from a manually launched Chromium.

Hi, I was struggling with the same thing, so I develop the following code. It pretty much does everything you'd want.

Injects the auth cookie
Accepts the mature content
Unmute the stream
Turn the video quality to the lowest, for purpuses of cpu.

I had to use this for a Headless Linux Machine, my personal Ubuntu Server. But it works for Windows too, I tried myself.
My code actually has more tweeks, but I think this should help you out.
Read the code and feel free to discuss here.
Have a good one, mate!
const fs = require('fs')
const puppeteer = require('puppeteer')

const main = async () => {
    const authToken = ""

   const browser = await puppeteer.launch({
        headless: true,
        executablePath: 'C:/Program Files (x86)/Google/Chrome/Application/chrome.exe' // Windows
        // executablePath: '/usr/bin/google-chrome-stable' // Linux
    });
    const cookies = [{
        'name': 'auth-token',
        'value': authToken
    }]

    const page = await browser.newPage();
    await page.goto('https://twitch.tv/gaules')
    await page.evaluate(() => {
        localStorage.setItem('mature', 'true')
        localStorage.setItem('video-muted', '{"default":false}')
        localStorage.setItem('volume', '0.5')
        localStorage.setItem('video-quality', '{"default":"160p30"}')
    })
    await page.setViewport({ width: 1280, height: 720 });

    await page.setCookie(...cookies);

    await page.reload({
        waitUntil: ["networkidle2", "domcontentloaded"]
    })
}

Where can I find my auth token?

Hi @fattredd
I finished my Twitch application and I think I can help you with some reading. For information regarding their API I recommend reading the official documentation. Remember that for testing you can always get your token from browser cookies.
Other than that, you should use Tmi.js to develop your application other than Puppeteer, which isn't the best way to work around this problem. Tmi.js doesn't launch a browser and is really light weight even when you have to work with many accounts. It just launches socket connections using an event pattern.
If you need anything else just talk to me and I'll be glad to help you.

Hi @fattredd
I finished my Twitch application and I think I can help you with some reading. For information regarding their API I recommend reading the official documentation. Remember that for testing you can always get your token from browser cookies.
Other than that, you should use Tmi.js to develop your application other than Puppeteer, which isn't the best way to work around this problem. Tmi.js doesn't launch a browser and is really light weight even when you have to work with many accounts. It just launches socket connections using an event pattern.
If you need anything else just talk to me and I'll be glad to help you.

Yo, You're 18? Talent, definitely above average

Why it happens?
Chromium, used by Puppeteer, does not have de capability of streaming video.
How I solved?
I was struggling with the same thing, so I develop the following code. For this solution, you have to use Google Chrome. It pretty much does everything you'd want.

Injects the auth cookie
Accepts the mature content
Unmute the stream
Turn the video quality to the lowest, for purpuses of cpu.

I had to use this for a Headless Linux Machine, my personal Ubuntu Server. But it works for Windows too, I tried myself.
My code actually has more tweeks, but I think this should help you out.
Read the code and feel free to discuss here.
const fs = require('fs')
const puppeteer = require('puppeteer')

const main = async () => {
    const authToken = ""

   const browser = await puppeteer.launch({
        headless: true,
        executablePath: 'C:/Program Files (x86)/Google/Chrome/Application/chrome.exe' // Windows
        // executablePath: '/usr/bin/google-chrome-stable' // Linux
    });
    const cookies = [{
        'name': 'auth-token',
        'value': authToken
    }]

    const page = await browser.newPage()
    await page.goto('https://twitch.tv/gaules')
    await page.evaluate(() => {
        localStorage.setItem('mature', 'true')
        localStorage.setItem('video-muted', '{"default":false}')
        localStorage.setItem('volume', '0.5')
        localStorage.setItem('video-quality', '{"default":"160p30"}')
    })

    await page.setViewport({ width: 1280, height: 720 })
    await page.setCookie(...cookies)
    await page.reload({
        waitUntil: ["networkidle2", "domcontentloaded"]
    })
}

How did you know some propaty ?
mature video-muted volume video-quality


Feat/partials improve

Changes Unknown when pulling d0e08a2b4e120baf08b99094e1042b314624fbcd on feat/partials-improve into ** on master**.


Add ManticoresearchAdapter

Manticoresearch is a Sphinx Fork providing PHP implementation over https://github.com/manticoresoftware/manticoresearch-php. As requested by some on reddit we are trying to support also this.
TODO

[x] SchemaManagerTest
[ ] AdapterTest

[x] Create and Drop Indexes
[x] Create and Drop Schemas
[x] Write Document
[ ] Read Document by id/uuid (currently stuck on using uuids)

[ ] ConnectionTest

[ ] testSaveDeleteIdentifierCondition
[ ] testFindMultipleIndexes Skipped TODO issue
[ ] testSearchCondition
[ ] testNoneSearchableFields
[ ] testLimitAndOffset
[ ] testEqualCondition
[ ] testMultiEqualCondition
[ ] testNotEqualCondition
[ ] testGreaterThanCondition
[ ] testGreaterThanEqualCondition
[ ] testLessThanCondition
[ ] testLessThanEqualCondition
[ ] testSortByAsc
[ ] testSortByDesc

External

https://github.com/manticoresoftware/manticoresearch/discussions/1047

currently stuck on create valid schema for complex document

Hi. I'm a member of Manticore team. Please let me know if we can help with this.

@sanikolaev your help is really welcome here. First would be nice if you could help how to map a SEAL Schema to Manticore Search schema.
The abstraction is supporting the following kind of fields for single representation I currently did use the following mapping, I think that should be write datetime / timestamps seems to be representated in manticore as Number that kind of mechanism to convert "2023-..." I already had implemented for Solr and can reuse here. So a very basic mapping should look like this:

SEAL Field Type
Manticore Field Type
Example in JSON

BooleanField
bool
{ "field": false }

IntegerField
int
{ "field": 1 }

FloatField
float
{ "field": 1.5 }

DateTimeField
timestamp
{ "field":<PHONE_NUMBER> }

TextField
text
{ "field": "Text" }

But now the more difficult part, every Field can be multiple, I'm not yet sure how I can map something else then a Integer field to an array as based on https://manual.manticoresearch.com/Creating_a_table/Data_types#Multi-value-integer-(MVA) the multi currently only works for integers not other types of values. How to store other type of data then which represented in an array?

SEAL Schema Type
Manticore Field Type
Example in JSON

multi BooleanField
???
{ "field": [false, true] }

multi IntegerField
multi
{ "field": [1, 3] }

multi FloatField
???
{ "field": [1.5, 2.5] }

multi DateTimeField
???
{ "field": [1684265085,<PHONE_NUMBER>] }

multi TextField
???
{ "field": ["Text 1", "Text"] }

The TextField has special flag called searchable which can be true or false, I currently did based on that add ['indexed'] or not think that should work but as the above is currently blocking I was not able yet to test it: https://manual.manticoresearch.com/Creating_a_table/Data_types#Character-data-types:

SEAL Schema Type
Manticore Field Type
Example in JSON

TextField searchable
text ['indexed']
{ "field": "Text 1", "Text" }

multi TextField searchable
???  ['indexed']
{ "field": ["Text 1", "Text"] }

All kind of fields can be filtearable and sortable based on the documentation such fields required to be marked as attribute: https://manual.manticoresearch.com/Creating_a_table/Data_types#Character-data-types:

SEAL Schema Type
Manticore Field Type
Example in JSON

BooleanField
bool ['attribute']
{ "field": false }

IntegerField
int ['attribute']
{ "field": 1 }

FloatField
float ['attribute']
{ "field": 1.5 }

DateTimeField
timestamp ['attribute']
{ "field":<PHONE_NUMBER> }

TextField
text ['attribute']
{ "field": "Text" }

multi BooleanField
??? ['attribute']
{ "field": [false, true] }

multi IntegerField
multi ['attribute']
{ "field": [1, 3] }

multi FloatField
??? ['attribute']
{ "field": [1.5, 2.5] }

multi DateTimeField
??? ['attribute']
{ "field": [1684265085,<PHONE_NUMBER>] }

multi TextField
???  ['attribute']
{ "field": ["Text 1", "Text"] }

Warning

Schranz\Search\SEAL\Adapter\Manticoresearch\Tests\ManticoresearchAdapterTest::testDocument
Manticoresearch\Exceptions\ResponseException: "MVA elements should be integers"

The problem with the multiple fields is what currently make the Implementation crashing as I'm not sure how this can be handle with manticore search engine or sphinx.

How to store other type of data then which represented in an array?

This is only possible using the json type, e.g.:
mysql> drop table if exists t; create table t(string_array json, float_array json, bool_array json); insert into t values(0, '["abc", "def"]', '[1.23, 2.34]', '[true, false]'),(0, '["ghi", "jkl"]', '[3.45, 4.56]', '[true, true]'); select *, any(x = 'abc' for x in string_array), any(x > 3.0 and x < 4.0 for x in float_array), all(x = 1 for x in bool_array) from t;
--------------
drop table if exists t
--------------

Query OK, 0 rows affected (0.01 sec)

--------------
create table t(string_array json, float_array json, bool_array json)
--------------

Query OK, 0 rows affected (0.01 sec)

--------------
insert into t values(0, '["abc", "def"]', '[1.23, 2.34]', '[true, false]'),(0, '["ghi", "jkl"]', '[3.45, 4.56]', '[true, true]')
--------------

Query OK, 2 rows affected (0.00 sec)

--------------
select *, any(x = 'abc' for x in string_array), any(x > 3.0 and x < 4.0 for x in float_array), all(x = 1 for x in bool_array) from t
--------------

+---------------------+---------------+---------------------+--------------+--------------------------------------+-----------------------------------------------+--------------------------------+
| id                  | string_array  | float_array         | bool_array   | any(x = 'abc' for x in string_array) | any(x > 3.0 and x < 4.0 for x in float_array) | all(x = 1 for x in bool_array) |
+---------------------+---------------+---------------------+--------------+--------------------------------------+-----------------------------------------------+--------------------------------+
|<PHONE_NUMBER>221005444 | ["abc","def"] | [1.230000,2.340000] | [true,false] |                                    1 |                                             0 |                              0 |
|<PHONE_NUMBER>221005445 | ["ghi","jkl"] | [3.450000,4.560000] | [true,true]  |                                    0 |                                             1 |                              1 |
+---------------------+---------------+---------------------+--------------+--------------------------------------+-----------------------------------------------+--------------------------------+
2 rows in set (0.00 sec)

BTW timestamp internally is just int, so an array of timestamps would be multi.

I tried to skip the attribute and indexed part for the json fields still run into another error this is the manticore field defintions had to use _ instead of . for field seperator for nested objects:
{
    "title": {
        "type": "text",
        "options": [
            "indexed"
        ]
    },
    "header_image_media": {
        "type": "integer",
        "options": []
    },
    "header_video_media": {
        "type": "string",
        "options": []
    },
    "article": {
        "type": "text",
        "options": [
            "indexed"
        ]
    },
    "blocks_text_title": {
        "type": "json",
        "options": []
    },
    "blocks_text_description": {
        "type": "json",
        "options": []
    },
    "blocks_text_media": {
        "type": "multi",
        "options": []
    },
    "blocks_embed_title": {
        "type": "json",
        "options": []
    },
    "blocks_embed_media": {
        "type": "json",
        "options": []
    },
    "footer_title": {
        "type": "text",
        "options": [
            "indexed"
        ]
    },
    "created": {
        "type": "timestamp",
        "options": []
    },
    "commentsCount": {
        "type": "integer",
        "options": []
    },
    "rating": {
        "type": "float",
        "options": []
    },
    "comments_email": {
        "type": "json",
        "options": []
    },
    "comments_text": {
        "type": "json",
        "options": []
    },
    "tags": {
        "type": "json",
        "options": []
    },
    "categoryIds": {
        "type": "multi",
        "options": []
    },
    "_source": {
        "type": "string",
        "options": []
    }
}

This is the document:
{
    "title": "New Blog",
    "header_image_media": 1,
    "article": "

New Subtitle<\/h2>
A html field with some content<\/p><\/article>",
    "blocks_text_title": "[\"Titel\",\"Titel 2\",\"Titel 4\"]",
    "blocks_text_description": "[\"
Description<\\\/p>\",\"
Description 4<\\\/p>\"]",
    "blocks_text_media": [
        3,
        4,
        3,
        4
    ],
    "blocks_embed_title": "[\"Video\"]",
    "blocks_embed_media": "[\"https:\\\/\\\/www.youtube.com\\\/watch?v=iYM2zFP3Zn0\"]",
    "footer_title": "New Footer",
    "created": "2022-01-24T12:00:00+01:00",
    "commentsCount": 2,
    "rating": 3.5,
    "comments_email": "[\"admin.nonesearchablefield@localhost\",\"example.nonesearchablefield@localhost\"]",
    "comments_text": "[\"Awesome blog!\",\"Like this blog!\"]",
    "tags": "[\"Tech\",\"UI\"]",
    "categoryIds": [
        1,
        2
    ],
    "_source": "{\"unrelated\":\"Unrelated\"}"
}

it is indixed via the PHP client this way:
$searchIndex = $this->client->index('test_complex');
$searchIndex->addDocument($aboveDocument, '23b30f01-d8fd-4dca-b36a-4710e360a965');

But when try to load that document via:
$searchIndex = $this->client->index('test_complex');
$searchIndex->getDocumentById('23b30f01-d8fd-4dca-b36a-4710e360a965');

It errors with:

Manticoresearch\Exceptions\ResponseException: "index test_complex: unsupported filter type 'string' on attribute 'id'"

Not sure why this is happening.

indexed makes sense only for textual fields. It makes the field full-text indexed. It may be a little bit confusing since "string" and "text" without additional properties mean different things

From the document above we have text which is searchable but are represented by an array of texts, as we did flatten the whole blocks objects. As suggested by you I did now use for this array text fields (tags, blocks_text_description, blocks_text_title, ..) the type json. Is that maybe not the correct way here for searchable text if that can not be indexed?
The tags field I think is a very common example which is multi field which is searchable and filterable. In elasticsearch this is achieved this way:
[
    'type' => 'text',
    'index' => true,
    'fields' => [
        'raw' => ['type' => 'keyword'],
    ],
]

So a field tags for searchability is created and a field tags.raw for filterability. How is this done in manticoresearch?

I'm not sure if I did understand you correctly tags or keywords are a list of data which can contain zero or many keywords e.g.:
{
   "uuid": "23b30f01-d8fd-4dca-b36a-4710e360a965",
   "tags": ["UI", "UX"]
}

For searchable I think we could use type string indexed by converting the document multi text fields to something like this:
{
   "uuid": "23b30f01-d8fd-4dca-b36a-4710e360a965",
   "tags": "UI UX"`
}

But that how we could still get then filterability to work to get document tagged with that tags. That would still I think require a json field, but how can we make that json filter attribute to receive only documents having a specific tag?:
{
   "uuid": "23b30f01-d8fd-4dca-b36a-4710e360a965",
   "tags": "UI UX"`,
   "tags_raw": ["UI", "UX"]
}

PS: we are using the https://github.com/manticoresoftware/manticoresearch-php here so we are not actually do any create table ... statement ourselfs.

how can we make that json filter attribute to receive only documents having a specific tag?

Filtering in an array of strings separated with a space there's a special mechanism in Manticore which you can use to avoid using JSON. Here's what it looks like in PHP:
<?php
require_once __DIR__ . '/vendor/autoload.php';
use Manticoresearch\Search;

$config = ['host'=>'<IP_ADDRESS>','port'=>9308];
$client = new \Manticoresearch\Client($config);
$index = $client->index('test');

$index->drop();

$index->create([
  'uuid'=>['type'=>'string'],
  'tags'=>['type'=>'text indexed attribute']
]);

$index->addDocument([
  'uuid' => '23b30f01-d8fd-4dca-b36a-4710e360a965',
  'tags' => 'UI UX'
]);

echo "--------------- \$index->search('UI')->get(): -------------------\n";
$docs = $index->search('UI')->get();
foreach($docs as $doc) print_r($doc);

echo "--------------- \$index->search('UI')->get(): -------------------\n";
$docs = $index->search('UI')->get();
foreach($docs as $doc) print_r($doc);

echo "--------------- \$index->search('')->filter('any(tags)', 'in', ['UI'])->get(): -------------------\n";
$docs = $index->search('')->filter('any(tags)', 'in', ['UI'])->get();
foreach($docs as $doc) print_r($doc);

which will give you:
➜  ~ php schranz.php
--------------- $index->search('UI')->get(): -------------------
Manticoresearch\ResultHit Object
(
    [data:protected] => Array
        (
            [_id] =><PHONE_NUMBER>221005526
            [_score] => 1500
            [_source] => Array
                (
                    [tags] => UI UX
                    [uuid] => 23b30f01-d8fd-4dca-b36a-4710e360a965
                )

        )

)
--------------- $index->search('UI')->get(): -------------------
Manticoresearch\ResultHit Object
(
    [data:protected] => Array
        (
            [_id] =><PHONE_NUMBER>221005526
            [_score] => 1500
            [_source] => Array
                (
                    [tags] => UI UX
                    [uuid] => 23b30f01-d8fd-4dca-b36a-4710e360a965
                )

        )

)
--------------- $index->search('')->filter('any(tags)', 'in', ['UI'])->get(): -------------------
Manticoresearch\ResultHit Object
(
    [data:protected] => Array
        (
            [_id] =><PHONE_NUMBER>221005526
            [_score] => 1
            [_source] => Array
                (
                    [tags] => UI UX
                    [uuid] => 23b30f01-d8fd-4dca-b36a-4710e360a965
                )

        )

)

So in this specific case 'tags'=>['type'=>'text indexed attribute'] should suffice.
From the docs:

Closing this as I'm to unexperiecned with manticore to finish this one. If somebody want to give it try feel free to reopen a merge request. Every adapter should fullfill the tests run against them only thing which not all adapters currently support is the multi index search so that would be fine to skip also for manticore.
The main focus should be on the different SearchTests which I could not be able to work correctly with the different expected cases.


Previous Internship/Program Reference Application📝

Description
🕵 Students often when in the job search have inquiries about a particular interview process for a company they are applying for. While we do have company specific channels, #career-question & #career-interview-prep in our Slack, sometimes those inquires may go unanswered or are repeated.
⭐ Solution: If we had an application/file for students to document their experiences easily, it could give ColorStack members a more efficient way of finding answers and reduce inefficiencies in finding answers within Slack channels.
The hope is for everyone who may have had a previous internship/program to fill it in, but if they do not, Slack channels are still open for networking/finding answers.
The idea of how it could be formatted would be the following:
[Company Name]

Your Name
Position
Duration (Intern/FT)
# of interview Rounds
Interview Questions
Rating out of 10 & Why?
Other Notes

John Doe
SWE intern
Intern
2
Two Sum Kth Smallest Element in a BST
6 because they did not provide housing stipends
Reviewing this the night before helped me for the first part which was a behavioral

Other idea: We could do something similar to the icebreakers on the member profile, to make filling in this info easier in having drop down menus and other features.
This is a draft of the idea; more things can be added/subtracted from the idea as we go along, but I would love to work on this and am open to any suggestions/critics!

Interested in working on this! Long project most definitely but I think it would be fufilling.

@Joyeleke Wouldn't mind working together on this 👀

@ramiAbdou Just started digging into this. Happy to hear your feedback on my mini ERD.
Overview
An important feature request by ColorStack members is being able to share and view interview experiences for various companies - following the trend of features like compensation data and company features. This is an initial MVP for interview experiences.
Scope
For the MVP, we should give members a way to do the following in the Member Profile:

Upload an interview experience.
View interview experiences.

Data Requirements
Here is the core data that we want to collect for an interview experience in this MVP:

Experience ID
User ID (not required if we want to maintain user anonymous status)
Company Name
Interview Date
Position
Level Name (ie: Intern / Full-Time)
Interview Rounds
Interview Questions
Interview Review
Timestamp
Extra Notes

Additional data points:

Interview Season (ie: Fall / Summer / Co-op)
Number of Rounds
Rating out of 10 with option to provide reason
Difficulty Rating
Tips for Future Candidates
Interview Length
Sample Resume used to get interview
Interview Timeline

Technical Plan
Here's a short overview of what needs to happen technically to support this.
On the backend, in the core package:

Implement a database migration that creates a interview_experiences SQL table.
Implement a uploadInterviewExperience function, which accepts some interview experience data and saves it to the interview_experiences table.
Implement a uploadInterviewExperience function, which accepts some query parameters to support pagination and returns a list of experiences.

On the frontend, in the member-profile application:

Add a new Interview Experiences tab in the Member Profile (or consolidate it with Companies tab somehow).
Implement a form with all fields necessary to upload a interview experience.
Implement the Experiences page which shows all interview experiences on the screen.
Implement a IndividualExperience Page which displays interview experience in greater detail due to numerous datapoints.

Future Iterations

Add search functionality by creating a tag table.

Open Questions

Do we want the user uploading interview experience to be anonymous?

Notes
Really tried to follow you previous template. A relatively large feature but excited to work on it!

@Joyeleke Wouldn't mind working together on this 👀

Of course @JustinhSE! Just added a mini ERD so let me know what I missed.

Of course @JustinhSE! Just added a mini ERD so let me know what I missed.
@Joyeleke love the ERD breakdown & MVP explanation, definitely helps better pan out the tasks!

To answer your question, since this is an open source community, I would rather it not be anonymous. Making the info "aware" of the poster can cause people to feel a sense of ownership over their work. This would minimize any threat of spreading misinformation/bogus postings about certain programs. I was also thinking we could have a button they could opt into, similar to the member profile to dm them on Linkedin or Slack for any follow up questions.
To add to your future iterations section, since the functionality of Add search functionality by creating a tag table is very similar to something @ramiAbdou implemented in the member profile, what if we created an integration between the 2? It would technically eliminate the need for this, but if you wanted this feature directly in this application I wouldn't mind that either.
This would be later down the road, but this would be the concept of integrating the 2 so the interview processes could be found in the application and through the tag filter on the member profile (would improve the wordage & UI part)

DM'd you also on slack and added some of the frontend details in the canvas


Upgrade to Node 20

Node 20 is now the active LTS, while Node 18 will have security updates until April 2025 it would be good to be on the latest LTS if possible.
Once merged, I'll put PRs up for our other projects (e.g. Docker Wagtail develop).

Not sure if there are specific permissions needed for changing the CI?
Build-agent version 1.0.207522-d583bc78 (2023-10-23T14:33:36+0000).
System information:
 Server Version: 20.10.18
 Storage Driver: overlay2
  Backing Filesystem: xfs
 Cgroup Driver: cgroupfs
 Cgroup Version: 1
 Kernel Version: 5.15.0-1039-aws
 Operating System: Ubuntu 20.04.6 LTS
 OSType: linux
 Architecture: x86_64

Starting container cimg/node:20.12
Warning: No authentication provided, using CircleCI credentials for pulls from Docker Hub.
  image cache not found on this host, downloading cimg/node:20.12

Error response from daemon: manifest for cimg/node:20.12 not found: manifest unknown: manifest unknown

@lb- looking at https://circleci.com/developer/images/image/cimg/node, it looks like 20.9.0 is the latest they have in the 20.x series

Ahh thanks. I completely missed that I had the wrong specific version.

OK. Good for a review now.

Thanks @allcaps  I will add a changelong entry and merge.


NMZ: Add health above threshold notification

Is your feature request related to a problem? Please describe.
Runelite is really nice for AFKish nightmare zone, the absorption and overload notifications allow me to pop in from time to refresh my stats. When using Dharok armor and a rock cake/locator orb, the goal is to stay at very low health to maximize the strength bonus from Dharok. It'd be nice to have an config option where I can set a threshold that alerts me when my health goes above X hp so I can switch to my client and use my locator orb.
Describe the solution you'd like
A configurable threshold that allows alerting when HP goes above that threshold.
Describe alternatives you've considered
I've set the Idle notifications health threshold and it does not seem to work for this use case.
I'd be happy to tackle this as a first contribution if this seems like a reasonable thing to add upstream. Otherwise I'll just add it in a fork.

The Hitpoint Regen Notification (seconds) option in the Regen Meter plugin will do this for you

Awesome, thank you!

Hello there! I believe this issue describes a reasonable feature (and, by the way, it's not really a duplicate of #10588).
To my understanding, the workaround that's been mentioned here and in PR #10513 will only work if a player wants to stay low on HP and react to every HP up. But there is a different scenario: players may want to stay below some HP threshold, let's say 10 HP, allowing them to only interact with the client every 10 minutes or so.
It's for a more AFKable approach, which maybe wouldn't be the best for Dharoking w/ overloads, but would work for NCR with super combat and absorption pots. Check out descriptions of both NCR variants (Melee, Ranged) under https://oldschool.runescape.wiki/w/Nightmare_Zone/Strategies.
Could we please reconsider reopening this ticket and PR #10513? CC @abextm, @Nightfirecat, @JZomerlei

If a time-based notification is what you're looking for, wouldn't the Time Tracking plugin already cover that more effectively?

Well, a time tracking tool can be used as a workaround. But same could be said e.g. about overload potions, and yet there's a dedicated feature for it in NMZ plugin.
IMO the benefit of having it integrated into the client comes with just a QOL improvement: you don't need to remember about the timer, no need to manually (re)set it after every game interaction.

While that may be the case, this strikes me as an exceedingly niche feature. We would, however, welcome a plugin hub submission to add this feature.

The plugin on plugin hub nmz utilities does what my PR wanted to do. You could set threshold to 1 and it’ll alert you when ever you’re above 1 hp.

That's great to know, thank you!


Add ability to set developers own ID with for ex. type: string as ID Helper-type

Support for bigIncrements with max: 20
public function bigIncrements($column)
{
return $this->unsignedBigInteger($column, true);
}

ID as string technically bad idea, but the ability for setting user-defined digits ratio has been integrated.


add question-select component

Could you include a comment with instructions on how this component would be used? I realize that it's part of the work you're doing on the billing card, and that's where this component is being used.
Specifically, I'm curious how the selected data is passed.

Actually, it'd be great if you could include this component in the style guide. That would a) include it in the style guide, and b) provide one example in the code for how to use this component.

Preliminary documentation:
Basic usage
{{question-select ident="namespace.identifier"
  task=model
  question="PlaceholderText"
  class="any class you want to add to the select element"
  selectionSelected='callbackWhenSelected'
  source=arrayOfObjWithIdAndText}}

source should look like
var arrayOfObjWithIdAndText = [
  {id: 1, text: 'option one'},
  {id: 2, text: 'option two'}
]

The selectionSelected callback will pass back the data the user selected.

Thanks @4thethrillofit, that looks good.

added this component to the styleguide

@afomi

Nice, glad to see this in the style guide. If there's no code missing from the component, this looks good to go. :+1:

Alright, this looks good to go. :+1:


Find Delegates in Office 365

Thank you for reporting an issue, making a suggestion, or asking a question. We appreciate your feedback - to help the team understand your
needs please complete the below template to ensure we have the details to respond. Thanks!
Category

[x ] Suggested sample, script, or tool
[ ] Bug in existing sample, script, or tool
[ ] Question / Feedback

Issue Details
We are migrating users between tenants and nedd to batch them so we do not break delegation
Suggested Sample, Script, or Tool
Could you modify the FindMailboxDelegates.ps1 script to work on Office365 (EXO) to find delegates to mailboxes in the same way it does for on-premise exchange Hybrid?
I have tried to run connected to On-premises AD and Exchange Online PowerShell and it appears to work for Full Access SendAS and Sendonbehalve but not calendar

Thank you @PHARKETT for your suggestion. We're currently not looking at expanding the capability of the script, but you're more than welcome to modify it and adapt to your needs. Apologies it took this long to acknowledge your suggestion.


Could you please provide simple tutorial how to create new page then use redux eg: login page

Could you please provide simple tutorial how to create new page then use redux eg: login page.
Thanks

I walk through the process in detail in this Pluralsight course.
There's no simple answer to this since some pages will require new actions and reducers, others will not, but the general steps are:

Create Action type constant
Create Action creator
Reducer
Add reducer to store
Connect component to redux store using redux-connect
Dispatch action to begin the unidirectional flow.


Changed property verification logic to throw error on invalid value for cancelQueryTimeout

The driver didn't throw error for invalid values on connection property cancelQueryTimeout if queryTimeout is not set.
This change would always throw an exception for invalid values.

Codecov Report

Merging #690 into dev will increase coverage by 0.05%.
The diff coverage is 33.33%.

@@             Coverage Diff              @@
##                dev     #690      +/-   ##
============================================
+ Coverage     48.06%   48.12%   +0.05%
- Complexity     2581     2582       +1
============================================
  Files           114      114
  Lines         26577    26578       +1
  Branches       4452     4453       +1
============================================
+ Hits          12774    12790      +16
+ Misses        11670    11644      -26
- Partials       2133     2144      +11

Flag
Coverage Δ
Complexity Δ

#JDBC42
47.96% <33.33%> (-0.02%)
2578 <0> (+2)

#JDBC43
48% <33.33%> (+0.01%)
2574 <0> (-7)
:arrow_down:

Impacted Files
Coverage Δ
Complexity Δ

.../microsoft/sqlserver/jdbc/SQLServerConnection.java
45.69% <33.33%> (-0.02%)
288 <0> (ø)

...rc/main/java/com/microsoft/sqlserver/jdbc/DDC.java
44.07% <0%> (-1.35%)
106% <0%> (-1%)

...om/microsoft/sqlserver/jdbc/SQLServerBulkCopy.java
52.35% <0%> (-0.26%)
238% <0%> (ø)

...m/microsoft/sqlserver/jdbc/SQLServerResultSet.java
33.17% <0%> (-0.04%)
244% <0%> (-1%)

...rc/main/java/com/microsoft/sqlserver/jdbc/dtv.java
63.29% <0%> (+0.17%)
0% <0%> (ø)
:arrow_down:

...n/java/com/microsoft/sqlserver/jdbc/Parameter.java
62.76% <0%> (+0.2%)
63% <0%> (ø)
:arrow_down:

...in/java/com/microsoft/sqlserver/jdbc/IOBuffer.java
55.23% <0%> (+0.46%)
0% <0%> (ø)
:arrow_down:

...c/main/java/com/microsoft/sqlserver/jdbc/Util.java
61.57% <0%> (+0.65%)
89% <0%> (+1%)
:arrow_up:

...ncurrentlinkedhashmap/ConcurrentLinkedHashMap.java
39.4% <0%> (+0.85%)
43% <0%> (+1%)
:arrow_up:

...om/microsoft/sqlserver/jdbc/ReaderInputStream.java
47.19% <0%> (+2.24%)
17% <0%> (+1%)
:arrow_up:

Continue to review full report at Codecov.

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


Updated Amplify Endpoint to be Representatives

Why?
Towards #83
What Changed?
Renaming api/amplify/{zipcode} to api/representatives/{zipcode}
api/representatives/{zipcode} endpoint will be exposing Google Civic API and changing endpoint to better represent that.

@JamesMGreene Getting an error with the test. Pretty sure it's just changing the name of the route api/amplify/{zipcode} to api/representatives/{zipcode} that's causing the test to fail.
Getting a 404 because api/amplify/{zipcode} doesn't exist. Making that change within the test file should solve this correct? Just new to the test so wanted to confirm.

@BeeXiong That's correct! I've pushed a commit to update those to this branch. 👍🏻


Initial commit of probably bad attempt at making models out of these …

…mofongos.

Coverage remained the same at 99.573% when pulling 2e3bd2d28dddb33cffbf91460843b6168d74c188 on aepton:campfin_draft into 8c297bd95767b8934c2030e50b107bfa68e12562 on opencivicdata:master.

doing some housekeeping, sorry this never moved forward


Latest migration changes broke Postgres support

Roughly 1.5 months ago, the project ran just fine with postgres as database backend. Due to new migrations which have been added, and relevant changes, this is now broken.
This would be a minor change, being a huge improvement nonetheless.

diff --git a/migrations/versions/3f76448bb6de_add_user_confirmed_column.py b/migrations/versions/3f76448bb6de_add_user_confirmed_column.py
index d1b6d29..490aebe 100644
--- a/migrations/versions/3f76448bb6de_add_user_confirmed_column.py
+++ b/migrations/versions/3f76448bb6de_add_user_confirmed_column.py
@@ -18,8 +18,12 @@ depends_on = None
def upgrade():
with op.batch_alter_table('user') as batch_op:
batch_op.add_column(

       sa.Column('confirmed', sa.Boolean(), nullable=False,

       sa.Column('confirmed', sa.Boolean(), nullable=True,
                 default=False))

with op.batch_alter_table('user') as batch_op:

   user = sa.sql.table('user', sa.sql.column('confirmed'))

   batch_op.execute(user.update().values(confirmed=False))

   batch_op.alter_column('confirmed', nullable=False)

Hi,
Can you show your setup and the error message during the migration?
I've tried with PostgreSQL 12 and it looks good to me.

Error:
# flask db upgrade
INFO  [alembic.runtime.migration] Context impl PostgresqlImpl.
INFO  [alembic.runtime.migration] Will assume transactional DDL.
INFO  [alembic.runtime.migration] Running upgrade 856bb94b7040 -> b0fea72a3f20, Update domain serial columns type
INFO  [alembic.runtime.migration] Running upgrade b0fea72a3f20 -> 3f76448bb6de, Add user.confirmed column
Traceback (most recent call last):
  File "/opt/powerdns-admin/py-pdns-adm/lib/python3.6/site-packages/sqlalchemy/engine/base.py", line 1246, in _execute_context
    cursor, statement, parameters, context
  File "/opt/powerdns-admin/py-pdns-adm/lib/python3.6/site-packages/sqlalchemy/engine/default.py", line 581, in do_execute
    cursor.execute(statement, parameters)
psycopg2.errors.NotNullViolation: column "confirmed" contains null values

Ubuntu (in lxd container):
# lsb_release -a
No LSB modules are available.
Distributor ID:	Ubuntu
Description:	Ubuntu 18.04.3 LTS
Release:	18.04
Codename:	bionic

Postgresql:
# dpkg -l | grep postg
ii  postgresql                     10+190ubuntu0.1                    all          object-relational SQL database (supported version)
ii  postgresql-10                  10.10-0ubuntu<IP_ADDRESS>             amd64        object-relational SQL database, version 10 server
ii  postgresql-client-10           10.10-0ubuntu<IP_ADDRESS>             amd64        front-end programs for PostgreSQL 10
ii  postgresql-client-common       190ubuntu0.1                       all          manager for multiple PostgreSQL client versions
ii  postgresql-common              190ubuntu0.1                       all          PostgreSQL database-cluster manager

(Note, the git diff fixes it for me)
It looks like the default value isn't applied to the table with sqlalchemy. With pg_dump:
CREATE TABLE public."user" (
    id integer NOT NULL,
    username character varying(64),
    password character varying(64),
    firstname character varying(64),
    lastname character varying(64),
    email character varying(128),
    otp_secret character varying(16),
    role_id integer,
    confirmed boolean NOT NULL
);

And no alter table set default for the confirmed column.
The only alter table set default statements I see in then dump are for nextval() (i.e. the id columns).

Any update on this?

sqlalchemy.exc.IntegrityError: (psycopg2.errors.NotNullViolation) column "confirmed" contains null values                                                                                [SQL: ALTER TABLE "user" ADD COLUMN confirmed BOOLEAN NOT NULL]
(Background on this error at: http://sqlalche.me/e/13/gkpj)
So I applied the update manually
ALTER TABLE "user" ADD COLUMN confirmed BOOLEAN NOT NULL default false;
update "user" set confirmed=true;
update "alembic_version" set "version_num"='3f76448bb6de';

Proper fix:
https://github.com/ngoduykhanh/PowerDNS-Admin/commit/7739bf7cfcc2522934b2f8c80c2805c8902c4a9a#diff-5b6d721374eb2724c78efcc59227e40954dc25bff97a4b6d72123ac5d16cbea2R21 should get a default value to match https://github.com/ngoduykhanh/PowerDNS-Admin/blob/5f10f739ea95f51d539ebd7927d90bba5c5dc7ae/powerdnsadmin/models/user.py#L31
Since i've already applied the migration, I don't have lots of motivation to make a PR.

Same happens with PostgreSQL 13. The patch from @keesbos works, so that can essentially be used as the PR for fixing it (unless someone wants to refine it more).
INFO  [alembic.runtime.migration] Context impl PostgresqlImpl.
INFO  [alembic.runtime.migration] Will assume transactional DDL.
INFO  [alembic.runtime.migration] Running upgrade<PHONE_NUMBER>77 -> 0fb6d23a4863, Remove user avatar
INFO  [alembic.runtime.migration] Running upgrade 0fb6d23a4863 -> 856bb94b7040, Add comment column in domain template record table
INFO  [alembic.runtime.migration] Running upgrade 856bb94b7040 -> b0fea72a3f20, Update domain serial columns type
INFO  [alembic.runtime.migration] Running upgrade b0fea72a3f20 -> 3f76448bb6de, Add user.confirmed column
Traceback (most recent call last):
  File "/srv/vhosts/dnsadmin.foo.bar/venv/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 1276, in _execute_context
    self.dialect.do_execute(
  File "/srv/vhosts/dnsadmin.foo.bar/venv/lib/python3.9/site-packages/sqlalchemy/engine/default.py", line 593, in do_execute
    cursor.execute(statement, parameters)
psycopg2.errors.NotNullViolation: column "confirmed" of relation "user" contains null values

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/srv/vhosts/dnsadmin.foo.bar/venv/bin/flask", line 8, in <module>
    sys.exit(main())
  File "/srv/vhosts/dnsadmin.foo.bar/venv/lib/python3.9/site-packages/flask/cli.py", line 967, in main
    cli.main(args=sys.argv[1:], prog_name="python -m flask" if as_module else None)
  File "/srv/vhosts/dnsadmin.foo.bar/venv/lib/python3.9/site-packages/flask/cli.py", line 586, in main
    return super(FlaskGroup, self).main(*args, **kwargs)
  File "/srv/vhosts/dnsadmin.foo.bar/venv/lib/python3.9/site-packages/click/core.py", line 1053, in main
    rv = self.invoke(ctx)
  File "/srv/vhosts/dnsadmin.foo.bar/venv/lib/python3.9/site-packages/click/core.py", line 1659, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "/srv/vhosts/dnsadmin.foo.bar/venv/lib/python3.9/site-packages/click/core.py", line 1659, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "/srv/vhosts/dnsadmin.foo.bar/venv/lib/python3.9/site-packages/click/core.py", line 1395, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "/srv/vhosts/dnsadmin.foo.bar/venv/lib/python3.9/site-packages/click/core.py", line 754, in invoke
    return __callback(*args, **kwargs)
  File "/srv/vhosts/dnsadmin.foo.bar/venv/lib/python3.9/site-packages/click/decorators.py", line 26, in new_func
    return f(get_current_context(), *args, **kwargs)
  File "/srv/vhosts/dnsadmin.foo.bar/venv/lib/python3.9/site-packages/flask/cli.py", line 426, in decorator
    return __ctx.invoke(f, *args, **kwargs)
  File "/srv/vhosts/dnsadmin.foo.bar/venv/lib/python3.9/site-packages/click/core.py", line 754, in invoke
    return __callback(*args, **kwargs)
  File "/srv/vhosts/dnsadmin.foo.bar/venv/lib/python3.9/site-packages/flask_migrate/cli.py", line 134, in upgrade
    _upgrade(directory, revision, sql, tag, x_arg)
  File "/srv/vhosts/dnsadmin.foo.bar/venv/lib/python3.9/site-packages/flask_migrate/__init__.py", line 96, in wrapped
    f(*args, **kwargs)
  File "/srv/vhosts/dnsadmin.foo.bar/venv/lib/python3.9/site-packages/flask_migrate/__init__.py", line 271, in upgrade
    command.upgrade(config, revision, sql=sql, tag=tag)
  File "/srv/vhosts/dnsadmin.foo.bar/venv/lib/python3.9/site-packages/alembic/command.py", line 320, in upgrade
    script.run_env()
  File "/srv/vhosts/dnsadmin.foo.bar/venv/lib/python3.9/site-packages/alembic/script/base.py", line 563, in run_env
    util.load_python_file(self.dir, "env.py")
  File "/srv/vhosts/dnsadmin.foo.bar/venv/lib/python3.9/site-packages/alembic/util/pyfiles.py", line 92, in load_python_file
    module = load_module_py(module_id, path)
  File "/srv/vhosts/dnsadmin.foo.bar/venv/lib/python3.9/site-packages/alembic/util/pyfiles.py", line 108, in load_module_py
    spec.loader.exec_module(module)  # type: ignore
  File "<frozen importlib._bootstrap_external>", line 790, in exec_module
  File "<frozen importlib._bootstrap>", line 228, in _call_with_frames_removed
  File "migrations/env.py", line 88, in <module>
    run_migrations_online()
  File "migrations/env.py", line 81, in run_migrations_online
    context.run_migrations()
  File "<string>", line 8, in run_migrations
  File "/srv/vhosts/dnsadmin.foo.bar/venv/lib/python3.9/site-packages/alembic/runtime/environment.py", line 851, in run_migrations
    self.get_context().run_migrations(**kw)
  File "/srv/vhosts/dnsadmin.foo.bar/venv/lib/python3.9/site-packages/alembic/runtime/migration.py", line 620, in run_migrations
    step.migration_fn(**kw)
  File "/srv/vhosts/dnsadmin.foo.bar/migrations/versions/3f76448bb6de_add_user_confirmed_column.py", line 20, in upgrade
    batch_op.add_column(
  File "/usr/lib/python3.9/contextlib.py", line 124, in __exit__
    next(self.gen)
  File "/srv/vhosts/dnsadmin.foo.bar/venv/lib/python3.9/site-packages/alembic/operations/base.py", line 374, in batch_alter_table
    impl.flush()
  File "/srv/vhosts/dnsadmin.foo.bar/venv/lib/python3.9/site-packages/alembic/operations/batch.py", line 107, in flush
    fn(*arg, **kw)
  File "/srv/vhosts/dnsadmin.foo.bar/venv/lib/python3.9/site-packages/alembic/ddl/impl.py", line 324, in add_column
    self._exec(base.AddColumn(table_name, column, schema=schema))
  File "/srv/vhosts/dnsadmin.foo.bar/venv/lib/python3.9/site-packages/alembic/ddl/impl.py", line 197, in _exec
    return conn.execute(construct, multiparams)
  File "/srv/vhosts/dnsadmin.foo.bar/venv/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 1011, in execute
    return meth(self, multiparams, params)
  File "/srv/vhosts/dnsadmin.foo.bar/venv/lib/python3.9/site-packages/sqlalchemy/sql/ddl.py", line 72, in _execute_on_connection
    return connection._execute_ddl(self, multiparams, params)
  File "/srv/vhosts/dnsadmin.foo.bar/venv/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 1068, in _execute_ddl
    ret = self._execute_context(
  File "/srv/vhosts/dnsadmin.foo.bar/venv/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 1316, in _execute_context
    self._handle_dbapi_exception(
  File "/srv/vhosts/dnsadmin.foo.bar/venv/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 1510, in _handle_dbapi_exception
    util.raise_(
  File "/srv/vhosts/dnsadmin.foo.bar/venv/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 182, in raise_
    raise exception
  File "/srv/vhosts/dnsadmin.foo.bar/venv/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 1276, in _execute_context
    self.dialect.do_execute(
  File "/srv/vhosts/dnsadmin.foo.bar/venv/lib/python3.9/site-packages/sqlalchemy/engine/default.py", line 593, in do_execute
    cursor.execute(statement, parameters)
sqlalchemy.exc.IntegrityError: (psycopg2.errors.NotNullViolation) column "confirmed" of relation "user" contains null values

[SQL: ALTER TABLE "user" ADD COLUMN confirmed BOOLEAN NOT NULL]```

@keesbos I've not checked the migration scripts but it looks to me that it hasn't been fixed. Can you confirm ?

Related #787


Share config and reduce memory usage by writing values in configure blocks only

This PR adopts a “copy in write” approach for handling config between classes and their subclasses, with a view to reducing memory usage as much as possible.
The config object is now completely shared between a parent and its subclasses.
From there, when a subclass is configured, the config is copied in place as required, while still sharing as many internal values as possible with the parent class; only the changed internal values are themselves copied.
The way we achieve this is by having all mutations of config happen inside our configure blocks, just like we've supported since the beginning:
configure do |config|
  config.foo = "bar"
  config.baz[:fred] = "barney"
end

The difference here is that this is now the only places these mutations are supported: all mutative methods have moved from Config into a new ConfigForUpdate config wrapper class, which provides the object yielded to the configure block.
This ConfigForUpdate instance can track which values are accessed and changed and allows the #configure methods (the original one in our Methods mixing as well as a new one on Config) to determine whether to (a) copy the config object in the first place, and (b) which particular updated values to apply to that object.
This approach works for both simple values (which are assigned directly, e.g. strings) as well as mutable values that are updated in place (e.g. arrays, hashes, sets, or any other custom config values that users may provide).
This is a significant API change (you can no longer just call config.foo = "bar" directly in a class body), but I believe it’s worthwhile for the benefit of having dry-configurable to perform as efficiently as possible, and for our users to feel free to bring as many settings into their configuration as they like, without having to worry about undue memory usage in the case of many subclasses.
I've also added a new benchmarks/memory_profile.rb to analyse our memory usage. It's also a convenient way to share the improvements from this PR!
Let me walk you through two relatively common cases:

Many subclasses that do not change any config from their parent class (TIMES=10000 PROFILE=inherit_only bundle exec ruby benchmarks/memory_profile.rb)
Many subclasses that change only one or two config values from their parent class (TIMES=10000 PROFILE=inherit_and_configure bundle exec ruby benchmarks/memory_profile.rb)

For the first case (subclasses not changing config), this PR brings our

current
new ✨

allocated (MB)
9.53
4.99

retained (MB)
7.71
4.83

For the second case (subclasses changing one config value):

current
new ✨

allocated (MB)
13.61
16.03

retained (MB)
9.39
7.31

If we dig into the "allocated objects by class" for that first case, you can see just how much we've optimised the allocations:
allocated objects by class
-----------------------------------
     10011  Class
      1228  String
        75  Array
        41  Hash
        20  Proc
        10  File
         3  Dry::Configurable::Setting
         3  Dry::Core::Equalizer
         3  Module
         1  Dry::Configurable::Compiler
         1  Dry::Configurable::Config
         1  Dry::Configurable::DSL
         1  Dry::Configurable::Extension
         1  Dry::Configurable::Settings
         1  Regexp
         1  Symbol

We may have 10,000 subclasses, but the Dry::Configurable objects are in the single digits only!
The one downside to this overall approach is that we do have to allocate an extra object during configuration, the ConfigForUpdate instance. This is why in the second memory profile case we actually end up allocating more memory than the main branch. Those objects are quickly GCed, however, and our overall retained memory footprint is lower. Do you think this is a reasonable tradeoff?
Release plan
This is breaking change for dry-configurable and I propose that we do not offer any kind of graceful deprecation of the existing behavior. The reason for this is that the new behavior (no longer copying config on every inheritance) may cause insidious bugs for people who're currently relying on the side effects of this. It's better off they see a hard error and update their programs to the new API (which is very easy, it's just wrapping a configure do around the existing code).
Preparing for this to be released will also mean updating all existing ecosystem gems (dry-rb and Hanami) to ensure they wrap all config mutations in a configure block. I'll do this in a round of PRs after merging this and before releasing it. The changes in these gems will be both forward and backward compatible since all the existing releases of dry-configurable already support the configure API, and that will be unchanged in the new release.
Related PRs:

https://github.com/dry-rb/dry-schema/pull/431
https://github.com/dry-rb/dry-validation/pull/714
https://github.com/dry-rb/dry-container/pull/88
https://github.com/dry-rb/dry-system/pull/248
No dry-monitor PR needed (it uses dry-configurable but no lib or test files actually change config

Ready for 1.0?
Does this change mean we're ready for 1.0? My feeling is probably yes! Perhaps one possible way of releasing this change in a way that doesn't surprise existing users is to version it as 1.0.0.alpha1, that way any Gemfiles with version specs like "~> 0.x" will not pick it up.

I made perhaps a more realistic benchmark, which does this:
  klass = Class.new do
    extend Dry::Configurable

    setting :name
    setting :array_setting, default: %w[jane alice jen]
    setting :hash_setting, default: {"abcd" => "efgh"}
  end

  times.times do |i|
    subclass  = Class.new(klass) do
      configure do |config|
        config.name = "class #{i}"
      end
    end

    RETAIN << subclass
  end

Three settings, a couple with mutable values, then a bunch of subclasses, each of which tweaks one config value.
For this benchmark, we get the following:

Branch
Allocated (MB)
Retained (MB)

main
51.03
34.81

separate-setting-definitions
13.61
9.39

write-settings-in-configure-only
14.73
7.31

So this branch is yet another improvement on the overall retained memory. It allocates slightly more probably due to the transient Config::UpdatingConfig (name pending) classes that we're creating to track which values are changed inside configure blocks, but I think that is probably a fair tradeoff given configuration will only happen once.

Apart from the rename I just noted above, I've also updated this PR with a tweak that ensure we don't needlessly copy and reassign @config if a configurable class or object has configure run multiple times on it. Now the @config is copied/reassigned on first configure, and then reused in place for subsequent configures.

From the perspective of a user of dry-schema, this feels like a breaking change to me (she could previously mutate any exposed config without having to go through a configure block), so I think this probably warrants a 2.0 release of dry-schema (and any other dry-rb gem in this same situation).

Right, I pointed it out in the dry-schema PR too. So, it'd be good to preserve original behavior in dry-schema. It would not be great to bump schema/validation to 2.0 just because of this change. Alternatively, maybe it's just time to finally make the type spec change (making them mandatory) and push 2.0 along with the configure change?

At this point I think it'd be good if we could just take whatever reasonable measures can see us get through our remaining to do list before Hanami 2. So for me personally, I'd actually feel comfortable bumping to 2.0 even just for this change. We've had a pretty good run on 1.x already, after all!
However, if you could have the type spec change ready to go say in the next two weeks or so (not sure how big this is, do let me know if that's unreasonable!), then I'd be fully on board for us rolling these two things together into 2.0 :)

However, if you could have the type spec change ready to go say in the next two weeks or so

I can and I'll do it. It's been too long already. I think it's important to do especially that with Hanami 2.0 release, more folks will be exposed to dry-schema/validation.

@solnic Wonderful! Thank you!

We've decided to close this PR since it would involve too much disruption across our ecosystem as well as broader users of dry-configurable.


[Snyk] Security upgrade express from 4.17.1 to 4.20.0

Snyk has created this PR to fix 1 vulnerabilities in the npm dependencies of this project.
Snyk changed the following file(s):

backend/package.json
backend/package-lock.json

Vulnerabilities that will be fixed with an upgrade:

Issue
Score

Regular Expression Denial of Service (ReDoS) SNYK-JS-PATHTOREGEXP-7925106
  738

[!IMPORTANT]

Check the changes in this PR to ensure they won't cause issues with your project.
Max score is 1000. Note that the real score may have changed since the PR was raised.
This PR was automatically created by Snyk using the credentials of a real user.

Note: You are seeing this because you or someone else with access to this repository has authorized Snyk to open fix PRs.
For more information:
🧐 View latest project report
📜 Customise PR templates
🛠 Adjust project settings
📚 Read about Snyk's upgrade logic

Learn how to fix vulnerabilities with free interactive lessons:
🦉 Regular Expression Denial of Service (ReDoS)

A descrição do pull request não foi encontrada na busca. Vamos analisar o texto fornecido diretamente.
O texto do pull request não atende aos critérios estabelecidos para pontuação. É importante ressaltar a importância de uma descrição clara e completa, incluindo o motivo da mudança e instruções de teste. Melhorar a descrição ajudará a equipe a entender e revisar as alterações de forma mais eficiente.
Esse comentário foi gerado por inteligência artificial


Missing Timestamps in Whisper output

Hi, I want to ask another question about the whisper implementation.

(Figure taken from original paper)
If I understand correctly, Whisper should output timestamps tokens for every texts it recognises should I provide tokens [SOT_Token, English_Token, Transcribe_Token] (i.e., no NO_TIMESTAMPS_TOKEN), but I didn't see any timestamps tokens in the output.
This situation is even wired when it comes to using different models. It seems only distil_large model correctly outputs timestamps_tokens but tiny, base, small, medium, and large_v2 all failed to do so.
I found this problem as I noticed there is some missing logic when compared to python version, and I cannot get any timestamp_tokens when I tried to add them.

Just to be sure, you did try the whisper example with the --timestamps flag (which adds support for timestamps on the candle side) and it didn't work out and produce the appropriate timestamp tokens? I think I tested it on a few examples a couple months back and it was producing appropriately timestamped data.

Thanks for your reply, I didn't notice the --timestamps flag. I'll close the issue then.


Make client's connection properties immutable?

afaict there'd be not use-case for changing the connection properties of a client once it has been initialized. hence i propose to make them read-only. also, and that was the impulse, the base_url property needs to be assembled only once.

ok, agreed, i'll take care of this. i'm assuming you mean all of these props.

yes, i think typing.NamedTuple is a suited structure to store them and bind them as __inaccessible attribute while propertys allow read-access. you could already add the transport for http / https  property as well.


Update README.md

Added the TomP2P.NET library, feel free to move into another category. Thank you!

Hello @Biocodr , thank you for your contribution.
Unfortunately, we can't accept this PR right now because project is too young. It lacks of documentation and is not yet ready.


can u simplify this as an l3 reverse proxy?

can u simplify this as an l3 reverse proxy?
sorry i'm new to iplayers. i can make a small donation to this project... is $20 ok?

This was an experimental project for research, it is not intended for production purposes.

This was for a research POC. I decided to put the source on GitHub as it might be useful for others. Please don't see this project as something ready to use because it isn't :)


Unable to run inexor.bat file after following build Wiki instructions

I have been brought to an issue where I am unable to execute inexor.bat file after following the Windows installation instructions that can be found on the Wiki page of inexor_core.
I have also attempted to follow the tutorial closely and even use SmartGit instead of Github to get a copy of the files and store them locally on my PC, however this has lead to the same errors that are produced when firing up that bat file.
Below is an image of the Command Prompt output:

i made some edits to the wiki:
https://github.com/inexorgame/wiki-mirror/compare/df274ba3a829...9282b60b851c
does it work now?

Hey @a-teammate, I am afraid it didn't work, I was given the following error when i did the 'npm install' command through both Git Bash and Powershell:

I followed the tutorial again noting this time I used Github Desktop Beta as I uninstalled SmartGit. I think I will redo the tutorial once more time through smartgit and reinstall all other dependencies such as conan and python.


Marking ReactFire as deprecated.

Also adding a refreshed Firebase in React guide and a migration guide from ReactFire to using the JS SDK.
Rationale:
Reactfire is currently based on a deprecated/bad-practice technology (mixins).
Furthermore the current JS SDK can be used directly in React components and there are two 3rd-party Firebase libraries for React (re-base and react-redux-firebase) which are actively developed and of high quality.
fixes #132

Hey thank you! This is an elegant depreciation.


ROX-20855: Reduce container user permissions over docker-entrypoint.sh

There's no need to own executable by postgres user, hence removed chown.
There's no need to add executable flag because COPY statement preserves it and the original file has it, hence removed chmod.

Konflux enterprise-contract failures are noise at the moment, it's ok to ignore them.


Regular fonts are currently broken in Terrylib

Bitmap fonts work now, but the old TTF fonts aren't working right now.

Do we need 'em?

need/want

oh wait, right this is terrylib, not the online branch. don't mind me - regular fonts are good in vanilla terrylib :)

This is working again


Tofu without OCS

Deploy AWS services S3, SQS, Cognito and RDS directly into provided PVC.

Closing as this is going to tofu dedicated branch


Unity BodyTracking Sample catching exception for background thread result = K4A_RESULT_FAILED

Describe the bug
unity Example stops at init, catching exception for background thread result = K4A_RESULT_FAILED

To Reproduce
Execute all the steps on the readme.
open sample scene on unity and play.
Desktop (please complete the following information):
OS with Version:Windows 18362.1256
SDK Version: Azure Kinect SDK v1.4.1 / Azure Kinect Body Tracking SDK v1.1.0
Firmware version: Current Firmware Versions:
RGB camera firmware: 1.6.102
Depth camera firmware: 1.6.75
Depth config file: 6109.7
Audio firmware: 1.6.14
Build Config: Production
-Unity Version: 2019.3.0f1
Additional context
k4aviewer and k4abt_simple_3d_viewer works flawlessly.

I'm having the same issue. in my research I found (https://github.com/microsoft/Azure-Kinect-Sensor-SDK/issues/1600) and went through those fixes but still couldn't fix the problem

So after a lot of experimentation I was able to solve my issues:
OS with Version: Windows 10 Home 19042.1466
SDK Version: Azure Kinect SDK v1.4.1 / Azure Kinect Body Tracking SDK v1.0.1
Firmware version: Current Firmware Versions:
Unity Version: 2019.1.2f1
I tried a couple of things to get this working, so I can't tell which solved the issue but here's the list:

use the exact unity version of the project
use an older version of the body tracking sdk (1.0.1 vs 1.1.0)
copy everything in the tools folder of the body tracker sdk into the root of the unity project (same place as the assets folder)
Change ProcessingMode = TrackerProcessingMode.GPU to ProcessingMode = TrackerProcessingMode.Cuda (https://github.com/microsoft/Azure-Kinect-Samples/blob/master/body-tracking-samples/sample_unity_bodytracking/Assets/Scripts/SkeletalTrackingProvider.cs#L46)

3. copy everything in the tools folder of the body tracker sdk into the root of the unity project (same place as the assets folder)

Thanks, that's what fixed it for me. Updated to 2019.4.19f with SDK 1.1.0 and still working.

Has anyone managed to get this working in Unity 2020?
I've tried copying over everything from the tools folder to the project root and changing the processing mode to Cuda but Im still getting the annoyingly vague K4A_RESULT_FAILED error.
I really wish it would just say what the problem library is, this is not the first time Ive had to waste hours trying to debug this pointlessly vague error.

Please forgive my poor English because I am Japanese.
We have confirmed the operation on Unity 2020 with a similar procedure.
However, only when the graphic board is RTX2070Super, if you perform the same procedure with RTX3080, "K4A_RESULT_FAILED error." Will appear.
I'm wondering if it doesn't work due to the GPU, but is there anyone who has confirmed the operation with the RTX30 ** series?

I'm also getting this error on a 2070 Super. Kinect itself is functioning fine, applied the patch commits, etc...
Azure Kinect SDK 1.4.1
Body Tracking SDK 1.1.0
@corriedotdev when you say you're using 1.1.0 (the one that isn't on nuget) are you talking about the Azure Kinect SDK or the Body Tracking SDK? I've tried 1.1.0 and 1.1.1 of the Body Tracking SDK and neither worked. I've copied all the files to the project root and still no luck.

I couldnt fix this error using Body Tracking SDK 1.1.1.
I resolved my issue by uninstalling this version, and instead downloaded the 1.0.1 version. I then copied all the files from "tools" to my unity program folder. Hope this helps someone.

Amazing! I got it working by copying everything across, very naive approach, however it only works in Unity 2020. 2021 will complain about netstandard, I think whats going on is that Unity include their own version of this library for 2021 onwards?
Either way, I'll follow your tutorial because having it work in 2021 would be even better. Much appreciated!

.. for convenience https://github.com/microsoft/Azure-Kinect-Samples/commits/master

Through my test, first check the version of Kinect.BodyTracking in the Packages folder, mine is 1.1.2, and the original SDK of my computer is 1.0.1, so I still get an error after putting the dll in Tools into Unity. I reinstalled the SDK for 1.1.2 and put the dll from Tools into unity and it ran successfully.
通过我的测试，先查看Packages文件夹下Kinect.BodyTracking的版本，我的是1.1.2，我电脑原来的SDK是1.0.1，所以我把Tools里的dll放入到Unity中后还是报错了。我重新安装了1.1.2的SDK后再把Tools里的dll放入unity中就成功运行了。


[Issue-2104] Fix UI bug on token detail screen

PR for #2104

🚀 Deployed on https://pr-2115--sw-web-runner.netlify.app


1.0.0-pre.51 causes 'Could not find a declaration file for module'

When I upgrade 1.0.0-pre.50 --> 1.0.0-pre.51 (or any later version) I get the following error on startup:
Using ts-node version 8.10.2, typescript version 3.8.3
Compilation error in /..../src/config/logger.ts
[ERROR] 14:11:25 ⨯ Unable to compile TypeScript:
src/config/logger.ts:2:48 - error TS7016: Could not find a declaration file for module 'winston-azure-application-insights'. '/..../node_modules/winston-azure-application-insights/lib/winston-azure-application-insights.js' implicitly has an 'any' type.
  Try `npm install @types/winston-azure-application-insights` if it exists or add a new declaration (.d.ts) file containing `declare module 'winston-azure-application-insights';`

2 import { AzureApplicationInsightsLogger } from 'winston-azure-application-insights';

I have the following module definition in src/missing-lib-types.d.ts:
declare module 'winston-azure-application-insights';

Previous versions of ts-node-dev are fine and tsc runs without errors.
I've tried running with ts-node-dev --no-deps --watch 'src' --no-notify ./src/app.ts and ts-node-dev ./src/app.ts.  I'm running on macOS.

check if ts-node works, try --files option.

@whitecolor thanks. Adding --files to the ts-node-dev command line fixed the issue.  Prior to 1.0.0-pre.51 this flag wasn't needed.
Working command: ts-node-dev --files --no-deps --watch 'src' --no-notify ./src/app.ts
(Not sure what params are really needed, that's an existing command from the project)
Feel free to close this issue if you think this works as expected, or leave open if it's a regression.

This works as expected prior to this files option was true by default, but using this flag may slow down startup dramatically on a big project.


<EMAIL_ADDRESS>Error: OrganizationContext not found

[x] Review the documentation: https://clerk.com/docs
[x] Search for existing issues: https://github.com/clerkinc/javascript/issues
[x] Go through package changelog files.
[x] Provide the Frontend API key from your application dashboard.

CLERK_PUBLISHABLE_KEY=pk_test_aGVscGVkLWtpdHRlbi03NS5jbGVyay5hY2NvdW50cy5kZXYk

Package + Version

[x] @clerk/remix

starting in version 2.6.6
Dependencies + versions
Provide a json with the dependencies used in your project (copy paste from yarn.lock / package-lock.json) or a github project / template that reproduces the issue.
<EMAIL_ADDRESS>Minimal repro: https://github.com/carinakoo8/clerk-remix-auth-starter
This is a clone of the Clerk remix-auth-starter repro with the following changes:

Upgrade @clerk/remix to 2.6.6
Call useOrganization in the index route.

Browser/OS
Tested in Chrome and Safari
Description
Minimal repro: https://github.com/carinakoo8/clerk-remix-auth-starter
Call to useOrganization results in this error, preventing the app from rendering.
Uncaught Error: OrganizationContext not found
    at assertContextExists (createContextAndHook.ts:5:42)
    at useCtx (createContextAndHook.ts:29:5)
    at useOrganization (useOrganization.tsx:45:80)
    at Index (index.tsx:125:38)
    at renderWithHooks (react-dom.development.js:14985:18)
    at mountIndeterminateComponent (react-dom.development.js:17811:13)
    at beginWork (react-dom.development.js:19049:16)
    at HTMLUnknownElement.callCallback2 (react-dom.development.js:3945:14)
    at Object.invokeGuardedCallbackDev (react-dom.development.js:3994:16)
    at invokeGuardedCallback (react-dom.development.js:4056:31)

Resolved this issue by importing components from @clerk/remix instead of @clerk/clerk-react

This issue has been automatically locked since there has not been any recent activity after it was closed. Please open a new issue for related bugs.


deployhasp.sh modification to configuration.yaml appended last line instead of new line.

I was setting up a device for the first time and ran into an issue after running
bash <(wget -qO- -o /dev/null https://raw.githubusercontent.com/aderusha/HASwitchPlate/master/Home_Assistant/deployhasp.sh)
Home Assistant started in safe mode and gave me an error that it had problems parsing configuration.yaml. I found that the last line had changed from
    icon: mdi:flash
to
    icon: mdi:flashrecorder:
I moved "recorder:" to a new line and restarted. Everything was fine after that.
Great project, btw. I'm very impressed with all the work that went into this and how easy it was to set up.

Updated deplyohasp.sh in dev branch to prepend a newline before adding recorder


Separate 0x from hex number

Hey!
I add if statement for separate 0x from hex number, because when 0x is argument of atohex, this function returns wrong number

@dawidzim - as per the discussion above, I have submitted a PR that actually eliminates passing the 0x prefix of the signature_addr into the rtl testbench, which I think directly addresses your concern. I think this change should also mean that this PR can be closed, as the extra step to strip 0x will not be necessary anymore. Thank you for bringing this issue up!

LGTM


User feedback: something
(MLH_agree_terms)

Question ID
terms of use

Variable being sought
MLH_agree_terms

Package version
0.1.0

Filename
docassemble.MLHMotionRegardingChildSupport:data/questions/motion_regarding_child_support.yml

Details
single paragraph test feedback

test issue


make clean target doesn't clean the kind cluster.

The cluster started with make kind-cluster-create isn't fully deleted by make clean kind-cluster-clean. i.e., these set of steps will give an error:
* make kind-cluster-create
* make clean kind-cluster-clean
* make kind-cluster-create
Need to manually delete it with kind delete cluster --name single
Source: https://github.com/ovrclk/akash/tree/master/_run/single
Solution:

Either add the code to delete the cluster in make target
Update the documentation to manually clean the cluster.

I believe I used make kind-cluster-delete to remove the created cluster. Maybe the kind-cluster-clearn target should be updated to run that?

kind-cluster-clean originally deleted everything that the provider created in kubernetes - it cleaned the cluster, maybe kind-cluster-reset would be better because *clean is so often used for deleting files?


Add aioapns version of APNS

Since version python 3.10+ is not supported by apns2 (because of dependency on hyper) we add aioapns version of sending APNs notifications.
We add installation extra [APNS_ASYNC] that installs aioapns and use new version of service if aioapns is installed. Tests are also conditional on installed modules/version of python.
Related to

https://github.com/jazzband/django-push-notifications/pull/623 (is blocked by apns2)
https://github.com/jazzband/django-push-notifications/issues/685
https://github.com/jazzband/django-push-notifications/issues/622
https://github.com/jazzband/django-push-notifications/issues/675

There are some (maybe) controversial decisions, feel free to discuss them

choice of aioapns - it looks like only library with active development
supporting both apns2 and aioapns - because we don't want to break older code
deciding on which version to use in models.py - sure we can move it to apns.py and move apns2 code to apns_legacy.py

@pomali You have left print() statements in the code. See apns_async.py.

@pomali, any progress for this one?
I had the apns2 0.7.2 requires PyJWT<2.0.0,>=1.4.0, but you have pyjwt 2.1.0 which is incompatible issue, and pointing to your branch (as a temporary solution) completely solves it.

I'm not sure what's missing, maybe someone should review it? And then there is code coverage check failing, but most of failing lines are comments, so I am not sure how important it is.
Is there anyone who could point me in right direction?
@itayAmza  glad that it helped :)

hopefully, I get to have a look into both PRs, tonight. Thank you for the notification @itayAmza

I can review the PR, but I have never used APNS.  Has someone actually run this with an ios/macos app?
Regarding the support for both apns2 and aioapns, I think we should add a deprecation warning with this release then completely remove apns2 with the next release.

I ran it with an iOS simulator, but a second pair of eyes with a real device would be good idea

I ran it with an iOS simulator, but a second pair of eyes with a real device would be good idea

I just tried this and got this error when trying to send a test message via apns:
ModuleNotFoundError at /admin/push_notifications/apnsdevice/
No module named 'apns2'
Request Method:	POST
Request URL:	https://local.a24-vod:8060/admin/push_notifications/apnsdevice/
Django Version:	4.2
Exception Type:	ModuleNotFoundError
Exception Value:
No module named 'apns2'

There is a possible bug with default argument pollution. Below test case can demonstrate the issue. I've also added a review comment about this.
	@mock.patch("push_notifications.apns_async.APNs", autospec=True)
	def test_apns_send_messages_different_priority(self, mock_apns):
		self._create_devices(["abc", "def"])
		device_1 = APNSDevice.objects.get(registration_id="abc")
		device_2 = APNSDevice.objects.get(registration_id="def")

		device_1.send_message("Hello world 1", expiration=time.time() + 1, priority=5, collapse_id="1")
		args_1, _ = mock_apns.return_value.send_notification.call_args

		device_2.send_message("Hello world 2")
		args_2, _ = mock_apns.return_value.send_notification.call_args

		req = args_1[0]
		self.assertEqual(req.device_token, "abc")
		self.assertEqual(req.message["aps"]["alert"], "Hello world 1")
		self.assertAlmostEqual(req.time_to_live, 1, places=-1)
		self.assertEqual(req.priority, 5)
		self.assertEqual(req.collapse_key, "1")

		reg_2 = args_2[0]
		self.assertEqual(reg_2.device_token, "def")
		self.assertEqual(reg_2.message["aps"]["alert"], "Hello world 2")
		self.assertIsNone(reg_2.time_to_live, "No time to live should be specified")
		self.assertIsNone(reg_2.priority, "No priority should be specified")
		self.assertIsNone(reg_2.collapse_key, "No collapse key should be specified")

I ran it with an iOS simulator, but a second pair of eyes with a real device would be good idea

I just tried this and got this error when trying to send a test message via apns:
ModuleNotFoundError at /admin/push_notifications/apnsdevice/
No module named 'apns2'
Request Method:	POST
Request URL:	https://local.a24-vod:8060/admin/push_notifications/apnsdevice/
Django Version:	4.2
Exception Type:	ModuleNotFoundError
Exception Value:
No module named 'apns2'

do you have aioapns installed? because that is condition on which we use the new code
added mention to README
pip install django-push-notifications[APNS_ASYNC]

There is a possible bug with default argument pollution. Below test case can demonstrate the issue. I've also added a review comment about this.

Thanks for catching this, I added your test and fixed the issue.

I think it is worth to add python 3.10 as testing target in CI, since it should enable support for version 3.10
https://github.com/jazzband/django-push-notifications/blob/820262efedbd71d38e62320b561c4aaed95b1131/.github/workflows/test.yml#L12

I ran it with an iOS simulator, but a second pair of eyes with a real device would be good idea

I just tried this and got this error when trying to send a test message via apns:
ModuleNotFoundError at /admin/push_notifications/apnsdevice/
No module named 'apns2'
Request Method:	POST
Request URL:	https://local.a24-vod:8060/admin/push_notifications/apnsdevice/
Django Version:	4.2
Exception Type:	ModuleNotFoundError
Exception Value:
No module named 'apns2'

do you have aioapns installed? because that is condition on which we use the new code
added mention to README
pip install django-push-notifications[APNS_ASYNC]

I'm pretty sure I did when I tested it, but wouldn't that be handled by pip/piptools?

Hello @kmasuhr,
I have just updated this PR to bump the version of python being used in CI.
However, it would seem one of its transitive dependencies is not compatible with Python 3.10 - precisely, the hyper==0.7.0
HTTP Client.
Given that the hyper library is not actively maintained, I would like to propose that we replace it with a maintained alternative.
I am open to suggestions, but I would recommend using httpx as a good replacement.

I'm pretty sure I did when I tested it, but wouldn't that be handled by pip/piptools?
@ssyberg it should be handled by pip, but it's optional dependency, so maybe it didn't get installed?

I have just updated this PR to bump the version of python being used in CI. However, it would seem one of its transitive dependencies is not compatible with Python 3.10 - precisely, the hyper==0.7.0 HTTP Client.
Given that the hyper library is not actively maintained, I would like to propose that we replace it with a maintained alternative. I am open to suggestions, but I would recommend using httpx as a good replacement.

hyper is a dependency of apns2.
This PR adds support  for aioapns as an alternative apple push notification library.
(because of the problems with apns2/hyper)
There are some github issues with additional details / background linked in the PR description.

I have just updated this PR to bump the version of python being used in CI. However, it would seem one of its transitive dependencies is not compatible with Python 3.10 - precisely, the hyper==0.7.0 HTTP Client.
Given that the hyper library is not actively maintained, I would like to propose that we replace it with a maintained alternative. I am open to suggestions, but I would recommend using httpx as a good replacement.

hyper is a dependency of apns2. This PR adds support for aioapns as an alternative apple push notification library. (because of the problems with apns2/hyper)
There are some github issues with additional details / background linked in the PR description.

If I'm understanding correctly, the inclusion of hyper in this PR is only to stay backwards compatible with apns2 for people who don't want to upgrade to using aioapns in which case they need to stay <3.10 (which if they are using apns2 I think is implied). IMO this could be noted in the docs but shouldn't block merge, a lot of people are waiting for this to get merged and it's blocking dev for anyone on later version setups.

Hey guys, any news on this? Can we get this merged?

Hello, are there any updates regarding this issue? Any other changes are needed to merge the PR?

I don't see any outstanding issues from my side.

haven't followed up much on the development lately, however it would seem we having some conflicts, no?

Have you determined what causes rebase conflicts? Do you need any additional changes?

Anyone maintaining this package?.. its not usable at the moment on python 3.10+

let's merge this guys !!!

Have you determined what causes rebase conflicts? Do you need any additional changes?

yes i just did - its national holiday over here and @ficast notification actually reminded me of the PR. currently fixing them conflicts.

@50-Course will this PR get merged by any chances?

Yes, am currently fixing the re-base conflicts a couple more changes to go... hopefully i after my office hours i could get to it again.
@vitorguima

Hi everyone,
I hope this message finds you well. I wanted to provide an update regarding this PR that led to a erroneous closure of the PR.
Unfortunately, while attempting to assist with the updates and re-base conflicts, I inadvertently pushed changes that led to the closure of the original pull request. I sincerely apologize for this error and any confusion it may have caused. My intention was to facilitate the merging of the contributions into the project, and I regret any inconvenience this has created.
To rectify the situation, I have now pushed the latest changes back to the pomali/master branch with proper attribution to the original author. I will be creating a new pull request shortly to ensure that these contributions can be reviewed and merged appropriately.
Thank you for your understanding, and I appreciate your patience during this process. Please feel free to reach out if you have any questions or need further assistance.
regards,
E.A

Quick heads-up,
I want to provide an update regarding the changes. Please follow the new PR on #739. The new changes have been fully re-based onto this PR to facilitate the merging process.
Thank you for your patience, and I appreciate your understanding as we work to get this merged.

Once again calling on review of the new PR as its now able to get merged. This would allow us successfully close this one out

Update to all following this thread, PR been merged. Documentation could use some work here and there due to rebase issues


Cleanup in botbuilder

Description
Cleanup in botbuilder
Specific Changes

https://github.com/microsoft/botbuilder-js/commit/1380be6b2a93e8e107673d52db4b363a0f4dfcc5

Move InvokeResponse, WebRequest, WebResponse into individual files in new interfaces/ folder.

https://github.com/microsoft/botbuilder-js/commit/ec07d7eee9663a1b09b5f764d868a1daf45f3dc7

Move INTERNAL streaming constants out of BotFrameworkAdapter and into streaming/constants.ts

Testing
Rebuilt libraries and locally re-ran tests.

Pull Request Test Coverage Report for Build 96241

11 of 11 (100.0%)  changed or added relevant lines in 7 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage increased (+0.001%) to 84.404%

Totals

Change from base Build 96067:
0.001%

Covered Lines:
8431

Relevant Lines:
9666

💛  - Coveralls


jquery-migrate-3.4.1.source.js:137 JQMIGRATE: jQuery.fn.blur() event …

…shorthand is deprecated
jquery-migrate-3.4.1.source.js:137 JQMIGRATE: jQuery.fn.keydown() event shorthand is deprecated etc etc

put the event related options into 'on' option

Sorry for taking such a long time to review this. DO you have any idea if this will break older jQuery versions?

Sorry for taking such a long time to review this. DO you have any idea if this will break older jQuery versions?

It will not break older jQuery version.
I'm just putting those event properties inside the 'on' property. You can see them use that as an example for jQuery 1.8 https://api.jquery.com/jQuery/#jQuery-html-attributes (when they first allow this kind of declaration where you chuck in any jQuery.fn as a property).


Merge into ghcid (if you wanted)

Great work. I've added a link to this project from the ghcid project, see https://github.com/ndmitchell/ghcid#ghcid-integration.
Have you considered merging this plugin into the ghcid repo? If it's only one file of plugin, and you think it won't grow beyond that, I'd be happy to accept a pull request merging it into the ghcid repo, and distributing it with ghcid as a data file. I don't use neovim (or even any flavour of vim), so I would expect other users (e.g. you) to keep it up to date and improve it.
Of course, it is entirely up to you what you want to do with this project - I'm equally happy to stick with just linking onward to this project for neovim support.

Hey, thanks, ghcid has been very good to me, I'd definitely consider merging and maintain it from there. The project is mostly feature-complete, so it's not going to grow much. I would like to include vim documentation too though, so it's technically two files :) and would need push access to manage the project efficiently. Overall I think it's a good idea, it would make the haskell tooling story just a bit better!

I've granted you push access. In general, if they are changes to the core of ghcid, probably better to send them in as a pull request. However, for vim stuff, whatever you think is best. Not sure where the stuff should end up - perhaps a neovim directory? Perhaps not? Should the plugin be distributed as a data file with ghcid? Do whatever you think works best.

Awesome. Of course I wouldn't push directly on ghcid code, but would be useful for the plugin. I have an idea of where things could end up with regards to the plugins, will open a PR once ready.
Cheers!


Include unpublishable path dependencies of the root package for publishing

ping #4726
Before this patch, all path deps must be published before the root crate is published to the registry.
This patch allow cargo package to include files of path dependencies in the generated package if the dependencies have the manifest key "package.publish" set to false, which means the crate cannot be registered as a sharable crate by itself at a registry, but still allowed to be published along with the root crate.

Thanks for the pull request, and welcome! The Rust team is excited to review your changes, and you should hear from @matklad (or someone else) soon.
If any changes to this PR are deemed necessary, please add them as extra commits. This ensures that the reviewer can see what has changed since they last reviewed the code. Due to the way GitHub handles out-of-date commits, this should also make it reasonably obvious what issues have or haven't been addressed. Large or tricky changes may require several passes of review and changes.
Please see the contribution instructions for more information.

cc @rust-lang/cargo
So basically this allows one to have "private internal"  crates, which can't be used outside of the current package?
I personally would really love to have this feature: it's important to be able to create an appropriate physical layout in terms of compilation units, without exposing the details to the consumer of the package. But I am quite surprised by the fact that there's no huge demand for this feature, so perhaps it's not that important? This also is related to rfc1997 about private dependencies.

Thanks for the pull-request @iology!
I think this actually can work like this, without changing the fundamental property that Cargo package contains a single library, because all other "libraries" are strictly private and not visible from outside! But we probably need an RFC for this, because there may be some non-obvious ramifications. For example, I think that for such "internal" packages a lot of fields from Cargo.toml, most importantly version, are irrelevant. So perhaps such "private packages" should have more first-class support in Cargo?

@matklad You are right. There may still be some problems about rustdoc and I haven't added more tests. And I must say that I'm still a newbie of Rust, have only made some small programs. So your opinions are definitely needed! You can take this patch as just a proof of concept!

I do agree that this needs an RFC, to specify the semantics here. That's not a hard process, and there are many people who can help you with it. It's a great way to get started with contributing to Rust.

Is there any RFC about this topic? package.publish=false may carry too much semantics, so another attribute may be needed to override package.publish.

This feature sounds very interesting to me. For example I have a crate c3 that uses a sub crate to contain pains of building and patching clang+llvm (https://crates.io/crates/c3_clang_extensions), so I had to publish it, but it's not useful outside of its parent.

:umbrella: The latest upstream changes (presumably #4872) made this pull request unmergeable. Please resolve the merge conflicts.

I'm going to close this for now in favor of the RFC @matklad linked to


form preview improvement

Coverage increased (+0.07%) to 82.842% when pulling 074dba81dbfdd7a71771bbbca8338b59cfe1dc08 on itowtips:fix-form-preview into 24c08439a94d6c86bb92233342afe857c602d236 on shirasagi:master.


fix ops LastLevelMaxPool

This PR is not based on any existing issues because the bug was too obvious in theory but too inconspicuous in practice and didn’t really cause any big problems. However, I think we should fix it anyway.
The issue is that the original code passed an inaccurate argument ‘kernel_size=1’ to max_pool2d when it should have been ‘kernel_size=2’.

Thanks for the PR @iaoqian , however, checking Detectron2 code, they also have kernel_size=1:
https://github.com/facebookresearch/detectron2/blob/d4a5f28e01b2babbaba9f90198fb95f5c661cccd/detectron2/modeling/backbone/fpn.py#L200
and same for Detectron implementation:
https://github.com/facebookresearch/Detectron/blob/6020e9a5aaaa21316cb87a8bc89605e2594310e7/detectron/modeling/FPN.py#L229
Seems like it is intended to have kernel_size=1 as they left a comment:

Use max pooling to simulate stride 2 subsampling

Also from the paper:

Well, Thanks @vfdev-5 @NicolasHug for your reply. That makes sense. In this way, LastLevelMaxPool may not be a proper name, I think. Maybe we can refactor this class with name 'LastLevelSubsampling' or something to make it more reasonable. But, anyway, closing this PR.

I agree with you @iaoqian , the current naming might be a bit misleading. Unfortunately we can't really change it because it's public and it would require a deprecation (not sure that it's really worth it). But thanks for sending this PR and for raising this to our attention.
What we can do to avoid such confusion in the future is to clarify in the docstring that the code is intended as-is (i.e. that the Module is just doing subsampling, not max-pooling). Perhaps we can re-purpose your PR for that?

I understand @NicolasHug. I think we can repurpose this PR by adding some code comments to avoid this issue.