Fayetteville, NC Letter to Mayor

<EMAIL_ADDRESS>Dear Mayor Colvin,
My name is [NAME] and I am a resident of Fayetteville. I urge you and the rest of the city council to amend the proposed budget for 2021 in order to reallocate funding from the police to social services. I would like to redirect money away from the Fayetteville Police Department and into social service programs that will benefit the public health and our communities, especially communities of color. The proposed budget for 2021 proposes that 38% of the city’s operating budget go to policing ($60,550,000), which is almost double the cost of even the second largest allocation of funds, fire & emergency management ($30,260,000). Meanwhile, only 0.8% of the city's operating budget is being proposed for economic and community development ($1,300,000). This means the city of Fayetteville is spending 40x the amount of money police than they are on community development! This is unconscionable. Particularly, in this unprecedented time of the COVID-19 pandemic, with many of our community members facing unemployment and housing/food insecurity, it is vital that we reallocate funds to social and community services that will develop our communities and support our residents.
However, it is clear that the police cannot protect us from these challenges. In fact, more often than not, when police are dispensed, rather than more qualified medical, psychiatric, and social work professionals, the effect is to bring violence where none previously existed. Moreover, to paraphrase an existing council member, it is not cities with the most police, but the most resources, that are the safest. This means that crime usually happens when someone has been unable to meet their basic needs through other means. So, to really “fight crime,” we don’t need more police officers - we need more jobs, more educational opportunities, more arts programs, more community centers, more mental health resources, as well as more of a say in how our communities function and how they are funded. This will be a long transformational process, but an important first step is reallocating city funding!
Mayor Colvin, can I count on your to commit to an alternative budget that reallocates police funding to improve social services for our community members?
Thank you,
[YOUR NAME] [YOUR ADDRESS] [YOUR EMAIL] [YOUR PHONE NUMBER]

Thank you for submitting your city to defund12.org! Your request is now in the queue for review and publishing. We’ll reply here if we have any questions.

@mahrer please mark as duplicate of issue #240 & #1063.

@brickaney Those issues were closed because there was no content.

@mahrer Ah i see. Ok, Ive reviewed this letter.
Edits made: structural, added reference, minor content edits to adhere to email guidelines.
“TO<EMAIL_ADDRESS>Subject: [UNIQUE SUBJECT LINE]
Dear Mayor Colvin,
My name is [NAME] and I am a resident of Fayetteville. I am writing to urge you and the rest of the city council to amend the proposed budget for 2021 in order to reallocate funding from the police to social services. I would like to redirect money away from the Fayetteville Police Department and into social service programs that will benefit the public health and our communities, especially communities of color.
The proposed budget for 2021 proposes that 30% of the city’s general fund go to policing, meanwhile, only 0.8% of the city's operating budget is being proposed for economic and community development. This means the city of Fayetteville prioritizes police 30X more than community development. This is unconscionable. Particularly, in this unprecedented time of the COVID-19 pandemic, with many of our community members facing unemployment and housing/food insecurity, it is vital that we reallocate funds to social and community services that will develop our communities and support our residents.
Moreover, to paraphrase an existing council member, it is not cities with the most police, but the most resources, that are the safest. This will be a long transformational process, but an important first step is reallocating city funding.
Mayor Colvin, can I count on your to commit to an alternative budget that reallocates police funding to improve social services for our community members?
Thank you,
[YOUR NAME]
[YOUR ADDRESS]
[YOUR EMAIL]
[YOUR PHONE NUMBER]
[1] https://fayettevillenc.gov/Home/ShowDocument?id=14504

on it


Remove unused

Codecov Report
Patch and project coverage have no change.

Comparison is base (f1ad164) 84.22% compared to head (e0f2ae9) 84.22%.

:mega: This organization is not using Codecov’s GitHub App Integration. We recommend you install it so Codecov can continue to function properly for your repositories. Learn more
Additional details and impacted files
@@           Coverage Diff           @@
##           master      #75   +/-   ##
=======================================
  Coverage   84.22%   84.22%
=======================================
  Files          16       16
  Lines         729      729
  Branches      374      374
=======================================
  Hits          614      614
  Misses         62       62
  Partials       53       53

Impacted Files
Coverage Δ

include/Utils.hpp
60.00% <ø> (ø)

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

:umbrella: View full report at Codecov.
:loudspeaker: Do you have feedback about the report comment? Let us know in this issue.


Fix error in displaySize

HAL.swift and Board.swift had different names for display width  and display height.
This change renames vars in Board.swift to have the same names as in HAL.swift

@kubamracek can you take this one?

Yup. I can confirm that the build failure is currently present, and that it gets resolved with this PR.

...and as this example is using Mach-O files, we can't exercise the build in CI currently.


mel_fmax does not cover all frequency

Looks like waveglow's default configuration doesn't allow mel-spectrogram to represent all range of frequency (0~11025Hz): https://github.com/NVIDIA/waveglow/blob/master/config.json
This is a plot of librosa.filters.mel(22050, 1024, 80, fmin=0.0, fmax=8000.0).

I think was the reason why waveglow and our implementation of melgan doesn't look to generate high-frequency audio.

Running another experiment by setting mel_fmax=11025.0.
I had to run preprocess.py again since all mel-spectrograms need to be calculated again.

@seungwonpark Actually this is how vocoder works efficiently, we always consider frequency between 0 to 8000 from wavenet to wavernn all vocoder models in between this frequency range, this helps model to consider vocal frequency (bandwidth allocated for a single voice-frequency transmission channel is usually 4 kHz) over other frequencies.
 Per the Nyquist–Shannon sampling theorem, the sampling frequency (8 kHz) must be at least twice the highest component of the voice frequency via appropriate filtering prior to sampling at discrete times (4 kHz) for effective reconstruction of the voice signal.
So 8kHz is enough to model any voice.
Meanwhile we do lose some environmental crispness by doing this, but you only notice a minute difference when you heard sound with Good noise cancellation headphone.

@rishikksh20 Thanks for sharing your insight!
I will be doing an ablation study on this, but I think we can close this issue for now since it's not really critical, as you've explained.


Export Facets (or even persist them)

Original author<EMAIL_ADDRESS>(April 20, 2012 18:48:30)
Is there any way to export facets?
What steps will reproduce the problem?
1.Produce a project in Google Refine
2.Extract your Undo/Redo
3.Export your project to .tar.gz
What is the expected output? What do you see instead?
I expect that some remnant of my data facets and their state are exported, so that when I "Apply" or "Import", I have the same facets and selections as when I did Extract or Export.
What version of Google Refine are you using?
r2491 (20120420 checkout from SVN trunk)
What operating system and browser are you using?
Any
Is this problem specific to the type of browser you're using or it happens in all the browsers you tried?
Any
Please provide any additional information below.
I am able to save my actions as a selenium Test Case, and with that I am able to bring back my facets, but this seems unnecessary.  I thought that the facets would persist a little bit longer.
Original issue: http://code.google.com/p/google-refine/issues/detail?id=560

The permalink option to preserve facets doesn't seem to work for larger amounts of facet selections.
I tested the permalink option with approximately 50 text facets (worked fine), then tested with 136 --this returned a blank page.
Using OpenRefine 2.6 beta 1 [TRUNK] for Windows

@anayram wouldn't permalinking 136 facets exceed the 2000 character limit of URLs?
I've wondered is there a more concise way of encoding facet settings in a permalink than the current implementation?

You are right, the current method creates really long urls.

Even the ability to print the contents of the facet results to a file would help. As it is, there seems to be no way to select, export, or save the results of a large faceting exercise.

I am keeping this issue in mind for 4.0, it's one of the things we can change as we redesign the architecture of the tool.

Hi Alan,
Actually, we currently do support copying facet values through a mechanism
of the clipboard.
On each facet, you will have a blue link for "choices" that you can click
on.
This will open another panel that has the textual representation of the
facet values.
You can copy/paste this text into whatever file you need.  (  CTRL-A to
select all text in the panel that appears, then CTRL-C to copy, then CTRL-V
to paste into a text editor or file that you need.
[image: image.png]
[image: image.png]
I agree it would be better not to have the user do the copy/paste values
through the clipboard manually, but instead have the panel that appears to
give options to the user to "Save to file...", etc. instead.
But for now, all we have is the clipboard handling, so hopefully your
number of facet choices that you want to export are not large enough to
overflow your clipboard on your system.
Thad
https://www.linkedin.com/in/thadguidry/
On Sat, Feb 15, 2020 at 11:35 PM Alan Sill<EMAIL_ADDRESS>wrote:

Even the ability to print the contents of the facet results to a file
would help. As it is, there seems to be no way to select, export, or save
the results of a large faceting exercise.
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/OpenRefine/OpenRefine/issues/560?email_source=notifications&email_token=AAHQ2RWNXULQMICZEN5NHS3RDDGA5A5CNFSM4ABTK5RKYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOEL36LAA#issuecomment-586671488,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AAHQ2RVKRYR4SQFOPZNQ45DRDDGA5ANCNFSM4ABTK5RA
.

Hi Alan,
Actually, we currently do support copying facet values through a mechanism of the clipboard.
On each facet, you will have a blue link for "choices" that you can click on.
This will open another panel that has the textual representation of the facet values.
You can copy/paste this text into whatever file you need.  (  CTRL-A to select all text in the panel that appears, then CTRL-C to copy, then CTRL-V to paste into a text editor or file that you need.

I agree it would be better not to have the user do the copy/paste values through the clipboard manually, but instead have the panel that appears to give options to the user to "Save to file...", etc. instead.
But for now, all we have is the clipboard handling, so hopefully your number of facet choices that you want to export are not large enough to overflow your clipboard on your system.

Actually, we currently do support copying facet values through a mechanism of the clipboard.
(...)
You can copy/paste this text into whatever file you need.  (  CTRL-A to select all text in the panel that appears, then CTRL-C to copy, then CTRL-V to paste into a text editor or file that you need.
(...)
But for now, all we have is the clipboard handling, so hopefully your number of facet choices that you want to export are not large enough to overflow your clipboard on your system.

The real problem is to paste back those values, so the whole faceting work does not get lost and it comes back to life when you reopen your project the next day.
Is this possible ?

@abubelinha No, not at the moment. I think your ask in that regard would be of persisting Facet settings (…) That is what this issue #560 is about.

There are really at least 3 considerations for facets:

exporting them to share them;
saving them on a machine so that you have access to them in every projects;
saving them inside the structure of a project, and move them when exporting or importing projects.

That would be a great user feature… So tempting… ;-)
Regards,
Antoine

We might need a few issues that separate the concerns and needs of the community around Facets.  This particular issue seems to be focused (based on original comment) on Facet settings.

From tfmorris on April 20, 2012 22:17:08:
Facets don't even persist across project editing sessions, let alone export/import cycles, so that would be the first thing to do before being able to export them.

I can’t believe this issue is more than 8 years old for such a basic thing.
If facets don’t persist, they are almost useless for cleaning long and complex datasets: I have more than 2 million rows so I can’t do this without several working journeys.
And I do have to turn off my computer when I leave the office.
I totally agree with @tfmorris ... first things first:

Persisting facets should be a top 1 issue in Openrefine.
Exporting them should be second.
And then should come importing.

@abubelinha Thanks for your insight and opinon.  I can believe it its this old.  Here's why... We, OpenRefine, only have about 3 parttime developers volunteer their time with over 700 issues at one point in time, now 400+.  We certainly understand that there's a need for easier repeatable processes in OpenRefine and having Facets part of that.  Getting time to think about how to do that, while not breaking some existing functionality is sometimes hard and there are other priorities for the team immediately.
We appreciate you trying to prioritize which issues are important to you right now, we do sincerely.
We have a rough roadmap of some important features asked for within our Community Survey that we post about.  There were much more votes in other areas of OpenRefine that folks wanted to see fixed or added, so we have been focusing on those this year.  But rest assured, this feature is within the top 20%...it's just not the top 5% of what folks cared about, which is what we're working on now behind the scenes.

(…) We, OpenRefine, only have about 3 part-time developers volunteer their time with over 700 issues at one point in time, now 400+. We certainly understand that there's a need for easier repeatable processes in OpenRefine and having Facets part of that. Getting time to think about how to do that, while not breaking some existing functionality is sometimes hard and there are other priorities for the team immediately.
We appreciate you trying to prioritize which issues are important to you right now, we do sincerely.
We have a rough roadmap of some important features asked for within our Community Survey that we post about. There were much more votes in other areas of OpenRefine that folks wanted to see fixed or added, so we have been focusing on those this year. But rest assured, this feature is within the top 20%...it's just not the top 5% of what folks cared about, which is what we're working on now behind the scenes.

@thadguidry: I’ve read a few month ago that one of the target of OR’s community was to open up so volunteers could come here, and, learn OR in such a way that they can write little PR, and contribute.
Is this still an objective?
The way I see it, a newcomer (but an intermediary level user), who knows coding, JS, and a bit of Java, can, if he learns GitHub, the philosophy of OR, and gets up to date with, let’s say 3 to 6 month of interaction here and on gGroups, can do simple issues.
But, he will need guidance, he will ask many question, and some no so bright ones. It will take some time of the core contributors. And, he cannot start and undertake big and medium issues, because issues come with testing, bug report, concept critics, etc.
But, this issue falls under those smaller issues, one that a newcomer with a few PR merged could handle, IF, support can be provided…

@antoine2711 Yes. That is what I was leading to... We might need a few issues that separate the concerns and needs of the community around Facets. This particular issue seems to be focused (based on original comment) on Facet settings.
If you can find some of the other "facet" labeled issues that cover those needs, and link to this, would be great.

I already did that two month ago. I looked at all of them. Facet are one of the most exposed to the user functionality. And it has, surprisingly, a lot dead angles. The level of sophistication is below the standard you ask me with the issues we've work.
Maybe we could do more issues, but keeping them smaller, more incremental. This would be a way to get more people to come here and exchange.
And it would be, a believe, more « agile » way of working.
As a user, I share @abubelinha views that 8 years is way too long. As a new contributor here, I'm more tempted to code a solution, my years of working with OR has provided MUCH motivation to me. But, if I code, I might need help, and all the human overhead associated to a contribution on GitHub.
I know the topic of this issue is not « contribution to OR by other people », but I feel it is indirectly related.
Regards,
Antoine

@antoine2711 Let's move further discussion on those topics to the dev mailing list.

Perhaps the main reason why this has not been tackled is that it requires taking important design decisions: how should the persistence of facets work?
From a user perspective, I would personally like that when I reopen a project, the facets are restored in the state I left them. No particular action would be required to store the facets, they would just be persisted by default, just like the position in the history is always persisted too. (It is always possible to remove all facets if that is not desired).
From a technical perspective, we need to decide where these facets could be serialized. It could be done browser-side, for instance in cookies or via the more modern local storage/indexdb API. It could be done server-side, by serializing the facet configuration (i.e. EngineConfig) in the project data. Doing this backend-side would also mean that facets would be preserved when exporting / importing an OpenRefine project.
I think my preference would be to do this backend-side: this would also avoid bad surprises when switching browsers or clearing browser data. This is particularly important because OpenRefine is designed to run locally, so all cookies or local data are shared by other web applications running on localhost.
So, to do this backend-side, we would need to:

figure out where in project serialization to insert the latest EngineConfig used;
how to pass the EngineConfig from the front end to the backend: perhaps the existing command to compute facets on a grid could be adapted to also save this facet configuration in the project. But that means this command would start changing the server-side state, so we need to make sure it can only be called by POST and be appropriately CSRF-protected (this is important because facets can contain arbitrary Jython code, for instance). Perhaps it is better to introduce a new command for this (which would avoid breaking the interface for any client which computes facets via our HTTP API). Perhaps the project-level preferences is an appropriate place to store this (which does not require introducing a new command).
make sure this is backwards-compatible: previous OpenRefine versions should not choke on projects serialized with the new version. They should just ignore the serialized facets.
wire everything up in the frontend to save facets every time they are changed (I believe this should be done when computing their state) and restore them when opening a new project.

Perhaps the main reason why this has not been tackled is that it requires taking important design decisions: how should the persistence of facets work?
From a user perspective, I would personally like that when I reopen a project, the facets are restored in the state I left them. No particular action would be required to store the facets, they would just be persisted by default, just like the position in the history is always persisted too. (It is always possible to remove all facets if that is not desired).
From a technical perspective, we need to decide where these facets could be serialized. It could be done browser-side, for instance in cookies or via the more modern local storage/indexdb API. It could be done server-side, by serializing the facet configuration (i.e. EngineConfig) in the project data. Doing this backend-side would also mean that facets would be preserved when exporting / importing an OpenRefine project.
I think my preference would be to do this backend-side: this would also avoid bad surprises when switching browsers or clearing browser data. This is particularly important because OpenRefine is designed to run locally, so all cookies or local data are shared by other web applications running on localhost.

@wetneb: I agree will all you have written. Me, I think we should do both. But not at the same time. The way I see it, is many parts.

Creating a BaseFacet class, put all common functionality there. Saving will go there.
Save locally on the browser (local storage). This is good. You sit down at a computer, in a browser, login with a user, and you find back the exact same facets.
Save on the server/project data. Export get it. It follows the project. You open the project in another browser, you get the facet from the server.
The facets « active » on a browser, are actually the facets of a « facet pack » (a grouping). And many of those can be stored on the server/project data. So, you have a management dialog with your facets packs, and you see the list of facets of one selected facet pack. In that dialog, you can also « import » facets packs from another project.

Now, all those can be separate issues, done be separate people, if some kind of active coding coordination is done. And for that to work, it must not be you, that will already anyway review the code.
The step 1. has to be done first, and 4 should probably be cut in 3 or 4 issues, but most of that could be worked in parallel.
A lot can be done, but if it's all one issue, not many people might have time/skills to undertake such a commitment. It would take a pretty good programer.
Regards,
Antoine

I am not sure about serializing facets both server-side and client-side. When you open a project and both the backend and the frontend have facets to restore, which ones do you pick?

I am not sure about serializing facets both server-side and client-side. When you open a project and both the backend and the frontend have facets to restore, which ones do you pick?

So, since the « browser facets » are stored in the « browser facets group » on the project data, it's just a duplicate (in theory, but it could not be, and then, browser would be loaded, and only the « browser facets group » would be updated on the server side. It would always be a relatively recent version of the browser one, a backup in case your browser user data gets destroyed.
Regards, A.

I still do not see the benefit of storing facets in the browser if they are already stored in the backend. If you want to expand on your proposal of "folders", feel free to do so in an external document, but I think this is diverging from the original issue. By trying to fit in too many improvements at once, the risk is that no improvement gets merged.

I still do not see the benefit of storing facets in the browser if they are already stored in the backend. If you want to expand on your proposal of "folders", feel free to do so in an external document, but I think this is diverging from the original issue. By trying to fit in too many improvements at once, the risk is that no improvement gets merged.

Yes, I will do a gDoc about that. It will also show a bit what I'm trying to explain about smaller increment. I know I propose more stuff, but in fact it can be cut in many small pieces.
Regards, A.

I agree that facets should be stored server-side, only, like all the rest of the OpenRefine permanent state.
The key question in my mind is whether a set of facets (& selections) is part of the project state or editing session state. Currently we persist operation history and data as part of the project and, separately, expression history, starred expressions, and settings values on a per-user basis. Other session viewing state: current page, page size, record vs row mode, are, for better or worse, completely transient.
As I mentioned in 2014, the permalink mechanism does save the current facets and selections, but it's limited by maximum URL length. A short URL mechanism such as provided by Grafana would be one way to avoid this limitation. That would involve saving the facets & selections in the metadata.json and assigning them an identifier which could be used to look them up and resolve them later. This would probably be the lowest cost way to improve the current situation. This would be in addition to, not instead of, the current functionality.
We could also declare facets & selections to be an intrinsic part of the project state and save them every time the project is saved (every 5 min). This is a more fundamental change and would probably also require that we implement things like "Open with no facets" for recovery from messed up (ie poorly performing) facet sets as well as work out the implications for multiple simultaneous edit sessions for a project, etc.

I am not a real programmer but I have the feeling that the permalink thing is not the way to go.
On this page I found a plugin for saving facets.
From its manual I guess it works somehow that way (using a permalink).
(I linked to the wayback machine since the original site is not working right now).
The day I tried that plugin, it simply failed because my dataset had many rows and facets and the permalink was too long, or something like that.
So I googled for something else and then I finally found this issue.
I am so happy there is people talking about it again.
Forgive me if I go somehow off-topic but ... where is that community survey mentioned by @thadguidry above? I would like to vote to rise up this issue, if possible  ;)

The problem is that when I tried that plugin, it simply failed because my dataset had many rows and facets and the permalink was too long, or something like that.
So I googled for something else and then I finally found this issue.
I am happy there is so many people talking about it again.
Forgive me if I go somehow off-topic but ... where is that community survey mentioned by @thadguidry above? I would like to vote to rise up this issue, if possible ;)

@abubelinha: The survey is done for this year, but there will be another one next year. Here's the compilation of the last years: https://groups.google.com/forum/#!topic/openrefine/sHOYuoGrzNE
You probably understand that most of the people working here are volunteers, like me, Thad, Tom, etc., There is a process here, so even if someone code something, it still has to be reviewed for code and design.
I also have this problem, so I try to code it: PR https://github.com/OpenRefine/OpenRefine/pull/2685. It's functional, but only for ListFacet (the most common). Other facets could be add fast, if there is a consensus in the community to go ahead.
If you can download and build from a PR, try it and give me some news. If you can't, you could tell me your OS and I would compile it for you and you could test it. Oh, it doesn't export, a facet will only persists in the browser per project, if you save it.
Regards,
Antoine

If you can download and build from a PR, try it and give me some news. If you can't, you could tell me your OS and I would compile it for you and you could test it. Oh, it doesn't export, a facet will only persists in the browser per project, if you save it.

Sorry, I dont know howto build.
The problem is I use refine in two environments: Windows7 at home, and a Linux account at work.
If any of them is available (or both) I would be happy to try them.
Thanks a lot to all of you for your help!

@abubelinha if you want to "vote" for this issue, you can click the smiley face at the top on the original post and then click the thumbs up sign.
@wetneb re backward compatibility

make sure this is backwards-compatible: previous OpenRefine versions should not choke on projects serialized with the new version. They should just ignore the serialized facets.

This is difficult to do because the old version a) doesn't know whether what it's ignoring is optional and b) can't write it back out again. I also don't see it as being very valuable. It's much more common to make sure that forward migration works (ie v3 can open v2 files).

I am ecstatic to find the tip about the 'choices' popup - that's very helpful, thank you!
I have to say that I would also like facets to persist for a project, not just because I often use many facets and need to revisit projects, but also because I am able to crash OpenRefine from time to time and it's tedious to start over. I'm not too bothered about saving the state of the facet (as in, which choices are selected), just the existence of the facet itself. I frequently use GREL to make custom facets and it's tiresome to have to type these in again when revisiting a project.

I frequently use GREL to make custom facets and it's tiresome to have to type these in again when revisiting a project.

Independent of savable facets, there is a GREL expression history which you can use retrieve recent expressions, including those that you used to create custom facets.

Ah, so there is (GREL history) - that's fantastic, thank you for pointing it out!

Has there been any further thought about being able to save facets to projects? A lot of the work I do with OpenRefine is analysis and filtering rather than refining, so the facets themselves (and the lists they create) are as much a part of the 'project' as the data itself. So it would be great if a project could also save the facets (not necessarily their filter states, but maybe that would be nice too). This would also help with the unfortunate cases where I've accidentally lost a page that I'd been working on e.g. if you do 'Back' in Chrome then return to the page with 'Forward' then the facets are lost (though, curiously, in Safari they are not lost).


[pipeline]  Llama pipeline

📌 Checklist before creating the PR

[x] I have created an issue for this PR for traceability
[x] The title follows the standard format: [doc/gemini/tensor/...]: A concise description
[x] I have added relevant tags if possible for us to better distinguish different PRs

🚨 Issue number

Link this PR to your issue with words like fixed to automatically close the linked issue upon merge
e.g. fixed #1234, closed #1234, resolved #1234
closes #4204

📝 What does this PR do?

Summarize your work here.
if you have any plots/diagrams/screenshots/tables, please attach them here.
This pr adds llama model pipeline and tests. The forward method receives a stage index list to get the start and end layer

💥 Checklist before requesting a review

[x] I have linked my PR to an issue (instruction)
[x] My issue clearly describes the problem/feature/proposal, with diagrams/charts/table/code if possible
[x] I have performed a self-review of my code
[x] I have added thorough tests.
[x] I have added docstrings for all the functions/methods I implemented

⭐ Do you enjoy contributing to Colossal-AI?

[x] 🌝 Yes, I do.
[ ] 🌚 No, I don't.

Tell us more if you don't enjoy contributing to Colossal-AI.

Rerun failed test


Update date time picker to consume abstract-modal.

Summary
Remove the DateTimePicker's dependency on the deprecated terra-modal. Now implements a custom abstract modal that is analogous to the terra-dialog-modal. Now handles focus state when presented from modal manager.
Deployment link:
https://terra-core-deployed-pr-1524.herokuapp.com/#/site/components/site/date-time-picker/index
Thanks for contributing to Terra.
@cerner/terra

Only issue I saw was new TimeClarification modal on actual iOS browser doesn't fully resize to width with screen, stays a little wider (400-440px or so) and then requires side-scroll. Not critical and can be fixed with future enhancement.
Appears fine when tested in desktop browser at the same mobile viewport size.

Functional verification completed. The date time picker example in the modal displays and functions as expected using the new abstract modal implementation.


ESP32 Support

Will this work with the ESP32?

have you succeed working with esp32?

Had anyone tried with ESP32 processor?

Does anyone had tried with arducam esp32s?

I have succeeded in getting this to work on ESP32s. There was a few small things that I had to modify, but you also need to understand that there is a limit to how fast you can write to the ESP32 filesystem, which ends up delivering an .3-.5 FPS, which is super slow.

That's awesome!   If you submit a pull request with the changes I can help get it merged here.

Yeah sure thing I will post it later tonight.

I uploaded the pull request.

I run the code on arducam esp32 but got ETIMEDOUT error. Can you please help me in this regard. Thanks

I run the code on arducam esp32 but got ETIMEDOUT error. Can you please help me in this regard. Thanks

ETIMEDOUT Error is typically given when your ESP32 can not communicate with the arducam. That communication error can be cause by either the pins are not connected securely, causing the camera to not have a connection with the ESP32. Furthermore, if you followed namato's guide for the ESP8266 for the ESP32, it won't work because of the differences in the pins and firmware. Check my forked version for the ESP32 https://github.com/cj667113/micropython-ov2640/.
Also note that the ESP32 needs to be connected to the camera after it boots/reboots but before your code looks for the device. For some reason I am getting boot errors on the dev boards when the camera is not connected at the right time.

@cj667113  Thanks for your reply. I have used the ESP32 version code but getting the error. I dont know how to solve it. Following is the log of error. Kindly help me in this regard.
rst:0x1 (POWERON_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
configsip: 0, SPIWP:0xee
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
mode:DIO, clock div:2
load:0x3fff0018,len:4
load:0x3fff001c,len:4928
ho 0 tail 12 room 4
load:0x40078000,len:9332
load:0x40080400,len:6216
entry 0x400806e8
I (433) cpu_start: Pro cpu up.
I (433) cpu_start: Application information:
I (434) cpu_start: Compile time:     07:44:16
I (436) cpu_start: Compile date:     May 29 2019
I (441) cpu_start: ESP-IDF:          v3.3-beta1-268-g5c88c5996
I (448) cpu_start: Starting app cpu, entry point is 0x4008294c
I (0) cpu_start: App cpu up.
I (458) heap_init: Initializing. RAM available for dynamic allocation:
I (465) heap_init: At 3FFAE6E0 len 00001920 (6 KiB): DRAM
I (471) heap_init: At 3FFB9B88 len 00026478 (153 KiB): DRAM
I (477) heap_init: At 3FFE0440 len 00003AE0 (14 KiB): D/IRAM
I (484) heap_init: At 3FFE4350 len 0001BCB0 (111 KiB): D/IRAM
I (490) heap_init: At 40093398 len 0000CC68 (51 KiB): IRAM
I (496) cpu_start: Pro cpu start user code
I (67) cpu_start: Starting scheduler on PRO CPU.
I (0) cpu_start: Starting scheduler on APP CPU.
initializing camera
ov2640_init: devices detected on on i2c:
Traceback (most recent call last):
File "main.py", line 28, in
File "main.py", line 24, in main
File "main.py", line 11, in main
File "ov2640.py", line 24, in init
OSError: [Errno 110] ETIMEDOUT
MicroPython v1.11 on 2019-05-29; ESP32 module with ESP32

Is there a way to see your pin configuration for SPI? The device seems to be identified on on i2c but can not communicate via SPI. Also how long are your cables you running?

Actually, I looked at the code, its failing to detect I2C, can you show me your pin configurations?

Thanks for your reply. Attached are pic of configuration

Please guide me in this regard. Thanks

Thanks for your reply. Attached are pic of configuration

Please guide me in this regard. Thanks

You will need to change the pins in the OV2640 python code to reflect the pins that the ESP32-Uno uses. Here is the photo above to what you should change them to. Apparently the ESP32-Uno uses different pins than what I used on my dev board.

@cj667113  Thanks for you reply. I have changed the pins according to above pin diagram but the error is same. Kindly help me in this regard. Thanks

Hi, kindly help me in this regard.
rst:0x1 (POWERON_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
configsip: 0, SPIWP:0xee
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
mode:DIO, clock div:2
load:0x3fff0018,len:4
load:0x3fff001c,len:4928
ho 0 tail 12 room 4
load:0x40078000,len:9332
load:0x40080400,len:6216
entry 0x400806e8
�[0;32mI (433) cpu_start: Pro cpu up.�[0m
�[0;32mI (433) cpu_start: Application information:�[0m
�[0;32mI (433) cpu_start: Compile time: 07:44:16�[0m
�[0;32mI (436) cpu_start: Compile date: May 29 2019�[0m
�[0;32mI (441) cpu_start: ESP-IDF: v3.3-beta1-268-g5c88c5996�[0m
�[0;32mI (447) cpu_start: Starting app cpu, entry point is 0x4008294c�[0m
�[0;32mI (0) cpu_start: App cpu up.�[0m
�[0;32mI (458) heap_init: Initializing. RAM available for dynamic allocation:�[0m
�[0;32mI (465) heap_init: At 3FFAE6E0 len 00001920 (6 KiB): DRAM�[0m
�[0;32mI (471) heap_init: At 3FFB9B88 len 00026478 (153 KiB): DRAM�[0m
�[0;32mI (477) heap_init: At 3FFE0440 len 00003AE0 (14 KiB): D/IRAM�[0m
�[0;32mI (483) heap_init: At 3FFE4350 len 0001BCB0 (111 KiB): D/IRAM�[0m
�[0;32mI (490) heap_init: At 40093398 len 0000CC68 (51 KiB): IRAM�[0m
�[0;32mI (496) cpu_start: Pro cpu start user code�[0m
�[0;32mI (67) cpu_start: Starting scheduler on PRO CPU.�[0m
�[0;32mI (0) cpu_start: Starting scheduler on APP CPU.�[0m
initializing camera
�[0;31mE (360) spi_master: spi_bus_add_device(455): When work in full-duplex mode at frequency > 26.7MHz, device cannot read correct data.
Try to use IOMUX pins to increase the frequency limit, or use the half duplex mode.
Please note the SPI master can only work at divisors of 80MHz, and the driver always tries to find the closest frequency to your configuration.
Specify SPI_DEVICE_NO_DUMMY to ignore this checking. Then you can output data at higher speed, or read data at your own risk.�[0m
Traceback (most recent call last):
File "main.py", line 28, in
File "main.py", line 24, in main
File "main.py", line 11, in main
File "ov2640.py", line 17, in init
OSError: invalid configuration
MicroPython v1.11 on 2019-05-29; ESP32 module with ESP32
Type "help()" for more information.

Hi, I have resolved the previous error, now I am getting this error
rst:0x1 (POWERON_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
configsip: 0, SPIWP:0xee
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
mode:DIO, clock div:2
load:0x3fff0018,len:4
load:0x3fff001c,len:4928
ho 0 tail 12 room 4
load:0x40078000,len:9332
load:0x40080400,len:6216
entry 0x400806e8
I (433) cpu_start: Pro cpu up.
I (433) cpu_start: Application information:
I (433) cpu_start: Compile time:     07:44:16
I (436) cpu_start: Compile date:     May 29 2019
I (441) cpu_start: ESP-IDF:          v3.3-beta1-268-g5c88c5996
I (447) cpu_start: Starting app cpu, entry point is 0x4008294c
I (0) cpu_start: App cpu up.
I (458) heap_init: Initializing. RAM available for dynamic allocation:
I (465) heap_init: At 3FFAE6E0 len 00001920 (6 KiB): DRAM
I (471) heap_init: At 3FFB9B88 len 00026478 (153 KiB): DRAM
I (477) heap_init: At 3FFE0440 len 00003AE0 (14 KiB): D/IRAM
I (483) heap_init: At 3FFE4350 len 0001BCB0 (111 KiB): D/IRAM
I (490) heap_init: At 40093398 len 0000CC68 (51 KiB): IRAM
I (496) cpu_start: Pro cpu start user code
I (67) cpu_start: Starting scheduler on PRO CPU.
I (0) cpu_start: Starting scheduler on APP CPU.
initializing camera
ov2640_init: devices detected on on i2c:
ov2640 init:  register test return bytes b'00'
ov2640_init: register test failed!
ov2640_init: device type looks correct, bytes: b'26'/b'42'
72224

It looks like you fixed the I2C read issue, now it is throwing an error at this part.
res = cam_spi_read(b'\x00', self.hspi, self.cspin)
print("ov2640 init:  register test return bytes %s" % ubinascii.hexlify(res))
if (res == b'\x55'):
            print("ov2640_init: register test successful")
else:
            print("ov2640_init: register test failed!")

What this means is that the SPI pins are still not set correctly. Check to ensure these pins are changed in the OV2640.py program. Notice that SDA and SCL do not need to be changed, given that they are the pins that the ESP32-Uno uses.
def __init__(self, sclpin=22, sdapin=21, cspin=15, resolution=OV2640_320x240_JPEG):
      self.i2c = machine.I2C(scl=machine.Pin(22), sda=machine.Pin(21), freq=1000000)
      self.hspi = machine.SPI(1, baudrate=80000000, polarity=0, phase=0,bits=8,sck=machine.Pin(14), mosi=machine.Pin(13), miso=machine.Pin(12))
      self.cspin = machine.Pin(15, machine.Pin.OUT)

I checked the datasheet for the ESP32 and the ESP32-Uno. ESP32-Uno uses SPI pins with different ID on their development board. That means that

self.hspi = machine.SPI(1, baudrate=80000000, polarity=0, phase=0,bits=8,sck=machine.Pin(14), mosi=machine.Pin(13), miso=machine.Pin(12))

Needs to be changed to

self.hspi= machine.SPI(2, baudrate=80000000, polarity=0, phase=0, bits=8, firstbit=0, sck=Pin(18), mosi=Pin(23), miso=Pin(19))

This could be found here: https://docs.micropython.org/en/latest/esp32/quickref.html

Thanks for reply. I changed them but it was throwing the previous error so I only used this code
self.hspi = machine.SPI(1, baudrate=80000000, polarity=0, phase=0)
instead of
self.hspi = machine.SPI(1, baudrate=40000000, polarity=0, phase=0,bits=8,sck=machine.Pin(18), mosi=machine.Pin(23), miso=machine.Pin(19))
Kindly help me in this regard.
Thanks

Thanks for reply. I changed them but it was throwing the previous error so I only used this code
self.hspi = machine.SPI(1, baudrate=80000000, polarity=0, phase=0)
instead of
self.hspi = machine.SPI(1, baudrate=40000000, polarity=0, phase=0,bits=8,sck=machine.Pin(18), mosi=machine.Pin(23), miso=machine.Pin(19))
Kindly help me in this regard.
Thanks

You have to declare your SPI pins, that error is different, but it is not necessarily better.
self.hspi= machine.SPI(2, baudrate=80000000, polarity=0, phase=0, bits=8, firstbit=0, sck=Pin(18), mosi=Pin(23), miso=Pin(19))
Should be what you need to change it too. Also you need to change your CS Pin to pin 17 here:
'def init(self, sclpin=22, sdapin=21, cspin=15, resolution=OV2640_320x240_JPEG):'
and here
'self.cspin = machine.Pin(15, machine.Pin.OUT)'

Thanks for reply. Yeah I changed it to but then the same error. I do not know how to solve this.

Interesting. Try this:
self.hspi = machine.SPI(2, baudrate=80000000, polarity=0, phase=0,bits=8,sck=machine.Pin(18), mosi=machine.Pin(23), miso=machine.Pin(19))
Omit the firstbit=0 part.

Thanks for your reply. I tested the above code. So when I did not connect the "mosi" and "miso" I get following output
rst:0x1 (POWERON_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
configsip: 0, SPIWP:0xee
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
mode:DIO, clock div:2
load:0x3fff0018,len:4
load:0x3fff001c,len:4928
ho 0 tail 12 room 4
load:0x40078000,len:9332
load:0x40080400,len:6216
entry 0x400806e8
I (433) cpu_start: Pro cpu up.
I (433) cpu_start: Application information:
I (433) cpu_start: Compile time:     07:44:16
I (436) cpu_start: Compile date:     May 29 2019
I (441) cpu_start: ESP-IDF:          v3.3-beta1-268-g5c88c5996
I (447) cpu_start: Starting app cpu, entry point is 0x4008294c
I (0) cpu_start: App cpu up.
I (458) heap_init: Initializing. RAM available for dynamic allocation:
I (465) heap_init: At 3FFAE6E0 len 00001920 (6 KiB): DRAM
I (471) heap_init: At 3FFB9B88 len 00026478 (153 KiB): DRAM
I (477) heap_init: At 3FFE0440 len 00003AE0 (14 KiB): D/IRAM
I (483) heap_init: At 3FFE4350 len 0001BCB0 (111 KiB): D/IRAM
I (490) heap_init: At 40093398 len 0000CC68 (51 KiB): IRAM
I (496) cpu_start: Pro cpu start user code
I (67) cpu_start: Starting scheduler on PRO CPU.
I (0) cpu_start: Starting scheduler on APP CPU.
initializing camera
ov2640_init: devices detected on on i2c:
ov2640 init:  register test return bytes b'ff'
ov2640_init: register test failed!
ov2640_init: device type looks correct, bytes: b'26'/b'42'
72176
ov2640_capture: 16777215 bytes in fifo
whereas if I connect the "mosi" and "miso" I get "OSError: [Errno 110] ETIMEDOUT".
Kindly help. Thanks

Thanks for your reply. I tested the above code. So when I did not connect the "mosi" and "miso" I get following output
rst:0x1 (POWERON_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
configsip: 0, SPIWP:0xee
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
mode:DIO, clock div:2
load:0x3fff0018,len:4
load:0x3fff001c,len:4928
ho 0 tail 12 room 4
load:0x40078000,len:9332
load:0x40080400,len:6216
entry 0x400806e8
�[0;32mI (433) cpu_start: Pro cpu up.�[0m
�[0;32mI (433) cpu_start: Application information:�[0m
�[0;32mI (433) cpu_start: Compile time: 07:44:16�[0m
�[0;32mI (436) cpu_start: Compile date: May 29 2019�[0m
�[0;32mI (441) cpu_start: ESP-IDF: v3.3-beta1-268-g5c88c5996�[0m
�[0;32mI (447) cpu_start: Starting app cpu, entry point is 0x4008294c�[0m
�[0;32mI (0) cpu_start: App cpu up.�[0m
�[0;32mI (458) heap_init: Initializing. RAM available for dynamic allocation:�[0m
�[0;32mI (465) heap_init: At 3FFAE6E0 len 00001920 (6 KiB): DRAM�[0m
�[0;32mI (471) heap_init: At 3FFB9B88 len 00026478 (153 KiB): DRAM�[0m
�[0;32mI (477) heap_init: At 3FFE0440 len 00003AE0 (14 KiB): D/IRAM�[0m
�[0;32mI (483) heap_init: At 3FFE4350 len 0001BCB0 (111 KiB): D/IRAM�[0m
�[0;32mI (490) heap_init: At 40093398 len 0000CC68 (51 KiB): IRAM�[0m
�[0;32mI (496) cpu_start: Pro cpu start user code�[0m
�[0;32mI (67) cpu_start: Starting scheduler on PRO CPU.�[0m
�[0;32mI (0) cpu_start: Starting scheduler on APP CPU.�[0m
initializing camera
ov2640_init: devices detected on on i2c:
ov2640 init: register test return bytes b'ff'
ov2640_init: register test failed!
ov2640_init: device type looks correct, bytes: b'26'/b'42'
72176
ov2640_capture: 16777215 bytes in fifo
whereas if I connect the "mosi" and "miso" I get "OSError: [Errno 110] ETIMEDOUT".
Kindly help. Thanks

What version of micropython are you currently running? I am going to try and build it out on the same pins on my dev board.

Using this version of micropython esp32-20190529-v1.11.bin.
ov2640.zip

Using this version of micropython esp32-20190529-v1.11.bin.
ov2640.zip

Okay, I will build it out on my ESP32 with the pins that your dev board and share it with you once I get it working.

okay thanks a lot

Hi,
Saw the discussion and it made me to think and ask if any thing can be used even in my project. Actually I have Pycom Lopy4 node the Lopy4 node has the ESP32 processor. I am intending to capture very low resolution image using the OV7670 camera and stuck with the micropython code to develop. Actually I bit of a new to the micropython programming.
Having a thought that since the Lopy4 also has ESP32 processor, if any one can advise me if it is possible even for the lopy4 to use your code to capture the image. Your kind advice will be of great help to me. Thank you.

Hi,
Saw the discussion and it made me to think and ask if any thing can be used even in my project. Actually I have Pycom Lopy4 node the Lopy4 node has the ESP32 processor. I am intending to capture very low resolution image using the OV7670 camera and stuck with the micropython code to develop. Actually I bit of a new to the micropython programming.
Having a thought that since the Lopy4 also has ESP32 processor, if any one can advise me if it is possible even for the lopy4 to use your code to capture the image. Your kind advice will be of great help to me. Thank you.

The OV7670 is a different camera all together. This code was built to use the OV2640, specifically the OV2640 with the FIFO buffer, so most likely you would have to rework the code a lot.
There has been some success with the ESP32 with the OV7670 but I don't know anything about it:
https://bitluni.net/esp32-i2s-camera-ov7670
https://github.com/desaster/ov7670test

Did you ever figure out the SPI issue @cj667113?

Still having issues with the VSPI (2), but it works on the HSPI Pins that I have listed. I am not certain why this issue exists to be honest. The error is coming from line self.i2c.writeto_mem(SENSORADDR, 0xff, b'\x01'), which is odd cause SPI(1) doesn't trigger it to fail here.

This worked for me to solve the VSPI(2) issue. The board that I used was NodeMCU ESP-WROOM-32.
self.hspi=machine.SPI(2, baudrate=80000000, polarity=0, phase=0, bits=8, firstbit=0, sck=machine.Pin(18), mosi=machine.Pin(23), miso=machine.Pin(19))

Awesome! @cj667113 I got it working for my Pycom GPy and forked your file. Did you get it working for larger photos?

I am having trouble with over exposure when outside. Even when using an IR filter. Is there a way to set auto exposure?

Not that I am aware of. I don't have much knowledge on the module/camera, I just adapted the pins settings to get it to work on the ESP32.

Hi @cj667113 and @namato!
This repo and the above discussion helped me out quite a bit! :100:
However, I am getting this error, when I used @cj667113 's repo
SOFT REBOOT:
terminal ready

MPY: soft reboot
initializing camera
E (831774) spi: spi_bus_initialize(627): SPI bus already initialized.
Traceback (most recent call last):
  File "main.py", line 20, in <module>
  File "main.py", line 9, in main
  File "ov2640.py", line 18, in __init__
OSError: SPI host already in use

HARD REBOOT:
rst:0x1 (POWERON_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
configsip: 0, SPIWP:0xee
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
mode:DIO, clock div:2
load:0x3fff0030,len:5356
ho 0 tail 12 room 4
load:0x40078000,len:14156
load:0x40080400,len:3424
entry 0x40080634
initializing camera
E (3410) spi_hal: spi_hal_cal_clock_conf(101): When work in full-duplex mode at frequency > 26.7MHz, device cannot read correct data.
Try to use IOMUX pins to increase the frequency limit, or use the half duplex mode.
Please note the SPI master can only work at divisors of 80MHz, and the driver always tries to find the closest frequency to your configuration.
Specify ``SPI_DEVICE_NO_DUMMY`` to ignore this checking. Then you can output data at higher speed, or read data at your own risk.
E (3450) spi_master: spi_bus_add_device(368): assigned clock speed not supported
Warning: I2C(-1, ...) is deprecated, use SoftI2C(...) instead
E (3460) spi_master: spi_bus_remove_device(439): invalid handle
Traceback (most recent call last):
  File "main.py", line 20, in <module>
  File "main.py", line 9, in main
  File "ov2640.py", line 19, in __init__
OSError: invalid configuration
MicroPython v1.16 on 2021-06-23; ESP32 module with ESP32
Type "help()" for more information.
>>>

Link for dev board: https://www.amazon.in/gp/product/B08DX981K5/ref=ppx_yo_dt_b_search_asin_title?ie=UTF8&psc=1
.
.
.
.... Here is the story: (TL;DR)
I wanted to build an ESP32 CAM DRONE.
parts:
MPU9250 working on I2C (pins: 14,15)
4 coreless motors (pwm from pins: 12,13,16,2)
And led (internal: pin 4)
A few 2N2222 transistors and 220ohm resistors to boost the current to the motors (as the chip cannot directly power the motors)
The code for flight control was easy to build and work within python.
However, I cannot use the SD card functionality of the board. (pain in chest)

Hence I was searching for answers on the web to do this. Initially I experimented with platformio and stuff from youtube, randomnerdtutorials, etc.
Some worked, some worked, some did not. The cam was the toughest thing to get right.
The firmware releases from micropython are vast, but it is tedious to find the right one:
Click here: ALL FIRMWARE
Click here: ESP-32 FIRMWARE

(more confused... just like my post xD)
Hence, I moved to python, however, I was not able to get the camera module in micropython to work directly. There were multiple
camera.inti() failures.
Luckily I stumbled upon your repo where I think I can send data directly over the network module.
I was wondering if you all had some suggestions on this. I could use your help.
Regards,
Rohit

Hello, I am trying to use this code, but I keep getting a memory allocation error, when I try to run it the following happens:
initializing camera
Warning: I2C(-1, ...) is deprecated, use SoftI2C(...) instead
ov2640_init: devices detected on on i2c:
ov2640 init:  register test return bytes b'55'
ov2640_init: register test successful
ov2640_init: device type looks correct, bytes: b'26'/b'42'
63344
ov2640_capture: 3080 bytes in fifo
Traceback (most recent call last):
File "main.py", line 28, in
File "main.py", line 15, in main
File "ov2640.py", line 79, in capture_to_file
File "ov2640.py", line 105, in appendbuf
MemoryError: memory allocation failed, allocating 252 byte
I'm not really sure how to fix this so any help would be appreciated.


fix: email format and send email functioning in Nue FAQ

Fixed email display in FAQ to ensure it shows correctly and is clickable.

Fixed email display in FAQ to ensure it shows correctly and is clickable.

I think this was intentional, so bots don't scrape it as easily.
@tipiirai can probably tell you better than me, because it's just an assumption on my end :)

Yes. This was intentional. Not sure if this a valid trick anymore. I bet that today's bots can scrape that. What do you think?

@tipiirai and @nobkd  Thanks for the clarification! I understand it was intentional, and I agree it may not hold up against modern bots.


4395 apply again 3 courses implementation

Context
We are changing the apply again functionality to support 3 applications instead of 1. This will be behind a new feature flag called apply_again_with_three_choices which was merged in #6476
Changes proposed in this pull request
Rework Apply2 to allow for three course choices

Refactor MAXIMUM_PHASE constants
Add logic to the component to only render the plural if the feature flag is activated
Add a third course to a candidate helper method, to enable testing
Put this behind the apply_again_with_three_choices feature flag

Guidance to review

Activate the apply_again_with_three_choices feature flag

Follow the apply again user journey and ensure you can select three choices

Ensure that there is no over hanging content suggesting that you can only apply to one course in apply again

Do we want to be consistent on terminiology, i.e Apply2 vs Apply again?

Repeat with the feature flag off to ensure the original Apply2 journey remians unaffected

Link to Trello card
https://trello.com/c/dQIVeHon/4395-apply-again-3-courses-implementation

Manual tested locally and all seems to be working the way I'd expect in candidate and support interfaces. Content looks correct.


[RELEASE] Operator 5.0.11

Summary
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
Goals

[x] Document MINIO_OPERATOR_IMAGE envvar override PR 1854
[x] Operator STS enabled by default PR 1848
[x] Additional improvements to TLS behavior in Operator PR 1847
[x] Support for MINIO_KMS_SECRET_KEY_FILE, possible spillover to server docs PR 1789
[x] --kes-image flag for kubectl minio tenant create PR 1808
[x] --retain-namespace flag for kubectl minio delete PR 1807

** For Consideration **

[x] Operator CRD supports PVC deletion on tenant delete - may require some warnings in docs PR 1828
[ ] Add guidance for health checks outside of pods post change to UBI 9 PR 1831
[ ]

Notes:

For PR1789 I don't see any doc references to operator-tls. Maybe we removed them already at some point? I think this is a noop
For PR1789 this is related to the non-KMS encryption key setup. We do not document this at all, and I believe this is intentional as we do not recommend using it even for the most basic of testing (it leads to bad habits). I cannot find any references to MINIO_KMS_SECRET_KEY in the docs as-is, and I'm almost certain that is intentional. I'm calling this a no-op.
For 1831 I think it's better to address the liveness probe on its own in a separate issue, but I have to do some digging


Subsequent shouldReceive() calls should override Expectations set by previous ones.

Currently, only the first call to shouldReceive with the same parameters sets an Expectation.  Subsequent calls with the same parameters do not override this Expectation (they apparently have no effect at all).  I believe subsequent calls should override previous ones.  I'm not sure if "doing nothing" is the intended result (and if so, what the benefit would be).
TLDR: I believe the following unit test should pass:
diff --git a/tests/Mockery/ExpectationTest.php b/tests/Mockery/ExpectationTest.php
index 4c72330..3ee40c3 100644
--- a/tests/Mockery/ExpectationTest.php
+++ b/tests/Mockery/ExpectationTest.php
@@ -54,6 +54,13 @@ class ExpectationTest extends MockeryTestCase
         $this->assertNull($this->mock->foo('foo', array(), new stdClass));
     }

+    public function testExpectationCanBeOverridden()
+    {
+        $this->mock->shouldReceive('foo')->andReturn('green');
+        $this->mock->shouldReceive('foo')->andReturn('blue');
+        $this->assertEquals($this->mock->foo(), 'blue');
+    }
+
     public function testReturnsNullIfNullIsReturnValue()
     {
         $this->mock->shouldReceive('foo')->andReturn(null);

Currently, it fails:
There was 1 failure:

1) ExpectationTest::testExpectationCanBeOverridden
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'green'
+'blue'

I thought there was a way you can set expectation orders? Aka, like the first one need sto be called first, if it's not it'll fail.etc. You can use the ordered() method when setting expectations to do that. That's pretty important if you have multiple calls that return different results, but really - both method call signatures should be slightly different as well.
Ie. if you have a method that returns different results but with the same arguments, there's a smelly code chunk in there...

I thought there was a way you can set expectation orders? Aka, like the first one need sto be called first, if it's not it'll fail.etc. You can use the ordered() method when setting expectations to do that. That's pretty important if you have multiple calls that return different results, but really - both method call signatures should be slightly different as well.
Ie. if you have a method that returns different results but with the same arguments, there's a smelly code chunk in there...

@jdunk The first expectation will be used for exactly as many times as you specify by setting the expectation count, then the next expectation is used and so on. If you do not explicitly set the expectation count for an expectation, this expectation is used as many times as you call it, i.e., any number of times from never to infinity.
public function testExpectationWithoutCountIsUsedInfinitelyManyTimes()
{
   $this->mock->shouldReceive('foo')->andReturn('green');
   $this->mock->shouldReceive('foo')->andReturn('blue');
   $this->assertEquals($this->mock->foo(), 'green');
   $this->assertEquals($this->mock->foo(), 'green');
}

If you specify the expectation count, subsequent expectations are called as expected
public function testExpectationCanBeOverridden()
{
    $this->mock->shouldReceive('foo')->once()->andReturn('green');
    $this->mock->shouldReceive('foo')->andReturn('blue');
    $this->assertEquals($this->mock->foo(), 'green');
    $this->assertEquals($this->mock->foo(), 'blue');
}

You can implicitly set the expectation count to one on the first expectation by providing several return values to one expectation
public function testExpectationWithDifferentReturnValues()
{
    $this->mock->shouldReceive('foo')->andReturn('green', 'blue');
    $this->assertEquals($this->mock->foo(), 'green');
    $this->assertEquals($this->mock->foo(), 'blue');
    $this->assertEquals($this->mock->foo(), 'blue');
}

If possible, I use with() and once() to make sure a test isn't passing by accident.

@fhinkel I appreciate what you're saying, but this still requires modifying the original expectation-setting statement.  Imagine you have a test suite, and you want to set a default expectation in an initializer function that is called for every test, and then for only one or a few tests, a different expectation is desired.  Assuming what aik099 says is true, the ->byDefault method is the only current known way to override an expectation statement that has already been executed.

For what it's worth, I agree with jdunk. I'd say the order should be reversed - i.e. it should match the latest expectation first, especially for stubs. At the very least, you should be able to configure.
This is where having an API for inspecting the calls made to the mock would be really handy - i.e. instead of setting up expectations beforehand, assert on them after i.e.
$calls = $mock->callsTo('method');
$this->assertEquals($calls->count(), 2);
$this->assertTrue($calls[0]->argument(1)->match(...));

@spronkey - that's what spies are for, which are already in the project.

@kirkbushell oh? I didn't even know. The docs don't mention that at all!

@spronkey yeah it's only on the master branch, I think. Here: http://davedevelopment.co.uk/2014/10/09/mockery-spies.html

It's really great for writing unit tests for things like command handlers, which are usually just a stack of object calls with very little logic themselves.

For anyone else who encounters this issue, the underlying problem has since been resolved.
Instead of adding the ->byDefault() to your overriding shouldReceive call (as mentioned above many years ago), add it to your initial call. For example, using the OP's example:
protected function setUp(): void
{
    parent::setUp();
    $this->mock->shouldReceive('foo')->andReturn('green')->byDefault();
}

public function testExpectationCanBeOverridden()
{
    $this->mock->shouldReceive('foo')->andReturn('blue');
    $this->assertEquals($this->mock->foo(), 'blue');
}

Both ways will work, but this way seems more logical. Reference: https://github.com/mockery/mockery/issues/783


[BUG] Changed behavior of Progress().finished

Not sure if it is a bug, regression or just change that missed the changelog but starting from v9.6.0 setting the zero length task no longer set finished to True.
from rich.progress import Progress

with Progress() as progress:
	progress.add_task('', total=0)
	print(progress.finished)

It's somewhat undefined behavior. I think if you were to call progress.update then it would set the finished flag.
I suspect the current behavior is correct. A user might want to set the total to 0 to start the task, and set the actual total later. Do you have a use-case for adding a task already in a finished state?

Your assumption is correct. Calling the update is setting the flag correctly.
Current version of my code depended on finished flag and this change created some infinite loops. I will just fix it on my side. Thank you for clarification.


Iconify React required "fr" attribute

Hi,
It seems that Iconify React types have type error that makes "fr" param on Icon component required
Is that a bug or intentional?
Cheers

I've looked at file generated by build script, that attribute is there. It shouldn't be. Looks like React.forwardRef is causing API Extractor to generate weird code.
Thanks for reporting, I'll find a way to fix that.

I think I've fixed it. Can you please test it?
I didn't publish it as latest yet in case fix won't work. Install latest version of component using npm install @iconify/react@test and please post here if that fixes issue for you.

Wow, that was quick!
Yep, error is gone now.
Thanks for quick response and this great project, happy New Year!

Thanks!
Happy New Year to you too!
I'll keep this issue open until I do more testing to make sure there are no surprise side effects from this fix.

Tested changes in project using Vite + TS. Confirmed bug in old version and confirmed that fix works correctly.


Change email and phone verification screen like on design

https://xd.adobe.com/spec/8f259bcd-550e-4f0c-40bb-bdce2ed36fe5-f914/screen/7a36a5be-d385-46be-a407-d45fcfa4d652/Sign-Up-13
add extra space between 3d and 4th input

Checked on https://goodqa.netlify.com
there is a bug https://www.screencast.com/t/uWkv2dSKUgkB
work and look as per requirements on https://gooddev.netlify.com


Live server not working with default <IP_ADDRESS> but working with my local ip address

When I click to open with live server with a default <IP_ADDRESS>:5500, it gives me a chrome page saying the following

This page isn't working
<IP_ADDRESS> didn't send any data
ERR_EMPTY_RESPONSE
But when I change in the extension setting to use my local ip, it works just fine.

How did you change the local ip from default setting?


application to whole-transcriptome data

Hello!
First of all, thank you for sharing IsoLamp with us.
I see that IsoLamp was created for the targeted sequencing, but I have a small newbie question. I was wondering if it would be possible to apply IsoLamp to the nanopore long-read whole-transcriptome data.
I have data from 17 single-cell samples and would want to try using IsoLamp for this, assuming the parameters file is adjusted with paths to the whole genome reference, etc. The fastq files were previously mapped to the reference genome with minimap2 with -ont flag.
Thanks!

Hi Domivka,
Glad to hear IsoLamp is of interest to you.
Yes your right, IsoLamp was designed for amplicon data so its functionality is limited when it comes to whole transcritome and single cell data. It is possible to modify the code to perform whole transcriptome analysis but my suggestion would be to just use bambu on its own.
In saying this i have tried taking single-cell long read data and identifying isoforms for genes of interest, (however this needs to be done one gene at a time). This works well for some genes but is often poor for more complex genes especially where the reads are not full length or there is alot of internal priming. Also something to consider is that with single cell long read data the reads need to be demultiplexed and this is something that isolamp cannot do.
Im not sure what your goals are but there are some well established tools for sc LR analsyis such as FLAMES and Isoquant. Perhaps these tools might be more useful?
If you let me know what type of analysis you wish to do perhaps we can add some features to help.
Sefi


Tutorials: steps without actions

There are currently "free range" steps but the whole concept is somewhat confusing.
It'd be better if instead of a separate "free range" flag, a step would be omittable simply if no action is given ("action": null). The button ("I'm done" or whatever it says) should be replaced with (perhaps more subtle) forward/backward arrow buttons. (Ask Hiski for design ideas.) The forward button is disabled/hidden if an action is required. Backward button is disabled/hidden if the previous step required an action.

Also, these steps should never show "DONE" text.

Moved to a different project


lang: Add accounts by reference

Close #2324
Allow the ref for AccountInfo and modify the UncheckedAccount so that it has the ref of AccountInfo

This can be a good idea to improve the general performance, here I voluntarily made only the UncheckedAccount because normally it is not used in complex operations. I wanted to avoid breaking changes. I think it would be better to make another PR with this proposal

I'm working on some tests that would help us track the performance of Anchor programs so that we can better see the effects of the changes. Will get back to this PR afterwards.

TODO:

[ ] Fix merge
[ ] Check cloning

I think I wasn't clear on &AccountInfo conversion. The syntax for specifying accounts struct should stay exactly the same. The conversion should be done inside codegen and not by user specifying &'info AccountInfo<'info>.
All other account types had a reference to the AccountInfo by default except the AccountInfo itself before your latest changes. Have you run into problems converting the user supplied AccountInfo to a reference in codegen or was there a misunderstanding?

I think I wasn't clear on &AccountInfo conversion. The syntax for specifying accounts struct should stay exactly the same. The conversion should be done inside codegen and not by user specifying &'info AccountInfo<'info>.
All other account types had a reference to the AccountInfo by default except the AccountInfo itself before your latest changes. Have you run into problems converting the user supplied AccountInfo to a reference in codegen or was there a misunderstanding?

I didn't quite understand what you were trying to do. The account info is not a type specific to Anchor and the macro is a derive_proc_macro, there are two choices to have a reference in the account structure. Either have a wrapped type or use the reference directly in the structure. What I understood from what you wanted is to have an AccoutInfo in the structure and use a reference in the constraints. It is possible but in any case there will be cloning (so I don't see the point).
What do I need to change to make it more in line with your requirements?

Either have a wrapped type or use the reference directly in the structure.

Yes, you are right.
The main problem is the difference in behavior between AccountInfo and UncheckedAccount. They are used for the same purpose in programs and I think it's essential that they use the same compute units.
One solution would be to completely get rid of AccountInfo and only use Anchor wrapper types.

Let's get this in before the next release now that we have benchmarks for program binary size, compute units and stack memory.
It's probably the best to keep AccountInfo for now and not allow &'info AccountInfo<'info> syntax, we might deprecate it later.

Close in favor of #2656


Parser drops statement if it is and AND after OR

If we have the following GQL - author:joe,author:doe+tag:photo, when parsing, GQL will drop the last clause, resulting into:
{
   statements:[
      {
         op:'=',
         value:'joe',
         prop:'author'
      },
      {
         op:'=',
         value:'doe',
         prop:'author',
         func:'or'
      }
   ]
}

But if you'll go opposite way, by swapping it tag:photo+author:doe,author:joe, it will parse correctly:
{
   statements:[
      {
         op:'=',
         value:'photo',
         prop:'tag'
      },
      {
         op:'=',
         value:'doe',
         prop:'author',
         func:'and'
      },
      {
         op:'=',
         value:'joe',
         prop:'author',
         func:'or'
      }
   ]
}

Code used
const gql = require('./lib/gql');

console.log('author:joe,author:doe+tag:photo', gql.parse('author:joe,author:doe+tag:photo'));
console.log('author:joe,author:doe+(tag:photo)', gql.parse('author:joe,author:doe+(tag:photo)'));
console.log('(tag:photo)+author:doe,author:joe', gql.parse('(tag:photo)+author:doe,author:joe'));
console.log('tag:photo+author:doe,author:joe', gql.parse('tag:photo+author:doe,author:joe'));

Is it a bug, or intended behavior? Any thoughts?
Thank you!

Hey @RuslanZavacky 👋
I'm very sorry that you haven't got a reply. If this is still an issue, could you please raise an issue here. Thanks 🙂

GQL was replaced by NQL. GQL is deprecated now.


Wylie Jenks crashes game

Card
Wylie Jenks
Describe the bug
Law Dogs had Wylie Jenks in posse. Sloane Gang had 2 wanted dudes in posse. When wanted Allie Hensman left play (was discarded to cover a casualty) the game crashed. There was a second wanted dude in the SG posse.
Additional context
2021-05-17T17:42:09.083Z - error:  message=Cannot read property 'isWanted' of undefined, stack=TypeError: Cannot read property 'isWanted' of undefined
at /home/aaron/townsquare/townsquare/server/game/cards/02.1-NTNR/WylieJenks.js:18:90
at /home/aaron/townsquare/townsquare/server/game/gamesteps/shootout/shootoutposse.js:97:102
at Array.filter ()

It looks like there can be a situation when dude is still in posse, but already out of play so the findCardInPlayByUuid does not find it and returns null.
Condition to fix is in ShootoutPosse.getDudes():
return this.posse.map(dudeUuid => this.player.findCardInPlayByUuid(dudeUuid)).filter(card => condition(card));


Cli.java:68-69: Right now Rpm always includes filelists -...

The puzzle 79-4e9f7178 from #79 has to be resolved:
https://github.com/artipie/rpm-adapter/blob/3e5cdb7f84634189781bc08d9312edc6c695dfdd/src/main/java/com/artipie/rpm/Cli.java#L68-L69
The puzzle was created by @g4s8 on 20-Apr-20.
Estimate: 30 minutes,  role: DEV.
If you have any technical questions, don't ask me, submit new tickets instead. The task will be "done" when the problem is fixed and the text of the puzzle is removed from the source code. Here is more about PDD and about me.

@g4s8/z please, pay attention to this issue

There is an unrecoverable failure on my side. Please, submit it here:
PID: 11@ce4a654318ed, thread: PQ-CT2E6TK9B
com.zerocracy.farm.ruled.RdRules[130] java.lang.IllegalStateException: http://datum.zerocracy.com/latest/rules/pm/no-lost-estimates.xsl says: The estimate for job "gh:artipie/maven-adapter#74" exists in estimates.xml, but the job is absent in the WBS among 53 jobs.

0.53.7: CID: e7326c26-56ec-48b8-baf3-f4f70a824005, Type: "Add job to WBS"

There is an unrecoverable failure on my side. Please, submit it here:
PID: 11@ce4a654318ed, thread: PQ-CT2E6TK9B
com.zerocracy.farm.ruled.RdRules[130] java.lang.IllegalStateException: http://datum.zerocracy.com/latest/rules/pm/no-lost-estimates.xsl says: The estimate for job "gh:artipie/maven-adapter#74" exists in estimates.xml, but the job is absent in the WBS among 53 jobs.

0.53.7: CID: 9e40df0d-14a2-43f8-81fd-076b3b1e0736, Type: "Add job to WBS"

The job #129 assigned to @carlosmiranda/z, here is why; the budget is 30 minutes, see §4; please, read §8 and §9; if the task is not clear, read this and this; there will be a monetary reward for this job

@0crat refuse

@0crat refuse

@0crat refuse (here)

@carlosmiranda The user @carlosmiranda/z resigned from #129, please stop working. Reason for job resignation: Order was cancelled

@0crat refuse (here)

@carlosmiranda Job gh:artipie/rpm-adapter#129 is not assigned, can't get performer

The job #129 assigned to @victornoel/z, here is why; the budget is 30 minutes, see §4; please, read §8 and §9; if the task is not clear, read this and this; there will be a monetary reward for this job

@0crat refuse

@0crat refuse (here)

@victornoel The user @victornoel/z resigned from #129, please stop working. Reason for job resignation: Order was cancelled

@0crat refuse (here)

@victornoel Job refused in 13 hours - no penalty, see §6

The job #129 assigned to @marceloamadeu/z, here is why; the budget is 30 minutes, see §4; please, read §8 and §9; if the task is not clear, read this and this; there will be a monetary reward for this job

@marceloamadeu/z this job was assigned to you 5days ago. It will be taken away from you soon, unless you close it, see §8. Read this and this, please.

The puzzle 79-4e9f7178 has disappeared from the source code, that's why I closed this issue.

@sereshqua/z please review this job completed by @marceloamadeu/z, as in §30; the job will be fully closed and all payments will be made when the quality review is completed


When installing with pip3, 'models' folder isn't included in the installation

I installed this module with pip3 as:
pip3 install sparkts
But the 'models' folder didn't get installed with it. I navigated to the following path:
/path-to-python3/site-packages/sparkts/
This folder didn't have 'models' folder which is expected.

Just stumbled across the same issue.
This might be, because pip installs version 0.2.0.
The current version on GitHub is 0.3.0.
Is it possible to push the 0.3.0 version to pip?
Or is there some feature request/roadmap we are waiting for?


Handling of touch events seems to be missing

In chrome the touch events are fired prior to the mouse/click emulation. This may lead to a click outside of the next button, closing the tour.
Can you extend the event handling to include touch events for mobile devices please.
Or this may be a bug in some way.

Thank you for opening the issue. We are already handling the touch events, however I did found and fixed a bug in the latest release (0.9.2) where tap was closing the tour. Could you please try with that and see if it solves the issue?
Please re-open if the issue still persists. Thanks!

I am seeing this behavior on the current demo - at least I thought I was, until I turned on touch visualization in the android developer options.
Making the buttons bigger on the demo for mobile clients would avoid the impression, which I had,  of this being broken on mobile.

Hey, really nice lib!
However, unfortunately touch still does not seem to be working in current Version 0.9.5, is it?

try 0.9.3


Icecast and Shoutcast metadata detect [Android]

Metadata detection was implemented, using the code created by @saschpe (android-exoplayer2-ext-icy or ExoPlayer), where it performs HTTP detection for ExoPlayer.
The icy-update event that is called when the meta-date is updated.
this._updateIcyMetaData = TrackPlayer.addEventListener("icy-update", (data) => {
    console.log("icy-update", data);
})

Two attributes are sent in this event:

streamTitle: Matches the song title and artist currently playing in streaming.
streamUrl: Contains more information that is sent to Icecast in the format as a link, this information is defined in the software used for the transmission. (In Shoutcast servers this option is not possible to change).

The icy-header event was disregarded for this implementation because it was taken into account that it is not "necessary" to use the same event.
The type ICY audio was added because the operation with the HLS is possible, but through the @saschpe code the same does not work, because in HLS the sending of the metadata is not at the beginning of the data received obligatorily.
To update the notification, it is recommended to use the code implemented by @HybridFox (#331). Because the direct updating of the information would not be a good thing, because the person can obtain information from the metadata and make a query in an api and with the result obtained to update the notification.

In the application I'm developing. The cover code of the song is sent in streamUrl, so I make a query in my API.

If you want to test, you can use this Track for testing:
{
    "type": "icy",
    "id": "1111",
    "url": "https://live.hunter.fm/pop2k",
    "title": "Hunter.FM",
    "artist": "The POP2k Channel",
    "artwork": "https://cdn.hunter.fm/image/thumb/station/pop2k-first/300x300ht.jpg"
}

Note: Sorry for the previous code, the same was done after getting many problems with other "players" being so was doing during a time of fatigue.

Note²: If you want to implement the icy-header I can do it.

We finally merged #465, but I think I'll be holding this PR a little longer.
The developer from the icy extension pushed a PR to ExoPlayer (https://github.com/google/ExoPlayer/pull/4993), which has been approved and it's currently on their dev branch. Once it's released, we can move to a new, clean solution, that also supports ID3, SCTE35 and EMSG metadata, and no new extensions will be required.

Closed / Discontinued.
Replaced with #552 (Best Performance).


PBPZ: Zones erroneously created for Raidable Shelters bases

For some reason, PBPZ is creating PVP zones for Raidable Shelters. Zones are only supposed to be created for player-owned buildings and shelters.
Owner ID appears to be 0 for the physical shelter & door prefabs, but maybe the "simple privilege" has an owner, or maybe I omitted the check from shelters?
Investigation needed.

Fixed in 1.0.5 - Raidable Shelters has to spawn with an owner and then clear it, so PBPZ needs to wait a tick (and also check on plugin load, oops)


Playframework 2.7 support

Gradle hard-codes the Play versions it supports (https://github.com/gradle/gradle/blob/master/subprojects/platform-play/src/main/java/org/gradle/play/internal/platform/PlayMajorVersion.java#L30). Play 2.7.0 is in the works (2.7.0-M2 has been released), so it might be nice to update Gradle to support this series as well
Expected Behavior
Being able to use the play plugin with Play 2.7.0-M2
Current Behavior
Error message:
Exception thrown while executing model rule: PlayApplicationPlugin.Rules#createBinaries(ModelMap<PlayApplicationBinarySpec>, PlayApplicationSpecInternal, PlatformResolvers, PlayToolChainInternal, PlayPluginConfigurations, File, ProjectIdentifier) > create(binary)
   > Not a supported Play version: 2.7.0-M2. This plugin is compatible with: [PLAY_2_2_X, PLAY_2_3_X, PLAY_2_4_X, PLAY_2_5_X, PLAY_2_6_X].

@raboof Is there a release date for the GA version of Play 2.7?

I think I heard mentions of September (but no huge changes are expected compared to the already-available 2.7.0-M2)

@raboof Is there a publicly available timeline for 2.7?

Still no support for Playframework 2.7.0. Downloaded latest scr code 5.2.0-RC1 and still the same error.
Any plans to include 2.7.0 ?

Play 2.7.0 was literally released yesterday. Indeed gradle does not yet support it (otherwise this ticket would have been closed ;) ), but work on that is under way in #6374.

So when the new play will be supported, any ETA on this issue?

Play 2.7 support should be contributed to gradle/playframework. Issue https://github.com/gradle/playframework/issues/92 is open to track this work.
I will leave this issue open until we finalize the last detail of the transition to the external plugin.

@lacasseio - Any update on this item? Whether extracting or merging here, I believe many of us are currently without a path forward.
There is a PR to enable support, here: https://github.com/gradle/gradle/pull/6374.

@lacasseio - Thanks, this makes sense and I understand that there are many priorities when aiming for a release. I will work on migrating that PR to the gradle/playframework plugin and will tag you once it is complete.

Hey @lacasseio, I've opened a PR with the changes here: https://github.com/gradle/playframework/pull/110. Please take a look at your convenience and let me know if there are any other items I should address. Thanks!

The PR was merged, I'm closing this.

Hey @lacasseio / @big-guy , the PR was merged into gradle/playframework but there are still failing tests and a release cannot be cut until the tests have been resolved, so there is still no release with 2.7 support. We are actively working on resolving the test failures here, but are new to the project and not sure how quickly we'll be able to turn around a solution.
In the meanwhile, we have been blocked on this item for some time - wondering if it is possible to merge the previous PR (https://github.com/gradle/gradle/pull/6374) into the gradle repo directly as it was determined to work, as a temporary solution?


Replace clang::Decl::isHidden() with clang::Sema::isVisible()

clang::Decl::isHidden() is misleadingly named (see the associated FIXME comment) and doesn't do what we want when -fmodules-local-submodule-visibility is turned on.
This change alone isn't unfortunately enough to make Swift work with -fmodules-local-submodule-visibility. For one thing, Clang's Objective-C component doesn't work correctly with -fmodules-local-submodule-visibility:
https://bugs.llvm.org/show_bug.cgi?id=46248
However, in the meantime, we should still clean up our use of
clang::Decl::isHidden().

@swift-ci Please test

@swift-ci Please Test Source Compatibility

@swift-ci Please Test Source Compatibility

@swift-ci Please Test Source Compatibility

@swift-ci Please Test Source Compatibility

@swift-ci Please Test Source Compatibility

@swift-ci Please Test Source Compatibility

I didn't get good output from the CI source compatibility tests, so I ran them locally and compared against the baseline. No additional failures. I will merge this PR.


Identity mod crashes the game Forge 1.20.1

Mod Name
Identity
Mod Homepage
curseforge.com/minecraft/mc-mods/identity
Describe the bug
It crashes the game while loading.
Steps to reproduce

Click play in Minecraft Launcher.
Red Mojang loading screen appears
The game crashes.
...

Logs
https://hastebin.com/share/ixaxaropem.vbnet
Additional context
Please help!

[26Nov2023 14:03:02.561] [main/WARN] [mixin/]: @Redirect conflict. Skipping identity.mixins.json:LivingEntityMixin from mod identity->@Redirect::cancelAirIncrement(Lnet/minecraft/world/entity/LivingEntity;I)V with priority 1000, already redirected by exotelcraft.mixins.json:entity.LivingEntityMixin from mod exotelcraft->@Redirect::baseTickAir(Lnet/minecraft/world/entity/LivingEntity;I)V with priority 1000

This is a conflict between the Identity and Exotelcraft mods. I've tried installing both in a Forge instance without Connector installed and the game crashed with the exact same error. I recommend reporting this issue to the mods' authors.


Meetup API Communication

This uses a Meetup API key, which will be sufficient for our purposes, to access live event and RSVP data on page load. This will not scale due to rate limiting, but the communication is open in preparation for database work.

Configured dotenv and example file
Added Meetup service object to communicate with API
Added Event and Member models, with base model for helpful magic methods
Added base layout Twig view
Added a route and view for /
Changed route for event to /event/{eventId}, where eventId is the remote id from meetup.com

Looks good to me. After this gets merged I can fix up the controller so it gets the Meetup service injected in the constructor.

@nickescobedo Do you have access to merge PR's?

@SammyK Si senor.


Fixed token names and added check for min 30 days

Testing on this. When I try to run brownie run influx_metrics locally on the branch, I get an error even though there's at least 30 days of data:
id Sushiswap: UNI / WETH
Fetching prices for Sushiswap: UNI / WETH ...
Number of days between latest and first data point: 29 days 23:24:57
This pair has less than 30 days of data, therefore it is not being ingested to ovl_metrics_test

which has to do with period size (how frequently the cron fetches from price cumulative in influx_sushi) - we'll always receive < 30d of data from the query.
Easy way to resolve is to change bool condition in L211 to be
if data_days < timedelta(days = params['points'] - 1):
   print(f"This pair has less than {params['points']-1} days of data, therefore it is not being ingested to {config['bucket']}")
   continue # Go to next iteration of loop (ie, next quote) if condition is not satisfied

Committed these changes to the branch and seems to be working great


Code Completion Bug

Should be selecting without using prefix.

Hard to see, but here the cursor is between i. and ceil().

@lukechurch Bug mentioned on Monday.

@devoncarew Should this be closed? I don't understand the original issue, though the current playground UI produces a completion window that looks identical.

Let's close. I think we should audit the completion UI in any case, so can open any necessary bugs as we hit them.


more edits

moved chapter 12 solutions from charlie to delta, and edited SI unit for mass to kg

Thanks much! Appreciated.


upgrade to 1.0.3

Hi! This is the friendly automated conda-forge-linting service.
I just wanted to let you know that I linted all conda-recipes in your PR (recipe) and found it was in an excellent condition.

@conda-forge-admin, please rererender.

@conda-forge-admin, please rerender.


feat: update @pellegrims/nx-remotecache-s3 to 2.1.3

Resolves #213
BREAKING CHANGES: Minimum Nx version is now >=16.0.0

@robinpellegrims ok here we go. This should be released as a major version change

This is looking much better! I think the deploys are expected to fail because workflows triggered from a fork don't have access to the secrets, but otherwise I think we are finally good 🚀

Thank you so much for pushing this forward.
Could the reason for not detecting a major bump be that you put "BREAKING CHANGES" instead of "BREAKING CHANGE" in the concerning commit?

Yeah so we're using @jscutlery/semver which is using conventional-changelog-angular under the hood. According to https://github.com/conventional-changelog/conventional-changelog/tree/master/packages/conventional-changelog-angular#footer: Breaking Changes should start with the word BREAKING CHANGE: with a space or two newlines. The rest of the commit message is then used for this.

Thank you so much for pushing this forward @rathpc.
Could the reason for not detecting a major bump be that you put "BREAKING CHANGES" instead of "BREAKING CHANGE" in the concerning commit?

🤦 That could very well be the case. Let me open another PR


Allways active?

Expected Behavior
For uBlackList to be always active. I cant even reach reddit as they have blacklisted so many vpn nodes so there is no reason to ever have reddit links populate in search results especially if I cant view their content. It really sucks because sometimes the first 5 results will be links to reddit.
Actual Behavior
Currently I have to activate uBlackList for it to remove undesired sites from search results every time I open a browser. I have looked through the settings and cant find any way to add auto enable by default. Maybe I'm missing something?
Maybe this is more of a feature request more than a bug report.
Steps to Reproduce the Problem

Open Browser
use a search engine "DuckDuck" is what I generally use.
Then you have to select activate from the addons bar

Specifications

Browser: Firefox, Linux-Arch
Other extensions/add-ons: Ublock, noScript, libRedirect and useragent switcher

Search engine: DuckDuckGo
Language: English
Region: USA

Just to make sure: did you enable DuckDuckGo in the options page (as per “Other search engines”)?

Yes I do have DDG enabled in the 'other search engines'. I enabled all of the options for search engines even though I really dont use them.

I can attest to this issue.
I just tested and it seems to be mostly a problem with the Firefox version of the extension.
When Firefox is launched, the extension isn't active by default on any search engine besides Google:

This happens even if you've already enabled the search engines through the options page.
Once you activate one them (e.g. for DuckDuckGo), all other secondary extensions seem to become active too.
I tested on Firefox 124.0.1 (flatpak version), and on Chromium.
I'll look further into this and see if can find a possible solution.

This is especially problematic on Firefox Mobile, since you don't always know when the OS has closed the browser in the background.

This comment would appear to be relevant, but there are no changes in it for some reason. 5b88625cb8afbfd2513bab33323a6c7e16ad70b8


missing -d flag from https://github.com/cloudfoundry-community/port-forwarding-boshrelease/blob/master/jobs/port_forwarding/templates/bin/forward_ports.sh.erb#L28

Discussion of issue and missing -d flag on #bosh channel https://cloudfoundry.slack.com/archives/C02HPPYQ2/p1490081101496048

@dpb587-pivotal thx, updated

This issue also manifests on the host machine - without this PR I cannot even curl google.

I'm going to log this issue within this PR. When I apply this PR to a bosh-lite, the containers do not have same routes available to them:
api/55564424-a752-4e6a-83f3-59c958200f24:~$ curl -k https://api.10-213-13-10.sslip.io/v2/info
curl: (7) Failed to connect to api.10-213-13-10.sslip.io port 443: Connection refused
api/55564424-a752-4e6a-83f3-59c958200f24:~$ curl google.com
<meta http-equiv="content-type" content="text/html;charset=utf-8">
<TITLE>302 Moved</TITLE>

302 Moved

The document has moved
here.

I've added changes to allow loopbacks.

Damnit, whilst curl -k https://api.10-213-13-10.sslip.io/v2/info now works from the host vm, it still does not work from within garden containers (bosh-lite instances) within that VM.

I've rebuilt my bosh-lite using the original https://github.com/cloudfoundry-community/port-forwarding-boshrelease/blob/master/jobs/port_forwarding/templates/bin/forward_ports.sh.erb#L28 but I'm still getting the same behavior - containers within the bosh-lite vm are unable to curl -k https://api.10-213-13-10.sslip.io/v2/info.
I swear this used to work. Until the middle of this year I had lots of CI pipelines that deployed things to the same bosh-lite, registered service brokers, etc.

I'm confused; are you saying this change is no needed or working as expected?

This PR does something important; but apparently not everything. Without this PR as it stands, neither containers nor the host machine has a loopback to the port forwarding/nor egress access. The PR currently allows egress internet access and allows host machine to access the port forwarding via loopback.
But I cannot figure out how to allow containers (eg bosh-lite instances) to accsss the port forwarding rules.
Ideas?

From: Danny Berger<EMAIL_ADDRESS>Sent: Wednesday, November 1, 2017 10:41:58 AM
To: cloudfoundry/networking-release
Cc: Dr Nic Williams; Author
Subject: Re: [cloudfoundry/networking-release] missing -d flag from https://github.com/cloudfoundry-community/port-forwarding-boshrelease/blob/master/jobs/port_forwarding/templates/bin/forward_ports.sh.erb#L28 (#13)
I'm confused; are you saying this change is no needed or working as expected?
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHubhttps://github.com/cloudfoundry/networking-release/pull/13#issuecomment-340946930, or mute the threadhttps://github.com/notifications/unsubscribe-auth/AAAAbJHiyjKwwWZ3iIOfGHQvh4NiYwWJks5sx75WgaJpZM4Mjca9.

@dpb587-pivotal this PR can be merged; the remaining issue of containers having egress access to host loopback can be solved later

@cppforlife @dpb587-pivotal can we merge this please and cut a release?

@dpb587-pivotal @cppforlife this is the 1 year birthday of this ticket (I was randomly explaining why this PR exists and noticed its creation date). Could we merge + cut a release?


Line breaks are missing in LibreOffice Writer

Hello,
Line breaks are missing in LibreOffice Writer (v<IP_ADDRESS>, Ubuntu) but show up in online viewer (for example https://onlinedocumentviewer.com).
Steps to reproduce:

Modify test '25 Adds line breaks by default' (https://github.com/guigrpa/docx-templates/blob/4c007ad5b5f436996de679d6a398a425f07d5f41/packages/docx-templates/src/tests/indexNode.test.js#L465) to output document.
Open created document in latest LibreOffice Writer.

Expected result:
According to test template, there should be two line breaks starting with words 'Nullam' and 'Morbi'.
Actual:
Line breaks are missing.

I'm afraid this library only targets MS Word. Sorry about that!

I found a workaround that seems to work in LibreOffice and FreeOffice TextMaker:
const literalXmlDelimiter = "||";
const preserveWhitespace = string =>
  string
    .split(/[\n\r]+/) // could use different split criteria here
    .map(
      para =>
        `${literalXmlDelimiter}<w:p>${literalXmlDelimiter}${para}${literalXmlDelimiter}</w:p>${literalXmlDelimiter}`
    )
    .join("");

In other words, switch from using <w:br> to wrapping each paragraph in <w:p></w:p> tags. I can then wrap all my strings with this function.
If anyone else finds this helpful, I can make a PR... lmk!


Invalid index thrown by quill

Quill throws an invalid index when we try to apply {ops: []} to an empty quill editor.
We should check that we're not trying to apply that kind of operation.

You can reproduce it by emptying a quill instance. In another browser, just do quill.setContents({ops: []}) and you get the bug.

I think that the issue is that quill cannot handle properly the fact that we want to put a cursor at position 0 even though quill has no content at all.

[https://github.com/quilljs/quill/issues/357]
This was a quill issue in the develop branch


python component

pycco:  The literate-programming-style documentation generator.

change json output to yaml output

nose: a nicer unittest for python
nose2: the successor to nose, based on unittest2
pytest: a mature full-featured python testing tool
unittest: unit testing framework
tox: auto builds and tests with multiple python
coverage: code coverage measurement.
line_profiler: line-by-line profiling
memory_profiler: monitor memory usage of python code
pybuilder: continuous build tool for python
green: a clean, colorful test runner
mamba: the definitive testing tool for python

LGTM