text:
Less repetition in the code

Proposed Semver Increment Bump: [MAJOR/MINOR/PATCH]
Patch ¯\_(ツ)_/¯
Changes Proposed in this Pull Request (List new items in CHANGELOG.MD)

DRY

(If Applicable) What Issue does it fix?
"Fixes" repetition, if anything.

I suggest moving this outside of the constructor, otherwise it'll have to create that object every single time, as opposed to once when the file is loaded.

Already changed on my end, will push to it soon

@UnseenFaith Requested Changes submitted. Acceptable?

@CyberiumShadow I think he meant outside the class. Also, you can't reference a non-static method like makeDirsObject with the class name, it must be with the keyword this

In that case shouldn't it instead be defined in the constructor, so that it can be garbage collected, instead of perpetually stored in the process cache?

Is that how it works? I thought it worked the complete opposite. If that's the case then yes it should stay in the constructor.

okay now @UnseenFaith @bdistin ?

authors: CyberiumShadow UnseenFaith bdistin kyranet tech6hutch

repo: dirigeants/komada


text:
Unable to remove embeds from a message

Per the dpy docs, await msg.edit(embed=None) is supposed to remove an embed from a message. However, I receive the following error:
Traceback (most recent call last):
  File "/opt/homebrew/lib/python3.9/site-packages/discord/client.py", line 343, in _run_event
    await coro(*args, **kwargs)
  File "/opt/homebrew/lib/python3.9/site-packages/discord_ui/client.py", line 257, in _on_response
    await x.invoke(context, **options)
  File "/opt/homebrew/lib/python3.9/site-packages/discord_ui/cogs.py", line 98, in invoke
    raise ex
  File "/opt/homebrew/lib/python3.9/site-packages/discord_ui/cogs.py", line 93, in invoke
    await self.callback(self.cog, ctx, *args, **kwargs)
  File "/Users/tiltowait/Developer/inconnu/interface/characters.py", line 104, in delete_character
    await inconnu.delete.prompt(ctx, character)
  File "/Users/tiltowait/Developer/inconnu/inconnu/delete.py", line 28, in prompt
    await msg.edit(embed=None)
  File "/opt/homebrew/lib/python3.9/site-packages/discord_ui/receive.py", line 668, in edit
    self._update(await self._state.http.request(r, json=jsonifyMessage(*args, **fields)))
  File "/opt/homebrew/lib/python3.9/site-packages/discord_ui/http.py", line 70, in jsonifyMessage
    raise WrongType("embeds", embeds, 'list[discord.Embed]')
discord_ui.errors.WrongType: 'embeds' must be of type list[discord.Embed], not <class 'list'>

Out of curiosity, I tried embeds=None but got a different error:
Traceback (most recent call last):
  File "/opt/homebrew/lib/python3.9/site-packages/discord/client.py", line 343, in _run_event
    await coro(*args, **kwargs)
  File "/opt/homebrew/lib/python3.9/site-packages/discord_ui/client.py", line 257, in _on_response
    await x.invoke(context, **options)
  File "/opt/homebrew/lib/python3.9/site-packages/discord_ui/cogs.py", line 98, in invoke
    raise ex
  File "/opt/homebrew/lib/python3.9/site-packages/discord_ui/cogs.py", line 93, in invoke
    await self.callback(self.cog, ctx, *args, **kwargs)
  File "/Users/tiltowait/Developer/inconnu/interface/characters.py", line 104, in delete_character
    await inconnu.delete.prompt(ctx, character)
  File "/Users/tiltowait/Developer/inconnu/inconnu/delete.py", line 28, in prompt
    await msg.edit(embeds=None)
  File "/opt/homebrew/lib/python3.9/site-packages/discord_ui/receive.py", line 668, in edit
    self._update(await self._state.http.request(r, json=jsonifyMessage(*args, **fields)))
  File "/opt/homebrew/lib/python3.9/site-packages/discord_ui/http.py", line 69, in jsonifyMessage
    if not all(isinstance(x, discord.Embed) for x in embeds):
TypeError: 'NoneType' object is not iterable

You can temporary use embeds=[] this should work, the fix will come with 4.3

should be fixed in v2.1.15

source: gharchive/issue

authors: 404kuso RedstoneZockt tiltowait

repo: discord-py-ui/discord-ui

license: MIT

license_type: permissive

license_source: github-api


text:
Add message forwarding

[x] https://github.com/discord/discord-api-docs/pull/6818
[x] clarification on message_snapshot fields and partiality
[ ] https://github.com/discord/discord-api-docs/pull/6833

So what this means I. English

source: gharchive/pull-request

authors: Coolmandre mlnrDev

repo: disgoorg/disgo


text:
LexigramCount counts each element of alternatives

Alternatives might be a single unit so should have a value of 1(?)

Alt should function like Opt in that LexigramCount should map over alts and take the min and max interval. Will need more sophistication than that to handle things like Opt in the alts. Nested Interval probably won't make sense.

repo: dishmint/LexicalCases


text:
OCI Conformance: GET request to blob URL from prior request should yield 200

epic: https://github.com/docker/distribution/issues/3203
Push > Blob upload > Monolithic upload
GET request to blob URL from prior request should yield 200
This failure will likely be resolved when the above changes are made. Once a complete upload can be made via a POST request containing the blob in the body, and the digest in the digest query parameter, the blob will be found.
2020/07/10 06:16:27.291971 DEBUG
==============================================================================
~~~ REQUEST ~~~
GET  /v2/oci-conformance/distribution-test/blobs/sha256:66ad98165d38f53ee73868f82bd4eed60556ddfee824810a4062c4f777b20a5b  HTTP/1.1
HOST   : distribution:5000
HEADERS:
	User-Agent: distribution-spec-conformance-tests
BODY   :
***** NO CONTENT *****
------------------------------------------------------------------------------
~~~ RESPONSE ~~~
STATUS       : 404 Not Found
RECEIVED AT  : 2020-07-10T06:16:27.291606746Z
TIME DURATION: 2.412602ms
HEADERS      :
	Content-Length: 157
	Content-Type: application/json
	Date: Fri, 10 Jul 2020 06:16:27 GMT
	Docker-Distribution-Api-Version: registry/2.0
	X-Content-Type-Options: nosniff
BODY         :
{
   "errors": [
      {
         "code": "BLOB_UNKNOWN",
         "message": "blob unknown to registry",
         "detail": "sha256:66ad98165d38f53ee73868f82bd4eed60556ddfee824810a4062c4f777b20a5b"
      }
   ]
}

==============================================================================

Expected
    <int>: 404
to equal
    <int>: 200

This is green when running the latest conformance suite against distribution. Can this one be closed?

Yep, closing.

authors: Jamstah milosgajdos thaJeztah

repo: distribution/distribution


text:
🛑 Divelia Cotis Dev is down

In 5d0ff37, Divelia Cotis Dev ($DEV_COTIS_DIVELIA) was down:

HTTP code: 0
Response time: 0 ms

Resolved: Divelia Cotis Dev is back up in 4b29dcd.

repo: diveliastudio/upptime


text:
cut filename on upload progress

This pull request fixes the following issues:

BEFORE
AFTER

:+1:

repo: divio/django-filer

license_source: bigquery


text:
removes arrow in breadcrumbs if no following folder or name

before

after

please add changelog

@FinalAngel thanks. changelog is updated


text:
Port Addon alignment changes from Master

All changes have been ported and taken from: https://github.com/divio/djangocms-text-ckeditor/commit/a6069096fdac80931fd328055d1d615d168c33df
Changes include:

setup.py and various project files updated inline with other addons
Isort errors fixed and enabled in the test suite
Tests moved out of the package as per recommendations from python packages
Translations updated

Tested locally, looks good!

Thanks @adam-murray Appreciate it.

repo: divio/djangocms-text-ckeditor


text:
🛑 Art Basel is down

In 829cb8e, Art Basel (https://www.artbasel.com/) was down:

HTTP code: 503
Response time: 355 ms

Resolved: Art Basel is back up in f0a8404 after 34 minutes.

repo: divtiply/artupptime


text:
Joins

Support the ability to join records from other collections providing an output where the selected/join result is the document value.

Could you elaborate more about the feature? It would be better if you provide one example to illustrate it.

Sure, for instance in mongo with spring you can use dbref for subdocuments. In spring if you annotate a class with @dbref it will automatically join that document as a property of the annotated document. So for example:
public class Person{ private String id; private String name; private String addressId; }
public class Address{ private String id; private String street; }
Now obviously this is regarding POJOs however if i do a query to select a document by id, It would be awesome if i could join the address document to the returning document where the address document id is equal to the addressId field.
Another example could be that if i have 3 documents that represent portions of an object but in a very normalized way.
public class Point{  public String id; }
public class AbsolutePoint extends Point{ public String id; public Double distance; }
public class GeographicalPoint extends AbsolutePoint{ public String id; public Double latitude; public Double longitude;
It would be awesome if i could create a aggregated document where i can query the three stores/tables by id and create a single result that includes the fields/attributes from the three source documents where the id matches.

By design I decided not to include aggregation in an embedded database. The detailed reason I described here in issue #24 . If you are asking for something else and I did not understand it, please let me know.

Anindya,
Thanks, I can understand the reasoning, however my thoughts regarding my
description of aggregation is not really pertaining to analytics or
calculations, but more so for merging multiple documents into a single
master document (aggregating fields). If you are familiar with JPA or how
other ORMs store records in a relational db, the fields that are also
entities represent a table of its own with a joint table linking the two.
When you query based on the parent entity the ORM will pull the objects
from the tables necessary to make up the parent object. I see this as the
foundation of the request, however it would be nice if i could do it based
on arbitrary documents as sometimes i need to work with relatively dynamic
data.
On Mon, Nov 13, 2017 at 8:54 AM, Anindya Chatterjee <
notifications@github.com> wrote:

By design I decided not to include aggregation in an embedded database.
The detailed reason I described here in issue #24
https://github.com/dizitart/nitrite-database/issues/24 . If you are
asking for something else and I did not understand it, please let me know.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/dizitart/nitrite-database/issues/33#issuecomment-343839754,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AFgDOPBLy4y048j3TfSP_RnccyNoM9zYks5s1_XAgaJpZM4QbB3I
.

Does projection serve your purpose? - http://www.dizitart.org/nitrite-database/doc/2.0.0/index.html#projection

Projection seems to be based on a single document where you want to only
have certain properties associated with the returned document. What i am
thinking would be projection where a field could be a document returned
from another collection based on a foreign key. For example.
https://drive.google.com/file/d/1XAoVo-B8r0uUTdmBIR6XdHkaEWD7I2Pt/view?usp=sharing
On Mon, Nov 13, 2017 at 9:36 AM, Anindya Chatterjee <
notifications@github.com> wrote:

Does projection serve your purpose? - http://www.dizitart.org/
nitrite-database/doc/2.0.0/index.html#projection
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/dizitart/nitrite-database/issues/33#issuecomment-343848067,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AFgDOPSZQx_HOgokillVAFM80hpF-_N7ks5s1_91gaJpZM4QbB3I
.

It does look like you are thinking something similar to lookup operation in mongo. So if I understand correctly, if you have 2 repositories like Address, Person
public class Address {
      private String id;
      private String personId;
      private String streetAddress;
}

public class Person {
    private String id;
    private String name;
}

public class PersonDetails {
    private String id;
    private String name;
    private List<Address> addressList;
}

you want to get a result of type PersonDetails where person.id = address.personId

yes, pretty much. Lookup is definitely a better explanation. Ultimately it
is just joining the address and person details into a result of person
details.
On Mon, Nov 13, 2017 at 9:55 AM, Anindya Chatterjee <
notifications@github.com> wrote:

It does look like you are thinking something similar to lookup
operation in mongo. So if I understand correctly, if you have 2
repositories like Address, Person
public class Address {
private String id;
private String personId;
private String streetAddress;
}
public class Person {
private String id;
private String name;
}
public class PersonDetails {
private String id;
private String name;
private List addressList;
}
you want to get a result of type PersonDetails where person.id =
address.personId
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/dizitart/nitrite-database/issues/33#issuecomment-343852591,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AFgDOOygkPDJBCOPi4lN2I43Qmj8KPUYks5s2APjgaJpZM4QbB3I
.

Just out of curiosity, what is stopping you to create a repository of PersonDetails in the first place and get the Person and Address objects out of it using projection? Unlike sql databases, here you can persists embedded object directly to the database.

Good question, So i'm working on a project where the source data model is
really normalized. And the data is transmitted via database replication.
Each object has its own table and FKs represent the attribute children
objects. There are also levels of inheritance where Object A extends Object
B but instead of just receiving Object B that contains the fields of Object
A, i get the entire inheritance hierarchy. Object B does not contain the
fields of Object A.  So my thoughts were that i could use Nitrite initially
as a staging db for these records, then using the querying, joining and
projection to create the denormalized representation and create a new
denormalized domain model. I cannot control the source and by having a
staging environment such as describe would save me from having to
explicitly mapping each table to a new domain model... or at least reduce
the amount necessary.
On Mon, Nov 13, 2017 at 10:19 AM, Anindya Chatterjee <
notifications@github.com> wrote:

Just out of curiosity, what is stopping you to create a repository of
PersonDetails in the first place and get the Person and Address objects
out of it using projection? Unlike sql databases, here you can persists
embedded object directly to the database.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/dizitart/nitrite-database/issues/33#issuecomment-343858697,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AFgDOBNsu5Glk0a3psy3pxSO7Gr_cCWBks5s2AmmgaJpZM4QbB3I
.

I think that a lookup would be great and very helpful in my case. I think
that others could use it as well, so it would not be specific to my use
case. I'm attempting to build the source now, will see what else i can come
up with.
Ultimately, the same thing could be achieved manually, however if it could
be automated via the code that would be awesome.
On Mon, Nov 13, 2017 at 10:47 AM, Anindya Chatterjee <
notifications@github.com> wrote:

Interesting use case. If the idea of look up helps you, I'll try to add
the feature
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/dizitart/nitrite-database/issues/33#issuecomment-343865870,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AFgDOMjfEnUgGdTlIf2qRcSTaxgSd6A5ks5s2BAhgaJpZM4QbB3I
.

I have come up with a basic design as follows:
Lookup lookup = new Lookup();
lookup.localField = "id";
lookup.foreignField = "personId";
lookup.targetField = "addressList";

Cursor cursor = collection1.find().join(collection2.find(), lookup); // for documents
Cursor<PersonDetails> cursor = repo1.find().join(repo2.find(), lookup); // for objects

Let me know your thoughts

Looks good to me if the output is as expected.... Perhaps using a builder
pattern may make it flow better
Join join = new
Join.Builder().where("id").eq("otherId").from(collection1.find()).applyTo("addressList");
Cursor cursor = collection1.find().join(join)
Ideally it should work for both collections and single objects/documents.
Thanks for your effort!
On Mon, Nov 13, 2017 at 1:05 PM, Anindya Chatterjee <
notifications@github.com> wrote:

I have come up with a basic design as follows:
Lookup lookup = new Lookup();
lookup.localField = "id";
lookup.foreignField = "personId";
lookup.targetField = "addressList";
Cursor cursor = collection1.find().join(collection2.find(), lookup); // for documentsCursor cursor = repo1.find().join(repo2.find(), lookup); // for objects
Let me know your thoughts
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/dizitart/nitrite-database/issues/33#issuecomment-343899630,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AFgDOM3LqRrVM1GQvTsrrB6KBnkDgQ-vks5s2DCagaJpZM4QbB3I
.

I am not inclined to introducing builder patterns right now, as other constructs like query, projection does not have any corresponding builders yet. May be later when I introduce builders for other constructs, I'll definitely add one for it. But for the first step I want to keep it as simple as possible.

Understand completely. Thanks for your efforts!
On Mon, Nov 13, 2017 at 1:33 PM, Anindya Chatterjee <
notifications@github.com> wrote:

I am not inclined to introducing builder patterns right now, as other
constructs like query, projection does not have any corresponding builders
yet. May be later when I introduce builders for other constructs, I'll
definitely add one for it. But for the first step I want to keep it as
simple as possible.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/dizitart/nitrite-database/issues/33#issuecomment-343905620,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AFgDONYgvPJfJHCHxtXvrbp4Kaz_Feshks5s2DcngaJpZM4QbB3I
.

I have made a commit on master. Please build it locally and test. Let me know if it serves your purpose. Once confirmed, I'll do a release, then you will be able to refer it from maven central.

Anindya,
Thanks, i will do that as soon as possible.
On Tue, Nov 14, 2017 at 7:50 AM, Anindya Chatterjee <
notifications@github.com> wrote:

I have made a commit on master. Please build it locally and test. Let me
know if it serves your purpose. Once confirmed, I'll do a release, then you
will be able to refer it from maven central.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/dizitart/nitrite-database/issues/33#issuecomment-344162580,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AFgDOMO9PTY0ScYqyEFLpGdy5z6pApG2ks5s2TgcgaJpZM4QbB3I
.

Let me know the outcome so I can close this issue.

I’ve tested the issue. It works as expected. Thanks!
Sent from my iPhone

On 16. Nov 2017, at 06:45, Anindya Chatterjee notifications@github.com wrote:
Let me know the outcome so I can close this issue.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub, or mute the thread.

Thanks for confirmation. Closing this issue.

authors: anidotnet kennywk

repo: dizitart/nitrite-database


text:
Fix for: unable to install older releases of zabbix-server

Description of PR
This PR contains the following change:

Loading of sql files failed when using Zabbix 2.2. Debian/Ubuntu doesn't use the create folder, RedHat does;
Added a version check in the zabbix_server.d.conf so Zabbix will not fail if it doesn't understand the property if that isn't part of the version;

Type of change

Bugfix Pull Request
Fixes an issue

Fixes #128

Works like a charm for me now! :) When do you plan to release 1.3.1/1.4.0 on galaxy? :)
Thank you for fixing it on such a short notice.

@D3DeFi
Yeah sure, will do that this afternoon or tonight.
Thank you for the confirmation! 👍

@D3DeFi
I uploaded 1.4.0 to the Galaxy. Have fun!

repo: dj-wasabi/ansible-zabbix-server


text:
Rendering of change list editable fields

Hi again,
when we set list_editable fields in ModelAdmin, the rendering of such field isn't bootstrapped.
I tried to find a way to change this with no success.
It would be great to have this.
Thanks.

Thanks for reporting. This may be a bit tricky since it doesn't look the template know if an item in the change_list is in list_editable so we can call the bootstrap rendering template tag. Another option would be to extend our template tag to handle the case that what is passed is not a formfield but something else.

authors: xrmx yomeuh


text:
[DOCS] 3.9.0 docs do not explain how to install the tutorial site

The "Templates and Placeholders" section refers to the tutorial site. Is this forked from github, may be?

Steps to reproduce

Expected behaviour

Actual behaviour

Screenshots

Additional information (CMS/Python/Django versions)

Do you want to help fix this issue?

[ ] Yes, I want to help fix this issue and I will join #workgroup-pr-review on Slack to confirm with the community that a PR is welcome.
[ ] No, I only want to report the issue.

According to the Install section, the CMS_TEMPLATES is set as follows:
CMS_TEMPLATES = [
    ('home.html', 'Home page template'),
]

This is changed in the Templates & Placeholders section to:
CMS_TEMPLATES = (
    ## Customize this
    ('fullwidth.html', 'Fullwidth'),
    ('sidebar_left.html', 'Sidebar Left'),
    ('sidebar_right.html', 'Sidebar Right')
)

This makes it a bit confusing. It may help to discuss this a little more. Then we could just remove the tutorial reference.

Hi @sureshvv thx. Not really sure why this is supposed to be confusing. The manual installation instructions are separate from the Getting Started Tutorial.

authors: NicolaiRidani sureshvv

repo: django-cms/django-cms


text:
Moving django-extensions forward

The project development seems to have slowed down, new issues and pull request are unanswered, so at this point it's showing all the signs of being unmaintained. I love some of the tools in this project, and would miss them if they stopped working. I think it's one of the main Django 3rd party packages, so I would hate to see it turn stale.
I'm not throwing any shade at the current maintainers, maintaing a project of such magnitude over time is no small feat and it's still working pretty well despite the lack of love in the past few months. However, by providing so many integrations with other libraries beyond Django (Jupyter notebook, 3.13 REPL, Werkzeug, watchdog, ..), if it's not kept up to date, the ecosystem keeps moving and cracks start to appear...
So I'd like to start a discussion to see how can we move this project forward. Do the current maintainers still have the energy and interest to pick this up (could be a temporary hiatus)? Does the project need new ones to be added? Would it help to be under a new organisation like @django-commons?
I hope this doesn't come across negatively.
PS: I've opened a discussion in the google group earlier, but it didn't show up, I assume new messages are hidden until moderated.

It's true that work on Django Extensions (from me) has been slowed down to
a crawl in recent times. Leading to PR's remaining open and it slowly
drifting from meanline Django and other dependencies/related projects.
The reasons for this are mostly typical for open source projects, many
articles and blogs [1] have been written by other projects and maintainers
and a lot of that applies for Django Extensions as well.
I definitely don't consider the project to be abandoned and therefore this
should be a temporary hiatus, however I cannot tell exactly when work will
pick up in a significant way.
The easiest and quickest way would be when an entity would spend some
actual money on the project allowing me (and ideally even others) to work
on it during our working hours. While none have any (other than moral)
obligation to do so, I know that projects like Django Extensions (and there
are many others too) are valuable to me when working on corporate or client
projects so that does not seem like that big of an ask.
I want to make crystal clear that I cannot understate how much I appreciate
all the people that donated to me or the project and companies like Sentry
that recently donated money (
https://blog.sentry.io/we-just-gave-750-000-dollars-to-open-source-maintainers/
) to keep the project going and to allow me to spend time on it. Though in
all earnest those never amounted to anything more than tens of dollars, the
biggest one being github's one time $500 donation, not close to anything
enough to pay the bills.
I hope this doesn't come across negatively.
No worries :-)
*PS: I've opened a discussion in the google group earlier, but it didn't

show up, I assume new messages are hidden until moderated.*

Your post should be approved now.
The Django community is a great community.
It might be taking a little longer than anybody would hope for but at some
point development will pick up again :-)
[1] For example you can search for them on HN:
https://hn.algolia.com/?q=maintainers
Op di 12 nov 2024 om 23:17 schreef Bruno Alla @.***>:

The project development seems to have slowed down
https://github.com/django-extensions/django-extensions/graphs/contributors,
new issues and pull request are unanswered, so at this point it's showing
all the signs of being unmaintained. I love some of the tools in this
project, and would miss them if they stopped working. I think it's one of
the main Django 3rd party packages, so I would hate to see it turn stale.
I'm not throwing any shade at the current maintainers, maintaing a project
of such magnitude over time is no small feat and it's still working pretty
well despite the lack of love in the past few months. However, by providing
so many integrations with other libraries beyond Django (Jupyter notebook,
3.13 REPL, Werkzeug, watchdog, ..), if it's not kept up to date, the
ecosystem keeps moving and cracks start to appear...
So I'd like to start a discussion to see how can we move this project
forward. Do the current maintainers still have the energy and interest to
pick this up (could be a temporary hiatus)? Does the project need new ones
to be added? Would it help to be under a new organisation like
@django-commons https://github.com/django-commons?
I hope this doesn't come across negatively.
PS: I've opened a discussion in the google group earlier, but it didn't
show up, I assume new messages are hidden until moderated.
—
Reply to this email directly, view it on GitHub
https://github.com/django-extensions/django-extensions/issues/1892, or
unsubscribe
https://github.com/notifications/unsubscribe-auth/AAAQAEBG6P7TZFD5CRBKGYL2AJ46RAVCNFSM6AAAAABRVCMPGSVHI2DSMVQWIX3LMV43ASLTON2WKOZSGY2TGNBWGEYTAOI
.
You are receiving this because you are subscribed to this thread.Message
ID: @.***>

It's true that work on Django Extensions (from me) has been slowed down to a crawl in recent times. Leading to PR's remaining open and it slowly drifting from meanline Django and other dependencies/related projects.
The reasons for this are mostly typical for open source projects, many articles and blogs [1] have been written by other projects and maintainers and a lot of that applies for Django Extensions as well.
I definitely don't consider the project to be abandoned and therefore this should be a temporary hiatus, however I cannot tell exactly when work will pick up in a significant way.
The easiest and quickest way would be when an entity would spend some actual money on the project allowing me (and ideally even others) to work on it during our working hours. While none have any (other than moral) obligation to do so, I know that projects like Django Extensions (and there are many others too) are valuable to me when working on corporate or client projects so that does not seem like that big of an ask.
I want to make crystal clear that I cannot understate how much I appreciate all the people that donated to me or the project and companies like Sentry that recently donated money ( https://blog.sentry.io/we-just-gave-750-000-dollars-to-open-source-maintainers/ ) to keep the project going and to allow me to spend time on it. Though in all earnest those never amounted to anything more than tens of dollars, the biggest one being github's one time $500 donation, not close to anything enough to pay the bills.

I hope this doesn't come across negatively.

No worries :-)

PS: I've opened a discussion in the google group earlier, but it didn't show up, I assume new messages are hidden until moderated.

Your post should be approved now.
The Django community is a great community.
It might be taking a little longer than anybody would hope for but at some point development will pick up again :-)
[1] For example you can search for them on HN: https://hn.algolia.com/?q=maintainers

authors: browniebroke trbs

repo: django-extensions/django-extensions

license: mit


text:
Separates contrib of core application,  refactoring internal structure

Separates contrib of core application,  refactoring internal structure.

done, waiting for merge..

repo: django-py/django-doberman


text:
Bug fix in deserialize

Calling deserialize('RRULE:A') would raise an AttributeError instead of DeserializationError, since the string was used incorrectly as a dict.
I added some tests to make sure DeserializationError is raised in all cases.

Thanks for this @noamkush - especially for taking the time to write tests for it. I've added release notes, we'll bundle this in with 1.5.0, which is due for release any day now.

authors: dominicrodger noamkush

repo: django-recurrence/django-recurrence


text:
Fixed #31370 -- Added support for parallel tests with --buffer.

ticket

I've also added a commit to make the runtests.py script always use buffer mode.
Tbh I'm in favour of making buffer the default for all users. We could add an --unbuffer option to flip it off. This is the default behaviour of pytest and it can speed up tests quite a bit since writing output to screen can become a limiting factor.

Paging @bmispelon for review since you wrote the first buffer PR #12169.

Rebased. I also made a ticket to propose making buffering the default, with a --no-buffer option to disable it: https://code.djangoproject.com/ticket/31543#ticket .

@Valze you may also be interested to see or review this PR, since it's test runner related.

@Valze you may also be interested to see or review this PR, since it's test runner related.

I've been keeping an eye on it ever since you started solving it initially a month ago. I'll give it a more thorough read over this weekend and see if I can help in any way.

Code looks much cleaner after subclassing TextResult, and it really does improve a lot of other written methods.
I'm +1 on setting buffer as the default option. It removes unnecessary clutter

I'm +1 on setting buffer as the default option. It removes unnecessary clutter

Thanks. Can you repeat that on the ticket ?

@adamchainz Do you have time to check my comments and polish this patch?

I finally got back to this.

@adamchainz Thanks for updates :+1: I still believe that we should drop the last commit and keep the current (default) behavior for runtests.py, see comment.
@carltongibson Can I ask for your opinion?

I'm happy to drop the last commit if you think so, but I have not seen any pytest users complain about its automatic buffering. You can always do print() + assert 0 to see the output.

Okay I dropped the change to runtests.py

@adamchainz Also, it doesn't really work for me. I think you missed passing buffer to the RemoteTestResult. I pushed commit with a proposed fix.

I think you missed passing buffer to the RemoteTestResult. I pushed commit with a proposed fix.

Ah thanks. I think I accidentally dropped that in the rebase-and-split.

I noticed that signature are outdated, see #14145.

@adamchainz Thanks :+1: It's ready to go :star2:

🙌 🚀

authors: Valze adamchainz felixxm

repo: django/django


text:
Fixed #33561 -- Implemented user synchronization in RemoteUserBackend

This commit added a new method to the RemoteUserBackend class called
synchronize_user, which is called inside said class' authenticate method
right after fetching the django user (if any).
Implementors should override this method to implement synchronization of
user attributes between the remote system and the Django system, this
method will be called during each authentication attempt and effectively
synchronize the user's attributes.

Closing per ticket.

authors: Elkasitu felixxm


text:
Support postgres CREATE INDEX CONCURRENTLY IF NOT EXISTS

Trac ticket number
N/A
Branch description
Prior to this commit, the only way of creating concurrent indexes with the postgres database backend was without the IF NOT EXISTS conditional.
In certain cases, it is useful to have an idempotent migration. Examples are when an index must be created during out-of-business-hours and a migration file is subsequently created to propagate the same changes to other environments (including local developer envs).
This commit adds support for CREATE INDEX CONCURRENTLY IF NOT EXISTS, allowing the caller to decide whether or not to use the conditional.
The same support wasn't added to CREATE INDEX (without the CONCURRENTLY key), because further changes into the AddIndex class would take place, leaking Postgres requirements into a class that is used for multiple database backends.
Checklist

[x] This PR targets the main branch.
[x] The commit message is written in past tense, mentions the ticket number, and ends with a period.
[x] I have checked the "Has patch" ticket flag in the Trac system.
[x] I have added or updated relevant tests.
[x] I have added or updated relevant docs, including release notes if applicable.
[x] For UI changes, I have attached screenshots in both light and dark modes.

Thanks but all changes require a ticket

(Also please first raise a thread on the forum before creating a ticket)

@shangxiao I have a ticket now. https://code.djangoproject.com/ticket/35383#ticket
Could you please re-open the PR.

authors: marcelofern shangxiao


text:
Fixed #28006 -- Allowed D to be used with lookups on Distance annotation.

https://code.djangoproject.com/ticket/28006

buildbot, test on oracle.

buildbot, test on oracle.

buildbot, test on oracle.

Oracle failures are fixed, I checked it locally. Buildbot doesn't want to test on Oracle for me :-(.

buildbot, test on oracle.

Oracle failures are fixed now.

authors: sir-sigurd timgraham


text:
Don't fail if self.object is not defined and keep searching for the…

… templates

A Trac ticket describing the issue as well as a test that demonstrates the usefulness of the change are required.

Closing absent further follow up. Not sure if the advice in 03c1609c473e14063bcea02dec248095d9c10579 might be relevant.

authors: piranna timgraham


text:
adjusted img links for Django 1.9

Fix for issue #148. Maybe it's a problem that it would break links for older Django versions?

Coverage remained the same at 87.946% when pulling 312ec330160dbb1f7a92d6d54c8cf48cb97039b9 on gpip:master into c7d3c36eea977fa70ca2c00a820f3c0b035bdbfa on djangonauts:master.

@gpip this is not good enough, it must be backward compatible with older versions of django

@nemesisdesign ok, do you have some suggestion on how you want to patch it? Also, is it something to be concerned about that your tests passed for this patch?

Do a version check in the widget render method and include the result in the template context. In the template you can use a simple if statement.
I wouldn't worry about the test unless we introduced a bug and then we had to fix it.
But if you do want to write a test, you can do it.

@nemesisdesign thanks, updated it to do that.

Coverage increased (+0.01%) to 87.96% when pulling 9cc37948b6641bc94416b6c586950afcd85d9ac1 on gpip:master into c7d3c36eea977fa70ca2c00a820f3c0b035bdbfa on djangonauts:master.

Thanks

authors: coveralls gpip nemesisdesign

repo: djangonauts/django-hstore


text:
a new week

@satra ping

lgtm.

authors: djarecka satra


text:
Replace async_trait with native async fns

Note that the usage of CustomizeConnection requires it to be object safe, and thus we need to use boxed futures instead of plain async fns.

@djc we have an issue with the coverage pipeline:
There was an error running the uploader: Error uploading to [https://codecov.io:](https://codecov.io/) Error: There was an error fetching the storage URL during POST: 429 - {"message":"Rate limit reached. Please upload with the Codecov repository upload token to resolve issue. Expected time to availability: 2144s."}

I think #231 has solved the coverage issue, please rebase on top of current main.

@djc I applied the following suggested changes:

[X] squash into MSRV bump and code changes commits
[X] change on_acquire lifetimes to <'r, 'a: 'r, 'b: 'r>
[X] replace all usages of BoxFuture with Pin<Box<dyn Future<Output = T> + Send + 'a>>

Let me know if you have any further suggestions.

Please also add a separate commit that bumps all the version numbers.

@djc done.

Thanks!

Published bb8 v0.9.0 at registry crates-io
Published bb8-postgres v0.9.0 at registry crates-io
Published bb8-redis v0.18.0 at registry crates-io
[new tag]         v0.9.0 -> v0.9.0
Release notes

authors: djc gahag-cw


text:
Fetch job log

Added a new function to the wrapper to fetch specific job logs. Since it's not part of the normal api functions using json, I had to hack around the client too.

Coverage remained the same at 100.0% when pulling 53779d834bf6327a08794bfff05e09aed6ede5c6 on Tethik:get-job-log into 665e55bcd790824b5bf80842429a7d044dc2accc on djm:master.

Thanks for the effort, this is just a quick message to say I've seen it - unfortunately I'm abroad at the moment and don't have decent enough internet to review it properly yet.
From a very quick look though, it looks like something we could support certainly, the use case is certainly there even if the Logs endpoint isn't part of the actual Scrapyd API as such.

Cool, no rush. Good job on the testing/documentation btw, great intro for someone who is a beginner to best practices when it comes to python development.
My own use case is that I'm using lib for a backend admin website where we are, among other things, mining content using scrapy. So being able to see the logs helps us see if something went wrong etc. Having to code a separate http- alongside the lib usage felt ugly since they're both calling the same endpoint.

Hi,
First off, sorry for the long wait - I finally got some time to take a good look at this PR and what it would mean for this project.
I've come to the conclusion that this is out of scope for this specific project as the logs endpoint is not part of the official scrapyd API and as such we'd be supporting an internal API of scrapyd itself which is probably unadvisable from our perspective and theirs if they wanted to change it.
I'm going to close the PR for now but thank you very much for your work on it despite it not going in :) It might be worth talking to the scrapyd project to see if they like the idea of surfacing the logs as part of their official API; if and when that happens, I am more than happy to support it as part of this project.
Cheers!

No problem, I kind of expected as much. Might look at scrapyd in the future then.

authors: Tethik coveralls djm

repo: djm/python-scrapyd-api


text:
🛑 Writeguard is down

In b624909, Writeguard (https://www.writeguard.com) was down:

HTTP code: 0
Response time: 0 ms

Resolved: Writeguard is back up in 78cf9f1.


text:
Pass the resource into the getRoleId() function

This is a very small technical change, but one that deserves a little bit of discussion. I'd like to pass the resource into the getRoleId() function on the user object.
My use case is getting more complicated as the requirements for my project change. I have a structure now where a user can have different 'roles' on different resources. I can support this requirement by passing getRoleId() the resource and allowing the getRoleId() function to return different roles depending on the resource that its passed.
This might be a philosophical change to how the library is intended to be used, though, so I'm curious if there are any thoughts on this change.

Haven't heard from you, but I went ahead and threw together the PR for this change. Let me know if you're not into it or would like some changes

This is interesting. Could this not be solved with a custom assertion? The assertion callback has access to the role, resource, and requested action, which means you should be able to allow or deny based on that. If custom assertions can't solve this, I'm interested to see how you're using this.

It can be, and we are using it that way currently.
There are a couple of things that are kind of clunky in our particular use case, though, when using arrays of roles. And I totally understand if our use case seems fringe and you'd rather not support it.
Here's an example of a case we have that is simplified by the change in the PR:
If we imagine a blog, we define a Post resource. We define 3 roles, create, edit, and view. Edit inherits from view, create inherits from edit.
So take this snippet:
var user = {
  getRoleId: function() {
    // this user has the create role on Post:1, the edit role on Post:2 and
    // the view role on Post:3 I have no context for which resource I'm
    // acting on so I must return all the roles that this user has
    return [
      'create',
      'edit',
      'view',
    ];
  }
}

acl.allow(user, post, 'edit', function(err, user, resource, aciton, result, next) {
  // The user has the 'create' and 'edit' roles so we're going to call this function
  // for every Post resource.

  // We've used role inheritance to determine that this is the assertion
  // we should be running, but in order to correctly determine that I
  // have access to edit Post:1 I will have to do a lookup to determine
  // if this particular user has the create OR edit roles for this particular
  // resource
});

So, using the ability to return arrays of roles from getRoleId I'm attempting to support a permissions model where my users have different roles per resource, ie, I have 2 Blog posts and I have different roles depending on which of those 2 Blog posts I'm taking action on.
We currently support this permissions model with the assertions as they are, but it requires me to write custom assertions for all of my .allow calls that check up the hierarchy of roles every time. If I can instead return the roles the user has based on the context of the resource, I can eliminate all (or most) of my custom assertions and transplant my logic for determining roles into the user model, and will allow me to be able to rely on role inheritance more completely.

Oh, that's interesting. I hadn't thought of using roles like that. I usually think of them as things like admin, member, guest etc. That is, what the object is vs what it can do.
When using them in this way, what are the actions you're passing in to the ACL? e.g.
acl.query('edit', 'blog', ???, function(err, allowed) { /* ... */ });

The way I'd do this would be a little different:
var user = {
  id: null,
  getRoleId: function() {
    if (1 === this.id) return 'admin';
    if (this.id > 1) return 'member';
    return 'guest';
  }
}

var blog = {
  authorId: 7,
  getResourceId: function() {
    return 'blog';
  }
}

acl.allow('admin', 'blog', 'edit'); // admins can edit any blog
acl.allow('member', 'blog', 'edit', function(err, role, resource, action, result, next) {
  if (resource.authorId === role.id) return result(null, true);
  next();
});
acl.allow('guest', 'blog', 'view'); // everyone can view any blog

Could something like this work for you?

No, there's no natural relationship between user -> resource in my use case that I can use to determine access.
I can't say "because this user created this particular post they get to edit it". I need to be able to assign posts to users explicitly. It's the case where an admin comes into the system and says "allow this member to edit these 10 posts but not these 5".
So I have to link up users as editors for some blog posts and not others, but not only that I have two or three other roles that they may have that determine their access to a particular post. So I need to say something like: User:1 can edit Post:1, and User:1 can edit and delete Post:2, and User:1 can create new Posts.
In order to represent this relationship I have to store some information about the relationship about this user to Post:1 and Post:2, and since (in this example) the user did not create those posts and otherwise has no natural relationship, I have to decide how to relate them.
My first realization is was that this is hard to do with virgen-acl, because my assertion callbacks will end up being very complicated (and the more logic that is in the assertion callback, the fewer nice features of virgen-acl I get to rely on). The crux is that any user can be assigned to edit any post. So I promote my "member" to "editor" and now I have to say in my assertion callback "does this person have edit privileges on this specific resource?" (this information is stored in the database).
Then after that I have one more complication: I want multiple levels of privileges per Post. Not only do I want to say a user is an editor, but that user can delete also. I want the "deleter" role to inherit from the "editor" role. User:1 can be an editor on Post:1 and User:2 can be a deleter on Post:2. So I grant User:2 the deleter role and User:1 the editor role. My assertions look like this now:
acl.allow('admin', 'blog', null); // admins can edit any blog

// editors can edit some posts
acl.allow('editor', 'blog', 'edit', function(err, role, resource, action, result, next) {
  if (role.hasEditPermOn(resource)) {
    return result(null, true)
  }

  // this logic could be done in "hasEditPermOn", but the point is the same
  // I have to do this check.
  if (role.hasDeletePermOn(resource)) {
    return result(null, true);
  }

  next();
}

// members can edit their own posts
acl.allow('member', 'blog', 'edit', function(err, role, resource, action, result, next) {
  if (resource.authorId === role.id) return result(null, true);
  next();
});
acl.allow('guest', 'blog', 'view'); // everyone can view any blog

In the scenario above, anybody will have the deleter role if they are allowed to delete even one Post. Now I have to make things more complicated: we have Pages as well as Posts. I also need to be able to assign users arbitrary permissions to Pages (this is why I proposed the multiple roles change). Now I need roles like this: admin, post-deleter, post-editor, page-deleter, page-editor, member.
My assertion callbacks for posts look similar to my assertion callbacks for pages. I have to check up the permissions hierarchy every time. This works, but it's not as clean as I'd like. I've lost some of the value of role inheritance. I can't just check if this user has been assigned as an editor, but I must also check if this user has been assigned as a deleter on the given resource.
Now my real use case I have a lot more resources and a lot more roles. The logic in my assertions above is checking a hierarchy of 3 or 4 every time. In order to build roles in my User models getRoleId() function I'm pulling from the database all the permissions a user has on any resource and building a list of roles like above, and returning the full list of roles that a user has.
Then every assertion has to re-check roles to make sure that 1, do they have edit on this thing? and 2, do they have deleter on this thing?
This architecture is simplified if I have the resource available to me in the user object when I go to deliver the roles. I can simply say "oh you're checking access to Post:1? Well here is the role this user has for that resource". This results in fewer false positives (ie, executing assertion callbacks fewer times), and I never have to check up through a permissions hierarchy because I get to rely on virgen-acl to do that for me, which is desirable.
Now, that all being said, I think this is a more complex use case than virgen-acl was designed for, but I also think that virgen-acl was very well designed and is flexible enough to handle very complex use cases. This change helps me more cleanly support my complex use case.

Hey @djvirgen i know i've written a lot on the topic.
I'm curious if you're still not convinced. I want this change enough that I'd probably maintain a fork with this feature if you'd prefer not to merge it. Before I go through the effort, though, I wanted to check in one more time.

Hi @spruce-bruce ,
After reading through your latest comments a few times, I think the issue mostly involves how you're using roles. The role name itself should not indicate any level of permission. For example, a role of editor implies permission to edit all posts, but you want them to be editor of a certain post, which makes things much harder to manage as you are experiencing. Generally, a user's role is static, and does not change once new permissions are granted. In many use cases, you could use the single role user for everything.
This allows Virgen ACL to look up the appropriate permissions based on the provided .allow() and .deny() rules. So in your example, when the author of a post grants a user permission to edit a post, that user's role (at least in Virgen ACL) does not change. It should remain user. When querying the ACL, it will see that a particular user wants to take an action on a specific resource. The callback function may grow a bit in complexity, but it doesn't need any more information than is provided. For example, your resource could contain a list of user IDs that are allowed to edit the post, retrievable via Resource#getApprovedEditors():
acl.allow('user', 'post', 'edit', function(err, role, resource, action, result, next) {
  // authors can always edit their own posts
  if (resource.authorId === role.id) return result(null, true);

  // privileged users can also edit the post
  if (resource.hasOwnProperties('getApprovedEditors') &&
    -1 !== resource.getApprovedEditors().indexOf(role.id)) return result(null, true);

  // if we got this far, this assertion can't make a determination either way, continue to next rule
  next();
});

If Virgen ACL starts to support dynamic roles based on the resource and/or action, I think that will move too much of the access-control rules to the domain entities, which kind of defeats the purpose of an ACL. I'd prefer the roles and resources would simply identify themselves, and let the ACL determine who can do what.
I hope this helps, let me know what you think.

I think that's fair, and I completely understand the rationale. My current system is using the .allow() callbacks as you suggest and this works .
It does prevent me from getting the use out of role inheritance that I would like, though, since (in my case) I would only have one role. Every user in my system will have the 'user' role and the user role will be allowed to do anything to any entity and the only thing preventing that will be the logic in allow callbacks.
The value of virgen-acl in such a system is negligable, then. I could remove virgen-acl and just use the logic in my allow callbacks instead of acl.query() to determine whether or not a use has access to a resource.
And that's fair, too. If you think that in a system like mine, where any user could potentially be given access to any resource, that virgen-acl isn't the right choice then it totally makes sense to prevent virgen-acl from moving in the direction of supporting such a system.
It remains true, though, that using virgen-acl with the change in this PR allows me to simplify my app code and maintain a permissions structure that is easy to understand because of expressiveness in writing .allow() calls like .allow('comment-editor', 'comment', ['view', 'edit']);
I'll just maintain a fork then for my purposes and stop harassing you about this. Thanks for getting back to me on this, and really, I like this library quite a lot.

authors: djvirgen spruce-bruce

repo: djvirgen/virgen-acl


text:
UTF-8 characters problem

Hi,
I am trying to create a document with a UTF-8 string for property cmis:title (e.g., 新商品情報).
If I set that property when I create the document through $session->createDocument($properties, ...) then the uploaded file has a completely wrong title (some non-printable chars).
Instead, if I first create the document with no properties and then perform an update through $document->updateProperties(...) everything is ok.
Is this problem related to your (or any underlying) library?
Here I attach 2 screenshots:

What happens when I create the document with the UTF-8 title property

What happens when I create the document with no title and then update it

We will check.

This is mostly a note for myself: there could very well be a difference between the request generated from the two methods - some methods were refactored a while back to use POST method to limit the URL length for some of the larger requests. It could be a problem we introduced with that - or it could be that the request parameters are decoded differently when using GET/POST respectively.
In any case, we definitely need to check that our outgoing requests are the same from both methods!

authors: NamelessCoder della-90 ksjogo

repo: dkd/php-cmis-client


text:
Original BittBoy

I couldn't get it to work on my BittBoy 3.5.  It's not PocketGo, it's the original BittBoy.  I downloaded the files and extracted them into the gmenu2x/skins folder (I didn't find a folder with the name you put in the instructions, so I tried the folder that seemed most obvious to me).  I went to the console configuration menu and chose the option, but nothing happens, it assumes the default theme.  Sure it works on the original BittBoy?  I'm using the newest Triforce X firmware, CFW 1.3.3.

This is a theme for SimpleMenu (as stated on the main page), which means, you'll need SimpleMenu for it to work 😉 Please refer to that repository for installation instructions.

authors: dkodr lucianogardim

repo: dkodr/SimUI


text:
Miscellaneous minor changes

I'd like to suggest a few changes that I think fix some bugs, but rather than open up a new issue for each one I'm creating a pull request combining them.

GNU grep, without recursive flag, and using Track Extension
With this configuration, the command line created is of the form
grep --include= ... --exclude= ... "<pattern>" /directory/of/file
GNU grep ignores the directory passed on the command line because the --recursive flag is not set.
To fix this I made the command line of the form
grep --include= ... --exclude= ... "<pattern>" /directory/of/file/*
which appears to work.

ag case-sensitive flag
On my machine, ag uses --smart-case by default so your casesensitivity_ag test was failing.
I added in the relevant flag to the corresponding RegisterGrepProgram call and the test seems to work now.

I run Linux, so the tests were failing from mismatched path-separators in the *.ok files, I added some calls to sed in test.sh to change the separators before running the test and put them back after.
Because this relies on the GNU specific '-i' flag, I only call that when running Linux, and not e.g. Solaris.
This workaround isn't nice, but it should work for now.

In order to pass some "simpleregex" testcases on my machine, I changed the opt_str_patternpostfix and opt_str_patternprefix values of some grep program arguments.
I switched them from    " to ' , which meant the backslash in the regex's aren't expanded before being passed to the command.
I'm a little wary of this change (as I always am when dealing with shell-escaping) -- I have the feeling you had it that way for a reason, and that maybe I'm fixing the test cases on my machine but breaking them somewhere else, or breaking something else somewhere.

I added some tests to pick up the Track Extension problem I first noticed.
Currently ag is failing these tests, and I believe the reason is twofold.
The first is to do with the --file-search-regex option -- I don't think you can use that multiple times.
This is justified by the fact that
ag --nogroup --nocolor --column -s  --file-search-regex="(\.m4|\.ac|\.in|\.am|\.mk|\.mak|\.dsp)"  --ignore=".svn" --ignore=".git" --ignore=".hg" 'a' ~/.vim/bundle/easygrep/tests
works, while
ag --nogroup --nocolor --column -s  --file-search-regex="\.m4" --file-search-regex="\.ac" --file-search-regex="\.in" --file-search-regex="\.am" --file-search-regex="\.mk" --file-search-regex="\.mak" --file-search-regex="\.dsp"  --ignore=".svn" --ignore=".git" --ignore=".hg" 'a' ~/.vim/bundle/easygrep/tests
doesn't.

This I believe requires something like the patch
diff --git a/plugin/EasyGrep.vim b/plugin/EasyGrep.vim
index 9fa3fe1..d62c3f3 100755
--- a/plugin/EasyGrep.vim
+++ b/plugin/EasyGrep.vim
@@ -2436,7 +2436,10 @@ function! s:ConfigureGrepCommandParameters()
                 \ 'opt_bool_isinherentlyrecursive': '1',
                 \ 'opt_bool_isselffiltering': '0',
                 \ 'opt_bool_nofiletargets': '0',
-                \ 'opt_str_mapinclusionsexpression': '"--file-search-regex=\"" .substitute(v:val, "^\\*\\.", "\\\\.", "")."\""',
+                \ 'opt_str_mapinclusionsexpression': 'substitute(v:val, "^\\*\\.", "\\\\.", "")',
+                \ 'opt_str_mapinclusionsexpressionseparator': '|',
+                \ 'opt_str_mapinclusionsprefix': '--file-search-regex="(',
+                \ 'opt_str_mapinclusionspostfix': ')"',
                 \ 'opt_str_hiddenswitch': '--hidden',
                 \ })

Unfortunately I get errors like
/bin/bash: -c: line 0: unexpected EOF while looking for matching `"'
with this, which is why it's not in my suggested changesets.
The second I didn't manage to fix at all -- the inclusion file regex includes '*[mM]akefile', which "ag" complains about.
Also I didn't manage to find the 'pt' program, so in order to maintain symmetry I added a test for it but left the expected output as "Unknown"
I should note I'm breaking a rule I have to always sleep on a changeset before pushing, but I expect any problems are more likely to be shaken out by testing on other machines rather than me thinking it through.
Hence this is less of a "please put these changesets into your repo" and more of a "please consider these changes" request, with the assumption that there are problems in here that you may see easier than I.
Cheers

Hi! I wanted to write in a quick comment to say I really appreciate this contribution. I'll be slow to review it though because my wife just had a baby and everything else has been put to the backburner =)

Congratulations!!
and yeah, I think you've got your priorities in the right order :)

authors: dkprice hardenedapple

repo: dkprice/vim-easygrep

license: unlicense


text:
Sweble libraries are massively outdated

This uses 1.1.0, current version is 3.1.6

I've been working on the upgrades here https://github.com/tgalery/dkpro-jwpl/tree/sweble . It's currently compiling with all tests passing, but I want to create a class that loads specific language configs instead of the default english one.

I experience issues with this old version on certain (modern) Wikipedia pages. See stacktrace below:
Caused by: de.tudarmstadt.ukp.wikipedia.api.exception.WikiApiException: org.sweble.wikitext.engine.CompilerException: Parsing failed!
    at de.tudarmstadt.ukp.wikipedia.api.Page.getCompiledPage(Page.java:632)
    at de.tudarmstadt.ukp.wikipedia.api.Page.parsePage(Page.java:609)
    at de.tudarmstadt.ukp.wikipedia.api.Page.getPlainText(Page.java:590)
    at de.hshn.mi.tulum.graph.wikigraph.service.domain.impl.JWPLPageImpl.getPlainText(JWPLPageImpl.java:92)
    ... 11 more
Caused by: org.sweble.wikitext.engine.CompilerException: Parsing failed!
    at org.sweble.wikitext.engine.Compiler.parse(Compiler.java:684)
    at org.sweble.wikitext.engine.Compiler.postprocess(Compiler.java:290)
    at de.tudarmstadt.ukp.wikipedia.api.Page.getCompiledPage(Page.java:630)
    ... 14 more
Caused by: ParserShouldNotBeHereException: Schamane:220:3: <!> "[[Datei:Map-icon"
    at org.sweble.wikitext.lazy.parser.LazyRatsParser.throwShouldNotBeHereException(LazyRatsParser.java:18460)
    at org.sweble.wikitext.lazy.parser.LazyRatsParser.pThrowShouldNotBeHereException(LazyRatsParser.java:12783)
    at org.sweble.wikitext.lazy.parser.LazyRatsParser.pShouldNotBeHere(LazyRatsParser.java:12746)
    at org.sweble.wikitext.lazy.parser.LazyRatsParser.p$$Shared11(LazyRatsParser.java:7702)
    at org.sweble.wikitext.lazy.parser.LazyRatsParser.pTableBlockCell(LazyRatsParser.java:8381)
    at org.sweble.wikitext.lazy.parser.LazyRatsParser.pTableCellTransient(LazyRatsParser.java:8146)
    at org.sweble.wikitext.lazy.parser.LazyRatsParser.pTableCellMemoized$1(LazyRatsParser.java:8067)
    at org.sweble.wikitext.lazy.parser.LazyRatsParser.pTableCellMemoized(LazyRatsParser.java:8053)
    at org.sweble.wikitext.lazy.parser.LazyRatsParser.pTableCell(LazyRatsParser.java:8018)
    at org.sweble.wikitext.lazy.parser.LazyRatsParser.pTableRowElement(LazyRatsParser.java:9510)
    at org.sweble.wikitext.lazy.parser.LazyRatsParser.pTableRowContentStar(LazyRatsParser.java:9451)
    at org.sweble.wikitext.lazy.parser.LazyRatsParser.pTableRowBody(LazyRatsParser.java:9365)
    at org.sweble.wikitext.lazy.parser.LazyRatsParser.pTableRowTransient(LazyRatsParser.java:9303)
    at org.sweble.wikitext.lazy.parser.LazyRatsParser.pTableRowMemoized$1(LazyRatsParser.java:9247)
    at org.sweble.wikitext.lazy.parser.LazyRatsParser.pTableRowMemoized(LazyRatsParser.java:9233)
    at org.sweble.wikitext.lazy.parser.LazyRatsParser.pTableRow(LazyRatsParser.java:9198)
    at org.sweble.wikitext.lazy.parser.LazyRatsParser.pTableElement(LazyRatsParser.java:6975)
    at org.sweble.wikitext.lazy.parser.LazyRatsParser.pTableContentStar(LazyRatsParser.java:6907)
    at org.sweble.wikitext.lazy.parser.LazyRatsParser.pTableBody(LazyRatsParser.java:6717)
    at org.sweble.wikitext.lazy.parser.LazyRatsParser.pTableTransient(LazyRatsParser.java:6667)
    at org.sweble.wikitext.lazy.parser.LazyRatsParser.pTableMemoized$1(LazyRatsParser.java:6632)
    at org.sweble.wikitext.lazy.parser.LazyRatsParser.pTableMemoized(LazyRatsParser.java:6618)
    at org.sweble.wikitext.lazy.parser.LazyRatsParser.pTable(LazyRatsParser.java:6584)
    at org.sweble.wikitext.lazy.parser.LazyRatsParser.pLineStartProd(LazyRatsParser.java:642)
    at org.sweble.wikitext.lazy.parser.LazyRatsParser.pParagraphStopper(LazyRatsParser.java:985)
    at org.sweble.wikitext.lazy.parser.LazyRatsParser.pInlineTextBlockMore(LazyRatsParser.java:1593)
    at org.sweble.wikitext.lazy.parser.LazyRatsParser.pInlineTextBlock(LazyRatsParser.java:1504)
    at org.sweble.wikitext.lazy.parser.LazyRatsParser.pInlineBlockContent(LazyRatsParser.java:1376)
    at org.sweble.wikitext.lazy.parser.LazyRatsParser.pLinkTitle(LazyRatsParser.java:4695)
    at org.sweble.wikitext.lazy.parser.LazyRatsParser.pOptionsAndTitle(LazyRatsParser.java:3842)
    at org.sweble.wikitext.lazy.parser.LazyRatsParser.pInternalLinkChoice(LazyRatsParser.java:3601)
    at org.sweble.wikitext.lazy.parser.LazyRatsParser.pInternalLinkTransient(LazyRatsParser.java:3530)
    at org.sweble.wikitext.lazy.parser.LazyRatsParser.pInternalLinkMemoized$1(LazyRatsParser.java:3476)
    at org.sweble.wikitext.lazy.parser.LazyRatsParser.pInternalLinkMemoized(LazyRatsParser.java:3460)
    at org.sweble.wikitext.lazy.parser.LazyRatsParser.pInternalLink(LazyRatsParser.java:3425)
    at org.sweble.wikitext.lazy.parser.LazyRatsParser.pInlineContentAtom(LazyRatsParser.java:1932)
    at org.sweble.wikitext.lazy.parser.LazyRatsParser.pInlineContentChoice(LazyRatsParser.java:1856)
    at org.sweble.wikitext.lazy.parser.LazyRatsParser.pInlineContentPlus(LazyRatsParser.java:1701)
    at org.sweble.wikitext.lazy.parser.LazyRatsParser.pParagraphText(LazyRatsParser.java:1182)
    at org.sweble.wikitext.lazy.parser.LazyRatsParser.pParagraphTransient(LazyRatsParser.java:879)
    at org.sweble.wikitext.lazy.parser.LazyRatsParser.pParagraphMemoized$1(LazyRatsParser.java:826)
    at org.sweble.wikitext.lazy.parser.LazyRatsParser.pParagraphMemoized(LazyRatsParser.java:812)
    at org.sweble.wikitext.lazy.parser.LazyRatsParser.pParagraph(LazyRatsParser.java:777)
    at org.sweble.wikitext.lazy.parser.LazyRatsParser.pBlock(LazyRatsParser.java:531)
    at org.sweble.wikitext.lazy.parser.LazyRatsParser.pBlockContent(LazyRatsParser.java:462)
    at org.sweble.wikitext.lazy.parser.LazyRatsParser.pSectionContentStar(LazyRatsParser.java:5588)
    at org.sweble.wikitext.lazy.parser.LazyRatsParser.pSection(LazyRatsParser.java:5309)
    at org.sweble.wikitext.lazy.parser.LazyRatsParser.pSectionsTransient(LazyRatsParser.java:5240)
    at org.sweble.wikitext.lazy.parser.LazyRatsParser.pSectionsMemoized$1(LazyRatsParser.java:5193)
    at org.sweble.wikitext.lazy.parser.LazyRatsParser.pSectionsMemoized(LazyRatsParser.java:5179)
    at org.sweble.wikitext.lazy.parser.LazyRatsParser.pSections(LazyRatsParser.java:5144)
    at org.sweble.wikitext.lazy.parser.LazyRatsParser.pLineStartProd(LazyRatsParser.java:744)
    at org.sweble.wikitext.lazy.parser.LazyRatsParser.pParagraphStopper(LazyRatsParser.java:985)
    at org.sweble.wikitext.lazy.parser.LazyRatsParser.p$$Shared1(LazyRatsParser.java:1129)
    at org.sweble.wikitext.lazy.parser.LazyRatsParser.pPostParaWs(LazyRatsParser.java:1311)
    at org.sweble.wikitext.lazy.parser.LazyRatsParser.pParagraphTransient(LazyRatsParser.java:937)
    at org.sweble.wikitext.lazy.parser.LazyRatsParser.pParagraphMemoized$1(LazyRatsParser.java:826)
    at org.sweble.wikitext.lazy.parser.LazyRatsParser.pParagraphMemoized(LazyRatsParser.java:812)
    at org.sweble.wikitext.lazy.parser.LazyRatsParser.pParagraph(LazyRatsParser.java:777)
    at org.sweble.wikitext.lazy.parser.LazyRatsParser.pBlock(LazyRatsParser.java:531)
    at org.sweble.wikitext.lazy.parser.LazyRatsParser.pBolBlockContent(LazyRatsParser.java:412)
    at org.sweble.wikitext.lazy.parser.LazyRatsParser.pArticle(LazyRatsParser.java:168)
    at org.sweble.wikitext.lazy.LazyParser.parseArticle(LazyParser.java:76)
    at org.sweble.wikitext.engine.Compiler.parse(Compiler.java:661)
    ... 16 more

Related to (closed & duplicate issue) https://github.com/dkpro/dkpro-jwpl/issues/156

repo: dkpro/dkpro-jwpl


text:
[REG 2.073.2] double print to stdout when reading stdin in another thread

gassa (@GassaFM) reported this on 2017-08-31T13:40:19Z
Transfered from https://issues.dlang.org/show_bug.cgi?id=17797
CC List

ag0aep6g
bugzilla (@WalterBright)
code (@MartinNowak)
r.sagitario

Description
Consider the following program:

-----
import std.stdio, core.thread;

void main(){
	auto thread = new Thread(&func).start;
        writeln("Output");
	writeln("Output2");
	writeln("Output3");
	while(true){}
}

void func(){
    foreach(line; stdin.byLineCopy){}
}
-----

The correct output is:
-----
Output
Output2
Output3
-----

This starts a thread to read from stdin, and then writes several lines to stdout in the main thread and enters and infinite loop.

When compiled with dmd 2.073.1 or earlier, everything is fine.
Starting from dmd 2.073.2, the output is unstable but usually not correct.
Locally, I usually observe the following output:

-----
Output
Output2
Output3
Output2
-----

Or sometimes:

-----
Output
Output2
Output2
Output3
-----

Here are the steps to reproduce, tested on 64-bit Windows with a 32-bit compiler.

1. Use dmd 2.073.2 or later.
2. Compile like "dmd program.d" (compiler switches don't seem to matter).
3. Run a command prompt, like "cmd.exe".
4. Execute "program.exe" (importantly, without any I/O redirection).

Original thread at D.Learn:
https://forum.dlang.org/post/ozbhjgvqmurphkeosrpf@forum.dlang.org

bugzilla (@WalterBright) commented on 2017-10-03T08:39:15Z
It happens on Win32 as well, which uses the DMC runtime library, not Microsoft's. So it is not specific to the Microsoft runtime library.

I suspect it is a Phobos problem, not a compiler issue, and changed the category accordingly.

r.sagitario commented on 2017-10-10T07:03:15Z
I could verify it happens with 2.073.2, but not 2.073.1. This is caused by an updated snn.lib. Might be introduced by the fix for issue 13727.

ag0aep6g commented on 2017-10-03T09:16:11Z
(In reply to Walter Bright from comment #1)
> It happens on Win32 as well, which uses the DMC runtime library, not
> Microsoft's. So it is not specific to the Microsoft runtime library.

It *only* happens with the DMC runtime. People are running 64-bit Windows, but they're not using 64-bit dmd. I just tested in a virtual machine with -m32mscoff and didn't see duplicated lines.

code (@MartinNowak) commented on 2017-10-09T11:26:58Z
cat > bug.d << CODE
import std.stdio, core.thread;

void main()
{
    auto thread = new Thread(&func).start;
    writeln("Output");
    writeln("Output2");
    writeln("Output3");
    thread.join();
}

void func()
{
    foreach (line; stdin.byLineCopy)
    {
    }
}
CODE
dmd -run bug.d
----
Slightly nicer version that terminates on EOF (Ctrl+D), works as expected on linux.

Sure about 2.073.2? The only interesting change in

https://github.com/dlang/dmd/compare/v2.073.1...v2.073.2
https://github.com/dlang/druntime/compare/v2.073.1...v2.073.2
https://github.com/dlang/phobos/compare/v2.073.1...v2.073.2

is https://github.com/dlang/dmd/pull/6582.

repo: dlang/phobos


text:
Added FindGLM.cmake for packages that cannot use the CONAN_INCLUDE_DI…

…RS variable.
Hi!
I've been using your GLM package, which I found on conan.io. Thanks for creating it! I have added a FindGLM.cmake file, so that it can be used by projects that cannot use the CONAN_INCLUDE_DIRS variable. It works in my fork, so I thought you might be interested in this modification.

Thank you for your pull request. It is merged :)

Great :) Thanks a lot!


text:
Update with Rebase

Is your feature request related to a problem? Please describe.
At work, we use rebase on 80% of the repos, and I want to avoid as much as possible having those merge commits due to the Update feature.
Describe the solution you'd like
The possibility to use "Update with Rebase" that is already available in the GH CLI (here).
Describe alternatives you've considered
I started working on an implementation but I would like to have some feedback regarding what would be better:

Another keybinding: u does update with merge commit, U does update with rebase
A config (global? repo scoped?) to override the default behaviour of u
A prompt asking if you want to use merge or rebase (similar to lazygit when you do rebase)

I guess another option is to contribute to gh to add interactivity similar to how the approve and merge commands work.
But I'm also ok with adding a global config option to set a default.

authors: alcpereira dlvhdr

repo: dlvhdr/gh-dash


text:
Why does component rerender break this?

I have no idea what could be causing this, I have fought with this for hours and I'm losing my mind.
At the top of my component you will notice:
@blur="onBlur"
:valid="meta.valid"
:touched="meta.touched"
:error="errorMessage"

The 3 props come from veeValidate, and the onBlur calls a vee method which updates those props (the meta object)
Whenever this gets updated, the entire component breaks and resets the input, presumably because the component is rerendering.
I made a sandbox. you will notice it adds $5000 automatically after 1 second. once that occurs, click in the box and immediately click out of it without typing and you will see the entire input clear.
https://codesandbox.io/s/jolly-cloud-4yysns?file=/src/components/AppInput.vue

It looks like maybe its breaking because the component re-renders...  specifically this div wrapping the input:
  <div class="input-control" :class="{ 'input-error': showError }">

Is it that somehow the ref is getting lost or something when the component updates? How else can I preserve the ref?

Hi, the problem is not caused by the template ref. It's because the value of your FormInput component is not bound to the masked value via v-model.
I updated your CodeSandbox and now it works:
https://codesandbox.io/s/xenodochial-leftpad-fuc8lw?file=/src/components/FormInput.vue
Hope this helps 😉

Hmm interesting, I was going to do that but I noticed if modelValue was set as a prop, but was NOT bound using v-bind it would still somehow change the value, as if it were doing it implicitly or something.
Thanks!

@dm4t2 so this is just a side question... can you explain how it works fine without those extra attributes? That was ultimately what was confusing, and caused me to not add v-model.

adding a props key to the script with modelValue, but NOT adding any bindings in the actual template... it actually was affecting the value of the input. This lead me to believe there was some magic going on where it was automatically binding with modelValue or something, or vue was implicitly putting it on the input even though I never said :model-value or v-model

if you remove the :error, :valid, :touched keys (and leave v-model off) it works fine. https://codesandbox.io/s/jolly-cloud-4yysns?file=/src/components/FormInput.vue:57-69

It works well, I was just curious what is vue/this library doing to cause this behavior.

This is not caused by my library, it only writes the formatted input value. When used on a custom Vue input component that manages the value state on its own (v-model), then the state must be synced. Otherwise, it gets overridden or cleared on external changes.


text:
Rewrite network resource ip section (replace addresses with address list)

The current network resource schema prevents for some libvirt combinations to be declared. Given that most people using this resource are using it for testing, and they are indeed declaring some complex networks, the idea is to have a schema more close to the libvirt one eg. have a proper ip block with dhcp per address, mimicking the libvirt structure.
Plan

Release it as resource_network_v2 ?
Probably just follow libvirt as close as possible, but keep some sane defaults. Autodetecting network families comes to my mind

Related issues

Allow defining DHCP ranges https://github.com/dmacvicar/terraform-provider-libvirt/issues/794

I compiled the network_v2 branch and tried this out. I was able to define a DHCP range and then reserve an IP address outside of that range. My VM booted and got the IP address that I wanted. This all behaved like I would have expected.

authors: dmacvicar tsweets

repo: dmacvicar/terraform-provider-libvirt


text:
Creating vm with UEFI secure boot fails - unable to find any master var store for loader

System Information
Linux distribution
Fedora 36
Terraform version
Terraform v1.3.3 on linux_amd64

Provider and libvirt versions
terraform-provider-libvirt 0.7.0

Checklist

[ ] Is your issue/contribution related with enabling some setting/option exposed by libvirt that the plugin does not yet support, or requires changing/extending the provider terraform schema?

[ ] Make sure you explain why this option is important to you, why it should be important to everyone. Describe your use-case with detail and provide examples where possible.
[ ] If it is a very special case, consider using the XSLT support in the provider to tweak the definition instead of opening an issue
[ ] Maintainers do not have expertise in every libvirt setting, so please, describe the feature and how it is used. Link to the appropriate documentation

[x] Is it a bug or something that does not work as expected? Please make sure you fill the version information below:

Description of Issue/Question
When creating a simple vm with UEFI loader the following error occurs:
Error: error creating libvirt domain: Operation failed: unable to find any master var store for loader: /usr/share/edk2/ovmf/OVMF_CODE.secboot.fd

Setup
# main.tf
terraform {
  required_providers {
    libvirt = {
      source = "dmacvicar/libvirt"
    }
  }
}

provider "libvirt" {
  uri = "qemu:///system"
}

resource "libvirt_network" "test_network" {
    name = "test-network"
    mode = "nat"
    addresses = ["192.168.249.0/24"]
}

resource "libvirt_volume" "kernel_fedora" {
  source = "https://ftp.fau.de/fedora/linux/releases/36/Everything/x86_64/os/isolinux/vmlinuz"
  name   = "kernel-fedora"
  pool   = "default"
  format = "raw"
}

resource "libvirt_domain" "test_fedora" {
  name   = "test-fedora"
  memory = "8192"
  vcpu   = 4
  firmware = "/usr/share/edk2/ovmf/OVMF_CODE.secboot.fd"

  kernel = libvirt_volume.kernel_fedora.id

  qemu_agent = true

  console {
    type        = "pty"
    target_port = "0"
    target_type = "serial"
  }

  console {
    type        = "pty"
    target_type = "virtio"
    target_port = "1"
  }

  graphics {
    type        = "spice"
    listen_type = "address"
    autoport    = true
  }
}

Steps to Reproduce Issue
Shortened configuration of /etc/libvirt/qemu.conf, just added nvram config after first getting the error, the rest of the file is system default:
# Location of master nvram file
#
# This configuration option is obsolete. Libvirt will follow the
# QEMU firmware metadata specification to automatically locate
# firmware images. See docs/interop/firmware.json in the QEMU
# source tree. These metadata files are distributed alongside any
# firmware images intended for use with QEMU.
#
# NOTE: if ANY firmware metadata files are detected, this setting
# will be COMPLETELY IGNORED.
#
# ------------------------------------------
#
# When a domain is configured to use UEFI instead of standard
# BIOS it may use a separate storage for UEFI variables. If
# that's the case libvirt creates the variable store per domain
# using this master file as image. Each UEFI firmware can,
# however, have different variables store. Therefore the nvram is
# a list of strings when a single item is in form of:
#   ${PATH_TO_UEFI_FW}:${PATH_TO_UEFI_VARS}.
# Later, when libvirt creates per domain variable store, this list is
# searched for the master image. The UEFI firmware can be called
# differently for different guest architectures. For instance, it's OVMF
# for x86_64 and i686, but it's AAVMF for aarch64. The libvirt default
# follows this scheme.
#nvram = [
#   "/usr/share/OVMF/OVMF_CODE.fd:/usr/share/OVMF/OVMF_VARS.fd",
#   "/usr/share/OVMF/OVMF_CODE.secboot.fd:/usr/share/OVMF/OVMF_VARS.fd",
#   "/usr/share/AAVMF/AAVMF_CODE.fd:/usr/share/AAVMF/AAVMF_VARS.fd",
#   "/usr/share/AAVMF/AAVMF32_CODE.fd:/usr/share/AAVMF/AAVMF32_VARS.fd"
#]

nvram = [
    "/usr/share/edk2/ovmf/OVMF_CODE.fd:/usr/share/edk2/ovmf/OVMF_VARS.fd",
    "/usr/share/edk2/ovmf/OVMF_CODE.secboot.fd:/usr/share/edk2/ovmf/OVMF_VARS.secboot.fd"
]

terraform apply

Additional information:
SELinux is enforcing. Otherwise nothing special.
Same error with SELinux in permissive mode.

Ran into this same issue. I'm curious why it was closed "not planned"?

authors: bhundven jomrr


text:
Offline Maps

Just want to first thank you for putting this together. It works great! I have a request from our client to use offline maps in certain areas, is this something that can be accomplished with this package?
Thanks again!!

I don't think either of the native SDK's (Google Maps for Android and Apple Maps for iOS) have offline capability out-of-the-box - which is what this package used. I believe some of the 3rd party SDKs like MapBox allow for you to configure offline maps.

authors: dmariogatto slatlas


text:
rabbir_bot_01 第一次确定结构

新增
main.py
config_loader.py
bot.config

rabbir_bot_01 第一次确定结构

sorry i do pull to the wrong repository 😰

repo: dmarket/dm-trading-tools


text:
Old world fails to load, shows a black screen

Older world fails to load.  Only has a black screen.  I think another GM had this problem awhile back.  I was able to load the world with FoundryVTT v11, make some fixes for v12.  Will have to do a bit of research.  This is my City of Heroes world.

foundry-esm.js:13126 Uncaught (in promise) TypeError: Cannot read properties of undefined (reading '_getField')
at #applyDefaultTokenSettings (foundry-esm.js:13126:42)
at PrototypeToken.defineSchema (foundry-esm.js:13084:48)
at new EmbeddedDataField (foundry-esm.js:8745:28)
at BaseActor.defineSchema (foundry-esm.js:13268:25)
at get schema (foundry-esm.js:11009:59)
at Localization.localizeDataModel (foundry.js:7485:40)
at #localizeDataModels (foundry.js:7496:20)
at Localization.initialize (foundry.js:7428:37)
at async Game.initialize (foundry.js:8985:5)

https://discord.com/channels/609528652878839828/770825017729482772/1269813192528236654

I remember now.  Issue was with bar3 in the game.settings.get("core", DefaultTokenConfig.SETTING)

Add code to v11 to remove "bar3", so it won't cause issues when worlds migrated to v12.


text:
RowDataSnapshot to RowData Adaper

In some cases it's convenient to create RowData based on a RowDataSnapshot, like when doing Assert operations based on old row data. Ideally we can provide the columns to adapt (a Projection might be the right type for that).
Usage could be like this:
new Assert(row, SnapshotData(new MultiProjection("version", "xyz"), row.values));

This would assert the "version" and "xyz" values have not changed.

done, #190

repo: dmfs/ContentPal


text:
Ionic Beta Push support

Hi,
Do you plan to support the Ionic Push Beta (the new version of the platform Ionic push http://docs.ionic.io/v2.0.0-beta/docs/push-sending-push ) now that the alpha is closed (and the alpha ionic endpoint is closed too).
Thank you in advance !

Hi @eweap unfortunately the main project doesn't use this package. (We've migrated to SNS)
Please feel free to improve the package if you wish.

Hi @dmitrovskiy and @eweap,
I send the pull request with new integration. It tested.

Thanks a lot @argentinaluiz , I will give it a try soon !

Merged. Thanks @argentinaluiz !

authors: argentinaluiz dmitrovskiy eweap

repo: dmitrovskiy/ionic-push-php


text:
Memory error when iterating over HDF5 file

I have training data saved in an HDF5 file of a few GB. The size is too big to fit into a numpy array in memory, so I wrote a DataIter class that takes h5py Dataset object and getdata method just returns a slice of it based on batch size. It is almost the same as how NDArrayIter works, except that it doesn't load the entire data into memory upfront.
When I pass this iterator to model.fit and run training with it, the memory consumption continuously grows until I get the memory error. I was suspecting some other objects are holding referencess to the Databatches and preventing them from garbage collected, but is not clear to me what those could be. I also tested my DataIter outside of training by just iterating over the entire Dataset, for which I don't see uncontrolled memory growth. Any suggestions no where I should check more closely?
Or I would appreciate any suggestions on alternative approach to work with large HDF5 dataset.

Have you tested random iteration over the whole HDF5 file?

Yes, I tested both with and without random shuffle and the result is the same.

I did some further tests and got very puzzled by the results. It turns out that this has nothing to do with hdf5 file at all, but the memory problem only occurs for deeper networks. I tried to strip the part of training code that is relevant to this problem to reproduce, and here is what I've got:

import logging
import mxnet as mx
import numpy
import win32process
from   mxnet.executor_manager import _bind_exec
from   mxnet.ndarray import array

def get_symbol( nDepth = 3):
    data        = mx.symbol.Variable( 'data', shape = ( 40, 28, 28 ) )
    for i in xrange( nDepth - 1 ):
        data    = mx.symbol.Convolution( data = data, kernel = ( 3, 3 ), pad = ( 2, 2 ),
                                         num_filter = 128 )
        data    = mx.symbol.Activation( data = data, act_type = 'relu' )
    collapsed   = mx.symbol.Convolution( data = data, kernel = ( 1, 1 ), num_filter = 1 )
    flatten     = mx.symbol.Flatten( data = collapsed )
    softmax     = mx.symbol.SoftmaxOutput( data = flatten, name = 'softmax' )
    return softmax

def run():
    batch_size  = 32
    nPlane      = 40
    nDepth      = 4
    #nDepth      = 3
    width       = 28
    height      = 28
    symbol      = get_symbol( nDepth )

    param_names = [ name for name in symbol.list_arguments() if name not in [ 'data', 'softmax_label' ] ]
    data_shapes = { 'data'          : (batch_size, nPlane, width, height),
                    'softmax_label' : (batch_size,)}
    train_exec  = _bind_exec( symbol, mx.cpu(), data_shapes, param_names,
                             need_grad=True, base_exec=None,
                             shared_data_arrays={})

    logging.getLogger().setLevel( logging.INFO )
    for i in xrange( 200 ):
        data_source     = array( numpy.random.binomial(1,0.5, batch_size * nPlane * width * height ).reshape( batch_size, nPlane, width, height ) )
        label_source    = array( numpy.random.choice( width * height, batch_size ) )
        data_source.copyto( train_exec.arg_dict[ 'data' ] )
        label_source.copyto( train_exec.arg_dict[ 'softmax_label' ] )
        train_exec.forward(is_train=True)
        memUsed         = float( win32process.GetProcessMemoryInfo(-1)[ 'PagefileUsage' ] ) / ( 1024. * 1024. )
        logging.info( 'Memory used: %s MB' % memUsed )

if __name__ == '__main__':
    run()

When I run the above code, I see uncontrolled memory consumption growth. However, if I change the number of convolutional layers nDepth to 3, everything is ok. What am I missing here? Is there anything wrong with the way my symbol is generated?

I've run the code and I can confirm that the memory keeps increasing. Also, no such problem if I bind the executor in GPU. It seems that data_source and label_source haven't deallocated automatically. @piiswrong @tqchen

could due to the async loop. Try to add train_exec.output[0].wait_to_read() or add a copyto to copy data out

Thanks, I will test that tonight when I get hold of my pc. However, if the problem is due to async loop, why does it take unlimited memory? E.g., for a longer loop this script will run out of memory, like the one in my training case. Also I still need the async loop for the benefit of parallelization.

Indeed, the memory problem goes away by waiting for each minibatch to finish. Any recommended way to balance data feeding and network evaluation from training api?

authors: guileryu01 sxjscience tqchen

repo: dmlc/mxnet


text:
[R, Windows] Two demos of mxnet have Errors

I just installed the windows version of mxnet. Platform: x86_64-w64-mingw32/x64 (64-bit)
I tried demos. Two demos are not available as follows:

demo(basic_executor,package="mxnet")

require(mxnet)
A = mx.symbol.Variable('A')
B = mx.symbol.Variable('B')
C = A + B
a = mx.nd.zeros(c(2), mx.cpu())
b = mx.nd.array(as.array(c(1, 2)), mx.cpu())
exec = mx.symbol.bind(
symbol=C,
ctx=mx.cpu(),
arg.arrays = list(A=a, B=b),
aux.arrays = list(),
grad.reqs = list(FALSE, FALSE))

Error in eval(expr, envir, enclos) :
could not find function "mx.symbol.bind"

Another demo is:

demo(basic_model,package="mxnet")
require(mxnet)
batch.size <- 100
data <- mx.symbol.Variable("data")
fc1 <- mx.symbol.FullyConnected(data, name="fc1", num_hidden=128)

act1 <- mx.symbol.Activation(fc1, name="relu1", act_type="relu")

fc2 <- mx.symbol.FullyConnected(act1, name = "fc2", num_hidden = 64)

act2 <- mx.symbol.Activation(fc2, name="relu2", act_type="relu")

fc3 <- mx.symbol.FullyConnected(act2, name="fc3", num_hidden=10)

softmax <- mx.symbol.Softmax(fc3, name = "sm")

dtrain = mx.io.MNISTIter(
image="data/train-images-idx3-ubyte",
label="data/train-labels-idx1-ubyte",
data.shape=c(784),
batch.size=batch.size,
shuffle=TRUE,
flat=TRUE,
silent=0,
seed=10)

[13:43:14] d:\chhong\mxnet\src\operator./softmax_output-inl.h:187: Softmax symbol is renamed to SoftmaxOutput. This API will be deprecated in Dec, 2015
[13:43:14] D:\chhong\mxnet\dmlc-core\include\dmlc/logging.h:208: [13:43:14] D:\chhong\mxnet\dmlc-core\src\io\local_filesys.cc:149: Check failed: allow_null  LocalFileSystem: fail to open "data/train-images-idx3-ubyte"
Error in eval(expr, envir, enclos) :
[13:43:14] D:\chhong\mxnet\dmlc-core\src\io\local_filesys.cc:149: Check failed: allow_null  LocalFileSystem: fail to open "data/train-images-idx3-ubyte"

The binary package is from a Japanese friend: https://github.com/datasciesotist/files

authors: fengfengyuyu thirdwing


text:
how to use input as attr in frontend?

As onnx reshape op's specification changed, shape will not be an attr no longer.
So I want to do such following things:
def _reshape():
    def _impl(inputs, attr, params):
        return _sym.reshape(inputs[0], shape=inputs[1])
    return _impl

But raised nnvm._base.NNVMError: Required parameter shape of tuple of <> is not presented, in operator reshape(name="").
So the question is as title.

I've found a way to get shape from inputs: graph_util.infer_shape(_graph.create(inputs[1]))[1][0].
But there should be a better way I think.

inputs should also in params.
So I got value by following:
params[inputs[1].list_output_names()[0]].asnumpy())

I am facing a situation that shape is a tensor an not in params.
So, the problem comes again. Is there anyway to get Symbol's value?

repo: dmlc/nnvm


text:
Fix Windows build

uint -> uint32_t to match the type of ndim
removing Bind() in expr_functor.h since it appears to be a duplicate of the same function in pass.h. It is better to only keep one declaration. However, they do have different doc strings. Therefore, I think it would be great if one of the authors can confirm and suggest how the doc strings should be merged.

@ritsu1228 the one in expr_functor.h is the correct one, however imo it should be in pass.h. Can you move the docstring to pass.h, and delete instead of uncomment?

@MarisaKirisame Thanks for confirming. Moved docstring to pass.h and removed the declaration in expr_functior.h.

Thanks, @ritsu1228 , this PR is now merged

authors: MarisaKirisame ritsu1228 tqchen

repo: dmlc/tvm


text:
New logo for XGBoost

Context: I made this logo after getting inspiration from this Twitter thread

repo: dmlc/xgboost


text:
Performance Issues with predict Call in XGBoost (v2.1.1)

Hello XGBoosters!
I was looking for the official forum (https://discuss.xgboost.ai/) to discuss this issue, but it seems the link is no longer working. Does anyone know if it's still active or if there's another community hub for discussions?
Now, to the issue:
I’m running a live simulation using an XGBoost model in Python. During the simulation, I call the following code to make predictions:
# Make prediction
prediction = model.predict(dmatrix)

After profiling, I found that this predict call takes ~400ms on average, which is significantly impacting the performance of my application. I’m using XGBoost v2.1.1.
My goal: I need to reduce the prediction time to around 30ms. A 10x speed-up is essential for my use case.
What I’ve considered so far:

Downgrading XGBoost: Some have reported that v1.7.6 is faster.
Using ONNX Runtime: Converting the model and running it with ONNX Runtime.
Switching to Another Language: Implementing predictions in languages like Go or C for better performance.
Caching Solutions: Investigating caching mechanisms for repeated predictions.

Here's a screenshot of the profiling results for reference:

How I can run 10x more fast this predict? like about 30ms? Some solutions I found but have not tried yet:

Change to old versions of XGBoost, V1.7.6 seens fast.
Use onnxruntime solution
Use another language like Go, C...
Some way to cache

Questions:
Has anyone else encountered similar performance issues with model.predict in XGBoost v2.1.1?
Are there specific settings or optimizations within XGBoost that could reduce prediction time?
Which of the options above would you recommend trying first? Or are there alternative solutions I haven’t considered?
Thanks in advance for any advice or insights!

Could you please extract a snippet of your inference code and the parameters used to train the model, along with data shape and sparsity?
This needs to be resolved case by case, for example, https://github.com/dmlc/xgboost/issues/10882 is caused by inspecting the pandas dataframe.
If you prefer a dedicated inference engine, you might want to try the FIL project (disclosure: I work for the same team as cuML).
cc @wphicks

authors: isslerman trivialfis


text:
Documentation for ‘score’ method missing for python package

https://discuss.xgboost.ai/t/documentation-for-score-method-missing-for-python-package/1965

That's weird, running help(xgb.XGBRegressor.score shows the document.


text:
Initialize PySpark API

To fix https://github.com/dmlc/xgboost/issues/7578

Let's have a design doc first.


text:
Global WorkQueue using the default Rucio Int url in production

Impact of the bug
Global WorkQueue
Describe the bug
If we start the Rucio client without explicitly passing the rucio url and auth url, it falls back to the rucio.cfg content, which is actually pointing to cmsrucio-int in the workqueue image.
This was accomplish using the deploy variants:
https://github.com/dmwm/deployment/blob/master/workqueue/deploy#L29-L47
which are actually no used in kubernetes, the deploy script is called only to create the image, which is unique and shared between different clusters.
I still do not know how this very same problem didn't happen in the last production deployment...
NOTE: the rucio.cfg file has been updated in the POD (not the image!) today and the service restarted at Tue Jun 15 14:45:31 CEST 2021. So workflows acquired between 2021-06-15 09:42:42,626 and 2021-06-15 14:45:54,086 are possibly broken (missing input blocks).
How to reproduce it
Pull the workqueue image and check /data/srv/current/config/workqueue/etc/rucio.cfg
Expected behavior
Given that it's somehow complicated to propagate the rucio url/auth all over the workqueue code, we have a few places where we rely on the default configuration defined in the rucio.cfg file. Thus, it's of paramount importance that the rucio.cfg file contains the correct content, according to where workqueue is running: dev, testbed, production.
Before the workqueue service itself starts running, we should make sure that the rucio.cfg file contains the right content. So we might look into a special tweak at the run.sh script in kubernetes, e.g.:
https://github.com/dmwm/CMSKubernetes/blob/master/docker/workqueue/run.sh
An alternative would be to make sure that we always pass the rucio url and auth url when creating an instance of the Rucio object, but it's much more invasive (much more reliable though...)
Additional context and error message
During the workqueue start up, we seem to be creating two instances of the Rucio object (probably different threads). The first instance is properly parametrized:
2021-06-15 09:42:42,629:INFO:Rucio:WMCore Rucio initialization parameters: {... 'rucio_host': 'http://cms-rucio.cern.ch', 'auth_host': 'https://cms-rucio...}

but the second instance relies on the rucio.cfg file (maybe from the PileupFetcher (?)):
2021-06-15 09:42:42,632:INFO:Rucio:WMCore Rucio initialization parameters: {... 'rucio_host': None, 'auth_host': None ...}

For the record, new image has been deployed to CMSWEB production around Tue Jun 15 22:00:50 CEST 2021.

I have put the service logs, a list of workflows and blocks that could have been affected under:
http://amaltaro.web.cern.ch/amaltaro/forWMCore/Issue_10600/
Logs are hard to understand though, workqueue tries to fetch the same blocks over and over, even when there are already workqueue elements created (I guess it's watching for new input blocks joining the input dataset).
I'm going to resume this investigation tomorrow, it could be that this issue has been in production for much longer, impact is still unknown.

After some further debugging, I believe there was no damage made to the workflows. The rucio calls that were failing were actually made for workflows already acquired by global workqueue, workflows in the status acquired or running-open, e.g.:
2021-06-13 23:56:02,532:INFO:WorkQueueReqMgrInterface:Contacting Request manager for more work
2021-06-13 23:56:02,810:INFO:WorkQueueReqMgrInterface:adding new element to open requests
2021-06-13 23:56:02,810:INFO:WorkQueueReqMgrInterface:Checking Request Manager for open requests and closing old ones
2021-06-13 23:56:03,077:INFO:WorkQueueReqMgrInterface:Processing request pdmvserv_task_EXO-RunIISummer16NanoAODv7-10648__v1_T_210610_000918_3940
2021-06-13 23:56:03,078:INFO:WorkQueue:addWork() checking "pdmvserv_task_EXO-RunIISummer16NanoAODv7-10648__v1_T_210610_000918_3940"
2021-06-13 23:56:03,167:INFO:WorkQueue:Splitting /pdmvserv_task_EXO-RunIISummer16NanoAODv7-10648__v1_T_210610_000918_3940/EXO-RunIISummer16NanoAODv7-10648_0 with policy Block params = {'ResubmitBlock': {'args': {}, 'name': 'ResubmitBlock'}, 'MonteCarlo': {'args': {}, 'name': 'MonteCarlo'}, 'Dataset': {'args': {}, 'name': 'Dataset'}, 'Block': {'args': {}, 'name': 'Block'}, 'DatasetBlock': {'args': {}, 'name': 'Block'}}
2021-06-13 23:56:03,453:ERROR:Rucio:Data identifier not found in Rucio: /ggTomonoH_aa_sinp0p35_tanb1p0_MXd10_MH3_200_MH4_200_TuneCP3_madgraph-pythia/RunIISummer16MiniAODv3-PUMoriond17_94X_mcRun2_asymptotic_v3-v1/MINIAODSIM#ee0567f5-25af-4fd0-ba17-5e03c70449b7. Error: Data identifier not found.

and here I stop debugging it.

repo: dmwm/WMCore