Multithreading support

I noticed that archiver uses only one cpu core. It may be problem on processing large data. Do you have ideas about how to add multi thread support?

For doing what, exactly?

Some codecs may lend themselves to parallel processing of different chunks of data in the same file.  If those chunks could be handled simultaneously by different cores, overall processing time could be lessened.  Perhaps just handling different files in the same archive, or other variations.
As an example, creating an archive from 8 files, where 4 or more of them are compressed at the same time by different CPU cores could cut the overall compression time down by a considerable amount.
Of course, it will also depend on other factors, such as disk I/O, available RAM, etc., etc.
It could also increase the complexity of the code by a rather large amount if doing multiple chunks of the same file, but may be trivial to handle multiple files at once (possibly as simple as using a separate go routine for each).

Sure, pull requests welcomed!

https://github.com/klauspost/pgzip should be a dropin replacement for gzip :)

@klauspost That's really cool! I am willing to replace gzip with pgzip, but I notice that it should only be used when working with > 1 MB. The way archiver is designed makes it hard to toggle which package to use between the time we can know the file size (and we only know that sometimes, since we're working with steams most of the time) and the time that we start the encoding/decoding work.
Is it really inadvisable to just use pgzip across the board? I imagine it wouldn't be too bad since < 1 MB will still be fast no matter what, right?

If there's a large enough difference in speed vs file size, there's no reason you couldn't just check the file size and use whichever one fits better.

@JalonSolov unfortunately it's not that simple since the file size is not exposed to the past of the code that is concerned with setting up the compressor/decompressor.

Is it really inadvisable to just use pgzip across the board? I imagine it wouldn't be too bad since < 1 MB will still be fast no matter what, right?

In terms of compression there is no (significant) drawback and in terms of speed, there is a "startup fee", but I can't see it be anything influencing real world use. So yeah, unless you are doing many thousands of small files, it shouldn't be a problem.
Do note that the compression levels are re-balanced compared to stdlib. This makes the "level" adjustments much more natural and useful - but reduces compression at "default" for better balance.. See more here: https://blog.klauspost.com/rebalancing-deflate-compression-levels/
I also have an ~25% speed increase brewing for the lowest compression modes - but that still needs some testing.

@klauspost Alright, great! I'll make pgzip the default, with an option to manually disable multithreaded if a user is using the package in a tight loop for small files.
I tested the difference on a 45 GB file.
Before (compress/gzip):
$ time ./arc compress myfile gz
real    21m7.828s
user    18m7.737s
sys     4m10.169s

After (klauspost/pgzip):
$ time ./arc compress myfile gz
real    2m33.008s
user    14m4.392s
sys     1m17.194s

That's a 90% reduction!
Going to commit this and do a release. Thanks @klauspost!

@klauspost helped to add multithreading support to https://github.com/pierrec/lz4/issues/55 too!
Please update https://github.com/pierrec to 3.2.0 for activating this feature.

Closing, as we have some parallel compression implemented now thanks to @klauspost. And ultimately I think the multicore stuff would have to be implemented in other repos anyway, rather than this one. If there's a specific request to parallelize something in this repo, we can either reopen this issue or make a new issue for it. Thanks!


Added inbox and aggregated to queue declaration

Description

References

#0000

Codecov Report

Merging #367 (f587c47) into main (21978a1) will decrease coverage by 23.43%.
Report is 74 commits behind head on main.
The diff coverage is 43.91%.

@@             Coverage Diff             @@
##             main     #367       +/-   ##
===========================================
- Coverage   83.07%   59.64%   -23.43%
===========================================
  Files         456      422       -34
  Lines       10418     8741     -1677
===========================================
- Hits         8655     5214     -3441
- Misses       1438     3321     +1883
+ Partials      325      206      -119

Files Changed
Coverage Δ

...ivedMessages/ArchivedMessageGetDocumentListener.cs
0.00% <ø> (ø)

.../ArchivedMessages/ArchivedMessageSearchListener.cs
0.00% <0.00%> (ø)

...ation/Middleware/Correlation/CorrelationContext.cs
66.66% <ø> (ø)

...uration/Middleware/UnHandledExceptionMiddleware.cs
0.00% <0.00%> (ø)

...essages/RequestAggregatedMeasureMessageReceiver.cs
0.00% <0.00%> (ø)

...equestAggregatedMeasureTransactionQueueListener.cs
0.00% <0.00%> (ø)

...rce/Api/OutgoingMessages/DequeueRequestListener.cs
0.00% <0.00%> (ø)

source/Api/OutgoingMessages/PeekRequestListener.cs
0.00% <0.00%> (ø)

...rchivedMessages/GetArchivedMessageDocumentQuery.cs
0.00% <0.00%> (ø)

...ureData/RequestAggregatedMeasureDataTransaction.cs
0.00% <0.00%> (ø)

... and 180 more

... and 177 files with indirect coverage changes
:mega: We’re building smart automated test selection to slash your CI/CD build times. Learn more


Append extension during encryption

Source files are currently being overwritten with the encrypted contents. If you then attempt to decrypt these files without appending the .aes file extension, you end up with a 0 byte file, losing both encrypted and decrypted versions.
Append the file extension instead of trying to remove it during the encryption process.

@adam12 thanks for the PR. Looks good. Would you mind bumping the version in https://github.com/nodesocket/cryptr/blob/master/cryptr.bash#L21 updating the https://github.com/nodesocket/cryptr/blob/master/CHANGELOG.md and finally adding yourself to https://github.com/nodesocket/cryptr/blob/master/AUTHORS.md. Then I can merge this in.

Done

@adam12 just made a new release 2.2.0 with your changes and also https://github.com/nodesocket/cryptr/pull/3. However this is currently breaking for me with:
unknown option '-pbkdf2'

See that PR for discussion. I may have to remove using the -pbkdf2 flag.


Problems with Russian symbols

Many commands do not work with the Cyrillic alphabet. For example, you can make one word big, but "all" for some reason does not work, and so on.

Hi, can you give some more specific examples? Like what is the original text, and you want the text to change to what with which command.

Here's an example
https://i.imgur.com/uopR6LL.jpg

I'm not quite familiar with Russian symbols, what is the expected result text in your example?

Capitalize: фываф = Фываф
c = C / a = A / o = O......
Not much different))))
It should be something common for all languages.

Please try version 1.3.1
While toTitleCase does not support Cyrillic for now, I think Capitalize is suitable for most use case.

Looks like it works. except Capitalize only first word...
Probably not a bug. But doesn't work with newline.
https://i.imgur.com/jSkkjwW.jpg

hi, this should be fixed in v1.4.0

Good!


If no width given (such as in the README example), width is 0

I think you can actually see this in the CodeSandbox demo linked from the README; there are 3 instances of <VirtualContainer> but only 2 are visible - the ones that specify width - the other one has elements of width 0. (And adding a width parameter to its itemSize makes it visible.)

Is there a way to specify width of 100%? I reviewed the source some, but I'm not sure

In the demo there are 4 instances of <VirtualContainer> one list and one grid in the same scroll container for vertical and horizontal scroll directions. They render fine for me.
With vertical direction list only height property inside itemSize needs to be specified for list to work, other styling is up to you, set list item css styles to width: 100% and it should work correctly, demo does this as well. Or if you really don't want to use css, itemSize can take a function which passes container dimensions as an argument and you can use values from there to set the width, though for basic stuff I would just use css.

i ran it to the same issue, solved it the way as you said by adding the class on the child element.

I updated readme with few comments, on how to size list items correctly, I hope it makes things bit clearer.


optionally overwrite "addEffect"

A step towards adding custom effect middleware. This should enable the ability for users to opt into configuring mirror.js to use sagas for effects (see #35).

Coverage remained the same at 100.0% when pulling 52a2fdaec5e06dd731b33de66fadbc16a479e5ee on ShMcK:master into 5ca50318b4e045dc98c5e27475963c1ad771f75c on mirrorjs:master.

Wow, great work!
Could you give us an example of configuring a custom addEffect?

Sure. Here is an outline of how I imagined "mirror-saga" would work.
import sagaMiddleware from './middleware'

const isGenerator = (fn) => (
  fn && fn.constructor && fn.constructor.name === 'GeneratorFunction'
)

export const addEffect = effects => (name, handler) => {
  // add handler to list of effects
  effects[name] = handler
  // if generator, start saga
  if (isGenerator(handler)) {
    sagaMiddleware.run(effects[name])
  }
}


fallbackToDestructiveMigration is added

Hey there!
I created a pull request to allow the fallbackToDestructiveMigration. Please check and review the request if it full fill the standards, and let me know if there's any thing missing or required to explain.

The new files and changes in the example directory add a lot of noise to the PR. Do we need them or could we just get rid of them? @Faiizii

The new files and changes in the example directory add a lot of noise to the PR. Do we need them or could we just get rid of them? @Faiizii

@vitusortner  The example (directory) was created with android support lib but flutter latest version using androidx lib for android. So, to support latest versions for both android and iOS, I deleted the both android and iOS folder and executed the flutter create . command, and the flutter created the required files.
If you don't want them to be the part of the repo, we can go with old version of example directory

@vitusortner  The example (directory) was created with android support lib but flutter latest version using androidx lib for android. So, to support latest versions for both android and iOS, I deleted the both android and iOS folder and executed the flutter create . command, and the flutter created the required files.
If you don't want them to be the part of the repo, we can go with old version of example directory

Whatever happened to this?

Whatever happened to this?

the owner did not accept the merge sadly.

Any update on this?

any update on this PR?

Hello @hm-tamim
currently not
plan to update and check it out next

I think fallbackToDestructiveMigration should be managed by a config option during database initialization (not from generated code). It makes it easy to manage, just like it works in the Room Persistence library.
The current implementation is quite outdated and contains a lot of noise unrelated to the implementation of the feature.
If you need this functionality please use this fork


login does not work

Hey, stupid issue, I know.... but... when I try to create an entity using
wb create-entity new.json
I always get the error message claiming I am not logged in.
failed to login: invalid username/password undefined
However, I am logged in, which I checked by
wb config:
{
  "instance": "https://www.wikidata.org",
  "credentials": {
    "https://www.wikidata.org": {
      "username": "X@Y",
      "password": "lmnopqrst"
    }
  },
  "bot": true
}

What can be the reason?  Sorry, for this basic issue but I running mad about this.

I can't think of a reason why that would fail other than the username or password being invalid: what does the following command give you? wb config credentials https://www.wikidata.org test

wb config credentials https://www.wikidata.org test
{ Error: failed to login: invalid username/password
    at Object.new (/usr/local/lib/node_modules/wikibase-cli/node_modules/wikibase-edit/lib/error.js:3:17)
    at /usr/local/lib/node_modules/wikibase-cli/node_modules/wikibase-edit/lib/request/login.js:44:21
    at process._tickCallback (internal/process/next_tick.js:68:7) statusCode: 400 }
https://www.wikidata.org credentials are invalid

So maybe the credentials for the bot have expired? Earlier I also tried to change the credentials to my normal user access data by wb config credentials https://wikidata.org but I did not manage to do so.

I don't know if that could have played a role but the Wikidata domain is https://www.wikidata.org and not https://wikidata.org as in your last comment: could that be that your config contains credentials for https://wikidata.org and not https://www.wikidata.org?

Okay, I reset my password and updated my credentials. I made sure the credentials refer to https://www.wikidata.org .
However, when I now try to set the bot flag (wb config bot true) nothing happens. Can I maybe find the credentials-json-file somewhere and change  to "bot":true manually in the editor?
Thank you for answering my questions!

You're welcome :)
When successful, the command wb config bot true updates the config, outputs nothing, and exits with a 0 code to signal that everything went fine: in short, it's normal that nothing happens.
You can see the state of your configuration with wb config and find the path of the file in which it is stored with wb config path.

Great. As you said: The bot flag is in the config file. when I run my program I get the error message:  assertbotfailed: assertbotfailed: You do not have the "bot" right, so the action could not be completed.
However, I have the bot right.  Do you have any idea what is missing?

Could that be that the credentials are not those that match your bot rights? I haven't being working with bot mode, so I'm not so knowledgeable, but maybe @rwst (who's the last one appearing in bot mode with wikibase-cli) would know?

my config file is this:
{
  "instance": "https://www.wikidata.org",
  "credentials": {
    "https://www.wikidata.org": {
      "username": "bot@bot",
      "password": "..."
    },
    "https://www.wikidata.org/w/api.php": {
      "username": "bot@bot",
      "password": "..."
    }
  },
  "bot": true
}

I don't know about the duplication but "bot@bot" doesn't seem like a Wikidata account name, and the page https://www.wikidata.org/wiki/User:Bot@bot leads nowhere. You need to give the Wikidata account name of your bot account.

See https://www.wikidata.org/wiki/Wikidata:Bots#Bot_accounts

Great. So maybe now we get to the core problem :)
This is the bot: https://www.wikidata.org/wiki/Wikidata:Requests_for_permissions/Bot/Orcbot
But https://www.wikidata.org/wiki/User:Orcbot@Orcbot does not work either.
Actually, I used the bot about a year ago. I then had to stop it in order to change  something in the code.

The bot@bot thing was created from the special pages:
"The bot password for bot name "Orcbot" of user "Orcbot" was created.
The new password to log in with Orcbot@Orcbot is xyzxyzxy. Please record this for future reference.
(For old bots which require the login name to be the same as the eventual username, you can also use Orcbot as username and Orcbot@xyzxyzxyz as password.)
Return to Special:BotPasswords."

Have you tried "Orcbot" as username in the wb config and its Wikidata password?

OK I just see the bot no longer has the botflag, you will have to apply again I'm afraid.

You can check the existence of the bot flag via https://www.wikidata.org/w/index.php?title=Special:UserRights/Orcbot&user-reason= This is one of the links offered on top of the page https://www.wikidata.org/wiki/Wikidata:Requests_for_permissions/Bot/Orcbot

@rwst @maxlath , thank you very much! I applied for the Orcbot again....  Hope this will work out and the granting of new rights will solve the issues.  Best regards! Eva

Supplement: The main issue was the wrong specified bot password. When I created the bot password I missed to add "Create, edit, and move pages".

@EvaSeidlmayer so now it works as expected? can this issue be closed?

@maxlath ja! thank you!


[Bug]: The boundary lines do not appear

General Info

[X] I am running a modpack
[X] I can reproduce this issue consistently in single-player
[X] I can reproduce this issue consistently in multi-player
[X] I have searched for this issue previously and it was either (1) not previously reported, or (2) previously fixed and I am having the same problem.
[ ] I am crashing and can provide my crash report(s)
[X] I am using the latest version of the mod

Loader version
Fabric 0.14.22
Minecraft version
1.19.2
Mod version
1.3.1
Java version
Java 8 Update 391
Issue Description
The boundary lines do not appear. But there is no crash or errors in the log. I guess there are some incompatible mods.
Additional Information

Log: https://gnomebot.dev/paste/1184873318164213870

Any performance mods installed? As that's where I'd start

Yes. It is written in the log. Some of them are:
Phosphor, Starlight, Ferittecore, Lithium, Krypton...

Same issue, and I have no performance mod installed. I use Forge, Linux and I have an AMD Card. Maybe this is the problem...


Current State of the Project

Hello everybody,
I've seen that there were some updates to do the code and it seems to have been debugged. I've started my new job last week and would now have some capacities to also join, if there are still some open changes to be done. @ColorfulCookie can you elaborate on the state a bit?

While trying to implement our code on an FPGA development board, I noticed that this process is not synthesizable.  rx_finished_out and rx_data_word_out are output ports, so they can't be read. I think it should be fine to just remove the corresponding lines.
rx_finished_process : process (clk) begin
        if (rising_edge(clk)) then
            if (rst = '1') then
                rx_finished_out <= '0';
            else
                case rx_state is
                    when rx_idle =>
                        rx_finished_out  <= rx_finished_out;
                        rx_data_word_out <= rx_data_word_out;
                    when rx_starting =>
                        rx_finished_out  <= '0';
                        rx_data_word_out <= rx_data_word_out;
                    when rx_receiving =>
                        rx_finished_out  <= '0';
                        rx_data_word_out <= rx_data_word_out;
                    when rx_finished =>
                        rx_finished_out  <= '1';
                        rx_data_word_out <= rx_reg;
                    when others =>
                        rx_finished_out  <= '0';
                        rx_data_word_out <= rx_data_word_out;
                end case;
            end if;
        end if;
    end process;

I also found this vhdl and verilog code that is also for a UART module using the same approach with clock frequency over baud rate. I think it would be beneficial to compare the code and also use there testbench for additional verification.

@Hendriggg You probably try to synthesise it with an older standard of VHDL. The "output as an input" thing is something that was enabled with VHDL 2008.
Other than that, I'd love to do some live verification, but I don't have a FPGA board at hand with which I can test it. I might be able to get hold of one of friday. I think @ColorfulCookie is currently on vacation, as far as I know. I'm sure he'll reply when he is back.

Hi everyone, regarding live verification i have the same issue as @PhilHem (not having an FPGA board handy). Comparing to the implementation that @Hendriggg found, I'm sure it would be helpful, but I would prefer an "in field" test if someone has an FPGA that they can use instead, as I feel that it provides more useful information and is easier to realize.
Apart from that, the current status with remaining todos can be found in the readme. Feel free to add missing todos (such as everything to do with converting converting the RTL to GDSII). The same can be said for the documentation side of things.
Regarding the communication, I was so free as to add all of the physical specs to my email going to the integration team. For future communication however, maybe @PhilHem wants to take over, as he is part of the team (afaik)?
For how we split the remaining work - I will have a busy next week, but should be able to contribute if needed.

Today I managed to get a Cyclone 5 Board to do some testing. I'd say I'll handle the physical testing. I should be able to so it over the weekend.
Regarding communication, I'm not really affiliated with the group. @ColorfulCookie would you be open to handle the immediate comms and possibly direct it here if needed?

@PhilHem, how did you get along with the testing on the Cyclone Board? I also have access to FPGA Boards at my Institute. If necessary, I can also take time away from my master's thesis to take care of the physical testing.

@Hendriggg I've had some issues that prevented me from already starting. I'll have to do that today.

I maybe underestimated the physical verification a bit. I have to build a little bit of stuff around the module to actually be able to test it properly. I'm on it though.


Add add-name class to accesControl behavior

If  a users checks the option: «Logged User Only» (Rename it to Logged in Uses Only) the generator has to add
add-nameclasses to the allowed rules.
                'rules' => [                     [                         'allow' => true,                         'actions' => ['index', 'view', 'create', 'update','delete', 'add missing controller actions add-nametable],                       	'roles' => ['moderator', 'admin']                     ],
Otherwise, the extra table views in the create and edit forms will not show.

Oh yes, right.. I forgot to add that.
Will fix it soon

Thanks!


Set product for AMI and GCE based on SCYLLA-VERSION-GEN

Today we have PRODUCT definition in SCYLLA-VERSION-GEN , let's start
using it as a source instead of defining it manually for both AMI and
GCE. This way we can have a generic code for both open source and
enterprise

Testing: https://jenkins.scylladb.com/job/scylla-master/job/releng-testing/job/ami/194/console

Testing: https://jenkins.scylladb.com/job/scylla-master/job/releng-testing/job/ami/194/console


Use VERSION in build-args-script

The contents of build-args-script are written to a
temp file in the current directory which causes
./godelw project-version to emit a dirty version.
Instead, use the environment variable VERSION which
is set by godel before the script is called.

Codecov Report

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

@@           Coverage Diff           @@
##           master     #127   +/-   ##
=======================================
  Coverage   82.56%   82.56%
=======================================
  Files          16       16
  Lines         522      522
=======================================
  Hits          431      431
  Misses         91       91

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 0613895...8471e1c. Read the comment docs.


feat: add blas/ext/base/dapxsumkbn-wasm

Description

What is the purpose of this pull request?

This pull request:

adds the package blas/ext/base/dapxsumkbn-wasm

Related Issues

Does this pull request have any related issues?

This pull request:

is related to #2039

Questions

Any questions for reviewers of this pull request?

No.
Other

Any other information relevant to this pull request? This may include screenshots, references, and/or implementation notes.

No.
Checklist

Please ensure the following tasks are completed before submitting this pull request.

[x] Read, understood, and followed the contributing guidelines.

@stdlib-js/reviewers

/stdlib merge

For reference, the downstream test failures are expected. @headlessNode is currently working on a patch.
Looks like the test failures have now been addressed. Will do a review later today. Thanks for working on this, @Snehil-Shah!

/stdlib merge


[top/dv] Adjust setup for floating pin.

Previously, the test would enable the UART RX pins without a pull-up.  This meant that until the test bench environment actively drove, the pin was left floating and cause x propagation.

This update just sets the pull-up at the same time as enabling the pin to ensure this situation does not come up.

fixes #15536
Signed-off-by: Timothy Chen<EMAIL_ADDRESS>

thanks! i'm going to merge for now. The kokoro failure is a bit..out of left field, but there's no change here that would actually impact lint results.


Display budgets

Beancount itself is a double-book accounting tool, and does not know of the concept of "budgets".
But the more I use fava I wish there would be a way to display information if a certain account is over budget. I do practice setting budgets for various "accounts" myself to enforce certain spending behavior, and it would be nice to integrate this into the system.
In the "budgeting"-branch I drafted a first version of how this might work and look:

There is a new file which contains the budget-rules. It is a simple plain-text-file and has content like this:
Expenses:Food:Groceries
    2013-W52       100.00 USD
    2016-W01       120.00 USD
    2016-W02       110.00 USD
    2016-W06       150.00 USD

Expenses:Food:Alcohol
    2016-W01        20.00 USD
    2016-W02        10.00 USD
    2016-W06         5.00 USD

...

The format is very simple: First, the account name (Expenses:Food:Groceries). Then, lines with the week of the year where this budget applies to (and starts) (2016-W01), and finally the amount and currency (20.00 USD). I will call these lines "Budget entries".

These budget entries represent the budget for the specified week of the year, and all weeks thereafter, until a new rule is set for a week after that. So you can set a budget of 10.00 USD at the very first week of 2015 (2015-W01), and this budget applies to all weeks until a new entry starting in week 5 of that same year (2015-W05) appears and sets the new budget to 20.00 USD.

A budget for a specific account, currency, start-date and end-date is then calculated by stepping through each day in that period, and adding the budget for the week of that day (divided by 7) to the total sum, until the end-date is reached.

I included a test-file in fava/util/test-budget.budget, which contains the rules above for Groceries and Alcohol (accounts in the file generated by bean-example).
You can test it by starting fava with a bean-example-generated file, and navigating to http://localhost:5000/account/Expenses:Food/monthly_changes/ (for example). It should look like this:

Things to do:

Discussing if this is a good idea or not
Discussing if it is to be included in fava or not
Discussing if the core functionality of this should be factored out into it's own package or should stay within fava
Writing tests for the "custom language parser"
The budget is currently "generated" and displayed in the account.html-template, but should ultimately be either part of the API or in a second API (BudgetAPI?).

What do you think @yagebu @corani @redstreet @jbms @xentac @blais

I like the idea of reporting budgets. It's low on my personal list because in my experience, budgets are difficult to maintain in accounting software, and become intuitive and therefore unnecessary once one "practices" personal accounting for a few years. Either way, it can be quite useful until then at least. However, it is a vast topic with much that can be considered.
Representation: a generic way to represent periods (days, weeks, months, quarters, years, etc.) would allow for full flexibility and tweakability. Of course, the obvious is to simply specify dates. Your example would look like:
Expenses:Food:Groceries
    2013-12-31       100.00 USD
    2016-01-07       120.00 USD
    2016-01-14       110.00 USD
    2016-01-21       150.00 USD

Shortcuts like your W01 could be accepted as well.
Design: I'd be very wary of putting such things into Fava. I think a solid software separation between accounting and reporting is healthy. Perhaps this is the time to consider making Fava extensible in some way via a plugin/module mechanism. This would be useful in many instances (eg: investment reporting, nice custom reports). For budgets, for example, a beancount plugin to compute the numbers and a corresponding fava plugin to report on the numbers would be one good way to do it.
Report/Display: it would be nice if the budget were represented in your bargraph above. Simpler for leaf accounts, more complicated for non-leaf accounts. Even for leaf accounts, one has to figure out the interaction between reporting periods (months in your bargraph) and the budgeting periods.

Lots to say about budgeting but I don't have that much to add than what I
already said on the group. Search the group for previous discussions. IMHO
budget is best implemented as a set of constraints (assertions).
I think it's awesome you built a prototype! :-)
(more below)
On Thu, Feb 25, 2016 at 3:15 PM, aumayr<EMAIL_ADDRESS>wrote:

Beancount itself is a double-book accounting tool, and does not know of
the concept of "budgets".
But the more I use fava I wish there would be a way to display information
if a certain account is over budget. I do practice setting budgets for
various "accounts" myself to enforce certain spending behavior, and it
would be nice to integrate this into the system.
In the "budgeting"-branch I drafted a first version of how this might work
and look:

There is a new file which contains the budget-rules. It is a simple
plain-text-file and has content like this:
Expenses:Food:Groceries
2013-W52       100.00 USD
2016-W01       120.00 USD
2016-W02       110.00 USD
2016-W06       150.00 USD
Expenses:Food:Alcohol
2016-W01        20.00 USD
2016-W02        10.00 USD
2016-W06         5.00 USD
...
The format is very simple: First, the account name (
Expenses:Food:Groceries). Then, lines with the week of the year where
this budget applies to (and starts) (2016-W01), and finally the amount
and currency (20.00 USD). I will call these lines "Budget entries".
These budget entries represent the budget for the specified week of
the year, and all weeks thereafter, until a new rule is set for a week
after that. So you can set a budget of 10.00 USD at the very first
week of 2015 (2015-W01), and this budget applies to all weeks until a
new entry starting in week 5 of that same year (2015-W05) appears and
sets the new budget to 20.00 USD.
A budget for a specific account, currency, start-date and end-date is
then calculated by stepping through each day in that period, and adding the
budget for the week of that day (divided by 7) to the total sum, until the
end-date is reached.
I included a test-file in fava/util/test-budget.budget, which contains
the rules above for Groceries and Alcohol (accounts in the file generated
by bean-example).
You can test it by starting fava with a bean-example-generated file, and
navigating to http://localhost:5000/account/Expenses:Food/monthly_changes/
(for example). It should look like this[image: screenshot]
https://cloud.githubusercontent.com/assets/5135450/13332840/376008d4-dc04-11e5-9ae6-a756cb5d58af.png
Things to do:

Discussing if this is a good idea or not

It's certainly a good idea! :-)
This is an unoccupied spot in the space of implemented features for
Beancount at the moment.

Discussing if it is to be included in fava or not

Discussing if the core functionality of this should be factored out
into it's own package or should stay within fava

IMHO that feature is closer to the language than to the reporting. It's
something you can likely implement "in-between" in a dependency tree, or if
we can hash out a nice prototype I'm open to integrating assertions on
deltas in Beancount syntax itself. A syntax for assertions, and some error
reporting on a failing assertion would in theory be best defined closer to
the language, and generating particular reports could live in the reporting
UI.

Then again, this can always be done later if you wanted to do that. Maybe
it's better to keep the velocity going now and let it bloom while the
inspiration is flowing :-)

Writing tests for the "custom language parser"

Idea: If you want to integrate those rules in the same input file, you
could use syntax that parses as comments in Beancount. It's a bit of a
lo-fi solution but it could work, e.g. parsing only lines which begin with
;! or whatever.

The budget is currently "generated" and displayed in the account.html-template,
but should ultimately be either part of the API or in a second API (
BudgetAPI?).

What do you think @yagebu https://github.com/yagebu @corani
https://github.com/corani @redstreet https://github.com/redstreet
@jbms https://github.com/jbms @xentac https://github.com/xentac @blais
https://github.com/blais
—
Reply to this email directly or view it on GitHub
https://github.com/aumayr/fava/issues/165.

@blais - quick OT comment: not sure what you're doing, but the first line of your response paragraphs have the quote character in them, making slightly difficult to read. Seems like your other posts on github also have the same issue. Are you seeing this as well?

I think other users is beancount would be interested in budgeting as well.
I think it would be better to add this as an (optional/external) plugin to
beancount itself, rather than make it part of fava.
Fava could add this plugin as a dependency and provide a nice UI, but it
should be usable without fava as well.
On Fri, Feb 26, 2016, 12:58 Red S<EMAIL_ADDRESS>wrote:

@blais https://github.com/blais - quick OT comment: not sure what
you're doing, but the first line of your response paragraphs have the quote
character in them, making slightly difficult to read. Seems like your other
posts on github also have the same issue. Are you seeing this as well?
—
Reply to this email directly or view it on GitHub
https://github.com/aumayr/fava/issues/165#issuecomment-189115513.

I also had the feeling that this should be a feature of beancount rather than just fava.
Where I am pretty sure now is how it should work:
Set the budget for a specific period (day, week, month, quarter, year), and be able to change it with a new entry with a date after the previous entry, as in my example above.
I can't come up with a situation that this does not cover, from in-period budget changes to periods without a budget (setting it to None after a specific date, until the next budget entry comes along).
What I am still struggling with is how/where it should be implemented. That it should live in/near beancount is clear for me now, but exactly how is open. From your suggestions, and some new ideas of my own:

In a separate file, like my example at the top.

In the beancount-file, as metadata:

2009-05-05 open Expenses:Food:Groceries
   budget: "2015-01-01 monthly  150.00 USD"
   budget: "2016-01-01 daily     25.00 USD"

Pro: No change necessary to beancount itself. Accessable by plugins.
Con: No real integration with beancount. Errors not along with beancount-errors. Hack-ish.

In the beancount-file, as a new type of directive:

2015-01-01 budget Expenses:Food:Groceries weekly  150.00 USD

Pro: Official support, part of the language, "strongly typed", errors along existing errors.
Con: Large change to beancount.

In the beancount-file, as comments:

;budget Expenses:Food:Groceries weekly  150.00 USD

Pro: Quick prototype for beancount possible.
Con: Ugly, hack-ish.
If this is to be included in a beancount-file, then the question of organizing is also relevant. I personally like having all budget-related infos next to the Account in one spot, like my example at the top and (1) and like the metadata-solution (2).

Search the group for previous discussions.

Here are some relevant discussions and ideas:

Beancount Mailing list: "Beancount budget plugin"
Has some good ideas, like the following syntax:
2015-01-01 budget-open Y2015
2015-03-15 budget-extra   Y2015 Expenses:Car       5000.00 EUR
2015-07-31 budget-balance Y2015 Expenses:Travel       0.00 EUR
2015-08-31 budget-balance Y2015 Expenses:Travel    2000.00 EUR
2015-12-31 budget-balance Y2015 Expenses:Food      4800.00 EUR
2015-12-31 budget-balance Y2015 Expenses:Car       9800.00 EUR
2015-12-31 budget-balance Y2015 Income:Salary    -40000.00 EUR
2015-12-31 budget-close Y2015

and
2015-12-31 budget-balance Y2015 Expenses:Food      4800.00 EUR [1d]
2015-12-31 budget-balance Y2015 Income:Salary    -40000.00 EUR [2w]

For ledger: Program Your Finances: Envelope Budgeting
Uses automated transactions.

I don't see this.
On Thu, Feb 25, 2016 at 11:58 PM, Red S<EMAIL_ADDRESS>wrote:

@blais https://github.com/blais - quick OT comment: not sure what
you're doing, but the first line of your response paragraphs have the quote
character in them, making slightly difficult to read. Seems like your other
posts on github also have the same issue. Are you seeing this as well?
—
Reply to this email directly or view it on GitHub
https://github.com/aumayr/fava/issues/165#issuecomment-189115513.

I don't see this.

Okay, I'll email you a screenshot so I don't continue OT here.

I agree budgets would be an awesome feature

I made some progress with the prototype, and one key learning is that (2) "In the beancount-file, as metadata" works well, but there are two drawbacks:

The syntax suggested is not working, because metadata-keys have to be unique (duh, that was obvious).

There is no "open"-directive for the root-level-accounts, eg. 2016-01-01 open Expenses. So with this method it is not possible to set metadata for the root-level-accounts, and therefore no budget info.
(@blais is there a way around this? As far as I see when I do create an open entry for Expenses, it will be stripped.)

So I came up with a new "syntax", looking like this:
2015-10-01 open Expenses:Books
  budget-2015-10:       "50.00 EUR"
  budget-2015-11-01:    "45.00 EUR"
  budget-2015-W50:      "60.00 EUR"
  budget-2016:          "30.00 EUR"
  budget-2016-Q2:       "20.00 EUR"

I think it looks nice, and it is integrated in the beancount-file, where I think it belongs to. And it would be accessible to beancount-plugins, so it could be better integrated into beancount.
On integrating this directly into beancount:

I try to interate quickly on how the "Interface" (way of storing budget data) should look like.
When this is settled, moving this from fava/the 'budgeting'-branch to beancount should be the next step. Checking the input for errors can be done by a plugin, and the reporting-part has to be integrated into the beancount-code.
In beancount, there are two things that would make sense IMHO: Integration with bean-report, and integration with bean-query.

+beancount
On Fri, Feb 26, 2016 at 3:06 AM, aumayr<EMAIL_ADDRESS>wrote:

I also had the feeling that this should be a feature of beancount rather
than just fava.
Where I am pretty sure now is how it should work:
Set the budget for a specific period (day, week, month, quarter, year),
and be able to change it with a new entry with a date after the previous
entry, as in my example above.
I can't come up with a situation that this does not cover, from in-period
budget changes to periods without a budget (setting it to None after a
specific date, until the next budget entry comes along).
What I am still struggling with is how/where it should be implemented.
That it should live in/near beancount is clear for me now, but exactly how
is open. From your suggestions, and some new ideas of my own:

In a separate file, like my example at the top.
2.
In the beancount-file, as metadata:
2009-05-05 open Expenses:Food:Groceries
budget: "2015-01-01 monthly  150.00 USD"
budget: "2016-01-01 daily     25.00 USD"
Pro: No change necessary to beancount itself. Accessable by plugins.
Con: No real integration with beancount. Errors not along with
beancount-errors. Hack-ish.
3.
In the beancount-file, as a new type of directive:
2015-01-01 budget Expenses:Food:Groceries weekly  150.00 USD
Pro: Official support, part of the language, "strongly typed",
errors along existing errors.
Con: Large change to beancount.
Eventually that's nicest IMO. For now, perhaps a bit too early. I'd start
out with the one you have below and evolve that a bit before committing to
creating a new entry.

(Note: Eventually I want to let plugins able to define their own directives
like this. A plugin could declare a new directive type, and a lax parser
would produce them and validate against a list of accepted tokens that
comes with the new directive definition. This has only been an idea so far,
but I think much of the existing directives I have could be converted to
that. Anyway, it's a distant idea for now.)

In the beancount-file, as comments:
;budget Expenses:Food:Groceries weekly  150.00 USD
Pro: Quick prototype for beancount possible.
Con: Ugly, hack-ish.
If this is to be included in a beancount-file, then the question of
organizing is also relevant. I personally like having all budget-related
infos next to the Account in one spot, like my example at the top and (1)
and like the metadata-solution (2).
—
Reply to this email directly or view it on GitHub
https://github.com/aumayr/fava/issues/165#issuecomment-189155305.

+beancount
On Sun, Feb 28, 2016 at 3:16 AM, aumayr<EMAIL_ADDRESS>wrote:

I made some progress with the prototype, and one key learning is that (2)
"In the beancount-file, as metadata" works well, but there are two
drawbacks:

The syntax suggested is not working, because metadata-keys have to be
unique (duh, that was obvious).
There is no "open"-directive for the root-level-accounts, eg. 2016-01-01
open Expenses. So with this method it is not possible to set metadata
for the root-level-accounts, and therefore no budget info.
(@blais https://github.com/blais is there a way around this? As far
as I see when I do create an open entry for Expenses, it will be
stripped.)
So I came up with a new "syntax", looking like this:
2015-10-01 open Expenses:Books
budget-2015-10:       "50.00 EUR"
budget-2015-11-01:    "45.00 EUR"
budget-2015-W50:      "60.00 EUR"
budget-2016:          "30.00 EUR"
budget-2016-Q2:       "20.00 EUR"
I think it looks nice, and it is integrated in the beancount-file, where I
think it belongs to. And it would be accessible to beancount-plugins, so it
could be better integrated into beancount.

"Dated" metadata like this looks a little abusive. What does that look like
with years worth of data on that account?
That would be a lot of meta-data...
Personally I think this would be better achieved with a dedicated directive.

On integrating this directly into beancount:

I try to interate quickly on how the "Interface" (way of storing
budget data) should look like.
When this is settled, moving this from fava/the 'budgeting'-branch
to beancount should be the next step. Checking the input for errors can be
done by a plugin, and the reporting-part has to be integrated into the
beancount-code.
In beancount, there are two things that would make sense IMHO:
Integration with bean-report, and integration with bean-query.

—
Reply to this email directly or view it on GitHub
https://github.com/aumayr/fava/issues/165#issuecomment-189818450.

I just created you a "custom" custom directive to muck around with.
This should parse, for example:
2015-10-01 open Expenses:Books
2016-10-01 custom "budget" 50.00 EUR
2016-11-01 custom "budget" 45.00 EUR
2016-11-10 custom "budget" 60.00 EUR
2016-12-31 custom "budget" 30.00 EUR
You can put a list of strings, dates, numbers, amounts, booleans after
"budget".
The parser creates beancount.core.data.Custom directives but does nothing
else with them.
It doesn't check that they're consistent.
You can write a plugin that picks these up and does something with them.
Later on I'll provide some sort of registration call one can add to have
the parser check at least the data types for directives of a particular
"type".
Finally, ideally, it would have been preferred to make this syntax just
create an unknown or custom directive:
2016-11-01 budget ...
but it's a bit sensitive to add such an unknown id to the tokenizer at the
moment, as it would interfere with some of the rest of the syntax, like
key-values. I'd need more time and a lot of testing to put that in (though
it's possible).
I hope this helps prototyping stuff.
More details here:
https://bitbucket.org/blais/beancount/commits/50cbdfea0eeefccf63c1a1726e121086741f269a
On Sun, Feb 28, 2016 at 2:25 PM, Martin Blais<EMAIL_ADDRESS>wrote:

+beancount
On Sun, Feb 28, 2016 at 3:16 AM, aumayr<EMAIL_ADDRESS>wrote:

I made some progress with the prototype, and one key learning is that (2)
"In the beancount-file, as metadata" works well, but there are two
drawbacks:

The syntax suggested is not working, because metadata-keys have to be
unique (duh, that was obvious).
There is no "open"-directive for the root-level-accounts, eg. 2016-01-01
open Expenses. So with this method it is not possible to set metadata
for the root-level-accounts, and therefore no budget info.
(@blais https://github.com/blais is there a way around this? As far
as I see when I do create an open entry for Expenses, it will be
stripped.)
So I came up with a new "syntax", looking like this:
2015-10-01 open Expenses:Books
budget-2015-10:       "50.00 EUR"
budget-2015-11-01:    "45.00 EUR"
budget-2015-W50:      "60.00 EUR"
budget-2016:          "30.00 EUR"
budget-2016-Q2:       "20.00 EUR"
I think it looks nice, and it is integrated in the beancount-file, where
I think it belongs to. And it would be accessible to beancount-plugins, so
it could be better integrated into beancount.

"Dated" metadata like this looks a little abusive. What does that look
like with years worth of data on that account?
That would be a lot of meta-data...
Personally I think this would be better achieved with a dedicated
directive.

On integrating this directly into beancount:

I try to interate quickly on how the "Interface" (way of storing
budget data) should look like.
When this is settled, moving this from fava/the 'budgeting'-branch
to beancount should be the next step. Checking the input for errors can be
done by a plugin, and the reporting-part has to be integrated into the
beancount-code.
In beancount, there are two things that would make sense IMHO:
Integration with bean-report, and integration with bean-query.

—
Reply to this email directly or view it on GitHub
https://github.com/aumayr/fava/issues/165#issuecomment-189818450.

@blais This is awesome! Thank you!
I will change the prototype to use these "custom" directives, and will report back how it went.

It looks like the current syntax doesn't support things like this:

A transaction from my Amex credit card to BestBuy in budget category "Entertainment" and the things I brought is a Fallout 4

This contains 4 piece of informations:

debit account: Amex credit card
credit account (or merchant): BestBuy
budget category: Entertainment
a comment string: Fallout 4

I was wondering if this can fit in your implementation? Thanks.

@yegle It does:
2016-03-15 * "BestBuy" "Fallout 4"
    Expenses:Entertainment                        50.00 USD
    Liabilities:Amex:CreditCard

@aumayr You are right, I wasn't aware of the "payee" field in transaction directive.

OK so the code starts to look very nice (as does the UI), and so the discussion is to be held over if/how we should integrate this into master.
This feature could be "transparent" as long as you don't use the custom directives in your beancount file, meaning no visual change for current users, but it starts to show up if you do.
What do you think, @yagebu ? (Will push the code over the weekend)

What do you think, @yagebu ? (Will push the code over the weekend)

Can you create a PR when you're done? Then I'll review the code and merge.

@aumayr any help needed on this one?

@cgrinds Sorry for the long wait, but I still did not get around to get this working properly. So help is very much appreciated!
What I have:

The mechanism to calculate the budgets works. You pop in the balance directives (coming from metadata or the new custom directives or it's own file) and it then can give you the budget from a start-date to an end-date.

Styling of how this would look in the tree-tables.

The new custom directives do not really look good to me, because you would have to specify the account for which this budget would be valid as a string, which looks ugly:
2016-04-08 custom "balance" "Expenses:Computer" "2016-01"  50.00 USD

What is missing:
- Parsing the new directives (I still go with the metadata on the open directives)
- Integrating this into the API in a way that does not impact performance too much

I took a look at what you have so far and IMO you're close enough to merge into main and get more folks kicking the tires.
There are certainly many experiments on how to show over/under budget, red/green/yellow bars, something like this, but those are iterations on the core of what you have now. And those experiments are less likely to happen until you merge.

Expense
Budgets
Spent
Available

Groceries
200.00 USD
150.00 USD
50.00 USD

Coffee
12.00 USD
20.00  USD
-8.00 USD

Mortgage
1000.00 USD
1000.00 USD
0.00 USD

The new custom directives do not really look good to me, because you would have to specify the account for which this budget would be valid as a string, which looks ugly:

Agreed - encoding values in strings diminishes one of beancount's strongest features, which is, "help me not screw up my data." Maybe it makes sense for the initial merge to only support the external file until you get more feedback and nail down a better integrated format?

Integrating this into the API in a way that does not impact performance too much

I don't think it will be a big impact, and if it is there's plenty of low-hanging fruit like replacing some of the lists with dicts, dateline merging, etc.
My guess is most folks will use a monthly budget - which means one budget line per expense (and in some cases, only a subset of expenses). The way you've coded it provides tons more flexibility, but Moneydance, YNAB, mvelopes, etc all use monthly budgeting. Although, I suppose if you want to do a carry-the-excess-over to the next month like YNAB, you would end up with one budget line per month per expense, but I still doubt that will result in much of a performance hit. But hey, that's why we have profilers :)
I don't think you should let performance concerns dissuade you.
FWIW - I took a look at a few scenarios in my environment.
My beancount file has data back to 1995.

Type
# Entries

Transaction
21,855

Open
155

Event
14

Query
1

Total
22,025

I created a budget file with a month line for Groceries like so:
1995-01     220.00 USD
When I surf to account/Expenses/monthly_changes/
5.5 MB is transferred over 4 requests, DomContentLoaded: 9.13s
The table loads in 3.1s, rendering the charts takes the other 6s.
(2013 MBP)
I added three more expenses with a similar Jan 1995 month line, the table load increased to 3.7s.
On master when I surf to account/Expenses/changes/?interval=month
8.8 MB is transferred over 4 requests, DomContentLoaded: 9.16s
The table loads in 7.8s, rendering the charts takes the remainder.

I took a look at what you have so far and IMO you're close enough to merge into main and get more folks kicking the tires.

@cgrinds I pushed a new branch and created this PR to discuss code/optimizations: #257

On Fri, Apr 8, 2016 at 11:35 PM, Chris Grindstaff<EMAIL_ADDRESS>wrote:

The new custom directives do not really look good to me, because you would
have to specify the account for which this budget would be valid as a
string, which looks ugly:
Agreed - encoding values in strings diminishes one of beancount's
strongest features, which is, "help me not screw up my data." Maybe it
makes sense for the initial merge to only support the external file until
you get more feedback and nail down a better integrated format?

The only reason I haven't included account names in the sets of directives
is that they don't parse into their own datatype... they parse into 'str'
objects. Therefore, there's no practical way to round-trip them.
Short of creating a new custom datatype for Account names - and BTW I've
thought about it, and it would be a fair bit of work to ensure that the
types are trickled down through the variious transformations on account
names - one thing I could do is to make the "values" atttribute a list of
pairs of (value, datatype).

Thanks @blais for implementing Account names in custom directives!
Now it looks very clean to use the custom directives to implement the budget-entries, so I will implement this.
For reference: https://bitbucket.org/blais/beancount/commits/7741ed8fa3e5

Thanks @blais and @aumayr - that does look nicer!

I implemented the parsing from the custom directives in 7403382
They look like this:
2015-04-09 custom "budget" Expenses:Books "W" 20.00 EUR

"D" for daily
"W" for weekly
"M" for monthly
"Q" for quarterly
"Y" for yearly

I think of changing/aliasing the period modifiers to:

"D" or "daily"
"W" or "weekly"
"M" or "monthly"
"Q" or "quarterly"
"Y" or "yearly"

@aumayr you mean supporting all 3 versions?
If so, sounds reasonable to me. I usually prefer one way to express a concept because it simplifies reading, but that's not really an issue with budgets or beancount, and in this case, the options are similar enough that it doesn't matter.

@cgrinds Yes I do mean supporting all three.

I think there should be only one possible choice for each of the periods (and I'm for one of the long names for clarity, but don't really have a strong preference as I'm not likely to use budgeting). This seems to be most consistent with the style of the beancount syntax, where there's one canonical name for each directive and option only (with the exception of the aliasing between txn and *, which exists for another kind of consistency only). Having multiple aliases will increase documentation for the feature and while the code required for it is quite trivial, this might still lead to bugs in the future, because one of us didn't consider that there are these different aliases.
I don't see any benefit in adding multiple aliases on the other hand. It's not like this is a legacy feature where we have to support some old syntax. It's new, so why not make it as concise as possible.

@yagebu You are right. I would settle for the -ly-versions.

This got merged into master, so @cgrinds @redstreet @corani you can test this :-)
Will close this issue, and if you find any bugs please reopen, and for new budgeting-related features/views/charts, etc. please open a new issue.

Thanks! I'll give it a try.

I've found one issue with the number formatting, the number of decimals is somewhat... excessive:

@corani This is very strange. Can you produce a small test-file so I can reproduce this?

"excessive" 🙈

I'm suspecting the dcontext, which for me is:
CNY             : sign=0   integer_max=1   fractional_common=_   fractional_max=_   "0.*" "0.*"

I have no idea what is causing this though. In my minimal test file, the dcontext is correct:
CNY             : sign=0   integer_max=3   fractional_common=2   fractional_max=6   "000.00" "000.000000"

Do you have any idea what could be messing up my dcontext? Or, alternatively, know of a way to manually configure the parameters?

Never mind, I figured it out. I suspect a bug in beancount (attn: @blais)
All my transactions are in include files. Apparently beancount doesn't pick up the correct dcontext parameters in that case. After I added a transaction to the master file, the dcontext was correct.

Ah yes. That's an interesting question, how to deal with that elegantly.
On Fri, May 27, 2016 at 3:34 AM, Daniel Bos<EMAIL_ADDRESS>wrote:

Never mind, I figured it out. I suspect a bug in beancount (attn: @blais
https://github.com/blais)
All my transactions are in include files. Apparently beancount doesn't
pick up the correct dcontext parameters in that case. After I added a
transaction to the master file, the dcontext was correct.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/aumayr/fava/issues/165#issuecomment-222080216, or mute
the thread
https://github.com/notifications/unsubscribe/AAUgk8TRcvbJ7to1fnIEmpQty8L18q3Fks5qFp6fgaJpZM4HjI__
.

Aknowledged. I think I know how to fix this.
Here's the tracking ticket:
https://bitbucket.org/blais/beancount/issues/131/aggregate-the-state-of-displaycontext
On Sat, May 28, 2016 at 6:29 PM, Martin Blais<EMAIL_ADDRESS>wrote:

Ah yes. That's an interesting question, how to deal with that elegantly.
On Fri, May 27, 2016 at 3:34 AM, Daniel Bos<EMAIL_ADDRESS>wrote:

Never mind, I figured it out. I suspect a bug in beancount (attn: @blais
https://github.com/blais)
All my transactions are in include files. Apparently beancount doesn't
pick up the correct dcontext parameters in that case. After I added a
transaction to the master file, the dcontext was correct.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/aumayr/fava/issues/165#issuecomment-222080216, or mute
the thread
https://github.com/notifications/unsubscribe/AAUgk8TRcvbJ7to1fnIEmpQty8L18q3Fks5qFp6fgaJpZM4HjI__
.


About problem"ImportError: cant import name 'logsumexp' from 'scipy.misc'"

Hi,I successfully install the pyhawkes from pip install, but when I start to import pyhawkes from the python, I got the error importerror: cant import name 'logsumexp' from 'scipy.misc'. And after I have already upgraded my scipy, it still appears,
And could you plz tell me that the code is python2 or python3?
My current env is python3

It needs to be 'scipy.special' instead of 'scipy.misc'

Did you resolve this, if yes please share the solution


Should add parameters to show the downloading progress

It seems this version (v1.0) does not support echoing what's going on (ex: percentage of downloading, files that are successfully downloaded...)

These are what I will update in next version.
Thank you for your suggestion.

@trinhngocthuyen Check out our latest release. Thanks


% Fixed Swift Version in Xcode project

The project file specified Swift 4.0, but uses Swift 4.2 syntax so this doesn't compile.

That's true! Good catch! I will merge this when the CI is green and release the version 0.9.0 via Cocoapods. Thanks for the contribution :) @sgruby

Released!


Add ToolConfig to force tool calls (currently in apiVersion v1beta1)

Is your feature request related to a problem? Please describe.
I'm frustrated when Gemini responds in natural language rather than a tool call I wanted to force it to use.
VertexAI v1beta1 has ToolConfig, which allows for forcing the model to make a tool call, or even call one of a specific set of allowed tools.
Describe the solution you'd like
Add tool_config: ToolConfig to GenerateContentRequest, and update the generateContent function to switch to v1beta1 as the apiVersion when the tool_config option is present, similar to how this library used to switch the apiVersion based on whether the tools options was present
Describe alternatives you've considered
Alternatively, you could allow the caller to specify a different apiVersion explicitly, which would allow the caller to use any v1beta1 features that you haven't yet added support for in this library.
Currently I am monkey-patching the library to make this happen within my application.
Additional context
For my use cases, forced tool calling is a hard requirement, and without the option to force it, I can't use Gemini.

@jemc would you happen to have a gist/whathaveyou of how you've monkey patched the library? i'm starting down a similar path and it would be useful reference if you are willing to share.

I have encountered this limitation, and for me this way of monkey patching worked:

(works for me, but I'm using only function calling for the moment)

For others who stumble upon this issue, it turns out that the @google-cloud/vertexai npm package is very much outdated from the latest capabilities...
But thankfully, @google-cloud/aiplatform also exists with up-to-date definitions. We can use that instead, to access the latest capabilities.
However, it is quite under-documented in the guides section, but the API reference has the complete documentation there. Here’s an example how to use it:
const projectId = "________";
const location = "________";
const publisher = "google";
const modelName = "gemini-1.5-pro-001";

import * as aiplatform from "@google-cloud/aiplatform";

const client = new aiplatform.v1beta1.PredictionServiceClient({
  // `fallback` must be set to true to this to work, I don't know why...
  fallback: true,
});

const [result] = await client.generateContent({
  model:
    `projects/${projectId}/locations/${location}/publishers/${publisher}/models/${modelName}`,
  contents: [{ role: "user", parts: [{ text: "________" }] }],
  toolConfig: {
    functionCallingConfig: {
      mode: "ANY",
    },
  },
  tools: [
    {
      functionDeclarations: [
        /* ________ */
      ],
    },
  ],
});

console.log(JSON.stringify(result, null, 2));

ToolConfig is added at https://github.com/googleapis/nodejs-vertexai/releases/tag/v1.6.0


Question: Using flexmark to render markdown in a javafx application

I'm currently working on an e-learning application developed with JavaFX for Windows and macOS. I have been trying to use Flexmark to render some markdown text but I don't understand how to use it. Can it be you in Javafx or is it meant only for Java Swing? Again I have some latex I would also want to render, Is there an existing extension for it?
Sorry if this question is redundant, I have gone through most of the issues and the repo and still have not found any helpful solution but I have a strong feeling that this library can help me.
Thanks.

Since JavaFx only uses Java, this shouldn't be a problem. Just render markdown into a string (see code below) and use a WebView to display the html.
Parser parser = Parser.builder(options).build();
HtmlRenderer renderer = HtmlRenderer.builder(options).build();

// You can re-use parser and renderer instances
Node document = parser.parse("This is *Sparta*");
String html = renderer.render(document);


same same but different

https://github.com/depado/pb-templ-htmx-tailwind
like yours using same stack. Just a heads up :)

Nice  🙌  love it!


README - CurrencyFormatter is not valid helper (currently)

The README examples use CurrencyFormatter: https://github.com/lotus/helpers/blob/master/README.md#bad-style-example
This is not as valid helper AFAIK. Should this be changed to a helper that is actually implemented? As it may confuse users.

@tomkadwill Feel free to change it with your upcoming NumberFormatter example.

Resolved by #11


Cross-platform way of getting the ICC profile for a GLFWwindow

Obtaining ICC profiles is platform-dependent, nontrivial, dependent on the window state, and sufficiently tricky that I think having a common way of doing this as part of the GLFW API would be very useful.
Mechanisms known to me include:

GetICMProfileW on Windows
X11 atoms _ICC_PROFILE etc. on Linux/X11
(In the future) WIP protocol color-management-unstable-v1 on Linux/Wayland
D-bus endpoint colord on Linux
NSScreen.colorSpace.iccProfileData on macOS

Further considerations:

On systems with multiple displays, the right ICC profile needs to be gotten depending on which screen the window is currently on. So it can change as a result of window movement, or as a result of platform-specific ICC update notification mechanisms. So there should be a callback informing users about changes to the ICC profile, perhaps containing the profile itself.
What to do when the window is visible on two displays at the same time? Common practice is to use the display the window's center pixel is on.

Notes:

I opened an equivalent feature request for SDL, which resulted in this PR. You might be able to get inspiration from the implementation.

Indeed, what I want can be accomplished through a combination of:

An API to get the ICC profile for a monitor
An API to determine which monitor a window is on

The important part is making sure we smoothly handle the above edge cases (e.g. window moving between monitors, ICC profile for the current monitor being updated) in a way that doesn't require the user write unnecessary amounts of boilerplate. That's why I thought it would make sense to make it a property of the window, so the complexity can be hidden inside GLFW rather than duplicated into user code.

Gluing it onto windows adds unnecessary complexity for every case in which you want a particular screen's colour profile, and not a window's colour profile. GLFW already provides adequate means of getting the screen a window is on, so I believe that constraining this to windows, takes away lots of flexibility, usability and choice from the users.
The colour profile is a property of the screen's video mode, not a window, so putting the accessor on a window, is only a limited convenience, not the correct location for it. Coupling functionality and data in unrelated ways only tends to cause problems later on; glfwSetWindowMonitor is a good example of that.
As such, I think it's better to divide this issue into two feature requests.
There's already multiple issues and PRs for getting a window's monitor:

#1699
#2137

I believe this issue should be left as a request for obtaining a monitor's ICC profile data.
This may also enable us to provide means of setting a monitor's colour profile in the future.


When Isis 1.7.0 is released, update to implement the new Command2 API

This will enable ActionInteractionEvent to be surfaced to the executing action.

This was fixed a good while back.


$cordovaPushV5:notificationReceived not fired when Android in background

Expected Behaviour
When app is not in foreground and a push notification is received, the cordovaPushV5:notificationReceived event should fire.
Actual Behaviour
The cordovaPushV5:notificationReceived does not fire when app is in background.  Works when app is in foreground.
Reproduce Scenario (including but not limited to)
Works on iOS. Push notifications are being received by the device and display in the notifications shade but the app is not receiving notice that they ever arrived.
Steps to Reproduce
Send a push message to the device when the app is in background.
Platform and Version (eg. Android 5.0 or iOS 9.2.1)

Android 6.0
Android 4.1

(Android) What device vendor (e.g. Samsung, HTC, Sony...)

BLU 6.0
LG Tribute 4.1

Cordova CLI version and cordova platform version
cordova --version = 6.2
cordova platform version android  = android 5.1.1

Plugin version
cordova plugin version | grep phonegap-plugin-push = 1.8.2

Sample Push Data Payload
{
"title":"Notification",
"message":"hello",
"additionalData":{
  "subject":"Notification Test",
  "notification_type":"message",
  "icon":"myicon",
  "google.message_id":"0:####",
  "custom_app_id":"public",
  "coldstart":false,
  "collapse_key":"com.####",
  "foreground":true
  }
}

Sample Code that illustrates the problem
$cordovaPushV5.initialize(
            {
                android: {
                    senderID: GCM_SENDER_ID
                },
                ios: {
                    alert: 'true',
                    badge: true,
                    sound: 'true',
                    clearBadge: true
                },
                windows: {}
            }
        ).then(function (result) {
            $cordovaPushV5.onNotification();
            $cordovaPushV5.onError();
            $log.debug("About to register");
            $cordovaPushV5.register().then(function (device_token) {
                $log.debug("Register success with device_token " + device_token);
                registerDevice();
            }, function (err) {
                // handle error
                $log.debug("Error registering device");
            });
        });

        $rootScope.$on('$cordovaPushV5:notificationReceived', function(event, notification) {
            //Never reaches here for Android in background, but works fine for iOS when in background
            //Reaches here for Android when in foreground

           $log.debug('Received some notification: ', JSON.stringify([notification]));
            if (ionic.Platform.isAndroid())
            {
                handleAndroid(notification);
            }
            else if (ionic.Platform.isIOS)
            {
                handleIOS(notification);
            }

            $cordovaPushV5.finish().then(function (result) {
                $log.debug('finished notificationReceived RESULT: ' + result);
            }, function (err) {
                // handle error
                $log.debug('finished notificationReceived ERROR: ' + err);

            });
        });

        $rootScope.$on('$cordovaPushV5:errorOccurred', function(event, error) {
            // handle error
            $log.debug('cordovaPushV5:errorOccurred ERROR: ' + error);
        });

Logs taken while reproducing problem
#App put into background
log >> 78    659833   debug    paused app!
#No output
#Open app back up
log >> 79    676663   debug    Resuming with state: app.list
#No output

@DimDrop yup, that is the correct behaviour. If you want the event to be fired when the app is in the background you need to set the proper value in the payload which is documented here: https://github.com/phonegap/phonegap-plugin-push/blob/master/docs/PAYLOAD.md#background-notifications


How to make a Hologram appear directly in fornt of the user's face?

Describe the issue
A clear and concise what the issue
Feature area
What's incorrect? What's missing?
Existing doc link
If this is about something in an existing document, please provide link
Additional context
Add any other context about the problem here.

Duplicate


Use zjquery to test pm_list.js.

We now stub templates.render() to see what data gets passed in
to the template, rather than using jQuery to inspect the DOM that
gets created.  This changes the nature of the test to be less about
integration with the templating layer and more about how we pass
data into the template.
To compensate, we add more assertions to the relevant test
in templates.js.

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


nISR weights

We still need to calculate nISR and the corresponding weights for processes with a top and the signals.
The nISR can be calcualted like as shown here.
The numbers for the nISR weights can be extracted from here
In order to avoid changing the cross sections, we have to find a normalization factor. For this one can either not apply a preselection on the signal or perhaps find a way to calculate the normalization during the skimming for each mass point.

ISR weights are now implemented via 0408f1c


chore: import ProofWidgets, so tests work

Currently you need to run
lake build ProofWidgets
make tests

to reliably get tests to work.

bors d+

This should have been a bors merge not a regular one, right?


Add "Object ID" override shading

For now, there is only "Object Instances". But to check which objects are instanciated we need an "Object ID" override shading:

This override would return the ID color of the object (not the object instance) used by the shape.

Makes a lot of sense. To be consistent with the other names, I suggest to:

Call it simply "Objects"
Add "Assemblies"

So we would end up with:

Assemblies
Assembly Instances
Objects
Object Instances

in that order.

is anyone working on this ?

Nope, good ahead!

Is this issue available, to work upon?

Yes, not working on it rightnow

Yes, not working on it rightnow

Okay, thanks. Will work on it

So, I've been fiddling around with this issue as my entrance for Appleseed, and somehow I figured out how to solve it, so is anybody still working on it, or can I submit my fix?

Yes, even I was finding my way to work about it but eventually found another issue to work on. You can go ahead, goodluck!

Thank you! Then I’ll have it.

Done.


I'm trying to install and this shows up when i try to run the bot

I don't know what the issue is. I did everything properly and this just happens :(((

Have you taken time to read the printed "Problem" and "Solution" in the screenshot you provided?  Are they configured correctly?

Yes. I did and I used the email account for my second discord account made for the bot

Come see us on discord or post an image of your (censored) credentials. You probably have a token in a password, or a password in a token.

Actually I put the wrong token LOL I put the account token instead of the bot token. But thank you all for trying to help me <3


move interactions between Telegram bot and API to GCP Pub/Sub

moved telegram service to telegram bot and made connection with restful api


Two ModernDeck icons in the PopOS notification area with slightly different formatting

Hello!
I love using ModernDeck, so thanks for a great program. I am currently using Pop OS on my HP Dev One, and I currently have an issue where there are two versions of the ModernDeck systray icon. Each of the icons have a slightly different formatting for the options, and I've attached screenshots of everything as well (although the icon on the right won't let me printscreen when it is open).

If this is a Gnome or PopOS issue let me know and I'll submit tickets there instead. Thanks!

That's odd. I've seen this occur temporarily on Windows if you restart ModernDeck until you hover over the old icon but I haven't noticed this on other platforms myself. Are there any conditions where this happens or does it always occur?

ModernDeck has been updated to version 10.0.0, is the issue you were facing still present in the new version?


Docs are woefully inaccurate

The bunyan-lumberjack docs say that any connection option that can be used on node-lumberjack-protocol (your doc link is to node-lumberjack-proto, which doesn't exist and returns 404), can also be passed into the lumberjackOptions.  I could not get log entries to arrive at logstash and was getting NO errors when logging.  It turned out that I needed to attach a handler to on('disconnect') in order to see the error, which was related to my specifying the hostname as ip address instead of hostname and the ip address not being in the server's certificate.  But there's a lumberjack option to specify the function which is used to validate the cert, and another option which should disable certificate checks entirely, and neither of them does anything in bunyan-lumberjack, so far as I can tell.
Actually, I take that back.  It turns out that those particular lumberjack options are expected in the tlsOptions. But there is certainly no mention of that in the docs, and I have wasted endless hours chasing this stuff down.  A verbose mode that will issue errors/console statements synchronously when you attempt to log something to an un-connected stream would go a long way toward making it at least slightly possible to debug this stuff.  Same goes for specifying the events on the bunyan stream that can be subscribed to somewhere in the docs rather than in the example. Same goes for listing the available options and WHERE they can be specified.
And for what it is worth, I was able to use the node-lumberjack-protocol library with an ip address in my own code without overriding the security checks by putting the address in the cert, so it would seem that the strict forbidding of ip address hosts in the connection options is specific to the bunyan-lumberjack stream.

Hey, sorry to hear you're having some trouble.  If there's specific parts of the documentation that you found unclear, please feel free to submit a PR.  It's easier for someone unfamiliar with the library to find that kind of thing, for sure.  :)
Which doc link is 404ing for you?
node-bunyan-lumberjack doesn't do anything specific for SSL, (and, neither really does node-lumberjack-protocol - it just passes the tlsOptions straight through to node's tls library)  so I'm surprised it worked in the one case and not in the other.  You might find this a helpful read -
it's a little out of date at this point, but it should get you through most of your TLS problems.


Add option to always print server logs

Add option to always print server logs.
When working on https://github.com/matrix-org/complement/pull/68, I would just put a true in their manually but seems useful to have an actual option to use.

Thanks for taking a look @kegsay 🐈


It seems I've opened another issue. The current issue fixes #19


IncludeCaption property in report does not work

I created new rdlc report. I set the property IncludeCaption to true, to get caption of certain field.

Build the application and the rdl file appeared.

After I opened it with rdl file I found that field, but cannot find the caption part.

It worked in older versions, where I had to make .rdl file through the "Custom Report Layout" page.

Thank you for the clear and precise repro. We will fix this


Continue auto play after interaction with "StopAutoplayOnInteraction" (React).

I use StopAutoplayOnInteraction:true option, but I wanna to continue auto play after interaction. How I can do that?

@Tinkerbells
If you want to continue autoplay even after an interaction is done, then why do you want to use stopAutoplayOnInteraction:true ?
Can you specify what exact behavior you want to implement?

For example when I drag on one of blaze tack object I wanna to stop auto play and when dragging is over I want to continue

Or more specific stopAutoplayOnInteraction:true stopped sliding until component fully re render on page reload for example but I wanna to to continue auto play after interaction.

+1

+1


MINOR: Increase timeout for flaky ResetConsumerGroupOffsetTest

We see this failing from time to time. I think the default 5s timeout used by the reset tool may be a bit too tight. This patch increases the timeout to 15s.
Committer Checklist (excluded from commit message)

[ ] Verify design and implementation
[ ] Verify test coverage and CI build status
[ ] Verify documentation (including upgrade notes)

@hachikuji Thanks for the PR. LGTM. Merging to master.


Player icons not showing in Safari 9.1

Appreciate this is an old browser but a client pointed out the icons are not visibile in Safari 9.1 (it's the only 9 version I was able to test in BrowserStack, seems fine in 10). Same thing seems to happen on Plyr.io, so it's not my setup.
Can you think of a quick fix for this? Tried a couple of possible fixes but they didn't work, I would need to do more research on the matter.
Thanks!

This might be related to #460.

This is a hard one to test since I can't easily go back that far. I've signed up to BrowserStack and awaiting their approval as an open source project. Will get back once I've had a play.

I'm also in need of this. I think it's because the SVG uses <use href= which didn't seem to come out until a little later.
<svg role="presentation" focusable="false">
  <use href="#plyr-play"></use>
</svg>

I'm not totally sure, but I think updating it to just be xlink:href instead might work. https://stackoverflow.com/a/43754117/1308979


docker build -no-cache does not consistently invalidate the cache for subsequent builds

In this example, docker build -no-cache appears to invalidate the cache for subsequent builds:
$ cat Dockerfile
FROM ubuntu:12.10
RUN date > builddate
$ docker build -t vreon/cachetest .
Uploading context 10240 bytes
Step 1 : FROM ubuntu:12.10
 ---> b750fe79269d
Step 2 : RUN date > builddate
 ---> Running in cb5a9c443588
 ---> 9259bb0663e7
Successfully built 9259bb0663e7
$ docker build -no-cache -t vreon/cachetest .
Uploading context 10240 bytes
Step 1 : FROM ubuntu:12.10
 ---> b750fe79269d
Step 2 : RUN date > builddate
 ---> Running in 411ace38ef1f
 ---> 237318dc283c
Successfully built 237318dc283c
$ docker build -t vreon/cachetest .
Uploading context 10240 bytes
Step 1 : FROM ubuntu:12.10
 ---> b750fe79269d
Step 2 : RUN date > builddate
 ---> Using cache
 ---> 237318dc283c
Successfully built 237318dc283c

tl;dr: 9259bb0663e7, 237318dc283c, 237318dc283c

"Awesome," you'd think, "-no-cache is a nice way to force a full rebuild and account for the occasional RUN that isn't actually deterministic."
But then you try it with a slightly different RUN instruction:
$ cat Dockerfile
FROM ubuntu:12.10
RUN echo `date` > builddate
$ docker build -t vreon/cachetest .
Uploading context 10240 bytes
Step 1 : FROM ubuntu:12.10
 ---> b750fe79269d
Step 2 : RUN echo `date` > builddate
 ---> Running in 0c320266f660
 ---> 1c732f0b8836
Successfully built 1c732f0b8836
$ docker build -no-cache -t vreon/cachetest .
Uploading context 10240 bytes
Step 1 : FROM ubuntu:12.10
 ---> b750fe79269d
Step 2 : RUN echo `date` > builddate
 ---> Running in 67d2a2ae033a
 ---> f59e6459f768
Successfully built f59e6459f768
$ docker build -t vreon/cachetest .
Uploading context 10240 bytes
Step 1 : FROM ubuntu:12.10
 ---> b750fe79269d
Step 2 : RUN echo `date` > builddate
 ---> Using cache
 ---> 1c732f0b8836
Successfully built 1c732f0b8836

tl;dr: 1c732f0b8836, f59e6459f768, 1c732f0b8836

So now -no-cache appears to not invalidate the cache -- the third build used the images generated by the first. Essentially, the first time you use -no-cache, you have to keep using -no-cache on all subsequent builds, or you risk reusing a layer you thought invalidated.
$ docker version
Client version: 0.7.1
Go version (client): go1.2
Git commit (client): e39d35d
Server version: 0.7.1
Git commit (server): e39d35d
Go version (server): go1.2
Last stable version: 0.7.1
$ docker info
Containers: 49
Images: 50
Driver: aufs
 Root Dir: /mnt/archive/docker/aufs
 Dirs: 151
WARNING: No swap limit support

Doesn't this raise the fact that if @vreon is correct, that you risk having inconsistent cache results in builds?  The only way, then, is to always use -no-cache to ensure you NEVER use a cache at all.  When, in fact, I would like to have a command that invalidates a cache entry for a specific RUN command per Dockerfile/image build at the very least.
Can we at least have a mechanism to list how many entries from a Dockerfile/build are in the cache, and allow for invalidating those entries?

@borromeotlhs please see prior discussions on influencing the cache in
https://github.com/docker/docker/issues/6251, https://github.com/docker/docker/issues/1996, and a possible solution in https://github.com/docker/docker/pull/9176 and https://github.com/docker/docker/pull/15182 (the latest will be in Docker 1.9)

By the way, it's

--no-cache

(with two leading hyphens)

@samistart, Docker used single dashes for long options in 2013.
I haven't used --no-cache since this issue was closed, but I'm pleased to note that the bug is no longer present in modern versions of Docker.


Made the unit tests to work again

After the recent commits corrected a bug in the code, the tests were temporarily disabled in order to let the app run. I have modified the unit tests to go along with the current structure of the code.
@mariobehling @aayusharora  Please test and review. Thanks!!

Current coverage is 34.95% (diff: 100%)

Merging #893 into development will increase coverage by 11.37%

@@           development       #893   diff @@
=============================================
  Files                7          7
  Lines              967        967
  Methods            125        125
  Messages             0          0
  Branches           147        147
=============================================
+ Hits               228        338   +110
+ Misses             739        629   -110
  Partials             0          0

Powered by Codecov. Last update 63edef7...232b7ab

Thank you.


Feature request:  multiple "pins" for lightbulb

Hi, great plugin, thank you for that!
Would it be possible to add the "pins" parameter for lightbulb, so I could switch multiple lamps with the same button? Actually, I can only use "pin" (singular).
Thanks!
TT

@Sarzeau You can configure those one by one (homebridge-gpio-device) and combine all lightbulbs you want inside the iOS Home app to one.


Style: Changes for transitions on Updates list

Description of PR
Added smooth transitions on opening and closing of updates list (by clicking bell icon.)
Relevant Issues
Fixes #1575
Checklist

[x] Compiles and passes lint tests
[x] Properly formatted
[x] Tested on desktop
[x] Tested on phone

Screenshots
Added transitions in opening the Updates list

@jeremyphilemon @shuklaayush @JunaidBabu ,
Can you please review this one?

Closing due to inactivity


Fixes on the LoggerBuilder nightly tests

What does this PR do?
We need to give time to the started View event to be propagated as it is handled by a different thread otherwise the test gets flaky.
Motivation
What inspired you to submit this pull request?
Additional Notes
Anything else we should know when reviewing?
Review checklist (to be filled by reviewers)

[ ] Feature or bugfix MUST have appropriate tests (unit, integration, e2e)
[ ] Make sure you discussed the feature or bugfix with the maintaining team in an Issue
[ ] Make sure each commit and the PR mention the Issue number (cf the CONTRIBUTING doc)

Codecov Report

Merging #607 (bc18fe0) into master (29a62b6) will increase coverage by 0.30%.
The diff coverage is n/a.


[release-0.36] fix pdb controller segfault

manual backport of the primary fix and unit test for #5849
This backport focuses only on the segfault and targeted unit test and does not include the other unit test enhancements #5849 introduced.
Fixes event recording causing a segfault in virt-controller

/retest

/approve
/lgtm

/retest

/test pull-kubevirt-e2e-k8s-1.18

/test pull-kubevirt-e2e-k8s-1.18-0.36

/retest

/retest


Fixing typo

correction of typos in the documentation under section How does reuse work?.
closes #114921

Thanks, @KimiaTahvildari!

Thanks for catching that typo, and I appreciate your feedback! I've made the necessary correction, and the code now reads:
Component definition is_deterministic = true
I've pushed the updated changes to my branch. Please take a look when you have a moment, and let me know if there's anything else I can do to improve this pull request(#115041).

Hi.
All looks good now. I’ve approved the commit. Thanks.
From: KimiaTahvildari @.>
Sent: Thursday, September 21, 2023 6:48 PM
To: MicrosoftDocs/azure-docs @.>
Cc: Gordon, Andrew (Reigate) @.>; Comment @.>
Subject: Re: [MicrosoftDocs/azure-docs] Fixing typo (PR #114950)
Thanks for catching that typo, and I appreciate your feedback! I've made the necessary correction, and the code now reads: Component definition is_deterministic = true I've pushed the updated changes to my branch. Please take a look when you
Thanks for catching that typo, and I appreciate your feedback! I've made the necessary correction, and the code now reads:
Component definition is_deterministic = true
I've pushed the updated changes to my branch. Please take a look when you have a moment, and let me know if there's anything else I can do to improve this pull request(#115041https://urldefense.com/v3/__https:/github.com/MicrosoftDocs/azure-docs/pull/115041__;!!IF02HbLKfvgGAZjM2hVeUw!dp6NRKEkYIyhsy_Bas0bFW4F3OnUOgkAzmsjkvs5nazg4nCyjviDDQDvmiIFAiCkLuuLMZmybWp6HqI-Bt68lPbPQuH0vUi849Rm_g$).
—
Reply to this email directly, view it on GitHubhttps://urldefense.com/v3/__https:/github.com/MicrosoftDocs/azure-docs/pull/114950*issuecomment-1730036262__;Iw!!IF02HbLKfvgGAZjM2hVeUw!dp6NRKEkYIyhsy_Bas0bFW4F3OnUOgkAzmsjkvs5nazg4nCyjviDDQDvmiIFAiCkLuuLMZmybWp6HqI-Bt68lPbPQuH0vUhJVUVOtg$, or unsubscribehttps://urldefense.com/v3/__https:/github.com/notifications/unsubscribe-auth/AGAIQRC6VM4OR5UH2WGMQC3X3R4VHANCNFSM6AAAAAA47QDCFQ__;!!IF02HbLKfvgGAZjM2hVeUw!dp6NRKEkYIyhsy_Bas0bFW4F3OnUOgkAzmsjkvs5nazg4nCyjviDDQDvmiIFAiCkLuuLMZmybWp6HqI-Bt68lPbPQuH0vUgGR_LuzQ$.
You are receiving this because you commented.Message ID<EMAIL_ADDRESS>Notice of Confidentiality
This email contains confidential material prepared for the intended addressees only and it may contain intellectual property of Willis Towers Watson, its affiliates or a third party. This material may not be suitable for, and we accept no responsibility for, use in any context or for any purpose other than for the intended context and purpose. If you are not the intended recipient or if we did not authorize your receipt of this material, any use, distribution or copying of this material is strictly prohibited and may be unlawful. If you have received this communication in error, please return it to the original sender with the subject heading "Received in error," then delete any copies.
You may receive direct marketing communications from Willis Towers Watson. If so, you have the right to opt out of these communications. You can opt out of these communications or request a copy of Willis Towers Watson's privacy notice by emailing<EMAIL_ADDRESS>Towers Watson Limited is a limited liability company registered in England and Wales under registered number 5379716.
Towers Watson Investment Management Limited is a limited liability company registered in England and Wales under registered number 05534464.
Registered address: Watson House, London Road, Reigate, Surrey, RH2 9PQ United Kingdom.
Towers Watson Limited and Towers Watson Investment Management Limited are authorised and regulated by the Financial Conduct Authority. [ELD-WT95]


Ensure billing is configured to avoid running out of quota

Currently CPU utilization is high enough that we will exceed free quota once signups are opened up.
Only project admins can configure billing.

Done


Fix small issue on line 230 in calculate_complexity_scores.py

There is an issue with the if statement on line 230. This statement tests whether "credentials" is a key in the dictionary (i.e., is it an argument), which is always true.  It should instead be checking the value that is assigned to that key.

Tests are failing - please identify the problem and fix it so that the tests pass.

The tests are succeeding in the source fork. Their failure here appears to be due to GitHub's protection against sharing secrets across forks. Accordingly I'm going to try merging and see if that fixes it...


Add codecov action for PRs

Codecov Report

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

:exclamation: Your organization is not using the GitHub App Integration. As a result you may experience degraded service beginning May 15th. Please install the Github App Integration for your organization. Read more.
@@           Coverage Diff           @@
##             main       #6   +/-   ##
=======================================
  Coverage        ?   86.27%
=======================================
  Files           ?       14
  Lines           ?     1603
  Branches        ?        0
=======================================
  Hits            ?     1383
  Misses          ?      220
  Partials        ?        0

:mega: We’re building smart automated test selection to slash your CI/CD build times. Learn more


[Issue #248] feat: dedicated redis db to bullmq

Description
Create a dedicated redis DB to bullMQ. This way, when caching the dashboard data, they don't get mixed up.
Test plan

Reset the containers with make reset-dev.
See if the jobs are being normally executed with yd jw or peeking into the jobs/out.log file
Reset the jobs with yd jr and make sure they all run again.

Also, you can enter the redis command-line with yd c, then:

Running KEYS * should return nothing,
Running SELECT 1 and KEYS * should return the keys related to bullmq.

Depends on

[x] #459

Jobs are running and yd c has the outputs you described, however I see quite some error messages on yd jw output:

Jobs are running and yd c has the outputs you described, however I see quite some error messages on yd jw output:

I have been getting that too, both here and on master, with not much consistency with regards to if I am gonna get the error or not. Can you check if this is only happening on this branch, for you?

@chedieck I just realized that the following file appeared here, not sure if after the run on master or on your branch, should it be git ignored?

@chedieck I just realized that the following file appeared here, not sure if after the run on master or on your branch, should it be git ignored?

Oh yeah, this is being generated & gitignored in this branch. So when you switched to master, it wasn't gitignored anymore. But you can delete it without worries


LCM may hang when applying huge configurations

LCM may hang when applying huge configurations up to several days. The DscLcmController can be used to control / reset the LCM when starting it in the background.

$timeout = 5
$j = Start-Job -ScriptBlock { Start-Sleep -Seconds 66 }
while ($j.State -eq 'Running' -and $timeout -gt 0) {
    Start-Sleep -Seconds 1
    $timeout--
    Write-Host "$timeout"
}

if ($j.State -eq 'Running') {
    $j | Stop-Job
    #find the process that is hosting the DSC engine
    $dscProcess = Get-WmiObject msft_providers | Where-Object { $_.Provider -like 'dsccore' -or $_.Provider -eq 'dsctimer'}
    Write-Host "Shutting down LCM process with ID '$($dscProcess.HostProcessIdentifier)'"
    Get-Process -Id $dscProcess.HostProcessIdentifier | Stop-Process -Force
}

The maximum runtime of the LCM should be configurable in the section DscBaseline::LcmController section. The name of the additional property could be MaxLcmRuntime.

Fixes by dsccommunity/CommonTasks#56.


WIP: Python buffer (PEP 3118) implementation

This is very much a work in progress branch to explore replacing PyCall's numpy dependency with Python Buffers / memory views (https://github.com/stevengj/PyCall.jl/issues/38, and https://github.com/JuliaLang/IJulia.jl/issues/49).  Link to PEP proposal: http://legacy.python.org/dev/peps/pep-3118/
Note: to get something working I've ignored for the time being important things like proper reference counting, and python initialization.  I have also removed including the numpy code to make testing easier.
I want to get some feedback and to bring up some questions / problems I can foresee in implementing the rest of this.  This pull request currently only works for Python v. > 3.2 as the layout of the Buffer structure changed in 3.3.  Python initialization is deferred until runtime, so is it best to defer PyBuffer type creation until runtime?.  Now with faster startup times, is there a reason not to initialize libpython when first loading the module?  Another wrinkle is that Buffer support has only been backported to 2.7.  The other option is the keep the pointer opaque and do a copy of the data upon Buffer creation.
Currently the buffer implementation matches the functionality of the numpy interface (most of the code is largely the same  with few modifications) under the assumption that the buffers are contiguous. Python's buffer interface allows for non-contiguous buffers so this will have to be implemented.  Sould there be a distinction between the two PyArray wrapper types?  There have been recent discussions about Julia's Array type hierarchy reflecting the underlying data layout.
The biggest advantage of utilizing python's buffer interface is that it supports heterogeneous structure types.  This will allow for conversions between numpy's record arrays and julia array's of immutable types.  Parsing the buffer format specification is going to take a bit more work.  The main question I have is how to best generate the types for these buffers.  For instance upon being passed a numpy record array specifying some structure, do we create a requisite type on the fly or look to the global environment and try to match an existing type?  I would be interested in any thoughts anyone might have as for how this would work.
The last thing to do would be to implement the buffer interface for Julia's array types to support Python -> Julia interfaces.  What is the best way to do this?

@jakebolewski, I merged a modified subset of this PR in order to fix stevengj/PyPlot.jl#118 — basically, my PyObject(::IO) wrappers weren't working because they need to use the buffer interface to get access to the raw bytes in order to implement write.
It would be good to have an updated PR which adds the other stuff I omitted, in particular your new NumPy-free PyArray (probably in a separate pyarray.jl file).

"I merged a modified subset of this PR in order to fix JuliaPy/PyPlot.jl#118"
[Because of this and old comments] I only scanned this issue, and should it still be open?
Is it my correct understanding, that even without, PyCall is pretty good (at least the multidimensional aspects)? This issue would just be icing-on-the cake? Not really faster, just loosing a dependency? [I see (unrelated) bugs fixed all the time, in PyCall, I think, and README seems to support, that it mostly works, rather than the opposite.]
In the source code:
function NpyArray{T<:NPY_TYPES}(a::StridedArray{T}, revdims::Bool) #not needing default =false (as I think not exported)
[..]
PyReverseDims{T<:NPY_TYPES}(a::StridedArray{T}) = NpyArray(a, true)
PyReverseDims(a::BitArray) = PyReverseDims(Array(a))
[doc]
PyReverseDims(a::AbstractArray) #this stray line is puzzling to me.. I thought a function body needed, can't do similar myself..
[PyReverseDims of course comes at an unavoidable performance cost], unless you chose not to flip, that is often ok; unclear from my reading of the code, if there's a cost for 1D arrays, and someone uses PyReverseDims out of habit.]