Possible memory leak?

Hi!
I'm running two bots on the smallest droplet on DigitalOcean (512MB), and I'm hitting 100% memory usage almost constantly. I noticed that even just running the following code causes the node process to start consuming more and more memory:
var TelegramBot = require('node-telegram-bot-api');
var nconf = require('nconf');
nconf.argv().env().file({ file: 'config.json' });
var token = nconf.get('bot_token');
var bot = new TelegramBot(token, {polling: true});

After initializing bot in the fifth line - the process's memory usage starts to grow and never stops.
I'm not sure how to debug it further. Any ideas?
I tried limiting node with --max_old_space_size but it doesn't seem to work (same behavior). Both bots are just rarely used, and anyhow it seems like the leak starts before my own code is even reached.

I am interested in this too. I also notice a small but constant memory usage increase.

The leak might be on https://github.com/yagop/node-telegram-bot-api/blob/master/src/telegramPolling.js#L50 there is an infinite loop which I should fix ...

Could this be fixed by replacing the timeout with a set interval?
On Sat, Dec 26, 2015, 19:07 Yago<EMAIL_ADDRESS>wrote:

The leak might be on
https://github.com/yagop/node-telegram-bot-api/blob/master/src/telegramPolling.js#L50
there is an infinite loop which I should fix ...
—
Reply to this email directly or view it on GitHub
https://github.com/yagop/node-telegram-bot-api/issues/52#issuecomment-167351666
.

Could be if its called outside. The matter of using an interval is that the function could be called before the previously one haven't finished. That behavior must be avoided.

I tried limiting node with --max_old_space_size but it doesn't seem to work (same behavior). Both bots are just rarely used, and anyhow it seems like the leak starts before my own code is even reached.

Seems the option is --max-old-space-size.
Which NodeJS version are you using? Seems v4 have improved in memory usage. I changed the _polling method a bit, seems the memory still increasing in node v0.12.4 but slowly and hope it converge to smaller number. With v4.2.4 increases till 50MB and stops.

I tried both --max-old-space-size and --max_old_space_size before, none seemed to work.
Anyhow, I just upgraded Node.JS's version to 5.4 (was running 0.10.25...) and upgraded node-telegram-bot-api, and the problem seem to be gone. it's been 24 hours I can't recognize no signal for the leak.
Thank you!

With the recent changes, I believe this issue might be fixed. We are also running bots using this library, and we do not have any memleak problems.
If this issue still persists for you (with the new versions, of course), please provide us with more information, such as, the average number of users your bot is serving, RAM size in your server, etc.
Otherwise, am marking this issue as stale to be closed at a later date, should no activity be seen in this thread!

Issue went too stale...


Helper Button (clear) in Chrome not rendering properly

The helper-button clear not rendering properly in chrome. The close icon appears in the middle of the text box. The button appears to span the entire textbox (and cover it)

link to page or example on codepen.io


How to debug

Hi Paul,
Could you us some guidance on how to debug when an api call doesn't return the expected result? For example, when I do an api call, I get back null instead of a User object. When I drill into the methods being executed, I would like to end up somewhere so that I can see the response (content) to get some indication of why I got null.
Would it be nice to add some debugging lines for each request/response? Like status, headers, content, etc

I've created this logging mechanism myself...
Don't know it this is the way to go, but I can now get some logging going...
public class LoggingMessageHandler : DelegatingHandler
    {
        public LoggingMessageHandler(HttpMessageHandler innerHandler)
            : base(innerHandler)
        {
        }

        protected override async Task<HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
        {
            Debug.WriteLine("Request:");
            Debug.WriteLine(request.ToString());
            if (request.Content != null)
            {
                Debug.WriteLine(await request.Content.ReadAsStringAsync());
            }

            var response = await base.SendAsync(request, cancellationToken);

            Debug.WriteLine("Response:");
            Debug.WriteLine(response.ToString());
            if (response.Content != null)
            {
                Debug.WriteLine(await response.Content.ReadAsStringAsync());
            }

            return response;
        }
    }

@promontis I would start by setting up something like Runscope to see what the response content is, and see if that deserializes to the object you want (you can also change the return type to string to just see it as text)


Implement "perfect" waking for tuple::merge

This mimics the implementation for array::merge.
I used that hack I introduced on #74 in a more generalized form, we can rewrite the gen_conditions in terms of this new macro (basically the same way I do here)
Ref #21

oh, I almost forgot the perf result
>> critcmp main patch -f tuple::merge
group              main                                   patch
-----              ----                                   -----
tuple::merge 10    1.03    763.3±1.40ns        ? ?/sec    1.00    738.1±2.47ns        ? ?/sec

macro_rules! tuple_indexes {
    ($mod_name:ident :: $StructName:ident < $($F:ident),+ >) => {
        mod $mod_name {
            // Ensure indexes are in increasing order and start at 0 while being
            // very cheap to generate for the macro.
            //
            // If you want to ensure there are 256 elements or less, use repr(u8)
            #[repr(usize)]
            pub enum Indexes {
                $($F),+
            }

            pub const TUPLE_LEN: usize = match [$(Indexes::$F),+] {
                [.., last] => last as usize + 1,
            };
        }

        #[derive(Default)]
        pub struct $StructName {
            state: [bool; $mod_name::TUPLE_LEN],
        }

        impl $StructName {
            $(
                #[allow(non_snake_case)]
                pub fn $F(&self) -> (usize, bool) {
                    let index = tuple_indexes!(@index of $mod_name :: $F);
                    (index, self.state[index])
                }
            )+
        }
    };
    (@index of $mod_name: ident :: $F: ident) => {
        $mod_name::Indexes::$F as usize
    };
}

tuple_indexes!(test_1::Test1<A>);
tuple_indexes!(test_2 :: Test2 < A, B >);
tuple_indexes!(test_3 :: Test3 < A, B, C >);

#[test]
fn expected_indexes() {
    let t = Test1::default();
    assert_eq!(t.A().0, 0);

    let t = Test2::default();
    assert_eq!(t.A().0, 0);
    assert_eq!(t.B().0, 1);

    let t = Test3::default();
    assert_eq!(t.A().0, 0);
    assert_eq!(t.B().0, 1);
    assert_eq!(t.C().0, 2);
}

This could be used to simplify the macros, making rustc do less work ^^

that's a very interesting approach, @poliorcetics!
I'll merge this PR as it is now, but I would like to see a scratch PR integrating your ideas - I think it would be very fair to see you in the contributors list!

I'll merge this PR as it is now, but I would like to see a scratch PR integrating your ideas - I think it would be very fair to see you in the contributors list!

Done in #99 :) I'll try to run the benchmarks on my side to see if it helped


SNIP-72: Non-fungible Tokenbound Accounts

@ArielElp @AbdelStark still no updates:(

@AbdelStark @ArielElp

..

Hi @Darlington02,
Thank you for your submission. After reviewing SNIP-72, we have a couple of points that need addressing to comply with the SNIP-1 guidelines:

Date Format: The creation date has a small typo. Please correct it to "2024-01-08".

External Links: According to SNIP-1, external links should be avoided as they can disappear or change unexpectedly.
Instead, please include any images, diagrams, and auxiliary files directly within a subdirectory of the assets folder for this SNIP. The path should be assets/snip-13, and you should use relative links such as ../assets/snip-13/image.png when linking to these files.

Once these changes are made, we can proceed with the review process.

thank you @dor-starkware. would we also be renaming to snip-13?

@Darlington02 We merged snip-13 recently, so this would be snip-14

Hi @Darlington02,
Thank you for your submission. After reviewing SNIP-72, we have a couple of points that need addressing to comply with the SNIP-1 guidelines:

Date Format: The creation date has a small typo. Please correct it to "2024-01-08".
External Links: According to SNIP-1, external links should be avoided as they can disappear or change unexpectedly.
Instead, please include any images, diagrams, and auxiliary files directly within a subdirectory of the assets folder for this SNIP. The path should be assets/snip-13, and you should use relative links such as ../assets/snip-13/image.png when linking to these files.

Once these changes are made, we can proceed with the review process.

Hi @dor-starkware I've fixed all these:)

Hey @dor-starkware pinging about this. Any updates?

Hey @Darlington02,
Sorry for the delay. This branch has now been merged.


[ownership] Rename enable-sil-ownership => verify-sil-ownership.

I have been meaning to do this change for a minute, but kept on putting it off.
This describes what is actually happening and is a better name for the option.

@swift-ci test and merge

@swift-ci smoke test linux platform


browsers docker container on M1 Mac still looks for x86 dependencies

Hi: I've been trying to get this to work all day, so if anyone can offer tips or pointers, it would help.
Our Cypress image uses a base image with the tag node16.14.2-slim-chrome100-ff99-edge, which is also tagged to support linux/arm64.
But whenever I build and try to exec the npm command that eventually calls cypress open, I see this:
><EMAIL_ADDRESS>e2e-ui
> cypress open

Cypress failed to start.

This may be due to a missing library or dependency. https://on.cypress.io/required-dependencies

Please refer to the error below for more details.

----------

qemu-x86_64: Could not open '/lib64/ld-linux-x86-64.so.2': No such file or directory

----------

Platform: linux-x64 (Debian - 11.3)
Cypress Version: 9.7.0

Wasn't this resolved already? If not, what else should I be trying or installing on this Mac? I'm stumped.

Hey, were you ever able to resolve this?

Closing, as this refers to an old unsupported version.
If the issue is still occurring with Cypress 13.x please comment and we can re-open.


Promise is not defined in IE

The javascript-montage wrapper is unusable in all versions of Internet Explorer since Promise is undefined. Promise works as expected in Microsoft Edge.

You can just use https://babeljs.io/docs/usage/polyfill/

Thanks @zackify

np!!


Verify dryRun functionality

We should add dryRun verification to the unit and functional tests. We want to make sure that the dryRun never fails. We may also want to make sure the cluster files are never processed such that the script can never deploy incorrectly/unexpectedly to clusters.

Completed with https://github.com/InVisionApp/kit-deployer/pull/119


Fix CI for conda-incubator

The CI's are not being triggered, it would be nice to also move it to github actions instead of azure

it is necessary to update coverall and lgtm as well


Allow !Unpin Sinks in Forward combinator

Changed

Update Forward so it drops the sink without returning it. Users wishing to access the sink again can pass a &mut sink to StreamExt::forward().
Update docs for both Forward and StreamExt::forward().

Removed

Remove requirement for Unpin sinks on Forward.

Fixes #1440. /CC @Nemo157.

@cramertj @Nemo157 Now that #1443 has been merged, I've updated my PR to switch back to using poll_close() over poll_flush(), and I have confirmed that the example code between 0.3.0 and 0.1.25 now behaves correctly. Ready for review again!

Interesting, futures-core-preview no longer compiles on some toolchains after my rebase. Will need to look into it further.

That’s #1453, there are new changes in nightly that are waiting on #1445

Ah, yes. I just noticed this as well when trying to navigate to std::task::LocalWaker on the Rust API docs page and it wasn't found. Standing by until #1445 gets merged.

@cramertj @Nemo157 Awesome, looks like CI passes again thanks to #1445 being merged. 🎉 Anyone available for a final review of this PR?

LGTM-- would you mind flattening your commits to remove the previous changes to Forward that have since been removed?

@cramertj Okay, I've flattened away the redundant commits! I hope the commit history looks satisfactory now.

Thanks!


Kv packaging

Packaging improvement for you package. There is a merge from master at the same time, so PR should rebase and not squash.
See last three commits (evrything else is a merge commit). This changes the set of dependencies and update a few link inside the setup.py. Tell me if you have questions.

(message created by the CI based on PR content)

(message created by the CI based on PR content)

Codecov Report

Merging #2649 into keyvault_1.0_preview will decrease coverage by 0.32%.
The diff coverage is 63.49%.

@@                   Coverage Diff                    @@
##           keyvault_1.0_preview    #2649      +/-   ##
========================================================
- Coverage                  56.3%   55.97%   -0.33%
========================================================
  Files                      6530     7249     +719
  Lines                    141715   152276   +10561
========================================================
+ Hits                      79786    85232    +5446
- Misses                    61929    67044    +5115

Impacted Files
Coverage Δ

azure-mgmt-logic/azure/mgmt/logic/__init__.py
100% <ø> (ø)
:arrow_up:

azure-mgmt-batch/azure/mgmt/batch/version.py
100% <100%> (ø)
:arrow_up:

azure-mgmt-cdn/azure/mgmt/cdn/models/__init__.py
100% <100%> (ø)
:arrow_up:

...id/models/iot_hub_device_deleted_event_data_py3.py
80% <100%> (ø)
:arrow_up:

...mt/cdn/models/check_name_availability_input_py3.py
100% <100%> (ø)

...e/mgmt/cdn/operations/resource_usage_operations.py
39.39% <100%> (ø)
:arrow_up:

...container_registry_image_deleted_event_data_py3.py
80% <100%> (ø)
:arrow_up:

.../container_registry_image_pushed_event_data_py3.py
80% <100%> (ø)
:arrow_up:

azure-eventgrid/azure/eventgrid/version.py
100% <100%> (ø)
:arrow_up:

...id/models/iot_hub_device_created_event_data_py3.py
80% <100%> (ø)
:arrow_up:

... and 1254 more

Continue to review full report at Codecov.

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

(message created by the CI based on PR content)


Access Data within a ListField

I'm trying to fetch data from a pre-established ldap database
The Object i'm currently fetching has a ListField element
I'm capable of preforming query to check if a value exists in the element (__contains)
However I'm when the Object is fetched the ListField is empty, how can i solve this
Below is my code for the object
class Group(ldapdb.models.Model):
    """
    Class for representing an LDAP user entry.
    """
    # LDAP meta-data
    base_dn = "ou=Group,dc=exmple,dc=org"
    object_classes = ['top', 'posixGroup']

    # top
    userid = fields.CharField(db_column='userid')

    # posixGroup
    cn = fields.CharField(db_column='cn')
    gidNumber = fields.IntegerField(db_column='gidNumber')

    # non object_classes fields
    displayname = fields.CharField(db_column='displayname')
    memberuids = fields.ListField(db_column='memberuid')`

def test(request):
    return HttpResponse(Group.objects.get(cn='Accounting').memberuids)`

Please tell us more informations like django version used and if the django node can bind ldap and fetch that attributes though ldapsearch utility (it could be a ACL filter).
ListField have methods to store and get that information if available

The django version used is 2.0.7.
Binding and fetching data worked just fine when it was tested.
When i tried to edit an object in code and saving changes after that, the changes are reflected correctly to the data base with no problems, however some values are indeed fetched as empty string when dealing with them directly in the django side even though querying over them with __contains option or equal option works fine when using the .filter option for the select query , currently i'm unable to further test things out since i'm incapable of accessing the server right now (company personal server) [currently off on weekend till sunday], and the ldif file of the data base that i exported is not being imported correctly to my local ldap server due to syntax issues that i'm trying to solve (don't have any experince when dealing directly with an ldap data base).

For this you have to check for Field Lookups related to ListFields,
try to read ldap.fields sources to get answers

I've fixed the problem
it appears that the ldif file that i was provided contained errors in the names for the data base columns
(errors such as upper case characters where replaced with lower case ones)

@BaraHashesh so the mistake was that you tried to fetch memberuids instead of memberUids? If that's the case, can you close the issue?
Thanks :)


Develop style

This PR is an attempt to bring the style of the source files a bit more in line with TEI.

extracts resolved abbreviations into gloss elements with an additional versionDate attribute
adds xml:lang attributes to desc, gloss, and remarks

Further adjustments to the XSLTs are needed.

Thanks for the reminder! Obviously I need to resolve those conflicts. And I'd like to have some feedback on the changes in the XSLTs from @kepper.
Or we split things into multiple PRs and keep this just for the changes in the sources.

Conflicts resolved.

Thanks everyone! Merged at MEI Developer Workshop 2022 in Berlin

Sorry, I had a question about this one: Given that xml:lang applies to all elements and their children, is it enough to just set it once on all the elements on the root element, and then only add/change it for those paragraphs where it is not in English?
https://www.oxygenxml.com/dita/1.3/specs/archSpec/base/xmllang.html
"The @xml:lang attribute applies to all attributes and content of the element where it is specified, unless it is overridden with @xml:lang on another element within that content."

Well you could do that, but then it applies also to every specified element name and attribute value. But values like "adlib" and "sprech" are not English. Do we want to specify the language of every value? Also I think that it is not possible to 'reset' the language.

But not every term within the paragraphs are English either -- It's music; half the terms are probably Italian! 😄 I think the main point is that the guidelines are written in English.
It is possible to "reset":
<?xml version="1.0" encoding="utf-8" ?>
<doc xml:lang="en">
 <list title="Titre en français" xml:lang="fr">

Texte en français.

Texte en québécquois.

Second text in English.

 </list>

Text in English.

</doc>

From: https://www.opentag.com/xfaq_lang.htm


Node ports doesn't seem to work

After exposing the service and opening the port in openstack, the nginx instance cannot be reached from the outside world.

Closed by #4


Node.js v15 and Python 3.9 image

Add support for node.js v15 to discord.js egg, and python 3.9 to discord.py egg.

Python 3.9 image already exists and is within this repository. You can also find it on quay from where you can add it to your egg

Resolved in #84 and https://github.com/parkervcp/eggs/pull/1212


Are there any reasons why enum values can't contain spaces?

Hi there! :wave:
I get this error when trying to generate assets for fields with Enum value containing space.

Possible cause, this line here.
Any reasons why I can't have space for Enum values?

Hey @theterminalguy 👋
No real reason. We can support this (and also #1961). I'll try to send a patch soon and will tag you. Thanks

Thank you


TypeError: Bind must be called on a function

Do you want to request a feature or report a bug?
Bug
What's the current behavior?
Unfortunately I am not able to reproduce this because I do not know what the user was doing at the time that they caused this error to occur.
We received the following error and stack trace through our error monitoring tool:
TypeError: Bind must be called on a function
File (native) line (unknown) in bind
File webpack:///./~/react-big-calendar/~/dom-helpers/query/querySelectorAll.js line 9 col 1 in Object.<anonymous>
  var toArray = Function.prototype.bind.call(Function.prototype.call, [].slice);
File webpack:///webpack/bootstrap 2c6af6a309eca3e1a9e0 line 52 col 1 in __webpack_require__
  modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
File webpack:///./~/react-big-calendar/lib/DateContentRow.js line 20 col 1 in Object.<anonymous>
  var _querySelectorAll = _interopRequireDefault(require("dom-helpers/query/querySelectorAll"));
File webpack:///webpack/bootstrap 2c6af6a309eca3e1a9e0 line 52 col 1 in __webpack_require__
  modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
File webpack:///./~/react-big-calendar/lib/Month.js line 40 col 1 in Object.<anonymous>
  var _DateContentRow = _interopRequireDefault(require("./DateContentRow"));
File webpack:///webpack/bootstrap 2c6af6a309eca3e1a9e0 line 52 col 1 in __webpack_require__
  modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
File webpack:///./~/react-big-calendar/lib/Views.js line 10 col 1 in Object.<anonymous>
  var _Month = _interopRequireDefault(require("./Month"));
File webpack:///webpack/bootstrap 2c6af6a309eca3e1a9e0 line 52 col 1 in __webpack_require__
  modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
File webpack:///./~/react-big-calendar/lib/utils/move.js line 14 col 1 in Object.<anonymous>
  var _Views = _interopRequireDefault(require("../Views"));

What's the expected behavior?
There should be no error.
I looked at where this library calls .bind and didn't see anything that immediately stood out.

I continue to receive error reports from our monitor about this issue. Are there any thoughts about it?

seems like some user's environment is very old or unusual? I've not seen this before but looks like it's specific to some browser and version where Function.prototype.call, isn't considered a function

Rollbar (our error reporter) shows me that all the errors on on Chrome 73+ on a Windows machine, coming from a few different users. It's possible that it's misreporting the browsers, but I can't think of any environment where Array.prototype.slice, Function.prototype.bind, or Function.prototype.call wouldn't be a function. Our customers are government users and their contractors, so while they might be using old software, there aren't using anything arcane.
I'll keep digging to see if I can find more information, though I'm somewhat stumped at this point.

The only other guess is they've got some plugin/extension or similar from their employer that is messing with their browers global environment?

Possible, though I've seen the error from users of two different governments so I'm not sure.

Happy to remove the overly clever line in dom-helpers if would fix it. If you want to send over a PR there


Ability to specify a transform stream in the options

Hi,
It would be awesome to be able to specify one or several transform streams int the options, in order to be able to intercept data before it is sent on the network. A typical use case would be to transcode data on-the-fly, taking advantage of your builtin server.
Here is pseudo code to illustrate:
/** User land */

var transcoder = new TranscoderStream()
peerflix(torrent.info, {
  transform: [transcoder]
})

/** Peerflix land */

// ...
var streams = opts.transfoms.slice(0)
streams.unshift(file.createReadStream())
streams.push(response)

pump.apply(null, streams)
// ...

This could help Popcorn Time to resolve this issue quite easily: https://git.popcorntime.io/popcorntime/desktop/issues/475.

@ngryman, why not use torrent-stream directly? Why does this need to go into peerflix?

@asapach From what I understand, torrent-stream only gives access to a file stream with file.createReadStream(). So if I want to transform the stream I just have to pipe it. My request doesn't make any sense in this project.
However peerflix offers a builtin server which I would like to use. The current problem is I have no way to access data outside of peerflix. It's a black box that directly pipes torrent-stream's stream to a server response. I would like to be able to apply modifications on this data before it is sent on the wire.
For example, Popcorn Time takes advantage of peerflix's server. If they need to transcode some videos, they'll have to switch to torrent-stream and build their own server. Being able to specify transform streams would ease such evolutions with a minimal effort.
This is a classic pattern for stream based projects. browserify uses this pattern extensively.

If they need to transcode some videos, they'll have to switch to torrent-stream and build their own server.

Writing a streaming http server takes 10 lines of code (I know because I wrote one).

@asapach If so why peerflix is 210 LOC? :)
What about DLNA, range, CORS, ...? What about future features / protocols / enhancements / fixes related to a streaming server? As a user, why would I rewrite a piece of code that works perfectly and was written by way more competent people? I don't want to :)

@ngryman I also would be interested in a way to transcode to a different format before hitting the wire. Please let me know if you found a way to do this.

@monst6 I don't remember exactly, but I think I ended up forking peerflix and using my patched version (which is provided above).


duplicate pointer variable

inline 94 you were creating a pointer variable as cube, and in line 95, also you were trying to pass the address of md, (pointer to pointer?) to Decode,
so as a best practice I think creates a variable and passes the reference of it, is cleaner and not redundant.
I didn't do scape analyses, but also you didn't need the  'md' variable to scape to heap

Hey thanks, that actually looks like I made a typo there. You are absolutely correct, no need at all for the double pointer.


dedicated landing page for the project

I'm suggesting a dedicated landing page for the project.
Which is optimized for google to see, this is to separate the documentation from the site.

I will tie this with #36 thanks.


GraphError Improvements

Closes #312
Simplify GraphError by using thiserror and remove NoneErrror handling so errors can be stable compatible.

@sreeise, while wrapping up some of these I saw that in graph-http::iotools the copy fn uses a few expect/unwraps that need some added GraphFailure variants. That led me to scan the repo for more, of which there are a few.

How do you feel about adding some more specialized error types? E.g. an error for joining the file copying thread should only ever get returned from IoTools::copy (which could probably just be a function instead of a method), which is only ever called by BlockingDownload. So a BlockingDownloadError could capture that error in one variant and GraphFailure in another, so that consumers of other functions wouldn't need to handle the irrelevant error case. There is more of the same in some other client methods.
I also noticed during this scan that GraphError and GraphResponse use a u16 instead of http::StatusCode (and GraphError re-implements some of the error messages already there. Just passing the StatusCode directly could simplify some things, if you're ok with that.

Looks good. Currently working on another branch that will fix the build errors in the test pipeline. When that branch is merged then the tests can be rerun on your PR and as the tests are good, I will merge it into master.

Specialized error types would be great, but not necessary in this PR unless you really want to do it.
Using StatusCode makes sense to me. So, as long as your up for doing it, then yeah im on board.

Yeah, I'll take a stab at some of those changes and let you know what I come up with!

Yeah, I'll take a stab at some of those changes and let you know what I come up with!

Also, I typically use rustfmt for formatting and clippy for static analysis before merging to master. If its possible, could you run cargo fmt to format and fix clippy lints that may have arrived from your changes by running cargo clippy. If there are lints that need to be fixed that are not part of your changes then that is my fault, you can leave those and I will go back and fix them.

The tests are only failing because they can't access the Action secrets needed for calling the graph API. But they do pass when I run them.

I usually write in vscode with rustfmt and clippy on-save, so they should be pretty close. Running a cargo +nightly fmt creates a ton of changes due to import rearranging, so I thought I'd ask if you want those before committing? I'd assume so, since it should conform to the rustfmt.toml that you have in the repo (and +nightly since imports_granularity requires it).

I usually write in vscode with rustfmt and clippy on-save, so they should be pretty close. Running a cargo +nightly fmt creates a ton of changes due to import rearranging, so I thought I'd ask if you want those before committing? I'd assume so, since it should conform to the rustfmt.toml that you have in the repo (and +nightly since imports_granularity requires it).

Is imports_granularity not on stable? Maybe I misread, if its not on stable then it can just be removed.

@ecclarke42 Removed the unstable parts in rustfmt as well as the feature attributes. Master is now using stable rust. Thanks for all the help. I will put an updated version on crates.io soon.


Add confirmation page

When Candidate hits the "Send Application" button on the Review page:
- Confirmation page will show application reference number
- application.status will change from "draft" to "applied"
- Candidate cannot change the information on their application anymore

Send email notification to Candidate that they've submitted their Application
Run Post Qualification Experience checks to see if the Application needs to be flagged for not passing certain checks

Claire - I confirm that they cannot change information in the application after their application is submitted.

The remaining tasks listed in this issue are covered by admin#250 therefore closing this issue


Introduce StringValue to represent ballerina string

completes #19769

This is a thin slice MVP.
Contains a unit test that has string concat using new StringValue.
System prop is used to switch on this behaviour not to break other code.

Codecov Report

Merging #19942 into master will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff           @@
##           master   #19942   +/-   ##
=======================================
  Coverage    19.9%    19.9%
=======================================
  Files          55       55
  Lines        1437     1437
  Branches      218      218
=======================================
  Hits          286      286
  Misses       1138     1138
  Partials       13       13

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 79b351f...631e300. Read the comment docs.


autoresume is reset on starting blockify-ui

I have defined autoresume = True in blockify.ini
When I load blockify-ui, it starts with Autoresume ticked, but quickly unticks it, and it remains unticked.

Hey,
thanks, that's a regression. I'll fix it soon.
Regards

Should be fixed. Let me know if it isn't.


Captum Refactoring

Refactoring of Code to make it as Interpretation than Callback

I have refactored the code. But I havent changed the Notebook name or default_exp as I am not exactly sure which one is appropriate. Kindly review and change them as appropriate. Let know if you find any other issue as well.

There is no need to change the notebook name or module (ultimately it will be in a separate extension like tensorboard, wandb, neptune or medical since it adds a new dependency).
This is looking cleaner and better, thanks! two remarks:

I think you misspelled gauss to guass
Remember to commit cleaned notebooks in your PRs buy running nbdev_install_git_hooks in the repo after cloning it.

Have made the typo changes and ran nbdev_install_git_hooks

Thanks!


Multi-platform FTP Client

Old version of CV Drone can get "version.txt" from AR.Drone, why not the latest one can do it ?
TODO：

Implement FTP client
Get "version.txt" from port 5551 of AR.Drone.
Confirm it runs on Win/Mac/Linux.

REQUIREMENTS:

Knowledge of FTP
Beautiful codes
Your enthusiasm

I would appreciate if you contribute to CV Drone.
Regards,
puku0x

hello I have the same problem
ERROR: connect() failed. (../../src/ardrone/tcp.cpp, 76)
TCPSocket::open(port=5551) failed. (../../src/ardrone/version.cpp, 42)
Failed to initialize.
how to solve this problem?

Hi, thank you for your report.
Are your drone and your PC connected to the same network ?

Yes I wanna conect my drone to my pc but the eror like that.. And i try to
connect my drone to other pc,but the problem is same..
Regards,
Yunni Muharani
Mobile : +6281904043349
On 12 May 2017 19:52, "puku0x"<EMAIL_ADDRESS>wrote:

Hi, thank you for your report.
Are your drone and your PC connected to the same network ?
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
https://github.com/puku0x/cvdrone/issues/7#issuecomment-301068310, or mute
the thread
https://github.com/notifications/unsubscribe-auth/AT8NIvVyPDpDRx-PQpyim3a8BqfqqARZks5r5FYfgaJpZM4A7jmp
.


Issue with bulk adding to lists- leaves out half the users.

The bulk-add users to lists function leaves out half the names I put in usually and can only handle a few names at a time. I usually have to add 30 and then come back like 10 minutes later to add more. It also caps users you can add ~ 150 which was something the old tweetdeck also did but for this extension even if I try adding on a different list with a different account it still will return an error message, even though it's not the same account, which before I was capped at 150 per account. Would love a fix for this!

I tried to bulk-add 20 people and all of them got added fine, it all relies on Twitter's API and there's nothing to be done if there's a bug with their API
I didn't really understand what do you mean with second issue about 150 cap

Yeah it works fine for like the first 30 users then starts bugging :( 150 cap = stops adding people after 150 users. That is Twitter's api though just the issue with this is if I try to switch accounts it still won't let me add.

This problem was happening since before Twitter acquisition


Do not complete corrent folder

Current folder name always appear when press Tab after bd, however, this is a useless complementation. In this pull request, only legal candidate will be suggested.

@0rax Thanks for your comments. That will be more concise. I have amended the commit as your suggestion.
In addition, I also recommend to hide the output of pwd and echo "$newpwd", because most of the fish prompt have been able to show the path.


Add multi search feature

The Elasticsearch Multi Search API can be used to issue multiple search queries at a time.

@pyromaniac Any objections to this?

Well, no. I just need to fix the CI

This PR was rebased by https://github.com/toptal/chewy/pull/751 and will be added once we have support for Elasticsearch 6.x


Redesign: no selection "panel"

Context

Summary

Relevant Technical Choices

To-do

User-facing changes
Adjusts the text typography in the no-selection panel.

Testing Instructions

Open a story, unselect all elements
Verify the text in the panel looks as in Figma.

QA

[ ] This is a non-user-facing change and requires no QA

This PR can be tested by following these steps:

UAT

[x] UAT should use the same steps as above.

This PR can be tested by following these steps:

Checklist

[x] This PR addresses an existing issue and I have linked this PR to it in ZenHub
[x] I have tested this code to the best of my abilities
[ ] I have verified accessibility to the best of my abilities (docs)
[ ] I have verified i18n and l10n (translation, right-to-left layout) to the best of my abilities
[ ] This PR contains automated tests (unit, integration, and/or e2e) to verify the code works as intended (docs)
[x] I have added documentation where necessary
[x] I have added a matching Type: XYZ label to the PR

Fixes #6460

@barklund -- this was reworked for the vertical centering -- removed the noSelection as a panel. PTAL.


Testing the observers

Hi, I would like to test observers, based on the different results my UseCase may return. For example https://github.com/android10/Android-CleanArchitecture/blob/master/presentation/src/main/java/com/fernandocejas/android10/sample/presentation/presenter/UserListPresenter.java
In this case, onComplete(), onError() and onNext() are not tested. I'd like to be able to write a test named "testUserListObserverOnError" and make sure hideViewLoading(), showErrorMessage(), showViewRetry() are called.
I haven't managed to do that since the Observer class is a private inner class. I can not mock it. How would you go about testing this?

I recommend you this links:

http://fedepaol.github.io/blog/2015/09/13/testing-rxjava-observables-subscriptions/
https://labs.ribot.co.uk/unit-testing-rxjava-6e9540d4a329#.2o1c29gjj

I hope they're helpful

@urizev Thanks for the links, however, they don't explain how to test what the Observer do. In the example I mentioned above, how would you test that the onError() calls some methods on the view?

You have some information ?
Maybe see something like a TestRule  implementation overriding a TestRule class with theses methods :
public class RxSchedulersOverrideRule implements TestRule {

  @Override public Statement apply(final Statement base, Description d) {
    return new Statement() {
      @Override public void evaluate() throws Throwable {
        RxJavaPlugins.setIoSchedulerHandler(new Function<Scheduler, Scheduler>() {
          @Override public Scheduler apply(Scheduler scheduler) throws Exception {
            return Schedulers.trampoline();
          }
        });

        RxJavaPlugins.setComputationSchedulerHandler(new Function<Scheduler, Scheduler>() {
          @Override public Scheduler apply(Scheduler scheduler) throws Exception {
            return Schedulers.trampoline();
          }
        });

        RxJavaPlugins.setNewThreadSchedulerHandler(new Function<Scheduler, Scheduler>() {
          @Override public Scheduler apply(Scheduler scheduler) throws Exception {
            return Schedulers.trampoline();
          }
        });

        RxAndroidPlugins.setInitMainThreadSchedulerHandler(
            new Function<Callable<Scheduler>, Scheduler>() {
              @Override public Scheduler apply(Callable<Scheduler> schedulerCallable)
                  throws Exception {
                return Schedulers.trampoline();
              }
            });

        base.evaluate();
        RxJavaPlugins.reset();
        RxAndroidPlugins.reset();
      }
    };
  }
}

And use this class in presenter test :
@RunWith(MockitoJUnitRunner.class) public class PresenterTest extends TestWithRxSchedulersOverrideRule
But nothing works ...
(see :
<EMAIL_ADDRESS>https://medium.com/@fabioCollini/testing-asynchronous-rxjava-code-using-mockito-8ad831a16877
)
need help ;)

First of all you need to understand that rule statement will be called after "before" method. I think you have to call trigger RxAndroidPlugins & RxJavaPlugins above in the static initializer of unit test class (static {...}) or static method annotated with BeforeClass.

In fact, i've already worked with this type of Android architecture (in a work project), but we used RxJava 1.X and when we called a presenter we didn't have a "use case", we called a presenter method like that :
@Override public void loadData() {
    compositeSubscription.add(dataService.getData()
        .map(new Func1<List<DataEntity>, DataViewModel>() {
          @Override public DataViewModelcall(List<DataEntity> dataEntities) {
            return dataEntitiesToDataViewModelMapper.transform(dataEntities);
          }
        })
        .subscribeOn(Schedulers.io())//
        .observeOn(AndroidSchedulers.mainThread())
        .subscribe(new Subscriber<DataViewModel>() {
          @Override public void onCompleted() {
            //Do Nothing
          }

          @Override public void onError(Throwable e) {
            view.displayDialogError();
            Timber.e(e, e.getMessage());
          }

          @Override public void onNext(DataViewModel dataViewModel) {
            view.populate(dataViewModel);
          }
        }));
  }
}

And in the unit test, we used the rule that I wrote before (with Rx Java 1 specifications) :
@RunWith(MockitoJUnitRunner.class) public class DataPresenterTest extends TestWithRxSchedulersOverrideRule {
  @Mock DataService dataService;
  @Mock DataEntitiesToDataViewModelMapper dataEntitiesToDataViewModelMapper;
  @Mock DataView view;
  private DataPresenter dataPresenter ;

  @Before public void setUp() throws Exception {
    dataPresenter = new DataPresenter (dataService, dataEntitiesToDataViewModelMapper);
    dataPresenter .attachView(view);
  }

  @After public void tearDown() throws Exception {
    dataPresenter .destroy();
  }

  /***********************************************************************************************/

  @Test public void should_loadAllInfrapole() throws Exception {
    List<DataEntity> dataEntities= new ArrayList<>();
    DataViewModel dataViewModel= new DataViewModel();
    when(dataService.getData()).thenReturn(Observable.just(dataEntities));
    when(dataEntitiesToDataViewModelMapper.transform(dataEntities)).thenReturn(dataViewModel);
    dataPresenter .loadData();

     /// Verification in OnNext method
    verify(view).populate(dataViewModel);
    verify(view, never()).displayDialogError();
  }
}

Here, when I try my solution or yours (called in @BeforeClass all RxAndroidPlugins.setInitMainThreadSchedulerHandler and cie), I always have  the error :
Wanted but not invoked:  view.myMethod();
Like if we don't have access to OnNext or OnError method...

@quanturium @Bukoow
Let me share a solution which I usually use in such case.
For example, we have a screen with list of articles. To fetch articles we have an use case GetArticlesUseCase:
public class GetArticlesUseCase extends UseCase<List<Article>> {

    private final Repository repository;

    @Inject
    GetArticlesUseCase(Repository repository) {
        this.repository = repository;
    }

    @Override
    Observable<List<Article>> buildUseCaseObservable() {
        return repository.getArticles();
    }
}

That's our presenter:
public class ArticlesPresenter implements Presenter {

    private final GetArticlesUseCase getArticlesUseCase;

    @Inject
    ArticlesPresenter(GetArticlesUseCase getArticlesUseCase) {
        this.getArticlesUseCase = getArticlesUseCase;
    }

    ...

    public void loadArticles() {
        getArticlesUseCase.execute(new ArticlesObserver<List<Article>>());
    }

    ....

    private final class ArticlesObserver extends DefaultObserver<List<Article>> {

        @Override
        public void onComplete() {
            ArticlesPresenter.this.hideLoading();
        }

        @Override
        public void onError(Throwable error) {
            ArticlesPresenter.this.hideLoading();
            ArticlesPresenter.this.showError(error);
        }

        @Override
        public void onNext(List<Article> articles) {
            ArticlesPresenter.this.showArticles(articles);
        }
    }
}

Then how we can test that a particular methods will be called from observer callbacks:
public class ArticlesPresenterTest {

    @Mock private ArticlesView articlesView;
    @Mock private GetArticlesUseCase getArticlesUseCase;

    // this is our savior
    @Captor private ArgumentCaptor<DefaultObserver<List<Article>>> articlesObserverCaptor;

    @InjectMocks private ArticlesPresenter articlesPresenter;

    ...

    @Test
    public void loadArticles_showArticlesOnNoError() {
          articlesPresenter.loadArticles();

          verify(getArticlesUseCase).execute(articlesObserverCaptor);

          // articlesList is a stubbed List<Article> which you want to use for verifying
          articlesObserverCaptor.getValue().onNext(articlesList);

          verify(articlesView).showArticles(eq(articlesList));
          verify(articlesList).hideLoading();
    }

    @Test
    public void loadArticles_showErrorMessageOnError() {
          articlesPresenter.loadArticles();

          verify(getArticlesUseCase).execute(articlesObserverCaptor);

          // exception is any Throwable which you want to use for verifying
          articlesObserverCaptor.getValue().onError(exception);

          verify(articlesView).hideLoading();
          verify(articlesView).showError(eq(exception));
    }

    ...

}

After that observer callback methods will be marked as covered by tests.
You can find such approach in the popular android architecture blueprints repository. For example, TasksPresenter and TasksPresenterTest.

Thanks @epetrenko. You're awesome!


Unexpected error comes out when everything is ok (related to jsx-indet)

This is ok and no error comes out.
    return (

        I'm {this.state.name}

    )

when I add any character after this like:
    return (

        I'm {this.state.name} any string here

    )

and the error comes out:
Expected indentation of 8 space characters but found 1. (react/jsx-indent)

my eslint config :
module.exports = {
  root: true,
  parser: 'babel-eslint',
  parserOptions: {
    sourceType: 'module',
    ecmaFeatures: {
      jsx: true
    }
  },
  env: {
    es6: true,
    commonjs: true,
    browser: true,
  },
  extends: [
      'standard',
      'standard-react'
  ],
  plugins: [
    'react',
    'babel',
    'promise'
  ],
  'rules': {
    'arrow-parens': 0,
    'generator-star-spacing': 0,
    'no-debugger': process.env.NODE_ENV === 'production' ? 2 : 0
  }
}

Is it a bug or something wrong with my config?

Same for me, failing e.g. on the following line:
<Time fromNumber={this.state.value}/> <Translate for="shortHours"/>
Not sure from which version it start happening.

The version I used: ^6.10.2

Yep, seems to be counting the first group of space after a react element. (6.10.2)
<Icon name="tasks" fixedWidth /> Create Order

Gives 1
<Icon name="tasks" fixedWidth />   Create Order

Gives 3
<Icon name="tasks" fixedWidth />Create Order

Gives 0

Temporary fix: use a fixed version until the bug is fixed. 6.10.0 works fine

@megapctr it is not working for me

I have 6.10.2 version and it doesn't work

            <Rating rating={rating} />
            ( {reviews} )

Expected indentation of 12 space characters but found 1  react/jsx-indent

This is a duplicate of #1117 - thanks for the extra test cases!


feat(opendataset): add beizer_point_types for BDD100K Polyline2D label

Pull Request Test Coverage Report for Build<PHONE_NUMBER>

0 of 0   changed or added relevant lines in 0 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage remained the same at 83.391%

Totals

Change from base Build<PHONE_NUMBER>:
0.0%

Covered Lines:
5563

Relevant Lines:
6671

💛  - Coveralls


fix/ Fix account balance not reflect correctly + Improve websocket connection

Before submitting this PR, please make sure:

[x] Your code builds clean without any errors or warnings
[x] You are using approved title ("feat/", "fix/", "docs/", "refactor/")

A description of the changes proposed in the pull request:
Fixed:

Account balance in status not updated (https://github.com/hummingbot/gateway/pull/128#issuecomment-1810831230)
Websocket connection to XRPL RCP node not stable for long time bot running

Tests performed by the developer:

Run PMM for SOLO/XRP on Ripple DEX mainnet for 1 hour, no major error. Made 5 trades, all trades and order fills are tracked correctly.
Link to the market: https://sologenic.org/trade?network=mainnet&market=534F4C4F00000000000000000000000000000000%2BrsoLo2S1kiGeCcn6hCUXVrCpGMWLrRrLZz%2FXRP

Tips for QA testing:

You would need an activated ripple account to trade on Ripple mainnet DEX
This PR has a counterpart in client: https://github.com/hummingbot/hummingbot/pull/6708

Merged to development and part of release version 1.23.0


Add support for dropping a selection of nodes and transitions, not  just a single node

For now, this will remain blocked on https://github.com/webgme/webgme/issues/1537


Demangler: handle suffixes in the form '.'.

Demangle such suffixes as "unmangled suffix"
IRGen still uses '.' to disambiguate partial apply thunks and outlined copy functions.
*) Explanation: This enables demangling of symbol name which have a '.' suffix
*) Scope: Such functions can appear in the lldb backtrace and will now be correctly demangled.
*) Radar: rdar://problem/32934962
*) Risk: Low. It's an extension to the demangler and does not affect the compiler
*) Testing: There is a swift-ci test

@swift-ci Please test

LGTM!


Add color for tree.indentGuidesStroke

In the upcoming release, VS Code will add indentation guides in File Explorer. See https://github.com/microsoft/vscode/issues/17777 for details.
A new key tree.indentGuidesStroke will be added. It doesn't look nice in Nord yet:

So I tried
{
  "workbench.colorCustomizations": {
    "[Nord]": {
      "tree.indentGuidesStroke": "#EBCB8B"
    }
  }
}

Please consider adding a color for tree.indentGuidesStroke. Thanks!

Hi @octref :wave:, thanks for your contribution :+1:
Of course the new key will be added, but I guess it makes sense to use the same colors like for the editorIndentGuide.background (nord2 with 70% opacity) and editorIndentGuide.activeBackground (nord3)  keys.
Also the idea of having a tool to check for missing rules is awesome :100:
I've commented in the issue you've opened to add some positive arguments for such a nice idea :smile:

The issue I see with nord3 is that on hover, VS Code will take a dimmed color of the key, and nord3 is a bit too low contrast...

I hope a sensible default can be chosen for Nord, but I'll still likely use the color for open folder https://raw.githubusercontent.com/ayu-theme/vscode-ayu/master/icons/folder_opened_dark%402x.png so it's consistent with the icon colors.

Also the idea of having a tool to check for missing rules is awesome 💯
I've commented in the issue you've opened to add some positive arguments for such a nice idea 😄

I didn't see the comment 😅Maybe you forgot to post?

Oh the nord3 contrast for small areas might be a problem (again 😄), but I guess the new comment color from #117 / #118 could fit. Using the same color like icons might be a problem since almost every (icon) theme comes with different styles and often allows the user to define custom colors, e.g. I use the Material Icon Theme with custom Nord colors through the material-icon-theme.folders.color setting key.
I started to write the comment in the other ticket, but had to leave for work earlier and saved as draft. Should be visible now :D

🚢 Shipped with extension release version 🏷 0.11.0.


Material design - the ripple effect is too slow on real devices - tested on Nexus 10, Nexus 5

Please submit an issue through this form, this is not caused by the conference app: http://ionicframework.com/submit-issue/


Chrome-only scrollIntoView bug with MatSideNav/MatDrawer

Bug, feature request, or proposal:
There is a Chrome-only bug related to scrollIntoView() that causes drawer content to display even though it's closed and break the layout. The user can fix the layout by opening and closing the drawer again.
This is probably a Chrome bug, but I'm reporting it here because it is likely to affect @angular/material users and I'm not sure how to reproduce it without using material components.
What is the expected behavior?
Using scrollIntoView() should not cause closed drawer content to display.
What is the current behavior?
I have a layout with a app level MatSideNav and a MatDrawer within it. (not 100% sure if child MatDrawer necessary to trigger bug)
The MatSidenav has content (width) and is closed.
When I call scrollIntoView() on an element within the center <mat-drawer-content>, both MatDrawer content and MatSidenav content are half displayed.
What are the steps to reproduce?
Providing a StackBlitz reproduction is the best way to share your issue.
StackBlitz starter: https://goo.gl/wwnhMV
I will try to reproduce this when I have time.
What is the use-case or motivation for changing an existing behavior?
Which versions of Angular, Material, OS, TypeScript, browsers are affected?
Angular CLI: 1.6.5
Node: 8.9.4
OS: linux x64
Angular: 5.2.3
... animations, common, compiler, compiler-cli, core, forms
... http, language-service, platform-browser
... platform-browser-dynamic, router

@angular/cdk: 5.1.1
@angular/cli: 1.6.5
@angular/flex-layout: 2.0.0-beta.12
@angular/material-moment-adapter: 5.1.1
@angular/material: 5.1.1
@angular-devkit/build-optimizer: 0.0.41
@angular-devkit/core: 0.0.28
@angular-devkit/schematics: 0.0.51
@ngtools/json-schema: 1.1.0
@ngtools/webpack: 1.9.5
@schematics/angular: 0.1.16
typescript: 2.5.3
webpack: 3.10.0

Is there anything else we should know?
Developers can work around this by not displaying sidenav/drawer content when it's closed  *ngIf="mySideNav.opened"
When a drawer is closed, it has visibility: hidden;, I think display: none; would avoid this bug.
I think this is low-priority because the work around isn't difficult, but I wanted to document this bug.

Could you provide a stackblitz demo (minimal reproduction)?

I am experiencing this problem presently with Material 6.4.1 on Chrome. If I have time, I'll work on a stackblitz reproduction.


[SPARK-19281][FOLLOWUP][ML] Minor fix for PySpark FPGrowth.

What changes were proposed in this pull request?
Follow-up for #17218, some minor fix for PySpark FPGrowth.
How was this patch tested?
Existing UT.

Test build #77303 has started for PR 18089 at commit 36ab5a5.

Test build #77303 has finished for PR 18089 at commit 36ab5a5.

This patch passes all tests.
This patch merges cleanly.
This patch adds the following public classes (experimental):
class HasMinSupport(Params):
class HasMinConfidence(Params):

Test PASSed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/77303/
Test PASSed.

Merged build finished. Test PASSed.

Thanks @yanboliang

Merged into master and branch-2.2. Thanks for reviewing.


Support J-Link debugger for RaspberryPi Pico

This issue derives from #45137.
@MeisterBob provided a short code to support the J-Link debugger.
https://github.com/zephyrproject-rtos/zephyr/issues/45137#issuecomment-1182826277
I think it is good to add after #45137 is merged.

But I don't have J-Link debugger, I can't verify it is working. :-(


Build Fail - Could not resolve "Stripe"

Bug report
Describe the bug
Fresh install using steps in README.
Tried to convert the require to ES6 import.
No matter what, on build I get a build failure with src/index.js:1:23: ERROR: Could not resolve "stripe"
A clear and concise description of what the bug is.
Cannot build after generating project
To Reproduce
Follow instructions in README

Run generate command
Add [vars]
Run wrangler dev or wrangler publish
Experience build failure

Expected behavior
Not fail the build
Screenshots

System information

OS: Mac Monterey
Server environment Tested with Node 16 and Node 18

Closing, running npm install fixed it.


Added support for tolerations and affinities (#1055)

Checklist

[x] The title of the PR is clear and informative
[x] If applicable, the changes made in the PR have proper test coverage
[x] Issues addressed by the PR are mentioned in the description followed by Fixes.

Description
This closes #1055 adding support to set the affinity and the tolerations of the deployment. This PR also group nodeSelector value with toleration and affinity under agic value group.

Fixes
#1055

Would it make sense to group these under existing kubernetes key instead of agic?
This is a breaking change for nodeSelector. We should support both nodeSelector and kubernetes.nodeSelector.

Yes,
You are right, this values could be better under kubernetes. I will prepare the changes now.
I will also add support for both nodeSelector


Cannot call  Series.min() or mean()

For some reason I cannot call min(), mean() on a Series but I can call max() and mode(). See code below ( from the get started example) https://danfo.jsdata.org/api-reference/series/series.min
Danfo.js version<EMAIL_ADDRESS>data2 = [1,2,3,4,5,6,8]
sf2 = new dfd.Series(data2)
console.log(sf2.values)

I am using Danfo Notebook and this is the error message
TypeError: o.incRef is not a function

using the Dnotebook ibwas not able to reproduce the error.
Did you load this version of danfojs using load_package in the notebook

Yes I loaded the package
load_package(["https://cdn.jsdelivr.net/npm/@tensorflow/tfjs@latest","https://cdnjs.cloudflare.com/ajax/libs/mathjs/7.5.0/math.min.js",
<EMAIL_ADDRESS>

ok. now I'm getting same error.
the issue is from the tensorflow latest. Danfo.js is using the tensor  operation from tensorflow.
Try removing the tensorflow/tjs@latest. This fix the error

Closing this issue as this fixed the error.
Lastly, is there any plan to integrate with math.js just as pandas integrates with NumPy?


Organization support

This adds the Organization Name to the end of the Board name so that when you have duplicate boards in different organizations it is clear which one you are putting the card on.

Resubmitting now that the main brainch is up to date


error in get webcame data

Hi, haixuanTao. i encountered a problem when i tried to follow the tutorial in the webcam_plot.
https://dora.carsmos.ai/docs/guides/getting-started/webcam_plot
here is the Dora command:
dora start dataflow_webcam.yml --attach --hot-reload --name webcam
and the terminator return the error messages:

3f45130a-a522-48c6-a89e-822dfa18d840
dataflow failed: errors occurred in dataflow 3f45130a-a522-48c6-a89e-822dfa18d840:
- machine ``:
    some nodes failed:
      - plot:
        3f45130a-a522-48c6-a89e-822dfa18d840/plot failed with exit code 1.

        Check logs using: dora logs 3f45130a-a522-48c6-a89e-822dfa18d840 plot

      - web_cam:
        3f45130a-a522-48c6-a89e-822dfa18d840/web_cam failed with exit code 1.

        Check logs using: dora logs 3f45130a-a522-48c6-a89e-822dfa18d840 web_cam

    Location:
        /home/runner/work/dora/dora/binaries/coordinator/src/listener.rs:91:56

the dataflow_webcam.yml file is :

nodes:
  - id: web_cam
    operator:
      python: op_webcam/webcam.py
      inputs:
        tick: dora/timer/millis/100
      outputs:
        - image
  - id: plot
    operator:
      python: op_webcam/plot.py
      inputs:
        image: web_cam/image

I confused about the error because when I use the python code to show the camera is ok,here is the python code:
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import cv2
capture = cv2.VideoCapture(0)
while(True):
    ret, frame = capture.read()
    cv2.imshow('frame', frame)
    if cv2.waitKey(1) == ord('q'):
        break

The log information is :
dora logs c2979efc-ac20-457b-870a-f027e9151cea webcam
Traceback (most recent call last):
  File "<string>", line 1, in <module>
RuntimeError: Dora Runtime raised an error.

Caused by:
   0: main task failed
   1: failed to init an operator
   2: failed to init python operator
   3: SyntaxError: invalid syntax (webcam.py, line 37)

Location:
    binaries/runtime/src/operator/python.rs:30:9

Can you share you're webcam.py file?

The webcam.py is download with the commands
wget https://raw.githubusercontent.com/dora-rs/dora/main/examples/python-operator-dataflow/webcam.py
wget https://raw.githubusercontent.com/dora-rs/dora/main/examples/python-operator-dataflow/plot.py
wget https://raw.githubusercontent.com/dora-rs/dora/main/examples/python-operator-dataflow/utils.py

I check the opencv_version, and the terminator output:
4.5.5

I see. We're using match that has been introduced in python 3.10. Would it be possible to use python 3.10? Otherwise you can replace this match statement with an if-else statement.

Thanks for your patience, when I use the "python3 --version" to check the python version,  the terminator outputs "Python 3.8.10". So, I am not sure if the python3 version is not right.
And I replace the match with the if-else but the error still exists. Here is the webcam.py

#!/usr/bin/env python3
# -*- coding: utf-8 -*-

import time
from typing import Callable, Optional

import os
import cv2
import numpy as np
import pyarrow as pa

from dora import DoraStatus

CAMERA_WIDTH = 640
CAMERA_HEIGHT = 480
CAMERA_INDEX = int(os.getenv("CAMERA_INDEX", 0))

font = cv2.FONT_HERSHEY_SIMPLEX

class Operator:
    """
    Sending image from webcam to the dataflow
    """

    def __init__(self):
        self.video_capture = cv2.VideoCapture(CAMERA_INDEX)
        self.start_time = time.time()
        self.video_capture.set(cv2.CAP_PROP_FRAME_WIDTH, CAMERA_WIDTH)
        self.video_capture.set(cv2.CAP_PROP_FRAME_HEIGHT, CAMERA_HEIGHT)

    def on_event(
        self,
        dora_event: str,
        send_output: Callable[[str, bytes | pa.Array, Optional[dict]], None],
    ) -> DoraStatus:
        if (dora_event["type"] == "INPUT"):
                ret, frame = self.video_capture.read()
                if ret:
                    frame = cv2.resize(frame, (CAMERA_WIDTH, CAMERA_HEIGHT))

                ## Push an error image in case the camera is not available.
                else:
                    frame = np.zeros((CAMERA_HEIGHT, CAMERA_WIDTH, 3), dtype=np.uint8)
                    cv2.putText(
                        frame,
                        "No Webcam was found at index %d" % (CAMERA_INDEX),
                        (int(30), int(30)),
                        font,
                        0.75,
                        (255, 255, 255),
                        2,
                        1,
                    )

                send_output(
                    "image",
                    pa.array(frame.ravel()),
                    dora_event["metadata"],
                )
        elif (dora_event["type"] =="STOP"):
                print("received stop")
        else:
                print("received unexpected event:", other)

        if time.time() - self.start_time < 20:
            return DoraStatus.CONTINUE
        else:
            return DoraStatus.STOP

    def __del__(self):
        self.video_capture.release()

And the log info is :

I will remove type hinting and the match statement from the exemple for better legacy python support.
Thanks for raising the issue. Where you able to make the webcam run?

Thanks for your help,  this problem has solved with the
 send_output: Callable[[str, bytes | pa.Array, Optional[dict]], None],
    ) -> DoraStatus:

to be
 send_output: Callable[[str, bytes or pa.Array, Optional[dict]], None],
    ) -> DoraStatus:

also, the match is replaced with if-else .

But,I found that using dora webcam to plot the USB camera will cause obvious delay, but using opencv display does not.
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import cv2
capture = cv2.VideoCapture(0)
while(True):
    ret, frame = capture.read()
    cv2.imshow('frame', frame)
    if cv2.waitKey(1) == ord('q'):
        break

Have you ever encountered such a phenomenon?

So, you have to check your tick rate:
        tick: dora/timer/millis/100

You can change it to something like
        tick: dora/timer/millis/50

And you will have a smoother video stream normally.

Yes, it is work, Thank you very much.


Add detail to CachedFileInfo assertions for TestThermoRatio

changed assertions about serial number and sample id in TestThermoRatio to report expected and actual values when assertion fails

Yeah when I changed the expected value I got:
 Assert.AreEqual failed. Expected:<TQU004d90>. Actual:<TQU00490>. AssertEx.AreEqual failed, expected: TQU004d90 actual: TQU00490. That should be a start.


Account setup and recovery using SEP-30

https://stellarorg.atlassian.net/jira/software/c/projects/WAL/boards/37?selectedIssue=WAL-763
This mimics the Kotlin implementation for account recovery
I'll try adding more tests as it has only a few at the moment

on first glance looks good. I'll be able to review more in depth beginning of next week if others don't get to first
I think we should make sure we have tests (w/ mocked responses if needed) for the class methods though. eg deduceKey, replaceDeviceKey, createRecoverableWallet, getAccountInfo etc

@CassioMG Ah, sorry, I closed the original release/1.2.0 branch. Would you mind reopening this on release/1.3.0? Thanks!


[Bug]: Update the SmarTTY repository to use HTTPS.

Prerequisites

[X] I have written a descriptive issue title.
[X] I have searched all issues/PRs to ensure it has not already been reported or fixed.
[X] I have verified that I am using the latest version of Scoop and corresponding bucket.

Package Name
smartty
Expected/Current Behaviour
When I run scoop install smartty I get 400 errors. I tried modifying all URLs in smartty.json to HTTPS and then everything works fine.
Steps to Reproduce
1. Run scoop install extras/smartty
2. Scoop prints error with status code 400.
3. The error message is "URL http://sysprogs.com/getfile/1838/PortableSmarTTY-3.3.7z is not valid"

Possible Solution
Updating all URLs in smartty.json to HTTPS solve the issue.
Since the SmarTTY website has switched to HTTPS, I think all URLs in smartty.json should be updated to use HTTPS.
Scoop and Buckets Version
Current Scoop version:
v0.3.1 - Released at 2022-11-15

'extras' bucket:
5c60be9f3 (HEAD -> master, origin/master, origin/HEAD) okular: Update to version 23.08.0-1504

'java' bucket:
6001e2dd (HEAD -> master, origin/master, origin/HEAD) temurin11-nightly-jre: Update to version 11.0.21-5.0.202309011923

'main' bucket:
98bbd36df (HEAD -> master, origin/master, origin/HEAD) dynamorio: Update to version 10.0.19600

'nirsoft' bucket:
941fcbd (HEAD -> master, origin/master, origin/HEAD) Updated BrowsingHistoryView and NK2Edit

'nonportable' bucket:
bbab59c (HEAD -> master, origin/master, origin/HEAD<EMAIL_ADDRESS>Fix hash (Closes #228)

Scoop Config
last_update   : 2023-09-02T14:17:51.6140639+08:00
proxy         : **********
aria2-enabled : False
scoop_branch  : master
scoop_repo    : https://github.com/ScoopInstaller/Scoop

PowerShell Version
Name                           Value
----                           -----
PSVersion                      5.1.19041.3031
PSEdition                      Desktop
PSCompatibleVersions           {1.0, 2.0, 3.0, 4.0...}
BuildVersion                   10.0.19041.3031
CLRVersion                     4.0.30319.42000
WSManStackVersion              3.0
PSRemotingProtocolVersion      2.3
SerializationVersion           <IP_ADDRESS>

Additional Softwares
I have to use scoop behind a proxy so that might be part of the issue, but it doesn't hurt to switch to HTTPS.

Cannot reproduce, but the urls will updated later.
❯ scoop download smartty
INFO  Downloading 'smartty' [64bit] from extras bucket
PortableSmarTTY-3.3.7z (41.1 MB) [====================================================================================] 100%
Checking hash of PortableSmarTTY-3.3.7z ... ok.
'smartty' (3.3) was downloaded successfully!


Remove usage of CompilationProvider

Hey! A bit later than anticipated, but here is a draft PR showing some example code of how you could avoid using the CompilationProvider. I was moving things around between files and was not very organized and just dumped most everything into SymbolExtensions, so feel free to discard or refactor to your liking.
The main change: separate the path for when we are looking for types in external assemblies vs looking for types in the same C# project.
In the ParseMethod transform method, it now will optionally collect the matching types early on. The AttributeModel class now has a nullable array of ServiceRegistrationModels RegistrationsFromAssembly that can be set in cases where we collect these from external assemblies in this phase.
Separately, there is a new SyntaxProvider that hooks into any TypeDeclarationSyntax node. This will scan the current C# project for any type, and extract a few relevant bits from each type (name, IsGeneric, etc). This will create a lookup of all types that are declared in the project that should be cache friendly. The cache will have potentially lots of these objects, but it will still be smaller than the entire Compilation object.
This provider is combined with the method provider, and for attributes that don't specify an external assembly (or specify a type from the current assembly), the RegistrationsFromAssembly array will be null, and indicate that we should instead look through the source-code defined types.
I did have to slightly tweak the StringBuilder AppendLine, since that uses Environment.NewlLine internally. I am on Windows so that was causing my unit tests to fail locally, but that might also be due to my local autocrlf settings and you could ignore.

Thanks for the suggestion, I'll take a deeper look later!
Per my understanding, for the external assemblies case, assembly scanning will still happen for every keystroke, right? Only the cached data is potentially smaller?

Unfortunately yeah, I think based on this comment that yes, any transform method of a syntax provider will be re-run any time almost anything changes. I was banging my head against this for a while. I saw there was a context.MetadataReferencesProvider that I was hoping to use to get some better cached objects out of referenced assemblies, but I could not find anything useful there.

I can see that even dotnet maintainers ignore that recommendation quite often:
https://github.com/search?q=CompilationProvider.Combine+OR+Combine(context.CompilationProvider)+OR+Combine(compilation+org%3Adotnet&type=code
Not to mention third parties...
I'm going to wait for a while, maybe someone from Roslyn guys suggests anything useful: https://github.com/dotnet/roslyn/discussions/74001
I realized they've added an option to only run generators on saving or on builds. Maybe they decided to "fix" this issue this way, not sure.

Yeah I don't think my changes here are all that helpful, it just replaces one problem for another. The assembly scanning in particular is a tough one since there is no good Syntax or other provider to get easy access to them.
I did have another thought overnight - not sure if it would be worth the effort but could be another option:
Collect the type info from public types in external assemblies in a separate pre-build step. Some BeforeTarget=CoreCompile msbuild task that extracts type info into a json file in the obj folder or something, and include it as an AdditionalFile.
Then you would have your 1 AdditionalTextsProvider that would not change very often, and 2 SyntaxProviders that do fire frequently but are only doing tiny amounts of work.
This issue seems like it could maybe help in the future, but I am not sure which direction they might take it. I could picture something like having a Syntax provider that is focused on doing this external assembly scanning, but can use the assembly MVID or something like that to be able to short circuit if nothing has changed

You might have already seen these, but here are some related issues that mention per-key updates and only needing to get info out of references, not syntax trees:

https://github.com/dotnet/roslyn/issues/54272
points to https://github.com/dotnet/roslyn/issues/55130

looks like they added MetadataReferencesProvider exactly for this purpose, but I haven't found a good example of using it yet

https://github.com/dotnet/roslyn/issues/68225 does explain that you could create an empty Compilation to get types out of MetadataReferencesProvider, but I haven't tried to do that yet

That's interresting.
So GetMetadataReference -> create empty compilation ->

Closing this in favor of https://github.com/Dreamescaper/ServiceScan.SourceGenerator/pull/9


Customize item actions depend on data record

I have a requiement that is display different action buttons according to data recording, For example, I want to active the unactivated items or deactivate the activated items, just like following picture.

I can not attach extra info to cation buttons depend on record data. Also I read through the doc you provided however I found no solutions about this issue,can you give me some suggestions, Thank you!

@Aron-Yao The easiest way is to make a duplicate status column and use a different callback to render the button and then capture the click event via vuetable:row-clicked to toggle the status as you wish.
Suppose your status column is a boolean type, which true means activated and false means unactivated.
var fields = [
	{
    	name: 'code',
        title: 'Code',
        callback: 'formatCode'
    },
    {
    	name: 'status',
        title: 'Status',
        callback: 'formatStatus'
    },
    {
    	name: 'status',
        title: 'Action',
        callback: 'renderAction'
    }
]

new Vue({
	el: '#app',
	data: {
	    // ...
	},
	methods: {
	    //...
        renderAction: function(value) {
        	return value
            	? '<button class="status-action">Deactivate</button>'  // apply styling as you see fit
                : '<button class="status-action">Activate</button>'
        }
    },
    events: {
        // since the data argument is the data of the clicked row
        // you can use it to determine the current value of the row
    	'vuetable:row-clicked': function(data, event) {
            // you may need to check event.target here if you use this event
            // for other purpose as well
            if (data.status) {
            	// do the deactivate procedure here
            }
            else {
            	// do the activate procedure here
            }
        }
    }
})

Hope that helps. :)

It works! Thank you so much! 👍

This example doesn't appear to work for Vuetable 2. Button renders, but event doesn't seem to be triggered.
        'vuetable:row-clicked': function(data, event) {
            alert('active');

Nothing happens.

See here.


Usage of "m/" in derivation path

In #2451 we removed the ability to parse derivation paths that include the leading 'm'. While testing the rc1 I attempted to upgrade bitcoind which includes an RPC call to getaddressinfo which returns the following JSON. As can be seen the derivation path includes the 'm'. This means our current release candidate is unable to parse JSON returned by Bitcoin Core, surely that is a bug?
TRACE][bitcoincore_rpc]: JSON-RPC response for getaddressinfo:
{
    "address":"n1fg6HFS7TV7ETSvCWD68k6ZNEsXYWg88U",
    "scriptPubKey":"76a914dd08bbd7d4526a708aa9346a50918c411a860d7388ac",
    "ismine":true,
    "solvable":true,
    "desc":"pkh([5041878d/0'/0'/6']033c9bfc9acc37f679ac7099fc0eda080efca7b454a35818f8fd9d11a79245c725)#5p87z2p4",
    "iswatchonly":false,
    "isscript":false,
    "iswitness":false,
    "pubkey":"033c9bfc9acc37f679ac7099fc0eda080efca7b454a35818f8fd9d11a79245c725",
    "iscompressed":true,
    "ischange":false,
    "timestamp":1712535496,
    "hdkeypath":"m/0'/0'/6'",
    "hdseedid":"0510f7177cb0e3f37c22b27d222befe4e797bcc5",
    "hdmasterfingerprint":"5041878d",
    "labels":[""]
}

cc @josibake we removed the ability to parse m as part of a literal BIP32 path in your https://github.com/rust-bitcoin/rust-bitcoin/pull/2451 and associated issue because it was causing "confusion" for students.
And yet we see that Bitcoin Core allows parsing the m and it also unconditionally serializes the m. Should we revert your change?
https://github.com/bitcoin/bitcoin/blob/master/src/util/bip32.cpp

Based on the argument in https://github.com/rust-bitcoin/rust-bitcoin/issues/2449 , I’d still say treating m as a constant is incorrect (based on a strict reading of the BIP). However, if this is so widely done that it would be too cumbersome to change, we could revert the change here and amend the BIP.
I can also open a PR in core to see what the appetite for changing it there is

I can also open a PR in core to see what the appetite for changing it there is

For sure, could you do this? Would be good to see some discussion from other Core people.

we could revert the change here and amend the BIP.

Let's open a PR in Core and give it a couple days, then yes, I think we have to revert the change here (or at least, soften our parsing code to allow m) to match existing Core logic. And depending on the outcome of the Core discussion probably we'll need to amend the BIP in some way. (But I wouldn't start there, given the unclear maintainership status of the BIP repo right now.)

@apoelstra @tcharding worth mentioning, the descriptor field does have the correctly serialized path (without m). The hdkeypath is a leftover from legacy wallets and afaict descriptors always serialize the path without m.
I'll still open a PR in core but just wanted to mention this in case it helps unblock you guys.

To help resolve this I opened:

https://github.com/rust-bitcoin/rust-bitcoin/pull/2674 to fix the release
https://github.com/rust-bitcoin/rust-bitcoin/issues/2673 to track that we should dig a little harder

Fixed by #2677


3dot0merge

Description
Describe what this change achieves.
Issues Resolved
List any issues this PR will resolve, e.g. Closes [...].
By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.
For more information on following Developer Certificate of Origin and signing off your commits, please check here.

Codecov Report

:exclamation: No coverage uploaded for pull request base (main@264bd26). Click here to learn what that means.
The diff coverage is n/a.

@@           Coverage Diff           @@
##             main     #224   +/-   ##
=======================================
  Coverage        ?   83.46%
  Complexity      ?      555
=======================================
  Files           ?       61
  Lines           ?     2050
  Branches        ?      146
=======================================
  Hits            ?     1711
  Misses          ?      234
  Partials        ?      105

Help us with your feedback. Take ten seconds to tell us how you rate us. Have a feature suggestion? Share it here.


Deprecate scanner functionality (4.0), drop it (5.0) in favor of

Basically, parsing via regexes is simply not acceptable/viable anymore, and absolutely doesn't scale, as the syntax of PHP keeps changing.
@asgrim has been building https://github.com/Roave/BetterReflection since last year, and the library is stable/mature, so I'd suggest that we chop the head off this part of zend-code's functionality.
Thoughts?

No problem here, that's the sort of thing BR can do I believe (though I'm not intimately familiar with the scanner here). If there is missing functionality in BR, I'm happy to take PRs or feature requests.

I'm :+1: for this. While I've been happy we've had this feature in zend-code, it's difficult to maintain, and, particularly with the fast pace of language additions/changes, hard to keep up-to-date. The only way we could accomplish that is with a rewrite to use an AST and/or tokenization approach (the latter of which BR uses, IIRC), which would be a significant undertaking. Since another tool exists, I'd be happy to point folks to that instead.

This repository has been closed and moved to laminas/laminas-code; a new issue has been opened at https://github.com/laminas/laminas-code/issues/17.


Enhancement suggestion: navigation tree could reflect the currently displayed item

User can click on the navigation tree to display an item such as a model or class. The selected item is highlighted in the tree.
If the user then uses controls on the right side of the view to navigate elsewhere (e.g. click on a semantic link to go to a different model or class), the highlight on the tree does not change.
This is a bit disorientating. It would be good if the tree would always indicate the currently displayed item.

I think this is more complicated than it first appears. Whenever any link is clicked which would trigger a transition to another detail view, there is not enough information in that transition to know where in the tree that item is, or even if that item is loaded into the tree yet (due to not being fully expanded).
I think the implementation steps to add this change would be:

[ ] Have a new endpoint added to mdm-resources - request the ancestors of a given item with a known domain type and ID.
[ ] Update the UIRouter config in app-routing.module.ts. Add a new state transition hook for onSuccess() to capture navigation changes.
[ ] In the state transition hook, grab the catalogue item domain type and item ID from the URL/state parameters (if available), and broadcast an event with this data
[ ] In the mdm-folders-tree component, subscribe to this broadcast event to capture the item navigated to.
[ ] Use the new endpoint to request the ancestors of the item in current view
[ ] Use the ancestor list to recursively expand the tree until the current item is found, then select it.

All of this would first be dependent on MauroDataMapper/mdm-core providing a tree item ancestor endpoint.

I think this is a key usability feature though, so I'd like to bump up its priority... completely understand we need the back-end endpoints first

I've noticed that MauroDataMapper/mdm-core#103 has been completed now, meaning this front-end task is now unblocked.

I have spent some time working on the implementation of this enhancement but have been having issues getting it to work. In theory, the process of automatically expanding the tree down to the required displayed catalogue item is sound, but I have encountered technical issues with the existing catalogue tree component that make this harder.
One primary issue is the loading of the tree and determining when to expand and fetch more child nodes. There is a mixture of async/await (or Promises) wrapped inside Observables for fetching data from the back-end (an observation noted in other areas of the code base). These existing mechanisms make it harder each time to adjust and add new features on top of, as following the process of fetching tree data has become very complex.
The components have also organically grown in features and code complexity, making it harder to maintain. This will become even more problematic when future planned features, such as federation, come along which want to expand the tree view even further.
Based on this, my suggestion is to:

Put this particular issue on hold.
Perform a full review of the current feature set of the catalogue tree view, plus ideal new features to include (such as this one).
Plan a rewrite of the tree view components to better support long-term (using YouTrack).
Review the proposed task list and plan/prioritise the work.

For reference, there are a couple of issues already raised which could be considered for the rewrite:

https://metadatacatalogue.myjetbrains.com/youtrack/issue/MC-9347
https://metadatacatalogue.myjetbrains.com/youtrack/issue/MC-9615

The PR #649 has introduced a new tree view component that is more simplified, the key part is that the code to fetch more child nodes on expand is separated into a custom DataSource which makes the code much simpler to follow (and removes a lot of issues I've highlighted in previous comments). Once that PR is merged, it might be worthwhile revisiting this issue to see if it helps.


Missing documentation for using s3 storage

/kind feature
When looking at how to store a model on s3 the only documentation I found is this and this. I followed closely the doc on the github.io page and it is not working for me.
When I look at the markdown file, it says "Your cluster's Istio Egress gateway must allow accessing S3 Storage." But egress doc does not mention s3, so how do I allow s3 access in Istio? I have tried adding an egress to istio
  cat << EOF > ./istio-minimal-operator.yaml
  apiVersion: install.istio.io/v1beta1
  kind: IstioOperator
  spec:
    values:
      global:
        proxy:
          autoInject: disabled
        useMCP: false

    meshConfig:
      accessLogFile: /dev/stdout

    addonComponents:
      pilot:
        enabled: true

    components:
      ingressGateways:
        - name: istio-ingressgateway
          enabled: true
      egressGateways:
        - name: istio-egressgateway
          enabled: true
  EOF

I have also tried to deploy a service entry
  apiVersion: networking.istio.io/v1alpha3
  kind: ServiceEntry
  metadata:
    name: s3
  spec:
    hosts:
    - s3.amazonaws.com
    ports:
    - number: 80
      name: http-port
      protocol: HTTP
    - number: 443
      name: https
      protocol: HTTPS
    resolution: DNS
    location: MESH_EXTERNAL

Still, when I try to start my inferenceService, the predictor pod is in error from the start
  apiVersion: "serving.kserve.io/v1beta1"
  kind: "InferenceService"
  metadata:
    name: "sklearn"
  spec:
    predictor:
      serviceAccountName: s3-resnet-sa
      model:
        modelFormat:
          name: sklearn
        storageUri: "s3://pytorch-resnet"

For info my bucket contains the minist sklearn model from the samples.

@leandregagnonlewis can you provide more details on the error message you are getting ?

Solved the issue with the solution here


[TW#16558] BLE, is supported muti-connect (from several clients) for ESP32 in peripheral/server/slave state?

Hi,
As I have read, Bluetooth 4.1 spec allows a peripheral to have several connections at the same time. Prior to 4.1 a peripheral could only have one connection. AFAIK ESP32 is a 4.2 device.
I am trying to implement this with ESP32 and it almost works but some things break. Not sure if the blame is on the server or clients yet. Before going deeper I would like to get a confirmation whether this is known to be supported on the ESP32 BT stack. Can somebody confirm if this already works or if this is something that is scheduled for the future?

Hi. The ESP32 Bluetooth Controller can handle multiple peripheral roles. I've tested this with our BTstack port.
I don't know how well it this is supported by the Bluedroid stack.
In general, being in more than one connections isn't trivial and you have to expect a "worse" connection than with a single one. If you're not too aggressive with the connection interval and don't need to stream at full speed, it should work in most cases.

@FayeY why was this closed without an explanation or a response?

Maybe this is the answer?
https://github.com/espressif/esp-idf/tree/master/examples/bluetooth/gattc_multi_connect

@chegewara, this is similar but not the same. The example you linked is for a multi-connect client. I am inquiring about the same for a server role.

@FayeY, no problem. Thanks for checking that out. Can you clarify if you are working on an example or if the implementation is incomplete in the current framework? I guess what I am asking is, should I wait for a future release or can I code my own example already?
Cheers to the team.

Hi @ayavilevich
If you want the server connect to more than one client, You just need start ADV after the previous connection was established.

@xiewenxiang , this is what you would expect. I tried it, but it doesn't work well. See https://github.com/espressif/esp-idf/issues/1263

Multi-connection might be working for gatt client or in some cases for gatt server but it is not working well.
I have documented a specific use case in #1263.
The latest reproduce instructions are at https://github.com/espressif/esp-idf/issues/1263#issuecomment-364751036 . If everybody who contributed to this discussion would try to reproduce and post their results, perhaps this will help find a common cause.

Has anyone had any luck with this? My experience is:

Advertisement stops as soon as 1 client connects to ESP32 GATT server
Advertisement resumes after client disconnects

Has anyone had any luck with this? My experience is:

Advertisement stops as soon as 1 client connects to ESP32 GATT server
Advertisement resumes after client disconnects

There is plenty of reports about multi-connections, especially in arduino. What you have to do is to re-start advertising when central is connected.

Thanks, the resume of advertisement appears to be working which is what I needed. Need another phone to test the multi-connect case.
FYI 1 line added here:
    case ESP_GATTS_CONNECT_EVT: {
        esp_ble_conn_update_params_t conn_params = {0};
        memcpy(conn_params.bda, param->connect.remote_bda, sizeof(esp_bd_addr_t));
        /* For the IOS system, please reference the apple official documents about the ble connection parameters restrictions. */
        conn_params.latency = 0;
        conn_params.max_int = 0x20;    // max_int = 0x20*1.25ms = 40ms
        conn_params.min_int = 0x10;    // min_int = 0x10*1.25ms = 20ms
        conn_params.timeout = 400;    // timeout = 400*10ms = 4000ms
        ESP_LOGI(GATTS_TAG, "ESP_GATTS_CONNECT_EVT, conn_id %d, remote %02x:%02x:%02x:%02x:%02x:%02x:",
                 param->connect.conn_id,
                 param->connect.remote_bda[0], param->connect.remote_bda[1], param->connect.remote_bda[2],
                 param->connect.remote_bda[3], param->connect.remote_bda[4], param->connect.remote_bda[5]);
        gl_profile_tab[PROFILE_A_APP_ID].conn_id = param->connect.conn_id;
        //start sent the update connection parameters to the peer device.
        esp_ble_gap_update_conn_params(&conn_params);
+++     esp_ble_gap_start_advertising(&adv_params); // Added this line for multiple connects?
        break;

Might be handy to add this in the example itself

does anyone have a example of how to connect more than 2 Esp32 at the same time with BLE?


zn80.net

Link to GTMetrix results: https://gtmetrix.com/reports/zn80.net/N023uElB/
- domain: zn80.net
  url: https://zn80.net
  size: 6.8

Need to update my stats here a little bit, as I have changed some things while waiting for approval.
-domain: zn80.net

url: https://zn80.net
size: 70.2

Need to update my stats here a little bit, as I have changed some things while waiting for approval.
GTMetrix result https://gtmetrix.com/reports/zn80.net/gSvT1m7N/

domain: zn80.net
url: https://zn80.net
size: 70.2


Provide invalidate(fileName, kind) from WatchProgram for internal resolutionCache

Suggestion
Add invalidate(fileName: string, kind: FileWatcherEventKind) to WatchProgram.
export interface Watch<T> {
    /** Synchronize with host and get updated program */
    getProgram(): T;
    /** Manual invalidation for custom sys */
 +  invalidate(fileName: string, kind: FileWatcherEventKind): void;
}

The invalidation mechanism is hidden inside the WatchProgram and cannot be controlled from the outside.
I already implement this here but I I haven't made a pull request yet.
🔍 Search Terms
createWatchProgarm, WatchProgram, invalidate, cache, ResolutionCache
✅ Viability Checklist
My suggestion meets these guidelines:

[x] This wouldn't be a breaking change in existing TypeScript/JavaScript code
[x] This wouldn't change the runtime behavior of existing JavaScript code
[x] This could be implemented without emitting different JS based on the types of the expressions
[x] This isn't a runtime feature (e.g. library functionality, non-ECMAScript syntax with JavaScript output, new syntax sugar for JS, etc.)
[x] This feature would agree with the rest of TypeScript's Design Goals.

⭐ Suggestion
Add manual invalidation feature to WatchProgram.
📃 Motivating Example
I was trying to create an optimizer based on TypeScript that performs multi-step transformations using an in-memory cache. The normal watch program is useful for development on an editor, but an environment based on reading and writing filesystems is overkill for multi-step source transformations.
We wanted to use a bundler-like environment like Rollup to update the source for transformations on top of virtual memory.
In order to reproduce the normal TypeScript project environment as much as possible, we tried to create a system that reads from memory only the first time and falls back to an in-memory cache thereafter, and pass this to WatchProgram.
However, this made external Invalidation impossible because the ResolutionCache was hidden inside.
This callback is fired on file state change. in  src/compiler/watch.ts
    function onSourceFileChange(fileName: string, eventKind: FileWatcherEventKind, path: Path) {
        updateCachedSystemWithFile(fileName, path, eventKind);

        // Update the source file cache
        if (eventKind === FileWatcherEventKind.Deleted && sourceFilesCache.has(path)) {
            resolutionCache.invalidateResolutionOfFile(path);
        }
        nextSourceFileVersion(path);

        // Update the program
        scheduleProgramUpdate();
    }

resolutionCache is local scope variable in createWatchProgram so I can not touch directly.
    // Cache for the module resolution
    const resolutionCache = createResolutionCache(compilerHost,
        configFileName ?
            getDirectoryPath(getNormalizedAbsolutePath(configFileName, currentDirectory)) :
            currentDirectory,
        /*logChangesWhenResolvingModule*/ false
    );

ResolutionCache.invalidateResolutionOfFile() is also internal method in typescript.
💻 Use Cases
My trying code is here.
import ts from "typescript";
import path from "node:path";

const tsconfig = ts.readConfigFile("./tsconfig.json", ts.sys.readFile);
const options = ts.parseJsonConfigFileContent(tsconfig.config, ts.sys, "./");

let _watchCallback: ts.FileWatcherCallback | null = null;

type FileInfo = {
  path: string;
  content: string;
  version: number;
  sourceFile?: ts.SourceFile;
  mtime?: Date;
};

const _cache = new Map<string, FileInfo>();
const _dirtyCacheSet = new Set<string>();

const expandPath = (fname: string) => {
  if (fname.startsWith("/")) {
    return fname;
  }
  const root = host.getCurrentDirectory();
  return path.join(root, fname);
};

function readFile(fname: string, encode?: any) {
  fname = expandPath(fname);
  console.log("[readFile]", fname);
  // console.log("[host:readFile]", fname);
  if (_cache.has(fname)) {
    return _cache.get(fname)?.content as string;
  }
  const ret = ts.sys.readFile(fname, encode);
  if (ret) {
    _cache.set(fname, {
      path: fname,
      content: ret,
      version: 0,
      mtime: ts.sys.getModifiedTime?.(fname),
    });
    _dirtyCache.add(fname);
  }
  return ret;
}

const writeFile = (fname: string, content: string) => {
  fname = expandPath(fname);
  console.log("[writeFile]", fname);
  const fileInfo = _cache.get(fname);
  if (fileInfo) {
    fileInfo.content = content;
    fileInfo.version++;
    fileInfo.mtime = new Date();
  }
  _dirtyCache.add(fname);
  _watchCallback?.(fname, ts.FileWatcherEventKind.Changed);
};

const watchFile = (
  path: string,
  callback: ts.FileWatcherCallback,
  options: any,
) => {
  if (_watchCallback == null) {
    _watchCallback = callback;
  }
  return {
    close() {},
  };
};

const watchDirectory = (path: string, callback: ts.FileWatcherCallback) => {
  if (_watchCallback == null) {
    _watchCallback = callback;
  }
  return { close() {} };
};

const mySys: ts.System = {
  ...ts.sys,
  readFile,
  writeFile,
  watchFile,
  watchDirectory,
};

const host = ts.createWatchCompilerHost(
  options.fileNames,
  options.options,
  mySys,
  ts.createSemanticDiagnosticsBuilderProgram,
);

const watcher = ts.createWatchProgram(host);

// pre check
console.log(watcher.getProgram().getSemanticDiagnostics()[0].messageText);

// update in memory file
writeFile(
  path.join(process.cwd(), "src/index.ts"),
  "export const a = 1;",
);
// If this pr merged, we can use this to invalidate internal cache
// watcher.invalidate(path.join(process.cwd(), "src/index.ts"), ts.FileWatcherEventKind.Changed);

// can not update source without internal invalidation
const newSource = watcher.getProgram().getSourceFile(
  path.join(process.cwd(), "src/index.ts"),
);

// old source yet
console.log("newSource", newSource?.getFullText());

// post check: should be no error
console.log(watcher.getProgram().getSemanticDiagnostics()[0].messageText);

I finally understand. Your point is correct.
Also, by better understanding the code, I understood that what I want to do is not a problem to do with the watch program. If I were to implement this, it would be LanguageService.
I am sorry that I made the request with a half-understanding.


Combine Vue and Nuxt version in single package ?

Clear and concise description of the problem
Why are they seperate packages ? pinia-plugin-persistedstate for vue and @pinia-plugin-persistedstate/nuxt for nuxt.
I got confused at first because I had followed the install instuction from the main doc, then I found the nuxt doc when looking how to initialise the package and how options worked inside nuxt.
Suggested solution
They should be a single packages with 2 exports, no ? So pinia-plugin-persistedstate for vue and pinia-plugin-persistedstate/nuxt for nuxt.
Alternative
Both packages could also be under @pinia-plugin-persistedstate.
So @pinia-plugin-persistedstate for vue and @pinia-plugin-persistedstate/nuxt for nuxt.
Additional context
This is usually how most Nuxt packages work.
I can give many exemple.
Validations

[X] Follow our Code of Conduct
[X] Read the Contributing Guide.
[X] Check that there isn't already an issue that request the same feature to avoid creating a duplicate.

If you use nuxt, you dont need the base plugin, and vice versa. Nuxt module will download the base plugin. But the base plugin doesnt need to download any nuxt-related dependency.
And this is EXACTLY how pinia itself is named (pinia/@pinia/nuxt), because it allows using the nuxt module just by adding it to the module array.
This won't be changed.

You are right, that seem to be how pinia also work.
Weird how they went away from the convention.
Here are 3 packages that work the other way.
I feel this is better as it create less confusion.
'portal-vue/nuxt'
'vue-toastification/nuxt'
'vue-sweetalert2/nuxt'

It involves downloading unneeded nuxt dependencies for plain vue users, or quasar users, which we try to avoid here. And keep framework specific tools seperated from the main tool.
Also the packages you specify are only nuxt2 compatible.
Nuxt3 modules can be built with specific tools (@nuxt/kit) that dont belong in vue-only apps. :)


Fabo/migrate

Adding migrate checks

This PR seems to be the same as #78

Closed the other one. I reapply the changes to main in this PR.