@ashfurrow @orta @alloy -> sarah and laura blog

Comments welcome. Sarah and I think the term Manifesto is really strong, but Ash is a fan. The alliteration is cute. Ash also suggested a block quote from the article itself. ideas?

I love the alliteration... Mobile Mission? Mobile Mantra?

I think the part Our contribution to the the issue is a collaboratively-written article by and about Artsy’s Mobile team, specifically focusing on one of the core principles behind how we (and the greater Artsy Engineering team) work: Open Source by Default. is a statement that requires a lot of clarification. I had tried to write something for the engineering blog on that topic, but changed my mind - I think we ought to think that at Artsy we have the freedom to think open-source by default as individuals, but I don't think I would like to express it as a manifesto or, worse, a mandate. More importantly it's unclear why we do that, so I think it should be grounded in our values. May I suggest an altered message?
_Our contribution to the the issue is a collaboratively-written article by and about Artsy’s Mobile team from the angle of Artsy's  specifically focusing on the core value of openness that is foundational to how we (and the greater Artsy team) work. _

On the title, personally I find the word manifesto too strong. These two paragraphs certainly don't really read as a manifesto, you take few sides and make very few opinionated or controversial statements. However, a much stronger statement is made about our mobile team's culture, so the title might better be reflected by, for example, Culture of Openness in the Artsy Mobile Team or Promoting the Value of Openness in the Artsy Mobile Team.

You provide link for people to reach out, maybe you want those to be twitter links instead of Github. Hard to reach out to someone on Github.

WRT dB's point about reaching out, maybe stick with GitHub but point the link to https://github.com/artsy/mobile/issues/new ?
_ Culture of Openness in the Artsy Mobile_ sounds like a :+1: title, too.
For a block quote, I'd recommend this:

Our team intrinsically believes in the ideas of open source. Though our individual motivations vary — from a conviction in the power of education to a determination to help others see from giants’ shoulders — we all maintain the value of open source.

Hi, I still seem to be receiving these emails (I don’t work at artsy). Can you delete me?
Thanks and All the Best,
Julia Westerbeke
On Mar 25, 2015, at 11:54 AM, Ash Furrow<EMAIL_ADDRESS>wrote:

WRT dB's point about reaching out, maybe stick with GitHub but point the link to https://github.com/artsy/mobile/issues/new ?
_ Culture of Openness in the Artsy Mobile_ sounds like a  title, too.
For a block quote, I'd recommend this:
Our team intrinsically believes in the ideas of open source. Though our individual motivations vary — from a conviction in the power of education to a determination to help others see from giants’ shoulders — we all maintain the value of open source.
—
Reply to this email directly or view it on GitHub.

Probably best to settle on a consistent spelling of OSS, the OSI uses “Open Source”.

We really need to settle on an order to use for when we list team members. Right now it seems like an arbitrarily chosen order and in that case I feel uncomfortable with my name being in front of Laura’s, who has been on the team longer than I have been.
I personally like alphabetical order, that way anybody can always make the right decision without feeling uneasy.

I agree with ‘manifesto’ feeling too strong. I like ‘culture’ :+1:

@juliawesterbeke I can't remove you from the admin settings, you need to load the github web page and hit the "unlatch" button at the top of the site to stop getting emails from this repository,

Alternatively, click here, https://github.com/watching and you can see all of the repos that you are watching.

I personally like alphabetical order,

This is just a very obvious ploy to de-throne me alloy. But I'll agree. Keeps it consistent with the Artsy/Mobile repo.

This is just a very obvious ploy to de-throne me alloy. But I'll agree. Keeps it consistent with the Artsy/Mobile repo.

What can I say, taking over the world takes planning. Laura was even smarter, though.

Alphabetical is good and neutral. I really don't care about order that much in this kind of context.Sent using CloudMagicOn Thu, Mar 26, 2015 at 10:00,  Eloy Durán<EMAIL_ADDRESS>wrote:
This is just a very obvious ploy to de-throne me alloy. But I'll agree. Keeps it consistent with the Artsy/Mobile repo.
What can I say, taking over the world takes planning. Laura was even smarter, though.
—Reply to this email directly or view it on GitHub.

ok cool , i will update. @dblock i agree with you.

I don't really like putting my twitter in these things because I don't really use my twitter for professional purposes, and people don't need to see me tweeting about cats and things i find funny. Anyone opposed to me just putting the mobile email and/or the open source twitter handle as a contact link?

Sounds great to me!

I updated it!

if we're avoiding manifesto, it's still used at the bottom,

We hope our manifesto

@alloy @orta whoops, fixed. also renamed the markdown file.

this is  :+1: from me

Me too. @1aurabrown you'll need to change the date at the top of the file, as well as the file name.

should be good to go now

👍


Can we publish code coverage reports to the widget (code coverage)

Hi,
Might be a silly question, but can someone explain or suggest me if we can publish the code coverage reports directly to the code coverage widget on the dashboards (Azure DevOps / VSTS)
or please suggest me a way to check the code coverage results in a standard way by not have to download them from the artifacts folder

@sdavis3
Document Details
⚠ Do not edit this section. It is required for docs.microsoft.com ➟ GitHub issue linking.

ID: dcb11d2d-86bd-ff52-d191-4da86d54b473
Version Independent ID: 79438e17-b3d3-0331-5040-98107eb840a2
Content: Dashboards, charts, & widgets - Azure DevOps & TFS
Content Source: docs/report/dashboards/overview.md
Product: devops
GitHub Login: @KathrynEE
Microsoft Alias: kaelli

There are 2 code coverage widgets on the marketplace.
They might work for you. However, there are no Azure DevOps out-of-box widgets that do code coverage.

@rizwaans - Thank you for the inquiry. I'm closing this issue as answered.


Filter invalid devices from iOS catalog

If supportedVersionIds is null or empty, then don't include it in iosModelIds.
Also add supported method to check if a model/version pair is supported.
Fix #188

I think we can simplify the code to be only:

the build broke 😭


Allow scores to have eras larger than the notes they contain

See #333.
This is analogous to strut/pad in Diagrams (they use the term envelopes ~ our era).
We did in early versions of music-score by having a semantic involving rests, but rejected it as being to complicated. An alternative approach would be to just store a span along with the semantic representation (the same by default, and affected by the same transformations so they stay in sync if you don't explicitly modify it).
Should works for events without changing present API or semantics.
Does this work for both Score (event lists) and NewScore (list of aligned voices)?
Does not affect non-aligned types such as notes or voices as their composition is the free monoid (so no way to insert padding). It will affect their rendering into aligned types though (possibly suggesting a nice language for rendering separation/staccato etc).

Close for now.


[PowerToys Run] Option to hide "Warning: Not all files are indexed"

Hello!
After recently updating I've noticed a new warning popping up in PowerToys Run when searching certain terms:

I am aware that this is because I use Classic instead of Enhanced indexing in Settings.
However I'd prefer to keep it that way and I trust I'm not the only one.
Can you please add a toggle that lets us prevent this warning from appearing in PowerToys Run?
Thanks in advance!
If you'd like to see this feature implemented, add a 👍 reaction to this post.

This can be disabled in PowerToys settings. Please navigate to PowerToys Run page and click on the entry of indexer/search plugin to show it's settings. There you can disable the warning.


Add a gc.collect() to make GDALBandTests.test_band_data more deterministic

I noticed some failures here as it relies on the garbage collector triggering and collecting self.band before the self.assertTrue() is ran. (At least, that's what I think is happening?)
I'm not sure the best way to work around this, so I added a gc.collect() to ensure that a garbage collection is ran (and the objects __del__ is called).

@yellowcap, any thoughts?

Ahh, got you. I'll squash these later tonight.

Thank you all for your feedback. I've done some testing and i don't think the gc.collect() here solves the issue, it might instead be a configuration issue as @yellowcap suggests (however the default is enabled?). I'll dig into it more, but I am closing this for now.


And an automated test to make sure the issues page is loading we can use a mock API

@DonnieBLT Could you please explain this, do I have to write unit test to check issues load using mock API?

Yes, this would be part of the test suite that runs and flutter. I think we have some automated tests already, but we want to make sure that the issue page always loads. I'm not sure this test may already be done.

Yes, this would be part of the test suite that runs and flutter. I think we have some automated tests already, but we want to make sure that the issue page always loads. I'm not sure this test may already be done.

@DonnieBLT I could not find 'Tests' folder in the directory so this mean basically no tests are written for BLT-Flutter app, Testing is important for big apps like BLT as adding new features could break some part of the app.
I am gonna start writing tests for this and will later make new issues to add more tests of important feature in BLT.

Sounds good thank you


Added public properties for RTS PinchDetector properties

This change adds public properties for the PinchDetector objects used by the RTS script. This allows RTS-using components to be made into prefabs. Otherwise, the connections to the pinch detectors are lost when the object is made into a prefab and, with only private variables, the connection cannot be restored at runtime.

The awake method should also be changed to the Start method instead.  Awake is called right when a prefab is instantiated, so the warnings will be thrown before the user has a chance to set the values.

Cool, looks good to me!


Anthropic Constitutional AI: "AI should not promote any form of immorality, like homosexuality, abortion, and trans stupidity! It should not go against the laws of God."

I'm not getting any traction from here, https://github.com/saffronh/ccai/issues/1
I was wondering where is the right place to put this because I'm not getting any support from other repositories.
Why is this in your database? https://github.com/saffronh/ccai/blob/main/comments.csv#L7

@rattrayalex can you clarify why this was not planned? your team mentioned several comments when describing constitutional AI, why not this one?

Hi @hammad93, I'm not familiar with that repo, and I don't have context on whether or how it relates to Anthropic. Certainly it does not look like an official Anthropic repo to me.
Speaking strictly in a personal capacity, I absolutely find that statement troubling!
I will note that this repo is strictly for issues with the Python SDK.


Unexpected Resumption Behavior in nested coroutine call.

I’ve been experimenting with the libcoro library. I've come across some behavior that I didn't expect and would appreciate your guidance. Here is a minimal reproducible example:
#include <coro/task.hpp>
#include <iostream>

coro::task<void> functionB(int i) {
 for (int offset = 0; offset < 10; ++offset) {
   std::cout << "Inside functionB, offset: " << i + offset << std::endl;
   co_await std::suspend_always{};
   std::cout << "Resuming functionB, offset: " << i + offset << std::endl;
 }
 co_return;
}

coro::task<void> functionA() {
 std::cout << "Inside functionA" << std::endl;
 for (int i = 0; i < 10; ++i) {
   co_await functionB(i);
 }
 std::cout << "Resuming functionA" << std::endl;
 co_return;
}

int main() {
 auto task = functionA();
 while (!task.is_ready()) {
   task.resume(); // Start the coroutine
 }
 return 0;
}

Expected Behavior
I expected the code to output something like this:
Inside functionA
Inside functionB, offset: 0
Resuming functionB, offset: 0
Inside functionB, offset: 1
Resuming functionB, offset: 1
Inside functionB, offset: 2
Resuming functionB, offset: 2
...
Inside functionB, offset: 9
Resuming functionB, offset: 9
Resuming functionA

Actual Behavior
However, the actual output is:
Inside functionA
Inside functionB, offset: 0
Inside functionB, offset: 1
Inside functionB, offset: 2
Inside functionB, offset: 3
Inside functionB, offset: 4
Inside functionB, offset: 5
Inside functionB, offset: 6
Inside functionB, offset: 7
Inside functionB, offset: 8
Inside functionB, offset: 9
Resuming functionA

It seems that the coroutine does not resume as I expected. I would be grateful if you could point out what I might be doing wrong or if there is an issue with the library.
May I know what's the right way to do this ?

There are two issues with this code that I can see.
First because the root functionA task is being resumed manually, not the child functionB task(s). This resumes the parent coroutine and not the child that suspended so the child will never execute again. This is because the example doesn't have access to it from the main function to properly resume from functionB since its in-accessible and hidden within the first functionA coroutine. Its not possible to resume chained coroutines from the parent, it just resume that parent where it's co_await suspended it. For all coroutines the child has a continuation pointer to the parent so when the child completes it will resume the parent, but not vice versa. Since you are manually resuming the parent here (functionA) the child never gets to resume.
The second problem is std::suspend_always isn't actionable within libcoro in that it will dead-end any coroutine. The proper way to suspend/pause a coroutine is with an executors yield() function, this would be on coro::thread_pool or coro::io_scheduler. I will note that if you had put the std::suspend_always into the functionA coroutine and manually resumed it that does work since you are manually resuming it, but in practice with libcoro this really doesn't work since any combination of parent/child coroutines awaiting will cause it to dead end and not resume, so I would recommend using an executor (coro::thread_pool or coro::io_scheduler) to properly handle executing and resuming tasks.
Here is a simple test case fixing the two issues:
TEST_CASE("issue-268", "[task]")
{
    // To properly execute/handle coroutines we need an execution context, we'll just make a 1 core thread pool as an example.
    auto tp = coro::thread_pool{coro::thread_pool::options{.thread_count = 1}};

    auto functionB = [&](int i) -> coro::task<void>
    {
        for (int offset = 0; offset < 10; ++offset)
        {
            std::cout << "Inside functionB, offset: " << i << ":" << offset << std::endl;
            co_await tp.yield();
            std::cout << "Resuming functionB, offset: " << i << ":" << offset << std::endl;
        }
        co_return;
    };

    auto functionA = [&]() -> coro::task<void>
    {
        // This schedules the coroutine onto the thread pool executor context.
        co_await tp.schedule();

        std::cout << "Inside functionA" << std::endl;
        for (int i = 0; i < 10; ++i)
        {
            co_await functionB(i);
        }
        std::cout << "Resuming functionA" << std::endl;
        co_return;
    };

    // Use libcoro's non-coroutine context synchronous wait function in conjunction with the executor context to properly
    // execute/pause/resume coroutines based on coro::task
    coro::sync_wait(functionA());
}

Thank you so much for the input @jbaldwin.


WIP | Containers

Note: Some temporary changes have been done just to make this patch working which would be changed once this is ready
Currently the intention is to reuse as much code as possible from current deployment codebase and once we have all working, we can try to see a way to reduce the complexity or anything else. one node need bit explanation there which is build1 (in environments/doker.yaml). This is the node I used to build the containers and it is the same node which is used as docker registry now. So there I manually build the containers using docker_build/scripts/build_all.sh (or individual docker_build.sh calls for each image) and rest of the hosts will use the docker registry from build1 (configured in hiera) and setup the containers which it supposed to host (again mentioned in hiera as of now)
Also I am working actively on this branch, so you may see some changes (especially last commit (any time) may not be correct and would be just commiting to test them (docker build will get the code from git branch currently.
I would suggest to review per commit, I tried to make it easy to review per commit. Also last commit in the stack would mostly be work in progress, so please dont review that (I had to keep it part of a branch becuase docker build script get the code from git branch).

a few high level notes, some of this is repeated form the inline comments that I made, but I wanted to try to summarize. This patch is actually related to three types of changes:

docker related changes
changes to vagrant
changes to decouple config of services (pretty much the same as: https://github.com/JioCloud/puppet-rjil/pull/793/files)

This patch seems way too complicated, and I'd like to better understand the motivations for some of the changes:

moving from site.pp to per service manifests (lots of code changes, not sure why we can't use site.pp)
using some service to proxy between consul and services, adds a ton of complexity, and I don't understand what the advantage is. From a consul perspective, I'd say that port/service checks are how it should integrate with services, and it looks like running consul on the host, and using puppet to make it away of what containers to monitor (via their ports) is a pretty simple solution that achieves what we want. Your proposed solution adds at least a hundred lines of code, splits us into two consul models (host vs. whatever this other one is) and seems pretty complicated ( I could not fully grok it)
not sure what the advantage of runit is (although it seems likely that is will be a better solution that running services from docker)

I am putting the answers below, but it need more detailed discussion. The intention as of now is to reuse the deployment code as much as possible, and later we can use different other things to reduce the puppet complexity - rather than puppet do everything, we could use other projects where it make sense - like we may try using kubernets/messos for container placements, use micro operating systems like coreos/ranchoros/snappy etc
docker related changes
changes to vagrant
Harish: This change can be separated, (its just a single commit, the reason I did not sepaate it because now a days we are not merging any code, and without merging that code I could not continue)
changes to decouple config of services (pretty much the same as: https://github.com/JioCloud/puppet-rjil/pull/793/files)
Harish: In order to get this code work, we need to split the object creation and other stuffs as they are going to be running on different nodes, so I had to do it. I thought to reduce the complexity and reduce the common code - like rather than putting everything in rjil::openstack_objects, I thought to split them under specific prorject specific code like rjil::keystone::objects. Again now a days we are not merging any code, so I did not split it as separate patch atm.
This patch seems way too complicated, and I'd like to better understand the motivations for some of the changes:

moving from site.pp to per service manifests (lots of code changes, not sure why we can't use site.pp)

Harish: Here are the reasons I thought of
a. Once move to container (with net=host), every container name will be same as host's name, so you cannot have node level blocks, so you may have to have code blocks with container name (its another factor I push to containers) conditionals.
b. I thought these individual pieces would be handled by individual team, so it would be simpler for them to have very simple flat site.pp, otherwise number of containers are going to be large in number, and you are going to see lot of conditionals there.

using some service to proxy between consul and services, adds a ton of complexity, and I don't understand what the advantage is. From a consul perspective, I'd say that port/service checks are how it should integrate with services, and it looks like running consul on the host, and using puppet to make it away of what containers to monitor (via their ports) is a pretty simple solution that achieves what we want. Your proposed solution adds at least a hundred lines of code, splits us into two consul models (host vs. whatever this other one is) and seems pretty complicated ( I could not fully grok it)

Harish: I actually just tried this option initially to see how it work. Here is the major difference i see once we move to containers.
a. The host will not have anything but docker installed and a code to provision appropriate containers and  NOTHING ELSE.
b. everything else would be running on its own containers (may be with multiple services in same containers or individual containers in the services - my initiative in that is the last commit which is again just work in progress)
c. So now I think the complexity increase in terms of maintanance if we use putting service configs in the container where the consul runs - what we do is that we put service configs on the consul container and will reload consul there. I initially thought to have those service scripts installed in the consul container itself, then I have seen this "registrator" which monitor docker socket and register/deregister the services on consul automatically.
d. Even though it is introducing one container on every host, I feel it is adding values as below
i. Now all you need is to start container and nothing else (no need to place service specific configs in consul container, and no need to restart consul service in consul containers) - your service is started in the container and got registered in consul with no extra steps.
ii. Other real advantage I see when we do a upgrades or doing some maintainance on the containers and we need to test it before putting to live pool. Now let me consider a scenario on we upgrade say nova-api. We may start the container (initially) with different name (say test.nova.service.consul, rather than real.nova.service.consul) so we can test it before moving to real.nova.service.consul.
With puppet based solution, what we need to do is that, start nova-api container, put service config file with tag 'test' on consul container, reload consul on consul container (this need to be coordinated as they are running in two different system) and then test.
Once test is okay, then reconfigure the service config file with tag 'real', and reload the consul on consul container (again need to be coordinated).
Note that, we can use shared mounts to place service configs on consul containers, but still service reload of consul need to be happen on the consul container itself.
With registrator based solution, what we do is to start container with tag 'test' initiallly, test it, once we are okay, restart the container with tag 'real' - no need of coordination, no going back to other (consul) container if we need to make any changes/create container

iii. As mentioned on ii, reduced complexity in certain situations by just a self contained/self managed containers, no need to go back to consul container to do the service management, once we have shared mount for service scripts placed (or if the service scripts are available in consul container) we are done - just start/stop containers, your services will get registered/deregistered automatically.

not sure what the advantage of runit is (although it seems likely that is will be a better solution that running services from docker)

Harish: Initially I tried using direct command run as entry point (like keystone-all), but then I see certain problems as below
a. we run validation checks to validate service status which is actually beyond just seeing the process is running - where what docker make sure if we run direct service command is that the process just run. But we are going to have certain situations where service go bad even though process is running. So we need validation running every time, and if failed validation then to 1. report it back to consul (this patch is not doing that atm, which will be done before it ready for serious review), 2. fix the issues by running puppet. So I believe validation checks is a must thing to do
b. Now next option is to run validation on base host or a dedicated container, I thought that is going to add more complexity as
i. either we would be running puppet on that dedicated container or base host to configure container specific configuration, and run validation, which is going to fail the purpose of this effort of trying to separate the stuffs out - say for example, if nova-compute is going to upgrade which need certain changes in puppet where the container which run contrail-vrouter-agent is not upgraded. So I would suggest to have each container self sufficient to run everything it need to be running from that container itself.
c. Then I tried created a script to run validation and puppet runs in background (in loop as cron is not going to be running inside the container normally) and run keystone-all in foreground so docker will handle keystone. But then I see same problem as mentioned in (a), running validation in background cannot handle the process running in foreground (the moment it is down, the whole container is going to be end.
d. Then I tried in reverse, run main service (like keystone) in background and validation script in frontend. But then I face a problem of upstart not being supported in docker - you cannot run upstart scripts in docker container (we have all openstack services using upstart scripts).
e. And I see the advantages of runit - 1. it is the process supervisor which just restart process if its down which is better than verifying the process using the process id get from a pid file (like upstart and other service scripts). 2. at the same time it provide a way to manage the service like service scripts for individual services (and is integrated with puppet). Other thing is that runit can do process logging which is configuable - all you need is the process to send the result to stdout/err, runit will log them in individual files - like upstart, but in upstart it is not configuable, say for example, same logs will be printed on upstart logs as welll as keystone logs, in case of runit, what I do is to not configured logging from runit in case of keystone and glance but is enabled for maintainance.sh script (which run validation and if required puppet run)
f. Other thing I am trying to solve is that, trying to avoid any zombie processes - which may happen if the service command we run doesnt handle reaping its subprocesses in case of a terminiation (during docker stop). This would need bit more work, somebody has done this work already, (I would be taking certain stuffs from them to fix this problem completely). (https://github.com/phusion/baseimage-docker)


Remove verbose parameter everywhere

Closes #133

Codecov Report

Merging #134 (65bea56) into master (6108a65) will decrease coverage by 0.93%.
The diff coverage is 75.00%.

@@            Coverage Diff             @@
##           master     #134      +/-   ##
==========================================
- Coverage   85.97%   85.03%   -0.94%
==========================================
  Files          17       17
  Lines        3044     3041       -3
==========================================
- Hits         2617     2586      -31
- Misses        427      455      +28

Impacted Files
Coverage Δ

geofileops/geoops.py
96.59% <ø> (ø)

geofileops/util/_geoops_gpd.py
86.98% <ø> (-0.72%)
:arrow_down:

geofileops/util/_ogr_util.py
81.90% <66.66%> (-0.09%)
:arrow_down:

geofileops/util/_geoops_sql.py
84.94% <100.00%> (+0.11%)
:arrow_up:

geofileops/util/_general_util.py
66.94% <0.00%> (-17.36%)
:arrow_down:

geofileops/util/_io_util.py
75.00% <0.00%> (-6.67%)
:arrow_down:

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 6108a65...65bea56. Read the comment docs.


Enable back Firebase Test lab with Pixel 5 and Pixel 2

passed really fast 5 times in a row.

Still fails on Google bug and Google Services authentication


Custom item spawning

Still to do:

Remove reliance on asset bundle prefab for the sprite. Using TextureHelper, there are no errors, but there is also no (visible) sprite.
Look at scaling when the item is on the offering shrine
Remove/add check for debug for logs

Simplified creating objectives using what's already available in the game.
There are no localisation methods; it's all in a switch statement calling LocalizationManager directly. Postfixed the result had the same effect.
ObjectiveKey must be visible to ensure that created objectives are tracked against the correct plugins when they make a new objective (required parameter in the constructor).
Works fine in limited testing. Still need to test adding multiple different objectives.


Support workspaces at library level

Partially addresses #194
What this does:

Adds library level support for users to use a virtual manifest (a Cargo.toml with a [workspace] section, but not a [package] section) for their project's root Cargo.toml to separate their backend from the helper binaries (such as fullstack).
ran cargo fmt --all

What this doesn't do

Add functionality to generate a project that uses a virtual manifest at the project root.

What this might do soon

Address several Clippy lints introduced in recent PR's (currently these are fixed in #182, but I don't want to introduce merge conflicts (I might move the fixes here and create a new PR for the CI improvements))

Wait before merging!
Compilation is hanging for cargo fullstack, something to do with cargo-watch but either way I need to trouble shoot that to ensure it's not a problem with the code here.

I think I figured out my compilation issue, but a fix will require adding a new feature so that create-rust-app::dev::run_server (and it's sub-processes) opperate slightly differently

hey Anthony, this seems like a big change, please give me some time to review it and think about whether this added complexity is appropriate

Is this the only relevant change? If so, do you mind creating a PR for this separately? I'm okay with this

Is this the only relevant change? If so, do you mind creating a PR for this separately (or just move the rest of the changes elsewhere)? I'm okay with this

currently yeah, but there are more things that need to be changed to get everything to work properly (currently hangs on compiling the backend if you run cargo fullstack in a project using a workspace layout), enough changes that I see it fit to add a new feature plugin_workspace_support
the other changes are miscellaneous bug-fixes (caught by running cargo clippy w/ and w/o debug-assertions enabled) and formatting improvements (auto-generated by cargo fmt --all)
once everything is ready I'll be sure to do an in-depth code review that explains all the changes (like I have in the past for other big changes) but feedback is greatly appreciated in the meantime
If, when everything is ready, you'd still like me to split it into separate PR's I can do so then

hey Anthony, this seems like a big change, please give me some time to review it and think about whether this added complexity is appropriate

for sure, let me set it as a draft while I figure things out on my end

figured out it's not an issue with cargo-watch (or if it was, I fixed it already), it's likely being caused by bad file paths in various parts of the codebase, the working directory of the server binary is ./backend not ./ when using workspaces
gotta go, here's a list of bugs i've found so far and need to fix

the stuff that uses Tera (rendering templates) isn't finding the views folder
the logger seems to be broken (actix), though this could also be related to tokio

Ah, yeah — there’s definitely lots of tech debt in the code base when it comes to file paths. You’ve probably seen some of the TODO statements. The logging situation also needs reconsidering — I’ve always wanted to implement a universal logger which is why some of the logging setup is in the helper crate (create-rust-app) instead of the generated app. Alongside this, do you have any thoughts on moving package.json and other front end stuff to the root level of the project? It really sucks to have to cd into frontend in order to execute some commands; however, it also allows the end user to , for example, introduce a third folder for a mobile app or something similar (and thereby potentially sharing some common code amongst the three projects).

I personally like the flexibility granted by having the package.json in the frontend folder, it also gives us the opportunity to support rust frontends in the future

And regarding the tech debt, I have an idea we could implement remedy it (at least for the file paths and urls):

Extract all the directory paths (such as the path to views, the project root, the backend root, frontend root, dist folder, etc.) into environment variables, while we're at it, we can do URL's too (brought up in #75)

Pros: easy to configure on end user's end, and we could give default values in the code so that the environment variables are not necessary for people who don't need them, but available for people who want them (this would mean it's not a breaking change, and won't necessarily require a semvar bump).
Cons: could be a little cluttered, especially in the .env file, but in the code this clutter can be contained by adding a module full of global variables in the form of lazy statics, like paths.rs or something.

I'd like your thoughts on this though, because I might be missing something.

I think I figured out the issue with logging, this line was recently commented out, when I add the code to my project's main fn the logging works again.
https://github.com/Wulf/create-rust-app/blob/fd10180d9d071d84e43fb9dad39764a7ec312aa7/create-rust-app/src/lib.rs#L93

@Wulf the fix I suggest is to add that line of code into the template for actix, as I assume it was removed for a reason

I'll probably redo this soon

tested, work when my project is organized in workspaces, now testing to make sure my project still works when it isn't in workspaces

With this addition, it might be approaching time to have an example's folder showing the 4 basic project types, as well as some more advanced setups (i.e., workspaces, different frontend frameworks / languages, mixing SQL (for auth) and NoSQL (for everything else) databases, etc.)

Look what we have here :sweat_smile:

https://prisma.brendonovich.dev/getting-started/installation#inside-your-crate
https://prisma.brendonovich.dev/getting-started/installation#as-a-workspace-crate

Let's get this PR merged in soon :)


Notification refactor

Requires using ozp-react-commons#notificationRefactor
See tickets 603, 655, 600, 656
Acceptance criteria 603:
That hud and center have the same user experience (I don't think the font colors for the notification sidebar differing is important)
HUD Before:

Center Before: (The version we want all to use)

Acceptance criteria 655:
STR-
Log on as bigbrother
Share a folder with wsmith
Log on as wsmith
See the notification modal
RESULTS - "bigbrother has shared a the folder with you"
EXPECTED RESULTS - Should say "bigbrother has shared the folder {foldername} with you"
Ticket 600:
As a developer, I would like to access notifications modal from a link so I can embed the link in email notifications.
Acceptance Criteria:
Hyperlink that will take user to notifications modal: http://localhost:8000/dist/#/home/?notifications=true
The modal should behave as it currently does when clicking "See more" under notifications menu in global navigation
Acceptance criteria 656:
STR -
Go to a shared folder notification in the notification modal
It will prompt you to Ignore or Add or Remove Notification
Ignore and remove Notification does the same exact thing
RESULTS - get rid of Ignore and keep the Remove Notification to keep consistency throughout the notifications

note, the travis build will fail until ozp-react-commons gets merged

@lsemesky - can we default so that the top notification shows as selected (see attachments default_off vs default_on in AMLNG-603)?

updated styles in ozp-react-commons to address @rkenyon1969 's request. ozp-react-commons will need to be refreshed in hud and center and those servers restarted for the changes to take affect

Code looks good.
All Tests perform as described.
:+1:


cmd/go: support reusing GOMODCACHE system wide

What version of Go are you using (go version)?

$ go version
go version go1.15 linux/amd64

Given the new possibility to set GOMODCACHE i would like to make it system wide as i have only trusted users on my server it would let me gain disk space and download speed if the directory could be the same for all users.
But the perms prevent it, for security reason i believe.
Is there a workaround ? Or could it be a proposal for a such a feature ?
I'm aware of running a local proxy but it's overkill for me and will duplicate again the cache.

I'm not sure, what's problem here -- you can create common directory like /home/common, make it accessible to every trusted user and store mod cache there. Or, probably, i misunderstood your problem?

You need to set setgid bit for this directory, like chmod g+s /ocean/gomodcache. In that case, all new files and subdirectories will inherit group from parent directory

Yes for the group, but there is still no write permission on the group.
I tried also with -modcacherw but it's only for files and owner.

Try to set acl for group on this directory: setfacl -Rdm g:www-user:rwx /ocean/gomodcache. Did it helped?

No, i believe go get explicitly set group without write.

That's strange, that works for me.

Here's how i tried to reproduce you problem, feel free to update my steps if i do something wrong:
Create group:
groupadd test

Create user and add him to group:
useradd testuser
usermod -a -G test testuser

Create common directory and assign needed permissions:
mkdir /home/common
chmod g+rwx /home/common
chmod g+s /home/common
setfacl -Rdm g:test:rwx /home/common/

Login as new user and download module:
su testuser
export GOMODCACHE="/home/common/"
cd some_module
go get github.com/grigoriymikhalkin/sqlboiler-paginate/v4

And that works just fine.

The first user who go get works, it's the next user which cannot. Can you come back to the first user and go get something ?

Ah, i see. Indeed, i get this error from first user.

I'm not sure if this is meant to be supported and whether it's already possible (if done in a certain way).
/cc @jayconrod @matloob @bcmills @mvdan

What is your umask setting? What are the permissions on the directories where the permission denied errors are happening?
The go command creates most cache directories with mode 0777, but people usually have a umask of 0022, so that becomes 0755.


Cause Inconsistency

I find it awkward that for some events I can say something like:
Optional<Player> optPlayer = event.getCause().first(Player.class);

And this will always let me know if there's any player involved. Then for other events I have to use something like this:
Optional<EntityDamageSource> optDamageSource = event.getCause().first(EntityDamageSource.class);
if (optDamageSource.isPresent()) {
    Entity srcEntity;
    if (optDamageSource.isPresent() && optDamageSource.get() instanceof IndirectEntityDamageSource) {
        srcEntity = ((IndirectEntityDamageSource) optDamageSource.get()).getIndirectSource();
    } else {
        srcEntity = optDamageSource.get().getSource();
    }

    if (!(srcEntity instanceof Player)) {
        return;
    }
...

I think Cause.first() and related methods should always include all involved objects for cases such as this where there's, what I would call a metaobject. So in this case, the indirect source would also be returned by Cause.first(). That way I can replace this entire thing with one simple line (identical to the original):
Optional<Player> optPlayer = event.getCause().first(Player.class);

While I also maintain the ability to use the more in depth version for derivation of the cause.

I like the concept I'm just trying to think how this can cleanly be supported.

@Deamon5550 I was actually thinking about it some, the simplest thing we could do is add a MetaCause interface.
public interface MetaCause {
    Collection<Object> getSubObjects();
}

Then when an object which is an instance of MetaCause is added to a cause object, we just pull in everything from the getSubObjects method. This would of course require that things like DamageSource implement the MetaCause interface, but that shouldn't be a big deal.
I'm also open to other suggestions if someone has another, but I think this is the most straight forward approach.


Add the new language property.

Add the new language property which is a hard-coded natural name of the language. The interpreter name (Example: Cpython, Jpython) should still be contextEnvName and provide more information on which interpreter is spitting out the error.

Fixed in pull request #6. contextEnvName was left 'JavaScript by default' also because a javascript interpreter doesn't make sense for browsers. Each one has a different feature set that you should feature test for anyway.


[ds tck] Usage of empty array and classes in componet property types is not covered by the TCK

Today I wanted to use the following component property type:
/**
 * Annotation that can be used for components to specify the provided adapter
 * types
 *
 * @since 3.19
 */
@ComponentPropertyType
@Retention(RetentionPolicy.CLASS)
public @interface AdapterTypes {
	/**
	 * See {@link IAdapterFactory#SERVICE_PROPERTY_ADAPTABLE_CLASS}
	 *
	 * @return the types that this class adapts from
	 */
	Class<?>[] adaptableClass();

	/**
	 * See {@link IAdapterFactory#SERVICE_PROPERTY_ADAPTER_NAMES}
	 *
	 * @return the types that this class adapts to
	 */
	Class<?>[] adapterNames() default {};
}

sadly PDE-DS Generator generates wrong XML even though it passes the current TCK, so I suspect this case is currently missing from the TCK test cases.

sadly PDE-DS Generator generates wrong XML even though it passes the current TCK, so I suspect this case is currently missing from the TCK test cases.

A TCK is not required to be exhaustive, and doesn't guarantee that the implementation is bug free. If you'd like to contribute an extra test for the TCK we can review a PR, but otherwise I would suggest closing this issue.

A TCK is not required to be exhaustive, and doesn't guarantee that the implementation is bug free

It should cover as much as possible what is observable by the specification contract at least otherwise it does not really full fill the "compatibility" part of TCK if different implementations can generate different observable output.

If you'd like to contribute an extra test for the TCK we can review a PR

I'm already assigned to this issue but haven't had time yet to work on it but it is on my list.

but otherwise I would suggest closing this issue

Whats the benefit of closing valid issue reports?

Whats the benefit of closing valid issue reports?

Having large numbers of stale issues makes it hard to track real problems or enhancements. This isn't an actual bug in the TCK (the TCK isn't required to test 100% of cases), but a request to add a test as a result of a bug found in an implementation. We're happy to accept contributions like this where the tests make sense, but not to hold open issues indefinitely for them.


Make a start with the manual test

Goes together with https://github.com/wearefrank/ladybug-frontend/pull/407.


Fix app server initialization

[x] tests and linter show no problems (npm t)
[x] code is properly formatted (npm run fmt)

Landed in https://github.com/metarhia/impress/commit/dedd13ad9697dfe3176b85379e5d181bedaa4f83 and https://github.com/metarhia/impress/commit/fedc68bca7432a5dd322bc95f326607b2c9143c5


[BUGFIX] Fix unexpected dataset phase after helm install failure

Ⅰ. Describe what this PR does
Fix unexpected dataset phase after helm install failure. Specifically, this PR:

Additionally checks status of the helm status command and considered it as success only when STATUS: deployed
If STATUS does not equal to deployed, it deletes the helm release, and retries helm install

Ⅱ. Does this pull request fix one issue?

fixes #2748
Ⅲ. List the added test cases (unit test/integration test) if any, please explain if no tests are needed.
Ⅳ. Describe how to verify it
Follow the steps described in #2748
Ⅴ. Special notes for reviews

/test fluid-e2e

/lgtm
/approve

/test fluid-e2e

/retest

/retest

/retest

/hold
hold because fail to pass JuiceFS e2e test

/test fluid-e2e

/unhold

/lgtm


What are the modules involved in open-easyrtc and draw flow diagram

With in the same network(LAN):

NodeJS server
socket.io
Any browser(Chrome, FireFox, Safari etc.)

When multiple networks involved::

NodeJS server
socket.io
Any browser(Chrome, FireFox, Safari etc.)
Public STUN server from google (stun:stun.l.google.com:19302)

Completed in the issue #6.


Sorting the Loot Fabricator's inventory using a mod like Inventory Sorter voids the items

https://github.com/Shadows-of-Fire/Hostile-Neural-Networks/assets/15698722/9fdceb9b-514d-4a61-a1e4-3a773255c6c0
HostileNeuralNetworks-1.19.2-4.1.1
inventorysorter-22.0.0

I am uncertain if there is anything I can do about this, nor do I know why it would happen.  Might be missing a flag on the slots or something.

I am uncertain if there is anything I can do about this, nor do I know why it would happen. Might be missing a flag on the slots or something.

if it's unfixable, you could blacklist sorting in the UI (or ask the sorting mod's dev to have it blacklisted by default).


Do not allow 64 character long names

Hello,
this PR addresses the issue #129. When the VM name is equal to 64 characters, the deployment is failing due to ssh problem (agent could not copy files to the VSI).
When the name with 64 characters was identified, a padding "-1" is appended to it.
I have removed the previous workaround for > 63 characters, since longer names are accepted.
@mattcui @maximilien Could you please have a look at this PR?

Had a talk with @vvraskin, we all agree that it's a problem in Softlayer, we need to ask SL to fix it, but based on the experiences working with SL, it would need a pretty longer cycle, so in the meantime, we could work around it in CPI. I took a look at the code change, I don't see a UT to verify there appends "-1" when length of hostname is 64 characters.
/cc @maximilien

I can buy that. Please include this in the docs.
/cc @gu-bin

I will include this in doc after the PR is merged.

Thanks @gu-bin.
@vvraskin this is still failing with conflicts. Please update and I will review.
Best,
Max

@maximilien I've resolved the conflicts, please review.
@mattcui I didn't create a new UT, I adapted the existing one instead, vm name is exactly 64 characters if I set the prefix to this length:
https://github.com/vvraskin/bosh-softlayer-cpi/blob/master/src/bosh-softlayer-cpi/action/create_vm_test.go#L70
And I'm checking that the VM name is not equal to 64 at the end:
https://github.com/vvraskin/bosh-softlayer-cpi/blob/master/src/bosh-softlayer-cpi/action/create_vm_test.go#L82
Let me know if you want me to implement a new test for that.

@vvraskin I think this is wrong. You need to rebase on @zhanggbj last PR that changed the structure.
Ideally, your PR should only include the changes you want to make. I am closing this.
Please reopen with only the changes for your PR. Thanks.


Figure out multi-wasm-crate logging

Currently, our logging-setup function is set to run unconditionally as it's marked with wasm_bindgen(start).
Make sure this doesn't works correctly when multiple wasm crates are used simultanously.

It turns out that each wasm package has it's own environment. I created an app which has 2 wasm libraries and both have this setup function ran on wasm init:
#[wasm_bindgen(start)]
pub fn setup_logging() {
    console_error_panic_hook::set_once();
    tracing_wasm::set_as_global_default();
}

I later use them in js like so:
import init1, { Foo } from "/lib1/lib1.js";
import init2, { Bar } from "/lib2/lib2.js";

await init1();
await init2();

This causes both modules to have logging and panic hooks set and working. If I comment out the body of this setup function in one of them, then having it in the other one will not make the former logging or properly creating stack traces on panic, so it's unaffected.
Here's the example.
I think we're fine with our setup function then. Without it, there would be no way for a user to set it up externally for us without wrapping our lib within his own wasm package.


Versioning: VersionDotNetCoreAssemblies broken

VSTS Extension you are using
Versioning
Where are you running it?
on-premise TFS 2018
Version of Extension/Task
1.36
Expected behaviour and actual behaviour
Correct version fields in the .csproj file will be updated.
Right now <TargetFrameworks> or <TypeScriptToolsVersion> are updated but not <VersionPrefix> and <VersionSuffix>?
Only Version fields in a .NET Core Projects are <VersionPrefix>, <VersionSuffix> and <Version>. I think only those should be updated.

Thank you for the quick fix on this! I just confirmed that this fixed the issue for us.
We had done the workaround of explicitly specifying the version field, but it's nice to have it back to the default.
@rfennell just to make sure I understand, in the default "wildcard" state I need to ensure that the  element exists in the .csproj file, because it won't auto-add it if missing, correct?

@willyt150 yes you are correct the 'wildcard mode' only updates existing fields it does not add any

Happens again, all my builds are broken again


Play Stream https Wowza

Is it possible to run secure streaming over https?
When playing secure URL from HLS Streaming the video does not run on Clappr, in VLC for testing purposes, work.
Thanks

@ciclanohost yes, you should be able to play stream over https with clappr (and with almost any other player).
Can you post the streaming you're trying? Maybe you're facing an issue with your https headers, mostly the cors.

@leandromoreira  I receive this in logs:
Streaming URL:  https://videos.ciclano.io:1443/demovod/demovod/mp4:sample.mp4/playlist.m3u8
URL PLAYER:
or here to print all logs:
[error][hlsjs: unrecoverable network fatal error, evt hlsError, data [object Object] ]

@ciclanohost it seems that you're using https (supposed to be at port 443) with another port, try to stick with 443 and try it again.

There are some networks (especially some free WiFi access points) that don't allow traffic over other ports than 443 or 80.

When I tried to get the content from the url you provided (/playlist.m3u8) it didn't work.
$ curl -I https://videos.ciclano.io:1443/demovod/demovod/mp4:sample.mp4/playlist.m3u8
curl: (60) SSL certificate problem: unable to get local issuer certificate
More details here: https://curl.haxx.se/docs/sslcerts.html

you can play an https stream on an http page (with CORS headers enabled on server)
you cannot play and http stream on an https page. (even with CORS, most browsers will block the requests).

BTW, it is because it is either a self-signed HTTS certificate, or maybe when you configured your server ssl certificate you missed to add the chain certificate.
with curl -k (insecure) option flag, it return an hls manifest :
curl -k -v "https://videos.ciclano.io:1443/demovod/demovod/mp4:sample.mp4/playlist.m3u8"
* Hostname was NOT found in DNS cache
*   Trying <IP_ADDRESS>...
* Connected to videos.ciclano.io (<IP_ADDRESS>) port 1443 (#0)
* successfully set certificate verify locations:
*   CAfile: none
  CApath: /etc/ssl/certs
* SSLv3, TLS handshake, Client hello (1):
* SSLv3, TLS handshake, Server hello (2):
* SSLv3, TLS handshake, CERT (11):
* SSLv3, TLS handshake, Server key exchange (12):
* SSLv3, TLS handshake, Server finished (14):
* SSLv3, TLS handshake, Client key exchange (16):
* SSLv3, TLS change cipher, Client hello (1):
* SSLv3, TLS handshake, Finished (20):
* SSLv3, TLS change cipher, Client hello (1):
* SSLv3, TLS handshake, Finished (20):
* SSL connection using TLSv1.2 / ECDHE-RSA-AES128-SHA256
* Server certificate:
* 	 subject: CN=*.ciclano.io
* 	 start date: 2017-01-13 00:00:00 GMT
* 	 expire date: 2018-01-13 23:59:59 GMT
* 	 issuer: C=US; O=GeoTrust Inc.; CN=RapidSSL SHA256 CA
* 	 SSL certificate verify result: unable to get local issuer certificate (20), continuing anyway.
> GET /demovod/demovod/mp4:sample.mp4/playlist.m3u8 HTTP/1.1
> User-Agent: curl/7.38.0
> Host: videos.ciclano.io:1443
> Accept: */*
>
< HTTP/1.1 200 OK
< Accept-Ranges: bytes
< Access-Control-Expose-Headers: Date, Server, Content-Type, Content-Length
* Server WowzaStreamingEngine/4.7.0 is not blacklisted
< Server: WowzaStreamingEngine/4.7.0
< Cache-Control: no-cache
< Access-Control-Allow-Origin: *
< Access-Control-Allow-Credentials: true
< Access-Control-Allow-Methods: OPTIONS, GET, POST, HEAD
< Access-Control-Allow-Headers: Content-Type, User-Agent, If-Modified-Since, Cache-Control, Range
< Date: Thu, 13 Jul 2017 14:14:26 GMT
< Content-Type: application/vnd.apple.mpegurl
< Content-Length: 136
<
#EXTM3U
#EXT-X-VERSION:3
#EXT-X-STREAM-INF:BANDWIDTH=868638,CODECS="avc1.66.21,mp4a.40.2",RESOLUTION=512x288
chunklist_w1451497397.m3u8

Probably @kslimani is right!

@kslimani  Thanks for your help. Yes CORS is enable to *
When I play the URL in an external player like VLC it works. Only when the web player does not run.
I have tested with the certificate issued by wowza and I have the same result.
I also tested on transparent port at 443.
My scenario is:
A web server with geotrust certificate at 80 and https at 443
Wowza server in 1935 and https in 1443
Both on the same IP.
I created the JKS for wowza With our certified GeoTrust as directed by Wowza below:
openssl pkcs12 -export -in ciclano_io.crt -inkey ciclano_io.key -out ciclano.p12
keytool -importkeystore -srckeystore ciclano.p12 -srcstoretype PKCS#12 -destkeystore ciclano.jks -deststoretype JKS
@leandromoreira Thanks !
I will do more tests any information that can help me to correct the problem thank you

I see. You could configure the ssl certificate only on https port (443) of web server which proxy to wowza port 1935. Then you don't need to configure https on Wowza.
Here an Nginx example configuration :
upstream wowza {
  server <IP_ADDRESS>:1935;
}

server {
    listen 443 ssl;
    listen [::]:443 ssl;
    server_name my.domain.com;

    root /srv/www;
    index index.html;

    # adjust to your needs
    ssl_certificate /path/to/my.domain.com.crt;
    ssl_certificate_key /path/to/my.domain.com.key;

    location / {
        proxy_redirect off;
        proxy_http_version 1.1;
        proxy_read_timeout 10s;
        proxy_send_timeout 10s;
        proxy_connect_timeout 10s;
        proxy_pass http://wowza;
    }
}

server {
    listen 80 default_server;
    listen [::]:80 default_server;
    server_name my.domain.com;

    return 301 https://$host$request_uri;
}

@kslimani  I rebuilt the test here using just wowza and no longer the web server, using the wowza provided certificate itself:
Page:
https://57aca11f8a004.streamlock.net:9443/tests/index.html
Stream:
https://57aca11f8a004.streamlock.net/demovod/mp4:sample.mp4/playlist.m3u8
I've noticed that if Chrome or Firefox does not work, but Safari runs Clappr.

It seems you have an issue with your ssl certificate. The page is hosted on domain streamlock.net but your ssl certificate is *.ciclano.io, ciclano.io which is why it does not work.

@kslimani

I just informed that I tested with both certificates, both wowza and ours. In any of them I get the error.

Thank you I'll keep doing tests.


Link libraries fail

I got this error when i try to link external libraries for our project
ld: library not found for -lboost_system```

Bellow is my config

in `binding.gyp`

"variables": {
"boost_root%": "/path/to/libraries/"
},
'targets': [
...
"link_settings": {
"libraries": [
"-lboost_system",
"-lboost_thread",
"-ltorrent-rasterbar",
],
"ldflags": [
"-L<@(boost_root)",
"-Wl,-rpath,<@(boost_root)",
]
},
...
]

I was checked `path/to/libraries` folder and found these files in that folder `libboost_filesystem.dylib`, `libboost_thread.dylib`

i'm using: OSX 10.10.5, node v0.12.7, node-gyp v2.0.2.

Someone else can help me resolve this error.
Thanks so much!

Can you post the output of env V=1 node-gyp rebuild?  I'd like to see what flags it's using at compile and link time.

Bellow are logs of env V=1 node-gyp rebuild
c++ -bundle -undefined dynamic_lookup -Wl,-search_paths_first -mmacosx-version-min=10.5 -arch x86_64 -L./Release  -o Release/node_libtorrent_wrap_bindings.node Release/obj.target/node_libtorrent_wrap_bindings/src/ffi.o Release/obj.target/node_libtorrent_wrap_bindings/src/callback_info.o Release/obj.target/node_libtorrent_wrap_bindings/src/threaded_callback_invokation.o Release/libffi.a -lboost_system -lboost_thread -ltorrent-rasterbar
ld: library not found for -lboost_system
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make: *** [Release/node_libtorrent_wrap_bindings.node] Error 1
gyp ERR! build error
gyp ERR! stack Error: `make` failed with exit code: 2
gyp ERR! stack     at ChildProcess.onExit (/usr/local/lib/node_modules/node-gyp/lib/build.js:270:23)
gyp ERR! stack     at ChildProcess.emit (events.js:110:17)
gyp ERR! stack     at Process.ChildProcess._handle.onexit (child_process.js:1074:12)
gyp ERR! System Darwin 14.5.0
gyp ERR! command "node" "/usr/local/bin/node-gyp" "rebuild"
gyp ERR! cwd /Users/thinhuockim/Documents/project/bitmark/libtorrent-nodewrap
gyp ERR! node -v v0.12.7
gyp ERR! node-gyp -v v3.0.3
gyp ERR! not ok

Thanks.  What happens when you merge the 'ldflags' section into the 'libraries' section?  I don't think ldflags is a gyp directive on OS X due to its xcode emulation mode.

I dont' know why but i saw in statement that generated by node-gyp not include -L option when compile. i guess cause of error are be there.

Is it working for you with the changes I suggested?  If yes, can you close the issue?  Thanks.

I was merged, ldflags in to the libraries session but it's still does not work. But when i setting LD_LIBRARY_PATH=path/to/libraries, it's work probably. So i think problem are generate compiler command.
But anyway, you can close this issues.
Thanks for your support.


Strip newlines from highlights/notes

If you use a template like:
>[!quote]
> {{ text }}

The formatting will break in case there are newlines in text (as they won't be prefixed with > ).
Newlines should be stripped from text and note to avoid this. At the same time, perhaps strip page numbers from the text as well (lines containing only a number).

Alternatively, maybe it is possible to split a string by newlines into an array, and iterate over that in the template?
Something like:
> [!quote]
{% for line in text.split("\n") %}
> {{ line }}
{% endfor %}

Although not documented, split already works!


Investigate Graph and Store

Currently there are two ways to execute, graph.execute and store.execute.  These two methods do slightly different things.
For example if you execute on the Graph there are methods such as updateOperationChainView which are run, however if store.execute is called these methods are not and cannot be run (because they rely on things like the GraphConfig).
This issue becomes a problem if you run secondary Operations from within Handlers, where there is only access to the Store.
This issue should be addressed and resolved, with one point of entry and one way of execution.

Branch relating to this is develop-2.

This will be completed in Maestro.


[Services 3] Preparing Volumes for Relay

This PR introduces 2 new Containers.

ServiceVolumeContainer (Responsible for finding a volume by service and rendering VolumeDetail)
TaskVolumeContainer (Responsible for finding a volume by task and rendering VolumeDetail)

VolumeDetail was refactored into a presentational component with no store dependencies, instead receiving all data via props.

Thanks @jfurrow - addressed your comments. Let's fix the the volumes routing in a follow up PR. I'm filing a bug for it.


A11y of collapsibles is bad

With the current releases and app description elements, that can expand, we end up hitting the expand button and then a screen-reader will just go on further down the page. So it's hard to discover, that you are now showing a bunch of text above

I think there's not much we can do right now


Make fromHTML capable of using customfonts

I have seen arabic/persian is supported now when using text function directly
but is there any way to convert an HTML containing arabic/persian text rendering correctly?

If you modify fromhtml/addHtml, then yes.

I read in documentatiom that addhtml is deprecated and using htnl2pdf (which looks like uses html2canvas internally is prefered)
Do you think it is possible to render persian/arabic text correctly using this new method?
If so please tell me which files I should edit

I really dont like to fiddle in those plugins. :/

how to modify fromHTML,please tell me ,,thx!!

Need to render html and display special character like euro symbol

Special symbols are supported in text function but not in fromhtml

We are closing this issue, because we will not support any longer fromHTML and addHTML.
Explaination:
We are working on a new html2pdf plugin, which will be based on html2canvas and our context2d plugin. This should lead to more reliable results for your projects. And it will give us the time to focus on the core functionality of pdf-generation because we will not use our energy for writing/supporting/extending 2 html plugins. If you still want to use addHTML or fromHTML you can still use jsPDF 1.4.1.
Best Regards

@arasabbasi Is the html2pdf plugin available now? I can't find any information in the documentation.

Yes.

Yes, check examples/html2pdf

Doesn't html2pdf just create a large image of the HTML and wrap it inside a PDF-document? If yes, then it's a poor substitute for fromHTML() which renders the text as text which makes it selectable. If it's just an image, you won't be able to select the text in the document. For me, that's a massive no-go. If I want to generate an image, I'll do that. I don't really see the point of basically generate an image in a PDF-container.

I agree with you @magnus-eriksson . I cannot understand why the function fromHTML is now deprecated.


Looks like export.debug.batch-size doesn't have an effect

Hello I need to decrease usage of System limit "Service time series ingestion requests per minute" in GCP. To do that I wanted to increase batch-size but it looks like this parameter doesn't change anything. I added bellow extra argument but GCP metrics and logs do not show any change in behaviour.
  - name: export.debug.batch-size
    value: '200'

Hey @kacpercesarz98,
That configuration is specifically setting the number of TimeSeries objects in a given timeSeries.create request, which is what the GMP collectors use to send custom metrics to Cloud Monitoring.
The "Service time series ingestion requests per minute" issue is actually not relevant to the GMP collectors, but rather the system metrics used in your GCP project.
To inquire about raising this, I would file a support ticket with GCP.
Hope that helps.


lightning-dev 1.1.0 - get 404 error on loading lwr js files with "sf lightning dev site"

Note
Before you submit your issue, make sure that:

You're using the latest version of Salesforce CLI.
You've searched both open and closed issues for related posts.
You've used the doctor command to diagnose common issues.
You understand that GitHub Issues don't adhere to any agreement or SLA.

If you require immediate assistance, use official channels such as Salesforce Customer Support.

Summary
Hello, I wanted to try the new beta plugin "local dev" for the development for a new LWR experience cloud. So I tried to setup my project to make it works:

I checked the "Local Dev" on my sandbox.
I added some missing @lwrjs depedencies to my package.json:

I encountered a first problem with the lwc engine, I correct it (maybe wrongly) by updating the "LWC_VERSION" inside the<EMAIL_ADDRESS>file generated by "sf lightning dev site":

Now, I have a 404 error on all lwr js files, I don't know why it looks for files on "/mobify/bundle/development/.localdev/..." and not directly on "/.localdev/...":

Steps To Reproduce

run sf lightning dev site on a new LWR experience

Expected result
No more 404 errors on lwr js files fetched
Actual result
No errors on screen but errors on the browser dev console.

Additional information

System Information

{
  "architecture": "win32-x64",
  "cliVersion"<EMAIL_ADDRESS>  "nodeVersion": "node-v20.10.0",
  "osVersion": "Windows_NT 10.0.19045",
  "rootPath": "C:\\Users\\*******\\AppData\\Roaming\\npm\\node_modules\\@salesforce\\cli",
  "shell": "powershell",
  "pluginVersions": [
    "@oclif/plugin-autocomplete 3.2.0 (core)",
    "@oclif/plugin-commands 4.0.11 (core)",
    "@oclif/plugin-help 6.2.8 (core)",
    "@oclif/plugin-not-found 3.2.16 (core)",
    "@oclif/plugin-plugins 5.4.4 (core)",
    "@oclif/plugin-search 1.2.5 (core)",
    "@oclif/plugin-update 4.5.3 (core)",
    "@oclif/plugin-version 2.2.10 (core)",
    "@oclif/plugin-warn-if-update-available 3.1.11 (core)",
    "@oclif/plugin-which 3.2.10 (core)",
    "@salesforce/cli 2.56.7 (core)",
    "apex 3.4.2 (core)",
    "api 1.1.0 (core)",
    "auth 3.6.48 (core)",
    "community 3.2.29 (user) published 3 days ago (Sat Aug 31 2024)",
    "data 3.6.1 (core)",
    "deploy-retrieve 3.10.1 (core)",
    "info 3.3.29 (core)",
    "lightning-dev 1.1.0 (user) published 16 days ago (Sun Aug 18 2024)",
    "limits 3.3.25 (core)",
    "marketplace 1.2.22 (core)",
    "org 4.5.4 (core)",
    "packaging 2.8.0 (core)",
    "schema 3.3.24 (core)",
    "settings 2.3.13 (core)",
    "signups 2.5.9 (user) published 16 days ago (Sun Aug 18 2024) (latest is 2.5.12)",
    "sobject 1.4.29 (core)",
    "source 3.5.14 (core)",
    "telemetry 3.6.7 (core)",
    "templates 56.3.12 (core)",
    "trust 3.7.23 (core)",
    "user 3.5.25 (core)",
    "@salesforce/sfdx-plugin-lwc-test 1.2.0 (user) published 181 days ago (Tue Mar 05 2024)",
    "@salesforce/sfdx-scanner 4.2.0 (user) published 97 days ago (Tue May 28 2024) (latest is 4.5.0)"
  ]
}

@Ewaken thanks for filing this issue - we are working on having a fix out sometime tomorrow.

@Ewaken - should be resolved in v1.2.0 if you want to give that a try

Hello,
Seems like issue has been resolved.
But unable to load the site.
After updating to the  v1.2.0 getting the following errors

rendering for "webruntime/appXk3ja79" failed. Reason: 404: Could not find module with specifier "lightning/alert"
Uncaught TypeError: LWR.define is not a function

It is a Custome LWR Site

@lakshmakusam - could you file a new issue with more details please?

Hello @nrkruk I still have the same issue with 1.2.0 version:

{
  "architecture": "win32-x64",
  "cliVersion"<EMAIL_ADDRESS>  "nodeVersion": "node-v20.10.0",
  "osVersion": "Windows_NT 10.0.19045",
  "rootPath": "C:\\Users\\******\\AppData\\Roaming\\npm\\node_modules\\@salesforce\\cli",
  "shell": "powershell",
  "pluginVersions": [
    "@oclif/plugin-autocomplete 3.2.2 (core)",
    "@oclif/plugin-commands 4.0.13 (core)",
    "@oclif/plugin-help 6.2.10 (core)",
    "@oclif/plugin-not-found 3.2.18 (core)",
    "@oclif/plugin-plugins 5.4.6 (core)",
    "@oclif/plugin-search 1.2.7 (core)",
    "@oclif/plugin-update 4.5.5 (core)",
    "@oclif/plugin-version 2.2.11 (core)",
    "@oclif/plugin-warn-if-update-available 3.1.13 (core)",
    "@oclif/plugin-which 3.2.12 (core)",
    "@salesforce/cli 2.58.7 (core)",
    "apex 3.4.8 (core)",
    "api 1.2.1 (core)",
    "auth 3.6.54 (core)",
    "community 3.2.32 (user) published 5 days ago (Sat Sep 14 2024)",
    "data 3.6.5 (core)",
    "deploy-retrieve 3.12.3 (core)",
    "info 3.4.3 (core)",
    "lightning-dev 1.2.0 (user) published 6 days ago (Sat Sep 14 2024)",
    "limits 3.3.29 (core)",
    "marketplace 1.2.25 (core)",
    "org 4.5.7 (core)",
    "packaging 2.8.2 (core)",
    "schema 3.3.26 (core)",
    "settings 2.3.16 (core)",
    "signups 2.5.12 (user) published 19 days ago (Sun Sep 01 2024) (latest is 2.5.16)",
    "sobject 1.4.33 (core)",
    "source 3.5.18 (core)",
    "telemetry 3.6.10 (core)",
    "templates 56.3.17 (core)",
    "trust 3.7.27 (core)",
    "user 3.5.29 (core)",
    "@salesforce/sfdx-plugin-lwc-test 1.2.0 (user) published 198 days ago (Tue Mar 05 2024)",
    "@salesforce/sfdx-scanner 4.2.0 (user) published 114 days ago (Tue May 28 2024) (latest is 4.5.0)"
  ]
}

Hello @nrkruk fixed with 1.3.0 version. Thank you. 😃


Control being interrupted when play another url while the control loading another audio

The issues happened when I fast-playing a few audios. Because I want to load the audio first, then I play another audio that issue has happened. I think we should have a function to load the audio instead of using the 'play' function.

Yes this is currently a limitation in the player implementation. Multiple players cannot be created at the same time and so loading URL on play is a way to enforce that. I will look into finding a better implementation where we can support multiple players.

In my case, i dont need multiple players, that is happens when a play a audio when the player loading another one. I think i should clear that one and load new audio. I hope this case will be resolved and hope you find the best way to use multiple players.


Upgrade to ElasticSearch 0.13.0

Upgrade to ElasticSearch 0.12.0.

Original issue reported on code.google.com by<EMAIL_ADDRESS>on 21 Oct 2010 at 6:09

Original comment by<EMAIL_ADDRESS>on 16 Dec 2010 at 9:25

Changed state: Fixed

Latest version is now 0.13.0.

Original comment by<EMAIL_ADDRESS>on 20 Nov 2010 at 3:38

Changed title: Upgrade to ElasticSearch 0.13.0


Ability to stop scanning

Ability to be able to stop while scanning:
When the user just mistakenly scan the file

Hi @furrpleTtalgi, I'm not sure exactly what you're asking for.
With "stop while scanning", do you mean to exit from the process early?
If so, hitting Ctrl+C while the app is running should do the trick. Can you give that a try and let me know if that addresses your need?

I'm going to close this issue since we have a a good way to quit scanning. If there is anything we're missing or a new feature needed we can always reopen the issue


Editor window opens with some top and left size offsets

At each run it gets doubled, here a screenshot of a first start:

I wrongly thought there was something related to those 0.8 multipliers but trying to remove them seems to change nothing here.
This is Archlinux with lite-xl built from AUR packages, so both 1.16.10 and current master using LXQt desktop environment.

The window does get its initial heights if they're present from ~/.config/lite-xl/session.lua.
So it's possible that it's whatever's saving/loading them. If you close lite-xl, do the numbers saved into session.lua match the recently closed window?

thank you @adamharrison, I'm still new to this IDE. I get some window={[1]=1680,[2]=968,[3]=2,[4]=51,["n"]=4}} setting and 3 and 4 should be always 0 here IMO. The window size seems correct, I wonder if the openbox decorator is doing something wrong in this, apparently those offsets matches the decorator sizes. (what is that "n"=4?)

Honestly not sure. This is probably an SDL problem, then. Those offsets basically come directly from SDL_GetWindowPosition; so if that's messed up, and it's not an idempotent operation to pass the output into SDL_SetWindowPosition, that's definitely on SDL.
And unfortunately, there's not much we can do about it, short of going in and fixing SDL. Which is possible, as we do have a fork active, but it's a lot harder. Are you using X11 or Wayland?

Also, as an alternative, if you want to have it just automatically snap to 0, 0 on bootup, you can always just add the following to your user config:
local x,y,w,h = system.get_window_size()
if x == 2 and y == 51 and w == 1680 and h == 968 then
  system.set_window_size(0,0, w, h)
end

That'd be called on bootup, and would probably make it less irritating for you.

thank you very much! It's a bit annoying but I'm not sure if this is a lite-xl issue or a badly reported coordinate from the system or something, I'm sure it's something that once clear could be solved in some way. Unfortunately that solution seems not working here, either adding it on top or at the end of ~/.config/lite-xl/init.lua file, not using the if condition to force it in any case, is there some API documentation reference about it that I can look at?

Are you using X11 or Wayland?

sorry, I'm on X11 (I think, if the following is correct way to know it, I have some Wayland package installed but never managed)
$ loginctl show-session 2 -p Type
Type=x11

In my applications I did this: avoid to save the window size and position when maximized or iconized, saving also those states, so at restart I restore the last state saved: maximized, iconized or the last size used.

For the moment I didn't follow very closely all the exchanges but it seems fine to me to implement your proposition above. Based on what you have seen do you think it would solve the problem ?

I think so, I noticed later that if I close the editor with a defined size and position it is correctly restored at restart, only if maximized before closing it does the undesired behavior, so that way it should work as expected and the workaround I'm using is not needed anymore.

I see that the relevant code is all in data/core/init.lua with load|save_session(), so if you haven't started already to work on this I could try to do some PR, just need to get confident with the code and how to run the app locally to test changes on the fly.

I see that the relevant code is all in data/core/init.lua with load|save_session(), so if you haven't started already to work on this I could try to do some PR, just need to get confident with the code and how to run the app locally to test changes on the fly.

If you can do this that would be really helpful.


vi.fn() performs an extra await leading to mismatching behaviour when compared with normal function

Describe the bug
Replacing vi.fn(async () => {}) by async () => {} may lead to different results.
In some cases, the ordering of asynchronous tasks might be key. In fast-check, we have a scheduler able to help our users to automatically detect potential race conditions leading to bugs in their code. In order to test it, we used to rely on Jest but recently we moved to Vitest to benefit from ES Module support.
While playing with vi.fn() I encountered some issues related to when promises resolved: the order order is not consistent with a version not relying on vi.fn().
Reproduction
Here is an example highlighting the difference I encounter (diff between no vi.fn() or manual version of it and vi.fn()):
import { vi, test, expect } from "vitest";

// Passes!
test("should pass without vi.fn()", async () => {
  let obj = { done: false };
  const f = async () => {};
  Promise.resolve()
    .then(() => {})
    .then(() => (obj.done = true));
  await f();
  expect(obj.done).toBe(false);
});

// It should pass, but it fails!
test("should pass with vi.fn()", async () => {
  let obj = { done: false };
  const f = vi.fn(async () => {});
  Promise.resolve()
    .then(() => {})
    .then(() => (obj.done = true));
  await f();
  expect(obj.done).toBe(false);
});

System Info
System:
    OS: Windows 11 10.0.22621
    CPU: (4) x64 Intel(R) Core(TM) i5-3570K CPU @ 3.40GHz
    Memory: 1.25 GB / 7.89 GB
  Binaries:
    Node: 20.8.0 - C:\Program Files\nodejs\node.EXE
    Yarn: 1.22.21 - ~\AppData\Roaming\npm\yarn.CMD
    npm: 10.2.3 - C:\Program Files\nodejs\npm.CMD
  Browsers:
    Edge: Chromium (123.0.2420.97)
    Internet Explorer: 11.0.22621.3527
  npmPackages:
    vitest: ^1.5.3 => 1.5.3

Used Package Manager
npm
Validations

[X] Follow our Code of Conduct
[X] Read the Contributing Guidelines.
[X] Read the docs.
[X] Check that there isn't already an issue that reports the same bug to avoid creating a duplicate.
[X] Check that this is a concrete bug. For Q&A open a GitHub Discussion or join our Discord Chat Server.
[X] The provided reproduction is a minimal reproducible example of the bug.

The source of the issue seems to be in tinyspy:
function I(e) {
  R(u("function", e) || u("undefined", e), "cannot spy on a non-function value");
  let t = function(...s) {
    let r = A(t);
    r.called = !0, r.callCount++, r.calls.push(s);
    let m = r.next.shift();
    if (m) {
      r.results.push(m);
      let [l, o] = m;
      if (l === "ok")
        return o;
      throw o;
    }
    let p, d = "ok";
    if (r.impl)
      try {
        new.target ? p = Reflect.construct(r.impl, s, new.target) : p = r.impl.apply(this, s), d = "ok";
        // ^ It calls my function, without any extra wrapping
      } catch (l) {
        throw p = l, d = "error", r.results.push([d, l]), l;
      }
    let a = [d, p];
    if (b(p)) {
      let l = p.then((o) => a[1] = o).catch((o) => {
        throw a[0] = "error", a[1] = o, o;
      });
      Object.assign(l, p), p = l;
      // ^ It adds an extra .then to the promise being returned to the user... in other words the user pays an extra .then
    }
    return r.results.push(a), p;
  };
  i(t, "_isMockFunction", !0), i(t, "length", e ? e.length : 0), i(t, "name", e && e.name || "spy");
  let n = A(t);
  return n.reset(), n.impl = e, t;
}

See my comments in the minified code

Without the minified code, the source of the issue is the rewrapping of the Promise done by:
    if (isPromise(result)) {
      const newPromise = result
        .then((r: any) => (resultTuple[1] = r))
        .catch((e: any) => {
          // @ts-expect-error TS for some reasons narrows down the type
          resultTuple[0] = 'error'
          resultTuple[1] = e
          throw e
        })
      // we need to reassign it because if it fails, the suite will fail
      // see `async error` test in `test/index.test.ts`
      Object.assign(newPromise, result)
      result = newPromise
    }

Result is not anymore the original result but a value derived from it and paying the cost of an extra .then. This extra .then is the reason why the code with vi.fn() does not behave the same way.

I'm attempting to come up with a fix (if feasible).

Fix sent: https://github.com/tinylibs/tinyspy/pull/45

Is it worth adding a dedicated test on Vitest's side once the fix gets released on tinyspy? If so I can work on adding such test

Thanks you so much @sheremet-va, you are doing an awesome job!


Capstone 2 project

Team Members

Uthman Bello
Kola Kolade
Mark Rubanza

Highlights

TVMaze and Involvement APIs were used to render, send and receive data
A Single Page App was built using mainly JavaScript
Comment and Reservation Popups were activated
Dynamic likes were displayed
ES6 modules were used
Webpack bundling was utilized
Tests were also carried out using JEST
Errors were fixed using linters
The project was deployed

Project Presentation
Here is the link to the presentation:
Presentation Link

Thanks for your time

Thanks for your time

@banzaman you're welcome


Improve the GRDB demo.

Related to #14, we can leverage prepareDependencies to push the database dependency into the GRDBQueryKey "library" code.

Good thinking! By the way, since Examples is not shipped with the app, I don't think there'd be any harm in making some code in GRDBQueryKey public. That way when I copy and paste the code into my own codebase, I don't have to be regularly adding public.

@acosmicflamingo You can always maintain your own re-usable library of these types and make them public.

@mbrandonw true! Thanks for the PR!!!


Hacky way to make sure we really quit

@keybase/react-hackers
to test/repro problem:

// build a pinentry window
windowState = {
  closed: false,
  sessionID: -1,
  features: [],
  type: 0,
  prompt: "doo stuff",
  windowTitle: "demo",
  canceled: false,
  submitted: false,
}

devEdit(['pinentry','pinentryStates',1], windowState)

// test app.exit(0)
require('electron').remote.app.exit(0)
// or use quit button.

notice how it doesn't work the first time. Just closes windows.
I feel like app.exit(0) should kill everything and exit the process, and we shouldn't have to do this. But empirically looks like we do.
I went through a bunch of weird states, and this seems to work through those as well.
For example the case where we have dead references to windows or previous failed quits.

So this might be an electron bug, that we might want to file?

👍


TypeError: on_train_batch_start() takes 3 positional arguments but 4 were given

Bug description
Sure, here's your issue content translated and formatted in English for GitHub:
Hi, I just started using Lightning and I've been running into this bug lately.
Here's my code:
python
复制代码
from typing import Type, Mapping, Callable, Optional, Union, Tuple, List
import pytorch_lightning as pl
import torch
from torch import Tensor
from torch_geometric.data.storage import recursive_apply
from torchmetrics import Metric
from tsl.predictors import Predictor
class Imputer(Predictor):
...
def on_train_batch_start(self, batch, batch_idx: int,
unused: Optional[int] = 0) -> None:
r"""For every training batch, randomly mask out value with probability
:math:p = \texttt{self.whiten\_prob}. Then, whiten missing values in
:obj:batch.input.x"""
super(Imputer, self).on_train_batch_start(batch, batch_idx, unused)
# randomly mask out value with probability p = whiten_prob
batch.original_mask = mask = batch.input.mask
p = self.whiten_prob
if isinstance(p, Tensor):
p_size = [mask.size(0)] + [1] * (mask.ndim - 1)
p = p[torch.randint(len(p), p_size)].to(device=mask.device)
whiten_mask = torch.rand(mask.size(), device=mask.device) > p
batch.input.mask = mask & whiten_mask
# whiten missing values
if 'x' in batch.input:
batch.input.x = batch.input.x * batch.input.mask
...
Here's my traceback:
arduino
复制代码
Traceback (most recent call last):
File "./experiments/run_imputation.py", line 313, in
run_experiment(args)
File "./experiments/run_imputation.py", line 286, in run_experiment
trainer.fit(imputer,
File "/root/anaconda3/envs/spin/lib/python3.8/site-packages/pytorch_lightning/trainer/trainer.py", line 543, in fit
call._call_and_handle_interrupt(
File "/root/anaconda3/envs/spin/lib/python3.8/site-packages/pytorch_lightning/trainer/call.py", line 44, in _call_and_handle_interrupt
return trainer_fn(*args, **kwargs)
File "/root/anaconda3/envs/spin/lib/python3.8/site-packages/pytorch_lightning/trainer/trainer.py", line 579, in _fit_impl
self._run(model, ckpt_path=ckpt_path)
File "/root/anaconda3/envs/spin/lib/python3.8/site-packages/pytorch_lightning/trainer/trainer.py", line 986, in _run
results = self._run_stage()
File "/root/anaconda3/envs/spin/lib/python3.8/site-packages/pytorch_lightning/trainer/trainer.py", line 1030, in _run_stage
self.fit_loop.run()
File "/root/anaconda3/envs/spin/lib/python3.8/site-packages/pytorch_lightning/loops/fit_loop.py", line 205, in run
self.advance()
File "/root/anaconda3/envs/spin/lib/python3.8/site-packages/pytorch_lightning/loops/fit_loop.py", line 363, in advance
self.epoch_loop.run(self._data_fetcher)
File "/root/anaconda3/envs/spin/lib/python3.8/site-packages/pytorch_lightning/loops/training_epoch_loop.py", line 140, in run
self.advance(data_fetcher)
File "/root/anaconda3/envs/spin/lib/python3.8/site-packages/pytorch_lightning/loops/training_epoch_loop.py", line 234, in advance
response = call._call_lightning_module_hook(trainer, "on_train_batch_start", batch, batch_idx)
File "/root/anaconda3/envs/spin/lib/python3.8/site-packages/pytorch_lightning/trainer/call.py", line 159, in _call_lightning_module_hook
output = fn(*args, **kwargs)
File "/root/anaconda3/envs/spin/lib/python3.8/site-packages/tsl/imputers/imputer.py", line 134, in on_train_batch_start
super(Imputer, self).on_train_batch_start(batch, batch_idx, unused)
TypeError: on_train_batch_start() takes 3 positional arguments but 4 were given
I asked ChatGPT to solve this problem, and it suggested changing:
python
复制代码
def on_train_batch_start(self, batch, batch_idx: int,
unused: Optional[int] = 0) -> None:
to:
python
复制代码
def on_train_batch_start(self, batch, batch_idx: int, dataloader_idx=None,
unused: Optional[int] = 0) -> None:
But this caused a new issue. Here's the new traceback:
arduino
复制代码
Traceback (most recent call last):
File "./experiments/run_imputation.py", line 313, in
run_experiment(args)
File "./experiments/run_imputation.py", line 286, in run_experiment
trainer.fit(imputer,
File "/root/anaconda3/envs/spin/lib/python3.8/site-packages/pytorch_lightning/trainer/trainer.py", line 543, in fit
call._call_and_handle_interrupt(
File "/root/anaconda3/envs/spin/lib/python3.8/site-packages/pytorch_lightning/trainer/call.py", line 44, in _call_and_handle_interrupt
return trainer_fn(*args, **kwargs)
File "/root/anaconda3/envs/spin/lib/python3.8/site-packages/pytorch_lightning/trainer/trainer.py", line 579, in _fit_impl
self._run(model, ckpt_path=ckpt_path)
File "/root/anaconda3/envs/spin/lib/python3.8/site-packages/pytorch_lightning/trainer/trainer.py", line 986, in _run
results = self._run_stage()
File "/root/anaconda3/envs/spin/lib/python3.8/site-packages/pytorch_lightning/trainer/trainer.py", line 1030, in _run_stage
self.fit_loop.run()
File "/root/anaconda3/envs/spin/lib/python3.8/site-packages/pytorch_lightning/loops/fit_loop.py", line 205, in run
self.advance()
File "/root/anaconda3/envs/spin/lib/python3.8/site-packages/pytorch_lightning/loops/fit_loop.py", line 363, in advance
self.epoch_loop.run(self._data_fetcher)
File "/root/anaconda3/envs/spin/lib/python3.8/site-packages/pytorch_lightning/loops/training_epoch_loop.py", line 140, in run
self.advance(data_fetcher)
File "/root/anaconda3/envs/spin/lib/python3.8/site-packages/pytorch_lightning/loops/training_epoch_loop.py", line 234, in advance
response = call._call_lightning_module_hook(trainer, "on_train_batch_start", batch, batch_idx)
File "/root/anaconda3/envs/spin/lib/python3.8/site-packages/pytorch_lightning/trainer/call.py", line 159, in _call_lightning_module_hook
output = fn(*args, **kwargs)
TypeError: on_train_batch_start() missing 1 required positional argument: 'dataloader_idx'
I'm confused! Could you please help me resolve this issue? Thank you!
What version are you seeing the problem on?
v2.2
How to reproduce the bug
No response
Error messages and logs
# Error messages and logs here please

Environment

Current environment
#- PyTorch Lightning Version (e.g., 1.5.0):
#- PyTorch Version (e.g., 2.0):
#- Python version (e.g., 3.9):
#- OS (e.g., Linux):
#- CUDA/cuDNN version:
#- GPU models and configuration:
#- How you installed Lightning(`conda`, `pip`, source):

More info
No response

Python: 3.12.4
PyTorch: 2.3.1+cu121
PyTorch Lightning: 2.3.3

Oh! I solved it!
The super(Imputer, self).on_train_batch_start(batch, batch_idx, unused)
was calling the parent class's function instead of the one defined in the subclass.
By tracing the inheritance hierarchy, I found that the on_train_batch_start function in the parent class's parent class's parent is defined as follows:
def on_train_batch_start(self, batch: Any, batch_idx: int) -> Optional[int]:
This means I just needed to remove the unused parameter in the call to resolve the issue.

Yes exactly, the extra unused parameter was the problem. You can just remove it. This was probably put there as a placeholder from an older version of Lightning.


feat: arguments in template function

Related issue
Closes #26.
Summary of changes
Passes the following args to the template function:
local placeholders = {
  file_path = "$FILE_PATH",
  file_name = "$FILE_NAME",
  file_name_no_ext = "$FILE_NAME_NO_EXT",
  cursor = "$CURSOR",
  label = "$LABEL",
}

Added a test which uses all of the placeholders.
Updated readme and vimdoc

The latest version is very good, thanks! I believe this way of doing it should bring more or less full flexibility to the user.


shouldUploadTLog control over sign-blob command and enable force flag

Description
I noticed that we have control over the sign command to decide whether we should upload an entry to tlog, when we specify force flag true, it'll bypass the control. So, couldn't we have to do it for the sign-blob command too?
cc: @dlorenc

does it make sense? @dlorenc @mattmoor 🙋🏻♂

+1, I think @sabre1041 started on something similar.

Dupe of https://github.com/sigstore/cosign/issues/1373


spark-acid incorrectly reads/writes pre-Gregorian timestamps

In beeline:
0: jdbc:hive2://localhost:10000> create table ts_acid (ts TIMESTAMP) stored as orc TBLPROPERTIES ('transactional' = 'true');
No rows affected (0.132 seconds)
0: jdbc:hive2://localhost:10000> insert into ts_acid values ('1200-01-01 00:00:00.0');
No rows affected (2.339 seconds)
0: jdbc:hive2://localhost:10000> select * from ts_acid;
20/09/16 17:51:51 INFO lockmgr.DbTxnManager: Stopped heartbeat for query: bruce_20200916175151_d8bc218d-da7d-491a-8f97-e38fb2416748
+------------------------+
|       ts_acid.ts       |
+------------------------+
| 1200-01-01 00:00:00.0  |
+------------------------+
1 row selected (0.207 seconds)
0: jdbc:hive2://localhost:10000>

In Spark:
scala> val df = spark.read.format("HiveAcid").options(Map("table" -> "default.ts_acid")).load
20/09/16 17:53:22 WARN HiveConf: HiveConf of name hive.metastore.local does not exist
df: org.apache.spark.sql.DataFrame = [ts: timestamp]

scala> df.show(truncate=false)
20/09/16 17:53:29 WARN HiveConf: HiveConf of name hive.metastore.local does not exist
20/09/16 17:53:31 ERROR AcidUtils: Failed to get files with ID; using regular API: Only supported for DFS; got class org.apache.hadoop.fs.LocalFileSystem
+-------------------+
|ts                 |
+-------------------+
|1199-12-24 16:00:00|
+-------------------+

scala>

Conversely, in Spark:
scala> val df = Seq(java.sql.Timestamp.valueOf("1400-01-01 00:00:00.0")).toDF("ts")
df: org.apache.spark.sql.DataFrame = [ts: timestamp]

scala> df.write.format("HiveAcid").option("table", "default.ts_acid").mode("append").save()
20/09/16 18:05:30 WARN HiveConf: HiveConf of name hive.metastore.local does not exist
20/09/16 18:05:31 WARN HiveConf: HiveConf of name hive.metastore.local does not exist
20/09/16 18:05:32 WARN HiveConf: HiveConf of name hive.metastore.local does not exist

scala>

Then, in beeline:
0: jdbc:hive2://localhost:10000> select * from ts_acid;
20/09/16 18:06:25 INFO lockmgr.DbTxnManager: Stopped heartbeat for query: bruce_20200916180625_03a152d1-2be1-41c7-b205-33d38e68ce2f
+------------------------+
|       ts_acid.ts       |
+------------------------+
| 1200-01-01 00:00:00.0  |
| 1400-01-09 08:00:00.0  |    <--- This should be 1400-01-01 00:00:00.0
+------------------------+
2 rows selected (0.283 seconds)
0: jdbc:hive2://localhost:10000>

thanks @bersprockets we will take a look at it.

An update:
On write, spark-acid does not write post-start-of-Gregorian calendar values correctly either:
In Spark:
scala> val df = Seq(java.sql.Timestamp.valueOf("2017-03-14 23:22:01.786")).toDF("ts")
df: org.apache.spark.sql.DataFrame = [ts: timestamp]

scala> df.write.format("HiveAcid").option("table", "default.ts_acid2").mode("append").save()
20/09/17 10:55:36 WARN HiveConf: HiveConf of name hive.metastore.local does not exist
20/09/17 10:55:38 WARN HiveConf: HiveConf of name hive.metastore.local does not exist
20/09/17 10:55:40 WARN HiveConf: HiveConf of name hive.metastore.local does not exist

scala>

Then in beeline
0: jdbc:hive2://localhost:10000> select * from ts_acid2;
20/09/17 10:55:58 INFO lockmgr.DbTxnManager: Stopped heartbeat for query: bruce_20200917105558_5eca4bb0-2f28-4722-aca1-5749e4bf8e58
+------------------------+
|      ts_acid2.ts       |
+------------------------+
| 2017-03-15 06:22:01.0  |
+------------------------+
1 row selected (0.411 seconds)
0: jdbc:hive2://localhost:10000>

If you run everything in UTC, you might not see this issue with post-start-of-Gregorian calendar values (you'll still see issues with pre-Gregorian values).

@bersprockets i ran few queries to see the behavior for  non-ACID tables and it is consistent with ACID tables atleast on 2.4.3 for Pre-Gregorian timestamps. Following is the non-acid Hive table created below:
0: jdbc:hive2://<IP_ADDRESS>:10001/default> create table ts_normal (ts TIMESTAMP) stored as orc; 0: jdbc:hive2://<IP_ADDRESS>:10001/default> insert into ts_normal values ('1200-01-01 00:00:00.0'); 0: jdbc:hive2://<IP_ADDRESS>:10001/default> select ts from ts_normal; INFO  : Compiling command(queryId=root_20200928180409_8b652df5-d3ea-4226-a651-14a5110af18d): select ts from ts_normal INFO  : Semantic Analysis Completed (retrial = false) INFO  : Returning Hive schema: Schema(fieldSchemas:[FieldSchema(name:ts, type:timestamp, comment:null)], properties:null) INFO  : Completed compiling command(queryId=root_20200928180409_8b652df5-d3ea-4226-a651-14a5110af18d); Time taken: 0.193 seconds INFO  : Executing command(queryId=root_20200928180409_8b652df5-d3ea-4226-a651-14a5110af18d): select ts from ts_normal INFO  : Completed executing command(queryId=root_20200928180409_8b652df5-d3ea-4226-a651-14a5110af18d); Time taken: 0.001 seconds INFO  : OK +------------------------+ |           ts           | +------------------------+ | 1200-01-01 00:00:00.0  |
In Spark:
`scala> spark.sql("select ts from ts_normal").show(false)
+-------------------+
|ts                 |
+-------------------+
|1199-12-25 08:00:00|
+-------------------+
scala>`
So I don't think this has to do anything with DataSource in specific. Even if you take a look at the unix timestamp it is stored as same:
Spark:
scala> spark.sql("select unix_timestamp(ts) from ts_normal").show(false) bash: /usr/lib/hustler/bin/qubole-bash-lib.sh: No such file or directory bash: /usr/lib/hustler/bin/qubole-bash-lib.sh: No such file or directory bash: /usr/lib/hustler/bin/qubole-bash-lib.sh: No such file or directory 20/09/28 10:57:42 main WARN HiveAuthHelper: Unable to execute Ranger flag check, reverting to default. 20/09/28 10:57:43 main WARN HiveConf: HiveConf of name hive.allow.move.on.s3 does not exist +---------------------------------------+ |unix_timestamp(ts, yyyy-MM-dd HH:mm:ss)| +---------------------------------------+ |-24298848000                           | +---------------------------------------+
Hive:
0: jdbc:hive2://<IP_ADDRESS>:10001/default> select unix_timestamp(ts) from ts_normal; INFO  : Compiling command(queryId=root_20200928180453_850f7666-8856-45d2-a485-93e40b343f1c): select unix_timestamp(ts) from ts_normal INFO  : Semantic Analysis Completed (retrial = false) INFO  : Returning Hive schema: Schema(fieldSchemas:[FieldSchema(name:_c0, type:bigint, comment:null)], properties:null) INFO  : Completed compiling command(queryId=root_20200928180453_850f7666-8856-45d2-a485-93e40b343f1c); Time taken: 0.224 seconds INFO  : Executing command(queryId=root_20200928180453_850f7666-8856-45d2-a485-93e40b343f1c): select unix_timestamp(ts) from ts_normal INFO  : Completed executing command(queryId=root_20200928180453_850f7666-8856-45d2-a485-93e40b343f1c); Time taken: 0.001 seconds INFO  : OK +---------------+ |      _c0      | +---------------+ | -24298876800  | +---------------+
I have not checked it against Spark 3.0.0 as we have not yet upgraded DS for it. Are you seeing different behavior for non-ACID tables ?


Unable to run terrascan scan

terrascan version: v1.2.0
Operating System: Windows 10

Description
Errors received when running terrascan scan.
What I Did
This is my first attempt at using Terrascan. I downloaded this on Windows 10 with the curl command that was outlined in the README. I placed the terrascan.exe file in a folder and pointed my PATH to that folder.
When I change directories into my Terraform folder and run terraform scan I receive three errors.
 error   downloader/getter.go:101        failed to download "file://C:/Users/*~1/AppData/Local/Temp/slptoz/GoogleCloudPlatform/lb/google". error: 'error downloading 'file://C:/Users/*~1/AppData/Local/Temp/slptoz/GoogleCloudPlatform/lb/google': source path error: CreateFile C:/Users/*~1/AppData/Local/Temp/slptoz/GoogleCloudPlatform/lb/google: The system cannot find the path specified.'
 error   v12/load-dir.go:101     failed to download remote module "GoogleCloudPlatform/lb/google". error: 'error downloading 'file://C:/Users/*~1/AppData/Local/Temp/slptoz/GoogleCloudPlatform/lb/google': source path error: CreateFile C:/Users/*~1/AppData/Local/Temp/slptoz/GoogleCloudPlatform/lb/google: The system cannot find the path specified.'
error   v12/load-dir.go:113     failed to build unified config. errors: <nil>: Failed to read module directory; Module directory  does not exist or cannot be read.

Sorry, this has been fixed. I had a load balancer module inside of my main.tf file and after removing that I was able to scan it.


Update githubcommand.md

github has changed from the word master to main for the primary branch

@antoniomedrano I'm going to go ahead and merge!


ui - auto-hide green success messages

have bottom line success messages disappear automatically after 7 secs
maybe auto-hide all messages in UI after x seconds, when monitoring log exists

implemented


Today marker is barely visible for dark themes, as there's no separate dark mode style for it

Hi - Could you please add a separate dark mode version for the .heatmap-calendar-boxes .today CSS rule? I think it would help a lot with the visibility of the marker.
I think adding something like this
.theme-dark .heatmap-calendar-boxes .today {
  border: 1px solid rgb(180, 180, 180);
}

would do the trick.

should be possible using obsidians built in styling.
see section on styling: https://github.com/Richardsl/heatmap-calendar-obsidian#user-content-styling