Support ICS files

Feature
Support ICS files.
https://en.wikipedia.org/wiki/ICalendar
Sample ICS file:
BEGIN:VCALENDAR
PRODID:-//Microsoft Corporation//Outlook MIMEDIR//EN
VERSION:1.0
BEGIN:VEVENT
DTSTART:19980114T210000Z
DTEND:19980114T230000Z
LOCATION:My office
CATEGORIES:Business
DESCRIPTION;ENCODING=QUOTED-PRINTABLE:This is a note associated with the meeting=0D=0A
SUMMARY:Meeting to discuss salaries
PRIORITY:3
END:VEVENT
END:VCALENDAR

See this repository for more calendars: https://github.com/xmha97/Calendars

I looked into it, indeed the database could be in .ics and the file could be synced for example using vdirsync. I tried, and it seems to work, but the first problem I see that although technically ISC format is clear, actually everybody uses slightly different format.
Nextcloud, for example, creates me a separate ICS file for each event. Other platforms, as far as I see, can put many events into the same file, which becomes incompatible with Nextcloud...
Then, it's also not clear to me how to manage todo tasks. Should they be in the same file, in a different file, or each in a different file.
p.s. I am new to this system, so maybe I just don't get it...

My events are in Google Calendar and I want to see them in this app.
Google Calendar publishes events in the following link format:
https://calendar.google.com/calendar/ical/en.usa%23holiday%40group.v.calendar.google.com/public/basic.ics

If I may add to this feature request the option to add these from the commandline. I am using aerc for emails and it would be great to just do something like piping it into calcure or providing it with a ---import-ics [file] flag to add the event.

Thank you, I'll look into the khal example!

Hello,
I am just here to support the request and give a little more perspective.
Currently I use Khard, Khal and Todoman, using files in vdir folders.
Folders synchronized with vdirsyncer to a Caldav Baikal/Sabre server, itself synced with DAVx5 and then a fork of Etar-Calendar and Tasks.org on the phone.
Most of the people who want a CLI or TUI stack with open and proper protocols, are on these tools. One tool for each feature, all connected to each other. Perfect.
If you don't care about separating things people use Nextcloud, for more simplicity, but it's the same protocols.
This is one of the few combinations that works at the moment if you want to replace what a closed ecosystem or a GUI like Gnome/Evolution can do.
But we have 3 major problems that got stuck for years:

Khal and Todoman are hardly TUI, just formatted CLI.
Khal and Todoman don't work in symbiosis. Same thing for the address book with Khard.
Todoman does not support basic VTODO features, like categories.

As a result, things that work on my phone or on Evolution are not available in my terminal.
Everyone regularly check if replacements are coming, but either the newcoming apps are incompatible with the existing stacks, they leave out essential features, or they have a closed ecosystem like emacs or todo.txt.
I was disappointed with Calcurse, which is useless, as it can only import one calendar and only supports a third of the basic VTODO fields.
For the moment my hopes are on Calcure, I will try to invest time here.
Honestly, if this project manages to be compatible with caldav or vdir, and propose a dozen VTODO fields. A lot of people will rush here.

Thank you for the details. I agree it would be great but I still don't see any easy way to do it. As far as I can see from calcurse experience, they implemented that several years ago, but it is not finally very usable, like you said some fields are missing, and their issue section is filled with bags related to caldav.
On the surface, it does not look very difficult. For example, to sync tasks you just need to write a new loader and a new saver method in the 'repository.py', instead of load_tasks_from_csv(self) and save_tasks_from_csv(self).
In practice, I can only see it working if there is a good ics exporting/importing library for python, but with each library I tried I have some problems: ics.py mentioned above, icalendar does not even seem to be developed any longer, while formats change...
Besides problems with libraries, I have some other problems like which of calcure features go into which field and is there a field for that at all. But this we can try to resolve with time.
For anyone willing to contribute with caldav support:
It would be very helpful is somebody could write a simple working example of import/export from a folder of real ics files (not just a link to the docs please, I read the docs for all these libs.). Let's start with tasks. Please take several todo files (more than one), each must have a few mandatory fields like DESCRIPTION, STATUS, DUE plus a few fields that remain unused (like they are unsupported). The minimal working example should read these files, and save fields for each file into some variables, change something, and export back into original files. Fields originally present in the files, but not imported, should not be lost.
Thank you for your interest to the project :)

Thank you, I will contribute.
I already have some informations that I wrote recently. I hope something help.
I added a small analysis of a folder with VEVENT and VTODOs. When I got the time I will make a better from more sources and with other filds.
ANALYSIS OF SOME TOOLS THAT I USE OR USED
VDirSyncer :

Linux CLI Python syncing tool.
Alternatives : manual scripts ?
Use CALDAV/CARDAV
Limited parsing of ICALENDAR and VCARD with internal python VOBJECT
Forked from icalendar
Respect RFC 5545, but probably not limited by it at as it only parse UID and cut large sets of Sections to individual files.

Result : The easiest way to work with ICALENDAR on Linux without CALDAV implementation.
Baikal

PHP server.
Alternatives : Radicale, Nextcloud ?
Use CALDAV/CARDAV
Sync with Vdirsyncer
Parse ICALENDAR and VCARD with VOBJECT

Current PHP library sabre/vobject 4.4.3
It's a pretty good reference and there is some php tools
It can use JCAL/JCARD and XCAL/XCARD too.

I found 3 references to RFC 5545 from 2009, but none to RFC 7986 from 2016.
I found no references to "X-" fields for HTML or "VVENUE" sections for location.

Result: Powerful and clean php library respecting standard RFC 5545 for ICALENDAR.
DAVx5

Android syncing app.
Alternatives : Using CALDAV directly from the Calendar or Todo apps.
Use CALDAV/CARDAV/WEBDAV
It process ICALENDAR with ical4android

Using the java library ical4j

They are referencing a lot of RFC and new standard additions:

RFC5545 - Internet Calendaring and Scheduling Core Object Specification (iCalendar)
RFC5546 - iCalendar Transport-Independent Interoperability Protocol (iTIP)
RFC6047 - iCalendar Message-Based Interoperability Protocol (iMIP)
RFC6868 - Parameter Value Encoding in iCalendar and vCard
RFC7953 - Calendar Availability
RFC7808 - Time Zone Data Distribution Service
RFC7986 - New Properties for iCalendar
RFC7529 - Non-Gregorian Recurrence Rules in iCalendar
RFC9073 - Event Publishing Extensions to iCalendar
RFC9074 - "VALARM" Extensions for iCalendar

Result: Powerful, modern and extensive libraries but messy as a reference and in Java.
Tasks

Android Todo app, fork of Astrid.
Alternatives : Astrid and some others
Use CALDAV and ICALENDAR
Reference a compatibility with a lot of other solutions
Support limited Markdown in Title and Descriptions
Support Sub-tasks
Support recurring tasks, but by changing dates instead of creating new instances as the spec suggests
I don't see  anything in the code than goes beyond the RFC 5545 for ICALENDAR.
It shares some libraries with Davx5.

Result: Not really a library reference but a good choice of limited features and good ICALENDAR export example.
Nextcloud Calendar/Tasks

JS Web app
Use CALDAV
Sync with Vdirsyncer
Support Markdown in some fields
Support Sub-tasks
No support for recurring tasks
Parse ICALENDAR with ical.js
And 2 wrappers : calendar-js and cdav-library
Respect RFC 5545, features are limited to it.
I see some more libraries but for reading content from other services.

Result: Largely used today, compatibility need to be tested.
Gnome/Evolution

Desktop Calendar application
Sync/Import/Export CALDAV and ICALENDAR/VCARD.
Calendars and tasks are managed with the C library Libical
They are referencing some RFCs :

RFC5545 - Internet Calendaring and Scheduling Core Object Specification (iCalendar)
RFC5546 - iCalendar Transport-Independent Interoperability Protocol (iTIP)
RFC6047 - iCalendar Message-Based Interoperability Protocol (iMIP)
RFC7529 - Non-Gregorian Recurrence Rules in iCalendar
RFC7986 - New Properties for iCalendar
RFC9073 - Event Publishing Extensions to iCalendar
RFC9074 - "VALARM" Extensions for iCalendar

As a combined tool it feature a lot of backends and support markdown, sub-tasks and recurring tasks.

Result : A good bench because it work with every ICALENDAR sources and probably most features.
RESULTS:

For now stick with RFC5545, the most recent ones are not really used yet and provides feature way beyond TUI usages.
Do not sync with CALDAV, but with a local vdir folder.
Support Sub-tasks, they are widely used.
Support Opt-in limited Markdown for at least the descriptions.
Support recurring tasks, most tools will support it soon. The easiest is to copy/delete task instances following a pattern.
If you keep implemented Non-Gregorian calendars, it's not an issue as it's still translated in universal time. But you may have to check RFC7529 - Non-Gregorian Recurrence Rules in iCalendar.
One ICS file per event or task, even subtasks, VDirSyncer or Baikal separate them.
Use timezone features.
Use multiple calendars per account. CalDav, Vdir, Baikal and Davx5 support it.
For features that you can not report in the ICS file, don't do it.

Tasks has file attachments and color info for categories that are not synced in the ICS and it's not a big deal.
calendars and todos are not meant to be teamwork oriented, but private time management tools with some import/export features.
You can have a Calcure local db where there is more features than in ICS files.
Or keep them in "X-" fields, but no other tools will probably use them and you can not be sure that the infomation will not be altered by another vendor "X-" fields usage.

ANALYSIS OF A CALENDAR EVENT ASSOCIATED WITH A TASK AND 2 SUB-TASKS
The tasks where created on android with Tasks. Then related to an event on the ETAR calendar app.
Then I synced it all by Davx5->Baikal->Vdirsyncer.
I get a folder for my calendar with 6 files:

2 metadata files, optional and related to the calendar itself:

color -> contain some RGB value "#F24D00"
displayname - > contain a name for this Calendar

4 .ics ICALENDAR files:
The filenames are all UIDS but I put descriptive name for here.

event-1.ics
task-1.ics
sub-task-1.ics
sub-task-2.ics

event-1.ics: A calendar event (VEVENT) with a reminder (VALARM)

BEGIN:VCALENDAR
VERSION:2.0
PRODID:DAVx5/4.2.2-ose ical4j/3.1.2 (org.lineageos.etar)
BEGIN:VEVENT
DTSTAMP:20220718T105218Z
UID:78e8251c-9de3-4349-b0e2-f3cadb2560f1
SEQUENCE:1
SUMMARY:Test
LOCATION:Paris\, France
DESCRIPTION:My description\n\n# Title\n\n- list\n- list
DTSTART;VALUE=DATE:20220725
DTEND;VALUE=DATE:20220726
CLASS:PRIVATE
STATUS:TENTATIVE
BEGIN:VALARM
TRIGGER:-PT10M
ACTION:DISPLAY
DESCRIPTION:Test
END:VALARM
END:VEVENT
END:VCALENDAR

DTSTAMP:(TEXT)indicates the date/time that the instance of the iCalendar object was created.
SEQUENCE:(INTEGER)sequence number of the calendar component within a sequence of revisions
SUMMARY:(TEXT)short summary or subject for the calendar component
LOCATION:(TEXT) intended venue for the activity defined by a calendar component
DESCRIPTION:(TEXT) more complete description of the calendar component
DTSTART;VALUE=DATE:(DATE-TIME bu default, but can specifie another value type like here DATE) specifies when the calendar component begins
DTEND;VALUE=DATE:(DATE-TIME bu default, but can specifie another value type like here DATE) specifies when the calendar component ends
CLASS:(TEXT) the access classification for a calendar component
STATUS:(TEXT) property is used by the "Organizer" to provide a confirmation of the event to the "Attendees".
TRIGGER:(DURATION by default, but can specifie another value type) specifies when an alarm will trigger
ACTION:(TEXT) action to be invoked when an alarm is triggered

task-1.ics: A calendar task (VTODO) with a reminder (VALARM)

BEGIN:VCALENDAR
VERSION:2.0
PRODID:DAVx5/4.2.2-ose ical4j/3.1.2
BEGIN:VTODO
DTSTAMP:20220718T061550Z
UID:1678082195267907683
CREATED:20220718T061536Z
LAST-MODIFIED:20220718T061536Z
SUMMARY:(Sans titre)
GEO:48.85658;2.35183
DESCRIPTION:My description\n\n# Title\n\n- list\n- list
PRIORITY:1
STATUS:NEEDS-ACTION
CATEGORIES:TestTag1,TestTag2
X-APPLE-SORT-ORDER:678788985
DUE;VALUE=DATE:20220725
DTSTART;VALUE=DATE:20220718
BEGIN:VALARM
TRIGGER;RELATED=END:PT0S
ACTION:DISPLAY
DESCRIPTION:Default Tasks.org description
END:VALARM
END:VTODO
END:VCALENDAR

LAST-MODIFIED:(DATE-TIME) analogous to the modification date and time for a file in the file system
GEO:(two SEMICOLON separated FLOAT values) information related to the global position for the activity
PRIORITY:(INTEGER) relative priority for a calendar component
STATUS:(TEXT) can indicate that an action item needs action, is completed, is in process or being worked on, or has been cancelled
CATEGORIES:(TEXT) categories for a calendar component, more than one category can be specified separated by COMMA
TRIGGER;RELATED=END:(DURATION by default, but can specifie another value type) A trigger set relative to the end of the event or to-do

sub-task-1.ics: A calendar sub-task (VTODO) related to another

BEGIN:VCALENDAR
VERSION:2.0
PRODID:DAVx5/4.2.2-ose ical4j/3.1.2
BEGIN:VTODO
DTSTAMP:20220718T061550Z
UID:849058032632992142
CREATED:20220718T061536Z
LAST-MODIFIED:20220718T061536Z
SUMMARY:SubTask1
PRIORITY:9
STATUS:NEEDS-ACTION
RELATED-TO;RELTYPE=PARENT:1678082195267907683
END:VTODO
END:VCALENDAR

RELATED-TO;RELTYPE=PARENT:(TEXT) represent a relationship or reference between one calendar component and another
SOME THINGS:

I did not use recurrency in this example. But it is just a instance replication feature.
This example use apparently only 20% of the fields available in the RFC. But reading the RFC is hard, I look for a better doc. I found this one for an older RFC : https://www.kanzaki.com/docs/ical/.
TEXT fields are escaped so it's easy to use markdown without any addition
I don't see any relation info beetween the VEVENT and VTODO even is Tasks created the VEVENT from it. It's simple like that, but it would be nice if a link existed, or you parse SUMMARYs and DTSTART (but they are optional...).

And about the libraries, 2 of them were listed above in this thread, there is a third one, vobject.

ics-py

Well documented
Maintained
But, too much issues like you said above

icalendar

Partial documentation
Maintained
Use by Khal or Vdirsync projects, but with wrappers or forked because of limitations
The lack of some parts in the documentation make it hard to check what is missing actually

vobject

Well documented
Not maintained for 4 years but still get PRs and issues. Apparently the maintainer is still in business in the calendars but stopped sharing updates.
Support VCARDs too, can be nice to parse birthdays
Support most feature lacking in the 2 other ones
A lot of ongoing issues and PRs that need to be assessed to see if it's usable.

Something like https://github.com/sabre-io/vobject but not in PHP would have been nice.

Okay, I had some time to work on it. For now, I am trying to figure out limitations and possible issues with different format.
But so far, this script based on ics library works quite well with Nextcloud-generated ics files (everything in one file). I'll leave it here for future reference:
from ics import Calendar

event_file = "myevent.ics"
task_file = "mytasks.ics"

print("====== EVENTS ======")

with open(event_file, 'r') as f:
    ics_text = f.read()

c = Calendar(ics_text)
for event in c.events:
    print(event.name)
    print(event.begin)
    print(event.all_day)
    print(event.description)
    print(event.status)
    print(event.classification)

print("====== TASKS ======")

with open(task_file, 'r') as f:
    ics_text = f.read()

c = Calendar(ics_text)
for task in c.todos:
    print(task.name)

It's been a while, but I started implementing it. So far, n 170671c5dddb19936de9f3e4bf7d29ef9aaf06a9 I implemented read-only tasks from .ics files. You need to add path to your ics file (which is synced by vdirsyncer) to your config:
ics_tasks_file = /home/user/.config/calcure/mytasksfile.ics

I tested with nextcloud, it works pretty well. I'll add events support as well, and it should be available to everyone in version 2.7. Then, we'll test read-only mode a bit and think how to better implement editing mode and maybe switch completely to .ics file and migrate everybody.

Okay, I just published version 2.7 where viewing ics files is working. At least my tests with Nextcloud and vdirsyncer work. Please upgrade pip install --upgrade calcure, try with your cloud, and let me know how it works for you.
For instructions, see this wiki page and vdirsyncer manuals.
Have fun :)
p.s. it turns out that different calendar services implement csv file quite differently, so some issues are to be expected. If you experience one, please share.

Thank you for implementing this! I use vdirsyncer with a Baikal server, events and tasks are stored in the same .ics file. calcure displays both perfectly.

First of all, great app! Would it be possible to add wildcards to the ics_event_files option to identify multiple ics files? This is because I use khal/vdirsyncer and I sync to a folder rather than to a file.

Thank you!
Well, there is this problem with ics that different services either do separate files or all events in one file. I decided to go with the single file format because that's how you can import different calendars (like personal and work etc.), display them with different colors etc (it is coming in the next version). And in general, it seems the single file format is more common. So the option to have multiple files is really meant for different calendars rather than for different individual events.
There are other reasons, but long story short: It's difficult to support both types. Plus, I don't even have a clear idea how I'd implement wildcards from config...
However, I think the solution is simple, just add another record to your vdirsyncer config to also sync it as a single file (here is an example). So you'd have a single file for calcure and a folder for khal (can't khal read single files?). I know it's not optimal, but for now it's like that.

The solution was indeed pretty simple. It implies duplicates in terms of ics files, but that is not a big worry.
One question though: is calcure able to read timezones in ics files or did I do something wrong? Because I cannot seem to get the proper timezone for some events. By investigating this a little bit further, it seems that Calcure gets the DTEND and the DTSTART but not the X-WR-TIMEZONE.  Am I right?

One nice-to-have would be specifying the ics location as a url instead of a file path - then fetching it as the program starts.

Thank you for PR, it works great! I'll test a bit more and publish it as a part of 2.8 version.

You may want to update the docs for using google calendar also, in gcal go to settings | sharing | secret url and plug that in to the config file - note that the percent signs have to be escaped though.

You may want to update the docs for using google calendar also, in gcal go to settings | sharing | secret url and plug that in to the config file - note that the percent signs have to be escaped though.

That's handy! I was actually thinking what's the easiest way to read from gcal, and it seems to be the one. I managed to escape % with raw=True when I import that particular line.

Just pushed a new version to PyPi, in which, thank to @nfultz , displaying from URLs (for example Google calendar) also works. Here is the instruction how to set it up. Please upgrade and test.
In the next version, I'll rewrite it all a bit to get different colors for different calendars #40

Hi @WhyNotHugo , thank you for checking out this project!
Yeah, vdirsyncer is basically the way to go as far as syncing is concerned. I definitely don't plan supporting syncing with servers natively, so thank you for the awesome tool. I actually have lots of questions and thoughts, but I'll try to be concise:

Since I want to display events from both files and URLs, and they should be provided in the config (and for other reasons), I decided to use singlefile option rather than vdir convention. Here is the example the users are supposed to follow. So, is there anything inherently wrong with this approach and this config (except the necessity to reparse everything at startup)?
By the way, there is a problem I experienced that vdirsyncer creates multiple PRODID lines (py-ics library does not like it). People at py-ics assured me that this is against the law. So I am not sure if it is a bug or a feature. Anyway, I made a fix in calcure to skip those extra lines, but still...
I guess I mostly figured out parsing and displaying, but I still have doubts if I even should consider editing those files. Correct me if I am wrong, but it looks like different services have different fields in their ics and if we miss some of them (py-ics does not seem to support all fields), rewrite the file, and push it back to the server, the data will be lost, or maybe even the whole file is corrupted. So, potentially it could be a disaster. Am I overcomplicating this, or it's a real concern? I noticed that todoman takes care of this somehow. Is it via icalendar library, or there is something else? Sorry, I didn't fully understand the todoman's code base yet.

singlefile should work fine. The only downside is that other tools (e.g.: todoman) support only vdir so I wouldn't be able to use the same collection for both. TBH, vdir makes writing easier, but makes reading a bit more work.

vdirsyncer doesn't tamper the ics files in any way. IIRC, PRODID is a bit of a special one, but I'm 99% sure we never insert it anywhere. Are you sure that it's not the caldav server that's adding this? Never mind, it looks like this does happen for singlefile: https://github.com/pimutils/vdirsyncer/issues/763 I think this shouldn't be too hard to fix.

Yeah, I take care never to drop any unknown fields. Basically there's two types: icalendar.Todo which contains the data read from the file is semi-parsed form, but contains ALL data. OTOH, there'todoman.Todo, which is a wrapper for the above, which convenience methods like start() and is_complete(). However, I don't serialize todoman.Todo itself; I load the icalendar.Todo from disk, and update it with all the data from the todoman.Todo. All other fields are untouched. So basically, if you ics file had X-MAGIC: blue, that never makes it into the todoman.Todo instance.

This magic happens in VTodoWriter.serialize.

Sorry, I didn't fully understand the todoman's code base yet.

Yeah, it's become pretty complicated over the years, mostly to optimize parsing. Basically we have an sqlite database (the "cache"). It keeps the mtime (modification time) of each file and a bunch of fields like start time, due date, etc.
At startup, todoman reads the sqlite database, and traverses directories. If any new files are found, they're read and added to the database. If a file is an event (e.g.: don't care about it for todoman), it goes into another table in the DB, so we know not to bother reading it next time. If any files' last modified date has change, we re-read it and fill the sqlite db again. At this point, the cache is fully up to date (and this is a lot cheaper than parsing all files). todoman list and friends only read this sqlite database (which is updated at startup anyway).
Ironically, modifying an entry does re-read the original ics file as mentioned above: to keep all unknown fields intact.
The sqlite database is safe to delete at any time: it really is just a cache. The next run is just slower because it has to regenerate it.

After all the discussions, I implemented bd8e9aea758a737ddaa73016df1b79d56e792f6b reading from ics folders as well. Now, you can use single ics file, a url, or a folder or url files, the program should understand what you mean and parse accordingly. Please pip install --upgrade calcure to version 2.8 and test.

Things look good overall except that Fastmail's editor creates TZUNTIL lines which dateutil doesn't support yet.

@mathstuf does it crash the program? I think I can try to skip lines like that, as we already do with PRODID

It doesn't crash, but it does halt loading any other .ics files from the directory (not just the one that failed).

2.8.2 behaves a lot better, thanks. I think some recurrence rules are missing, but I want to compare with khal to make sure.

2.8.2 behaves a lot better, thanks. I think some recurrence rules are missing, but I want to compare with khal to make sure.

Unfortunately, recurring events are not supported yet, because last time I checked py-ics does not support it yet.

It doesn't crash, but it does halt loading any other .ics files from the directory (not just the one that failed).

Not it should be fixed too. All files beside problematic ones should be loading in version 2.8.2

I've pointed the config to an existing collection:
 calcurse_events_file = /home/hugo/.local/share/calendars/502708f4-4b94-4963-b042-f7340c829bdf/

But calcure just renders an empty calendar. Any ideas? (I'm using main).

I've pointed the config to an existing collection:
 calcurse_events_file = /home/hugo/.local/share/calendars/502708f4-4b94-4963-b042-f7340c829bdf/

But calcure just renders an empty calendar. Any ideas? (I'm using main).

@WhyNotHugo could you please check info.log file in your config folder? Does it mention anything relevant?

info.log is empty.

info.log is empty

Ah, wait, the calcurse_events_file is the path to the events from calcurse (another program).
The parameter to provide path to .ics files is ics_event_files =

Oh, I didn't notice it said calcurse; I thought it said calcure.
The auto-generated config file has this entry, but not ics_event_files, so I completely missed that.
Works okay now.

All files beside problematic ones should be loading in version 2.8.2

Hello, I guess I have a problematic one :D calcure quickly flashes a [ERROR] Failed to parse /path/to/calendar.ics before displaying an empty calendar at the terminal. Unfortunately I can't share the ICS file as it is my personal calendar of the last 5 years or so.
Any way we can figure out a workaround?

Any way we can figure out a workaround?

I edited the venv to log the exception and then searched where that came from for my issue.

Ok, I just removed the except branch that swallowed the exception and logged an error so I could get a better look at the exception itself:
Traceback (most recent call last):
  File "/home/blue/calcure_dbg_env/bin/calcure", line 8, in <module>
    sys.exit(cli())
  File "/home/blue/calcure_dbg_env/lib/python3.10/site-packages/calcure/__main__.py", line 1040, in cli
    curses.wrapper(main)
  File "/usr/lib/python3.10/curses/__init__.py", line 94, in wrapper
    return func(stdscr, *args, **kwds)
  File "/home/blue/calcure_dbg_env/lib/python3.10/site-packages/calcure/__main__.py", line 928, in main
    user_ics_events = event_loader_ics.load()
  File "/home/blue/calcure_dbg_env/lib/python3.10/site-packages/calcure/loaders.py", line 367, in load
    cal = ics.Calendar(ics_file)
  File "/home/blue/calcure_dbg_env/lib/python3.10/site-packages/ics/icalendar.py", line 69, in __init__
    self._populate(containers[0])  # Use first calendar
  File "/home/blue/calcure_dbg_env/lib/python3.10/site-packages/ics/component.py", line 54, in _populate
    raise ValueError(
ValueError: A VCALENDAR must have at most one PRODID

So it's still the problem with multiple PRODIDs. I'm on 2.8.2, I guess the fix you mention above is not working for this file @anufrievroman ?

Hi @eguiraud , thank you for reporting and investigating!
Could you please at least share the header part of your .ics and maybe also search your file for any PRODID lines? The thing is, I assumed that these lines go one after another in the header only (in which case additional lines are ignored), but maybe in your file it is not the case. If so, it's easy to fix, I'll try.

This is the beginning of events_personal.ics for my personal Nextcloud calendar as produced by vdirsyncer sync:
BEGIN:VCALENDAR
PRODID:-//IDN nextcloud.com//Calendar app 2.0.3//EN
CALSCALE:GREGORIAN
VERSION:2.0
PRODID:-//IDN nextcloud.com//Calendar app 2.0.2//EN
PRODID:DAVx5/4.1.1-ose ical4j/3.1.2 (ws.xsoh.etar)
PRODID:-//IDN nextcloud.com//Calendar app 2.3.1//EN
PRODID:DAVx5/4.0-ose ical4j/3.1.0 (ws.xsoh.etar)
PRODID:DAVx5/<IP_ADDRESS>-ose ical4j/3.1.2 (ws.xsoh.etar)
PRODID:-//IDN nextcloud.com//Calendar app 2.1.3//EN
PRODID:-//IDN nextcloud.com//Calendar app 3.4.2//EN
PRODID:DAVx5/3.3.10-ose ical4j/3.0.24 (ws.xsoh.etar)
PRODID:-//IDN nextcloud.com//Calendar app 3.2.2//EN
PRODID:-//Microsoft Corporation//Outlook 16.0 MIMEDIR//EN
PRODID:-//Kopano//8.7.9//EN
PRODID:DAVx5/4.1-ose ical4j/3.1.1 (ws.xsoh.etar)
PRODID:+//IDN bitfire.at//DAVx5/2.6.4-ose ical4j/2.2.6
PRODID:DAVx5/<IP_ADDRESS>-ose ical4j/3.1.2
PRODID:+//IDN bitfire.at//DAVx5/2.6.5-ose ical4j/2.2.6
PRODID:-//github.com/rianjs/ical.net//NONSGML ical.net 4.0//EN
PRODID:DAVx5/3.3.9-ose ical4j/3.0.21 (ws.xsoh.etar)
PRODID:-//Acme Widgets\, Inc.//NONSGML ExportToCalendar//EN
PRODID:DAVx5/<IP_ADDRESS>-ose ical4j/3.2.5 (ws.xsoh.etar)
PRODID:DAVx5/3.3.12-ose ical4j/3.0.28 (ws.xsoh.etar)
PRODID:DAVx5/3.4-ose ical4j/3.1.0 (ws.xsoh.etar)
PRODID:DAVx5/4.2.6-ose ical4j/3.2.5 (ws.xsoh.etar)
PRODID:DAVx5/4.3-ose ical4j/3.2.7 (ws.xsoh.etar)
PRODID:DAVx5/<IP_ADDRESS>-ose ical4j/3.2.5 (ws.xsoh.etar)
PRODID:DAVx5/3.3-ose ical4j/3.0.19 (ws.xsoh.etar)
PRODID:DAVx5/3.3.5-ose ical4j/3.0.20 (ws.xsoh.etar)
PRODID:-//swiss.com//Your Flight//EN
PRODID:icalendar-ruby
PRODID:DAVx5/3.3.8-ose ical4j/3.0.21 (ws.xsoh.etar)
PRODID:DAVx5/4.1.1-ose ical4j/3.1.2
PRODID:DAVx5/<IP_ADDRESS>-ose ical4j/3.0.19 (ws.xsoh.etar)
PRODID:DAVx5/4.2.2-ose ical4j/3.1.2 (ws.xsoh.etar)
PRODID:+//IDN bitfire.at//DAVx5/3.0-ose2 ical4j/2.2.6
PRODID:DAVx5/3.3.4-ose ical4j/3.0.20 (ws.xsoh.etar)
PRODID:Data::ICal 0.23
PRODID:-//Nextcloud calendar v1.7.1
PRODID:-//zoom.us//iCalendar Event//EN
PRODID:+//IDN bitfire.at//DAVx5/3.1-ose ical4j/3.0.18
PRODID:-//CERN//INDICO//EN
BEGIN:VEVENT

Interestingly, if I export the calendar to a .ics directly from Nextcloud it looks very different, with only 2 PRODID lines (but anyway again more than 1 and non-consecutive).

I see, I actually had exactly the same problem. This is something @WhyNotHugo might be interested as well.
Anyway, I made a fix for this issue. Please update to 2.8.3 pip install --upgrade calcure it should work now.

Thank you for the quick reaction! Unfortunately I can't use vdirsyncer+calcure because of https://github.com/pimutils/vdirsyncer/issues/818 at the moment -- I can give this a go if/when that gets fixed :)

Thanks for your work on this. Most of it works very well, but I ran into an issue with an ICS folder synced via vdirsyncer containing metadata:

vdirsyncer has the command metasync, which can sync calendar metadata, such as the color or display name. If you use the filesystem storage (i.e., a directory containing ICS files, "Vdir"), this metadata is stored in files such as color or displayname in that directory (see vdirsyncer docs here).
When calcure is configured to read ICS files from a directory, it also reads these metadata files, which results in an error: "[ERROR] Failed to parse ... (1:9) Expecting <ALPHADIGIT_MINUS_PLUS> : #0E61B9FF" (with #0E61B9FF the color of the calendar stored in the color file).
That seems to come from this code, which loads all files without any filtering. So either we could filter files there and (a) only add ICS files (which we determine either by extension or by file contents), or (b) exclude those specific known metadata files. Or we could use the color file to override color_ics_calendars, and perhaps similarly for other metadata files.

Hi @thezeroalpha , thank you for reporting!
I think we definitely should check (in the code you highlighted) that the file has .ics extension. That would be most straightforward fix.
At the moment, I am on vacation, so if someone could add a line, something like:
If filename.endswith(".ics"):
That would be very helpful!

Hi guys, we are testing improved support for ics files with icalendar library, thanks to contribution by @jose1711
Could you please install the test branch and confirm that it works for you as well as previous implementation?
pipx install git+https://github.com/anufrievroman/calcure@icalendar

This version is supposed to parse ics files much faster than before.

By a first look, it seems to work well and it is way much faster than before.

Thanks again for the app! I really like it.
I want to point out an issue I am having with one of my calendars. This calendar originates in Outlook, then I import it in Google. As with my other calendars, I sync it with vdirsyncer and its calendar events appear regularly on khal. When I try to import it in calcure, the calendar does not show up. The same if I just use the link provided by Outlook for ics files. Is there some kind of basic incompatibility between the ics libraries/calcure and Outlook ics files?

@euglevi is there anything mentioned in the info.log file? It's in the config folder. There's no inherent incompatibility, but sometimes they're lines 8n ics files that break things. Which version you are using?

I am using the git version with the new ics library, but this problem was already there with the previous library. The info.log file is empty. Just to give you an example of the ics file calcure did not read which was related to a today's event:
BEGIN:VCALENDAR
PRODID:-//Google Inc//Google Calendar 70.9054//EN
VERSION:2.0
CALSCALE:GREGORIAN
X-WR-CALNAME:Calendario
X-WR-TIMEZONE:UTC
BEGIN:VTIMEZONE
TZID:Europe/Amsterdam
X-LIC-LOCATION:Europe/Amsterdam
BEGIN:DAYLIGHT
TZOFFSETFROM:+0100
TZOFFSETTO:+0200
TZNAME:CEST
DTSTART:19700329T020000
RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU
END:DAYLIGHT
BEGIN:STANDARD
TZOFFSETFROM:+0200
TZOFFSETTO:+0100
TZNAME:CET
DTSTART:19701025T030000
RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU
END:STANDARD
END:VTIMEZONE
BEGIN:VEVENT
DTSTART;TZID=Europe/Amsterdam:20231123T123000
DTEND;TZID=Europe/Amsterdam:20231123T130000
DTSTAMP:20231111T090419Z
UID:040000008200E00074C5B7101A82E00800000000F0C6281F7406DA01000000000000000
 010000000CEE3ED476AC3E441B654F3E3E70F4A2E
CLASS:PUBLIC
CREATED:20231111T090418Z
DESCRIPTION:Dear All\,\n\nwe are happy to invite you to the Research Semina
 r “Learning it the hard way: Conflicts\, economic sanctions and military ai
 d” by Prof. Edoardo Grillo on date 23/11/2023 from 12:30 to 13:30 in room B
 Z E3.12.\n\nFor online participation\, please register in advance at the fo
 llowing link: https://events.teams.microsoft.com/event/639dbdbd-cbfc-4cf7-9
 413-19f54ce87d83@92513267-03e3-401a-80d4-c58ed6674e3b\n\nBest Regards\n\n\n
LAST-MODIFIED:20231111T090419Z
LOCATION:
SEQUENCE:2
STATUS:CONFIRMED
SUMMARY:Research Seminar “Learning it the hard way: Conflicts\, economic sa
 nctions and military aid” by Prof. Edoardo Grillo
TRANSP:OPAQUE
X-MICROSOFT-CDO-ALLDAYEVENT:FALSE
X-MICROSOFT-CDO-APPT-SEQUENCE:2
X-MICROSOFT-CDO-BUSYSTATUS:BUSY
X-MICROSOFT-CDO-IMPORTANCE:1
X-MICROSOFT-CDO-INSTTYPE:0
X-MICROSOFT-CDO-INTENDEDSTATUS:BUSY
X-MICROSOFT-DISALLOW-COUNTER:FALSE
X-MICROSOFT-DONOTFORWARDMEETING:FALSE
X-MICROSOFT-REQUESTEDATTENDANCEMODE:DEFAULT
END:VEVENT
END:VCALENDAR

See this line:
https://github.com/anufrievroman/calcure/blob/87ca8c547aa4d775248c3994d6e15d7acd222c29/calcure/data.py#L149
It is a limit for a number of characters of event name.
len('Research Seminar “Learning it the hard way: Conflicts, economic sanctions and military aid” by Prof. Edoardo Grillo ') = 116

If you lift that limit you should be able to see it in calcure. Don't know why the limitation is there though.

That's probably right! No idea why and when I put it there :D
It might be to prevent occasional paste of a buffer (with a huge number of characters including enter) that I experienced. Anyways, 100 is too small indeed, don't see a reason not to make it 1000. Thank you for investigating!

@euglevi I fixed it in the main branch, could you try this version on your files?
pipx install git+https://github.com/anufrievroman/calcure

I confirm that now it works perfectly!

There was still a little issue apparently, but not it seems to be fixed. I think there still might be a problem that event with time but without timezone might have issues, although I was not able to produce such event.

Okay, in the new version 3.0 the support of ics files is much improved, added time support, multiday support, and improved the speed, thanks to contributions from @jose1711
Please upgrade and test:
pipx upgrade calcure


Show notification in case of slow connectivity

Update:
Work Completed:

Moved the grid client object inside the try/catch block and now appropriate error messages are displayed when a network error happens.
Didn't add a separate notification since already a clear error message appears for the user and the nodes field doesn't infinitely load anymore as seen in #1374

Status:
Pr is ready for review.


System.Exception: WebSocket connection was closed

Hi, I can't get the bot running any commands. I got this when I open the .exe on windows:
Discord     Discord.Net v3.10.0 (API v10)
Gateway     Connecting
Gateway     System.Exception: WebSocket connection was closed
---> Discord.Net.WebSocketClosedException: The server sent close 4014: "Disallowed intent(s)."
at Discord.Net.WebSockets.DefaultWebSocketClient.RunAsync(CancellationToken cancelToken)
--- End of inner exception stack trace ---
at Discord.ConnectionManager.WaitAsync()
at Discord.WebSocket.DiscordSocketClient.OnConnectingAsync()
at Discord.ConnectionManager.ConnectAsync(CancellationTokenSource reconnectCancelToken)
at Discord.ConnectionManager.<>c__DisplayClass29_0.<b__0>d.MoveNext()
Gateway     Disconnecting
Gateway     Disconnected

#78


Demote client connection log lines to debug

I can't think of any cases where these log lines are useful, and they can be quite noisy.
r? @raylu
cc @nelhage @zenazn in case either of you have feelings

oh yes please

(although I thiiiink these were actually useful in solving that one einhorn infinite upgrade bug)

Yeah I was suspicious of something like that, but I think on balance they're still not useful enough to keep around.

==
(they're actually annoying when grepping for e.g. MASTER in process logs)

LGTM


for indoor dataset, Is the projection similar to universal RGBD

Questions about some details of the paper

Hi, Thanks for the great work.
Just a little confused，For indoor datasets, such as SUNRGBD, I think the process of projecting 2d feature into 3D voxel volumes is similar to the process of transforming RGBD images to point clouds and then voxelization，because both use  camera model to transform, is it correct?

Hi @Marigod98 ,
If I understand you correctly, you are right.
JFYI, we do not use depth channel and for Total3DUnderstanding benchmark we even do not use camera pose.

@filaPro Thanks very much for your answer!


bugfix(DEVOPS-10102): Replace marklogic repo with proxy repo

What is the current behavior? (You can also link to an open issue here)
https://jira.talendforge.org/browse/DEVOPS-10102
What is the new behavior?
Replace official marklogic repo by proxy repo setup by devops
Please check if the PR fulfills these requirements

[x] The commit message follows Talend standard
[ ] Tests for the changes have been added (for bug fixes / features)
[ ] Docs have been added / updated (for bug fixes / features) ?
[ ] The code coverage on new code >75%
[ ] The new code does not introduce new technical issues (sonar / eslint)

What kind of change does this PR introduce?

[ ] Bugfix
[ ] Feature
[ ] Code style update (formatting, local variables)
[ ] Refactoring (no functional changes, no api changes)
[x] Build / CI related changes
[ ] Other... Please describe:

Does this PR introduce a breaking change?

[ ] Yes
[x] No

If this PR contains a breaking change, please describe the impact and migration path for existing applications: ...
Other information:

Pull request test result: failure :x:


Move VSCode plugin to falcosecurity

Description of Request
Handoff of the VSCode plugin to falcosecurity.
Motivation
It might be in the best interest of the oss team to group all things falco related together.

We forget to add a reference for the current repo!
https://github.com/sysdiglabs/vscode-falco

Motivation
It might be in the best interest of the oss team to group all things falco related together.

Agree 💯

One question.
Would you two commit as maintainers of the project? If yes, I'll put you two in the OWNERS file.

Agree too :partying_face:

I don't have time to do a proper job as a maintainer so I prefer to step down on this :(

One question.
Would you two commit as maintainers of the project? If yes, I'll put you two in the OWNERS file.

Agree to maintain it, time allowing ;).

Any news?

Let's rock!

Issues go stale after 90d of inactivity.
Mark the issue as fresh with /remove-lifecycle stale.
Stale issues rot after an additional 30d of inactivity and eventually close.
If this issue is safe to close now please do so with /close.
Provide feedback via https://github.com/falcosecurity/community.
/lifecycle stale

Stale issues rot after 30d of inactivity.
Mark the issue as fresh with /remove-lifecycle rotten.
Rotten issues close after an additional 30d of inactivity.
If this issue is safe to close now please do so with /close.
Provide feedback via https://github.com/falcosecurity/community.
/lifecycle rotten

Issues go stale after 90d of inactivity.
Mark the issue as fresh with /remove-lifecycle stale.
Stale issues rot after an additional 30d of inactivity and eventually close.
If this issue is safe to close now please do so with /close.
Provide feedback via https://github.com/falcosecurity/community.
/lifecycle stale

@poiana: Closing this issue.

In response to this:

Rotten issues close after 30d of inactivity.
Reopen the issue with /reopen.
Mark the issue as fresh with /remove-lifecycle rotten.
Provide feedback via https://github.com/falcosecurity/community.
/close

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository.


HMR and karma watch

Is it possible to run HMR and watch karma at the same time?

It would be best to do it as two separate processes as both would need to log on the console.


removing duplicate desctructor

@katmsft any update or ETA on when this might be merged if it's all good?


Adds tag basic

Summary of changes: Add the tag basic element

Updated again to fix what I messed up in git. @cshinn @andresgalante please review :-)

@andresgalante one more time with feeling!

👏  great job sarah!

Looks good!

LGTM!


graph: replace timestamp mechanism by archive mechanism

This patch aims to fix histo issue introducing a
Revision field and supporting multiple updates
at the same time.
For elasticsearch two updates will be merged.
For orientdb the Revsion field will be used
to ensure to get the right version of an element.
This patch ensures that the timestamp are the ones
set by agents.


When saving the workflow as a PNG, a white area appears (bug).

When saving the workflow as a PNG, half of the image appears black and the other half white. This issue is caused by an update to the ComfyUI core, which is now incompatible with certain plugins.

Im having issues with this after the new GUI update as well.

Actually part of background is replace with transparent color
I don't know exactly when the bug appears but exists on version
Ver: 2731[83b01f960ac7c0f4e0c6da539c522c386472b15a] (2024-09-27)
Is like the part of image out of default frame is converted to transparent
Before ComfyUI Update

After ComfyUI Update

I'm facing the same issue. I did a fresh install using only the ComfyUI-Custom-Scripts and encountered no errors. However, after installing additional custom nodes and their dependencies, the problem returned. I still haven’t identified which dependency is causing it. Even after uninstalling all custom nodes, the issue persists. It seems to be related to the new UI and one of our custom node dependencies. I’ll update this post if I find the culprit.

Seems it has been fixed.
Issue can be closed

There is the same problem

+1

I'm facing the same issue too. @pythongosssss


ONVIF backchannel support

Hello,
I know it's not implemented yet but I want to understand a future interface and maybe implement it.
Currently, Session<Subscribe> has not had so many options.

Sounds great!
Looks like backchannel is defined in the ONVIF Streaming Specification, section 5.3.
Here are my first thoughts on the interface:

We probably want a knob in the retina::client::SessionOptions to say if the caller is interested in the backchannel, defaulting to no. If we always check for it, when the caller doesn't want backchannel and the server doesn't support it there'd be a useless round trip where the server says 551 Not Supported in response to the DESCRIBE.
We need a new accessor in retina::client::Stream so the caller can know if the stream is for receiving or sending.
retina::client::Session<Playing> would have to implement futures::sink::Sink as well as futures::sink::Stream so the caller can send things. I think most likely the item should be similar to a retina::client::Packet but not exactly the same. Packet has context information for a received packet; we probably want to just leave that out. I say Packet rather than PacketItem because I don't think we want/need a way for the caller to just directly send RTCP; most likely Retina should handle the RTCP sender reports/receiver reports itself.
The struct returned by retina::client::Session<Playing>::demuxed should also implement Sink for the higher-level API that handles the RTP- and codec-specific logic for "muxing" / "payloading" / "packetization". (We should probably also should rename the method/struct, as demuxed is now confusing.) The sink would take another item type similar to retina::codec::CodecItem.

How does that match what you're thinking?

Would you still be interested in reviewing a PR for this?

@cody-the-casual-dev yes I can try to review. I have no my doorbell cams anymore but still can check (I changed my job :) ).


1.19.3?

Do you plan on updating the mod, and if it already works would you be able to mark it on modrinth?

Do you plan on updating the mod, and if it already works would you be able to mark it on modrinth?

1.19.3 is planned; i'm rather busy recently but it will happen Soon™

Hey, any plans to get this updated to 1.19.4?

and by "week", of course i meant "two months"--versions through 1.20.1 are up on Modrinth


Memory Leak - Forgot to remove the modal attached to scope from ionicModal.fromTemplateUrl

Hey,
I was going through my project fixing up any memory leaks and I found one in your project.
$ionicModal.fromTemplateUrl('ionic-datepicker-modal.html', {
scope: scope,
animation: 'slide-in-up'
}).then(function (modal) {
scope.modal = modal;
});
The modal attached to scope needs to be cleaned up when the scope is destroyed.
scope.$on('$destroy', function() {
scope.modal.remove();
});
Just put this below that piece of code and it'll fix the memory leak.

Thanks for pointing it out @concertcoder

@rajeshwarpatlolla No problem, thanks for the code ;)

Please check the new release v1.0.0. This issue has been addressed.


Synthesis failed for IAMCredentials

Hello! Autosynth couldn't regenerate IAMCredentials. :broken_heart:
Here's the output from running synth.py:
2020-05-09 05:14:26 [INFO] logs will be written to: /tmpfs/src/github/synthtool/logs/googleapis/elixir-google-api
2020-05-09 05:14:26,326 autosynth > logs will be written to: /tmpfs/src/github/synthtool/logs/googleapis/elixir-google-api
Switched to branch 'autosynth-iamcredentials'
2020-05-09 05:14:27 [INFO] Running synthtool
2020-05-09 05:14:27,964 autosynth > Running synthtool
2020-05-09 05:14:27 [INFO] ['/tmpfs/src/github/synthtool/env/bin/python3', '-m', 'synthtool', '--metadata', 'clients/iam_credentials/synth.metadata', 'synth.py', '--']
2020-05-09 05:14:27,964 autosynth > ['/tmpfs/src/github/synthtool/env/bin/python3', '-m', 'synthtool', '--metadata', 'clients/iam_credentials/synth.metadata', 'synth.py', '--']
2020-05-09 05:14:28,174 synthtool > Executing /home/kbuilder/.cache/synthtool/elixir-google-api/synth.py.
On branch autosynth-iamcredentials
nothing to commit, working tree clean
2020-05-09 05:14:28,464 synthtool > Cloning https://github.com/googleapis/elixir-google-api.git.
2020-05-09 05:14:28,945 synthtool > Running: docker run --rm -v/home/kbuilder/.cache/synthtool/elixir-google-api:/workspace -v/var/run/docker.sock:/var/run/docker.sock -e USER_GROUP=1000:1000 -w /workspace gcr.io/cloud-devrel-public-resources/elixir19 scripts/generate_client.sh IAMCredentials
2020-05-09 05:14:32,556 synthtool > No files in sources /home/kbuilder/.cache/synthtool/elixir-google-api/clients were copied. Does the source contain files?
Traceback (most recent call last):
  File "/home/kbuilder/.pyenv/versions/3.6.9/lib/python3.6/runpy.py", line 193, in _run_module_as_main
    "__main__", mod_spec)
  File "/home/kbuilder/.pyenv/versions/3.6.9/lib/python3.6/runpy.py", line 85, in _run_code
    exec(code, run_globals)
  File "/tmpfs/src/github/synthtool/synthtool/__main__.py", line 102, in <module>
    main()
  File "/tmpfs/src/github/synthtool/env/lib/python3.6/site-packages/click/core.py", line 829, in __call__
    return self.main(*args, **kwargs)
  File "/tmpfs/src/github/synthtool/env/lib/python3.6/site-packages/click/core.py", line 782, in main
    rv = self.invoke(ctx)
  File "/tmpfs/src/github/synthtool/env/lib/python3.6/site-packages/click/core.py", line 1066, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "/tmpfs/src/github/synthtool/env/lib/python3.6/site-packages/click/core.py", line 610, in invoke
    return callback(*args, **kwargs)
  File "/tmpfs/src/github/synthtool/synthtool/__main__.py", line 94, in main
    spec.loader.exec_module(synth_module)  # type: ignore
  File "/tmpfs/src/github/synthtool/synthtool/metadata.py", line 180, in __exit__
    write(self.metadata_file_path)
  File "/tmpfs/src/github/synthtool/synthtool/metadata.py", line 112, in write
    with open(outfile, "w") as fh:
FileNotFoundError: [Errno 2] No such file or directory: 'clients/iam_credentials/synth.metadata'
2020-05-09 05:14:32 [ERROR] Synthesis failed
2020-05-09 05:14:32,586 autosynth > Synthesis failed
Traceback (most recent call last):
  File "/home/kbuilder/.pyenv/versions/3.6.9/lib/python3.6/runpy.py", line 193, in _run_module_as_main
    "__main__", mod_spec)
  File "/home/kbuilder/.pyenv/versions/3.6.9/lib/python3.6/runpy.py", line 85, in _run_code
    exec(code, run_globals)
  File "/tmpfs/src/github/synthtool/autosynth/synth.py", line 599, in <module>
    main()
  File "/tmpfs/src/github/synthtool/autosynth/synth.py", line 471, in main
    return _inner_main(temp_dir)
  File "/tmpfs/src/github/synthtool/autosynth/synth.py", line 549, in _inner_main
    ).synthesize(base_synth_log_path)
  File "/tmpfs/src/github/synthtool/autosynth/synthesizer.py", line 118, in synthesize
    synth_proc.check_returncode()  # Raise an exception.
  File "/home/kbuilder/.pyenv/versions/3.6.9/lib/python3.6/subprocess.py", line 389, in check_returncode
    self.stderr)
subprocess.CalledProcessError: Command '['/tmpfs/src/github/synthtool/env/bin/python3', '-m', 'synthtool', '--metadata', 'clients/iam_credentials/synth.metadata', 'synth.py', '--', 'IAMCredentials']' returned non-zero exit status 1.

Google internal developers can see the full log here.

Autosynth is still having trouble generating IAMCredentials. :sob:
Here's the output from running synth.py:
2020-05-11 05:12:55 [INFO] logs will be written to: /tmpfs/src/github/synthtool/logs/googleapis/elixir-google-api
2020-05-11 05:12:55,310 autosynth > logs will be written to: /tmpfs/src/github/synthtool/logs/googleapis/elixir-google-api
Switched to branch 'autosynth-iamcredentials'
2020-05-11 05:12:56 [INFO] Running synthtool
2020-05-11 05:12:56,919 autosynth > Running synthtool
2020-05-11 05:12:56 [INFO] ['/tmpfs/src/github/synthtool/env/bin/python3', '-m', 'synthtool', '--metadata', 'clients/iam_credentials/synth.metadata', 'synth.py', '--']
2020-05-11 05:12:56,920 autosynth > ['/tmpfs/src/github/synthtool/env/bin/python3', '-m', 'synthtool', '--metadata', 'clients/iam_credentials/synth.metadata', 'synth.py', '--']
2020-05-11 05:12:57,097 synthtool > Executing /home/kbuilder/.cache/synthtool/elixir-google-api/synth.py.
On branch autosynth-iamcredentials
nothing to commit, working tree clean
2020-05-11 05:12:57,333 synthtool > Cloning https://github.com/googleapis/elixir-google-api.git.
2020-05-11 05:12:57,762 synthtool > Running: docker run --rm -v/home/kbuilder/.cache/synthtool/elixir-google-api:/workspace -v/var/run/docker.sock:/var/run/docker.sock -e USER_GROUP=1000:1000 -w /workspace gcr.io/cloud-devrel-public-resources/elixir19 scripts/generate_client.sh IAMCredentials
2020-05-11 05:13:01,966 synthtool > No files in sources /home/kbuilder/.cache/synthtool/elixir-google-api/clients were copied. Does the source contain files?
Traceback (most recent call last):
  File "/home/kbuilder/.pyenv/versions/3.6.9/lib/python3.6/runpy.py", line 193, in _run_module_as_main
    "__main__", mod_spec)
  File "/home/kbuilder/.pyenv/versions/3.6.9/lib/python3.6/runpy.py", line 85, in _run_code
    exec(code, run_globals)
  File "/tmpfs/src/github/synthtool/synthtool/__main__.py", line 102, in <module>
    main()
  File "/tmpfs/src/github/synthtool/env/lib/python3.6/site-packages/click/core.py", line 829, in __call__
    return self.main(*args, **kwargs)
  File "/tmpfs/src/github/synthtool/env/lib/python3.6/site-packages/click/core.py", line 782, in main
    rv = self.invoke(ctx)
  File "/tmpfs/src/github/synthtool/env/lib/python3.6/site-packages/click/core.py", line 1066, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "/tmpfs/src/github/synthtool/env/lib/python3.6/site-packages/click/core.py", line 610, in invoke
    return callback(*args, **kwargs)
  File "/tmpfs/src/github/synthtool/synthtool/__main__.py", line 94, in main
    spec.loader.exec_module(synth_module)  # type: ignore
  File "/tmpfs/src/github/synthtool/synthtool/metadata.py", line 180, in __exit__
    write(self.metadata_file_path)
  File "/tmpfs/src/github/synthtool/synthtool/metadata.py", line 112, in write
    with open(outfile, "w") as fh:
FileNotFoundError: [Errno 2] No such file or directory: 'clients/iam_credentials/synth.metadata'
2020-05-11 05:13:01 [ERROR] Synthesis failed
2020-05-11 05:13:01,990 autosynth > Synthesis failed
Traceback (most recent call last):
  File "/home/kbuilder/.pyenv/versions/3.6.9/lib/python3.6/runpy.py", line 193, in _run_module_as_main
    "__main__", mod_spec)
  File "/home/kbuilder/.pyenv/versions/3.6.9/lib/python3.6/runpy.py", line 85, in _run_code
    exec(code, run_globals)
  File "/tmpfs/src/github/synthtool/autosynth/synth.py", line 599, in <module>
    main()
  File "/tmpfs/src/github/synthtool/autosynth/synth.py", line 471, in main
    return _inner_main(temp_dir)
  File "/tmpfs/src/github/synthtool/autosynth/synth.py", line 549, in _inner_main
    ).synthesize(base_synth_log_path)
  File "/tmpfs/src/github/synthtool/autosynth/synthesizer.py", line 118, in synthesize
    synth_proc.check_returncode()  # Raise an exception.
  File "/home/kbuilder/.pyenv/versions/3.6.9/lib/python3.6/subprocess.py", line 389, in check_returncode
    self.stderr)
subprocess.CalledProcessError: Command '['/tmpfs/src/github/synthtool/env/bin/python3', '-m', 'synthtool', '--metadata', 'clients/iam_credentials/synth.metadata', 'synth.py', '--', 'IAMCredentials']' returned non-zero exit status 1.

Google internal developers can see the full log here.

Autosynth is still having trouble generating IAMCredentials. :sob:
Here's the output from running synth.py:
2020-05-11 15:15:30 [INFO] logs will be written to: /tmpfs/src/github/synthtool/logs/googleapis/elixir-google-api
2020-05-11 15:15:30,281 autosynth > logs will be written to: /tmpfs/src/github/synthtool/logs/googleapis/elixir-google-api
Switched to branch 'autosynth-iamcredentials'
2020-05-11 15:15:31 [INFO] Running synthtool
2020-05-11 15:15:31,893 autosynth > Running synthtool
2020-05-11 15:15:31 [INFO] ['/tmpfs/src/github/synthtool/env/bin/python3', '-m', 'synthtool', '--metadata', 'clients/iam_credentials/synth.metadata', 'synth.py', '--']
2020-05-11 15:15:31,893 autosynth > ['/tmpfs/src/github/synthtool/env/bin/python3', '-m', 'synthtool', '--metadata', 'clients/iam_credentials/synth.metadata', 'synth.py', '--']
2020-05-11 15:15:32,106 synthtool > Executing /home/kbuilder/.cache/synthtool/elixir-google-api/synth.py.
On branch autosynth-iamcredentials
nothing to commit, working tree clean
2020-05-11 15:15:32,387 synthtool > Cloning https://github.com/googleapis/elixir-google-api.git.
2020-05-11 15:15:32,849 synthtool > Running: docker run --rm -v/home/kbuilder/.cache/synthtool/elixir-google-api:/workspace -v/var/run/docker.sock:/var/run/docker.sock -e USER_GROUP=1000:1000 -w /workspace gcr.io/cloud-devrel-public-resources/elixir19 scripts/generate_client.sh IAMCredentials
/workspace /workspace
The mix.lock file was generated with a newer version of Hex. Update your client by running `mix local.hex` to avoid losing data.
Resolving Hex dependencies...
Dependency resolution completed:
Unchanged:
  certifi 2.5.1
  google_api_discovery 0.7.0
  google_gax 0.3.2
  hackney 1.15.2
  idna 6.0.0
  jason 1.2.0
  metrics 1.0.1
  mime 1.3.1
  mimerl 1.2.0
  oauth2 0.9.4
  parse_trans 3.3.0
  poison 3.1.0
  ssl_verify_fun 1.1.5
  temp 0.4.7
  tesla 1.3.3
  unicode_util_compat 0.4.1
A new Hex version is available (0.20.1 < 0.20.5), please update with `mix local.hex`
All dependencies are up to date
The mix.lock file was generated with a newer version of Hex. Update your client by running `mix local.hex` to avoid losing data.

22:15:35.386 [info]  FETCHING: https://iamcredentials.googleapis.com/$discovery/GOOGLE_REST_SIMPLE_URI?version=v1

22:15:35.518 [info]  FOUND: https://iamcredentials.googleapis.com/$discovery/GOOGLE_REST_SIMPLE_URI?version=v1
Revision check: old=20200501, new=20200501, generating=true
Creating leading directories
Writing GenerateAccessTokenRequest to clients/iam_credentials/lib/google_api/iam_credentials/v1/model/generate_access_token_request.ex.
Writing GenerateAccessTokenResponse to clients/iam_credentials/lib/google_api/iam_credentials/v1/model/generate_access_token_response.ex.
Writing GenerateIdTokenRequest to clients/iam_credentials/lib/google_api/iam_credentials/v1/model/generate_id_token_request.ex.
Writing GenerateIdTokenResponse to clients/iam_credentials/lib/google_api/iam_credentials/v1/model/generate_id_token_response.ex.
Writing SignBlobRequest to clients/iam_credentials/lib/google_api/iam_credentials/v1/model/sign_blob_request.ex.
Writing SignBlobResponse to clients/iam_credentials/lib/google_api/iam_credentials/v1/model/sign_blob_response.ex.
Writing SignJwtRequest to clients/iam_credentials/lib/google_api/iam_credentials/v1/model/sign_jwt_request.ex.
Writing SignJwtResponse to clients/iam_credentials/lib/google_api/iam_credentials/v1/model/sign_jwt_response.ex.
Writing Projects to clients/iam_credentials/lib/google_api/iam_credentials/v1/api/projects.ex.
Writing connection.ex.
Writing metadata.ex.
Writing mix.exs
Writing README.md
Writing LICENSE
Writing .gitignore
Writing config/config.exs
Writing test/test_helper.exs
fixing file permissions
2020-05-11 15:15:36,437 synthtool > No files in sources /home/kbuilder/.cache/synthtool/elixir-google-api/clients were copied. Does the source contain files?
Traceback (most recent call last):
  File "/home/kbuilder/.pyenv/versions/3.6.9/lib/python3.6/runpy.py", line 193, in _run_module_as_main
    "__main__", mod_spec)
  File "/home/kbuilder/.pyenv/versions/3.6.9/lib/python3.6/runpy.py", line 85, in _run_code
    exec(code, run_globals)
  File "/tmpfs/src/github/synthtool/synthtool/__main__.py", line 102, in <module>
    main()
  File "/tmpfs/src/github/synthtool/env/lib/python3.6/site-packages/click/core.py", line 829, in __call__
    return self.main(*args, **kwargs)
  File "/tmpfs/src/github/synthtool/env/lib/python3.6/site-packages/click/core.py", line 782, in main
    rv = self.invoke(ctx)
  File "/tmpfs/src/github/synthtool/env/lib/python3.6/site-packages/click/core.py", line 1066, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "/tmpfs/src/github/synthtool/env/lib/python3.6/site-packages/click/core.py", line 610, in invoke
    return callback(*args, **kwargs)
  File "/tmpfs/src/github/synthtool/synthtool/__main__.py", line 94, in main
    spec.loader.exec_module(synth_module)  # type: ignore
  File "/tmpfs/src/github/synthtool/synthtool/metadata.py", line 180, in __exit__
    write(self.metadata_file_path)
  File "/tmpfs/src/github/synthtool/synthtool/metadata.py", line 112, in write
    with open(outfile, "w") as fh:
FileNotFoundError: [Errno 2] No such file or directory: 'clients/iam_credentials/synth.metadata'
2020-05-11 15:15:36 [ERROR] Synthesis failed
2020-05-11 15:15:36,471 autosynth > Synthesis failed
Traceback (most recent call last):
  File "/home/kbuilder/.pyenv/versions/3.6.9/lib/python3.6/runpy.py", line 193, in _run_module_as_main
    "__main__", mod_spec)
  File "/home/kbuilder/.pyenv/versions/3.6.9/lib/python3.6/runpy.py", line 85, in _run_code
    exec(code, run_globals)
  File "/tmpfs/src/github/synthtool/autosynth/synth.py", line 599, in <module>
    main()
  File "/tmpfs/src/github/synthtool/autosynth/synth.py", line 471, in main
    return _inner_main(temp_dir)
  File "/tmpfs/src/github/synthtool/autosynth/synth.py", line 549, in _inner_main
    ).synthesize(base_synth_log_path)
  File "/tmpfs/src/github/synthtool/autosynth/synthesizer.py", line 118, in synthesize
    synth_proc.check_returncode()  # Raise an exception.
  File "/home/kbuilder/.pyenv/versions/3.6.9/lib/python3.6/subprocess.py", line 389, in check_returncode
    self.stderr)
subprocess.CalledProcessError: Command '['/tmpfs/src/github/synthtool/env/bin/python3', '-m', 'synthtool', '--metadata', 'clients/iam_credentials/synth.metadata', 'synth.py', '--', 'IAMCredentials']' returned non-zero exit status 1.

Google internal developers can see the full log here.

Autosynth is still having trouble generating IAMCredentials. :sob:
Here's the output from running synth.py:
2020-05-12 05:15:00 [INFO] logs will be written to: /tmpfs/src/github/synthtool/logs/googleapis/elixir-google-api
2020-05-12 05:15:00,425 autosynth > logs will be written to: /tmpfs/src/github/synthtool/logs/googleapis/elixir-google-api
Switched to branch 'autosynth-iamcredentials'
2020-05-12 05:15:02 [INFO] Running synthtool
2020-05-12 05:15:02,334 autosynth > Running synthtool
2020-05-12 05:15:02 [INFO] ['/tmpfs/src/github/synthtool/env/bin/python3', '-m', 'synthtool', '--metadata', 'clients/iam_credentials/synth.metadata', 'synth.py', '--']
2020-05-12 05:15:02,334 autosynth > ['/tmpfs/src/github/synthtool/env/bin/python3', '-m', 'synthtool', '--metadata', 'clients/iam_credentials/synth.metadata', 'synth.py', '--']
2020-05-12 05:15:02,545 synthtool > Executing /home/kbuilder/.cache/synthtool/elixir-google-api/synth.py.
On branch autosynth-iamcredentials
nothing to commit, working tree clean
2020-05-12 05:15:02,623 synthtool > Cloning https://github.com/googleapis/elixir-google-api.git.
2020-05-12 05:15:03,122 synthtool > Running: docker run --rm -v/home/kbuilder/.cache/synthtool/elixir-google-api:/workspace -v/var/run/docker.sock:/var/run/docker.sock -e USER_GROUP=1000:1000 -w /workspace gcr.io/cloud-devrel-public-resources/elixir19 scripts/generate_client.sh IAMCredentials
/workspace /workspace
The mix.lock file was generated with a newer version of Hex. Update your client by running `mix local.hex` to avoid losing data.
Resolving Hex dependencies...
Dependency resolution completed:
Unchanged:
  certifi 2.5.1
  google_api_discovery 0.7.0
  google_gax 0.3.2
  hackney 1.15.2
  idna 6.0.0
  jason 1.2.0
  metrics 1.0.1
  mime 1.3.1
  mimerl 1.2.0
  oauth2 0.9.4
  parse_trans 3.3.0
  poison 3.1.0
  ssl_verify_fun 1.1.5
  temp 0.4.7
  tesla 1.3.3
  unicode_util_compat 0.4.1
A new Hex version is available (0.20.1 < 0.20.5), please update with `mix local.hex`
All dependencies are up to date
The mix.lock file was generated with a newer version of Hex. Update your client by running `mix local.hex` to avoid losing data.

12:15:05.597 [info]  FETCHING: https://iamcredentials.googleapis.com/$discovery/GOOGLE_REST_SIMPLE_URI?version=v1

12:15:05.723 [info]  FOUND: https://iamcredentials.googleapis.com/$discovery/GOOGLE_REST_SIMPLE_URI?version=v1
Revision check: old=20200501, new=20200501, generating=true
Creating leading directories
Writing GenerateAccessTokenRequest to clients/iam_credentials/lib/google_api/iam_credentials/v1/model/generate_access_token_request.ex.
Writing GenerateAccessTokenResponse to clients/iam_credentials/lib/google_api/iam_credentials/v1/model/generate_access_token_response.ex.
Writing GenerateIdTokenRequest to clients/iam_credentials/lib/google_api/iam_credentials/v1/model/generate_id_token_request.ex.
Writing GenerateIdTokenResponse to clients/iam_credentials/lib/google_api/iam_credentials/v1/model/generate_id_token_response.ex.
Writing SignBlobRequest to clients/iam_credentials/lib/google_api/iam_credentials/v1/model/sign_blob_request.ex.
Writing SignBlobResponse to clients/iam_credentials/lib/google_api/iam_credentials/v1/model/sign_blob_response.ex.
Writing SignJwtRequest to clients/iam_credentials/lib/google_api/iam_credentials/v1/model/sign_jwt_request.ex.
Writing SignJwtResponse to clients/iam_credentials/lib/google_api/iam_credentials/v1/model/sign_jwt_response.ex.
Writing Projects to clients/iam_credentials/lib/google_api/iam_credentials/v1/api/projects.ex.
Writing connection.ex.
Writing metadata.ex.
Writing mix.exs
Writing README.md
Writing LICENSE
Writing .gitignore
Writing config/config.exs
Writing test/test_helper.exs
fixing file permissions
2020-05-12 05:15:06,618 synthtool > No files in sources /home/kbuilder/.cache/synthtool/elixir-google-api/clients were copied. Does the source contain files?
Traceback (most recent call last):
  File "/home/kbuilder/.pyenv/versions/3.6.9/lib/python3.6/runpy.py", line 193, in _run_module_as_main
    "__main__", mod_spec)
  File "/home/kbuilder/.pyenv/versions/3.6.9/lib/python3.6/runpy.py", line 85, in _run_code
    exec(code, run_globals)
  File "/tmpfs/src/github/synthtool/synthtool/__main__.py", line 102, in <module>
    main()
  File "/tmpfs/src/github/synthtool/env/lib/python3.6/site-packages/click/core.py", line 829, in __call__
    return self.main(*args, **kwargs)
  File "/tmpfs/src/github/synthtool/env/lib/python3.6/site-packages/click/core.py", line 782, in main
    rv = self.invoke(ctx)
  File "/tmpfs/src/github/synthtool/env/lib/python3.6/site-packages/click/core.py", line 1066, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "/tmpfs/src/github/synthtool/env/lib/python3.6/site-packages/click/core.py", line 610, in invoke
    return callback(*args, **kwargs)
  File "/tmpfs/src/github/synthtool/synthtool/__main__.py", line 94, in main
    spec.loader.exec_module(synth_module)  # type: ignore
  File "/tmpfs/src/github/synthtool/synthtool/metadata.py", line 180, in __exit__
    write(self.metadata_file_path)
  File "/tmpfs/src/github/synthtool/synthtool/metadata.py", line 112, in write
    with open(outfile, "w") as fh:
FileNotFoundError: [Errno 2] No such file or directory: 'clients/iam_credentials/synth.metadata'
2020-05-12 05:15:06 [ERROR] Synthesis failed
2020-05-12 05:15:06,650 autosynth > Synthesis failed
Traceback (most recent call last):
  File "/home/kbuilder/.pyenv/versions/3.6.9/lib/python3.6/runpy.py", line 193, in _run_module_as_main
    "__main__", mod_spec)
  File "/home/kbuilder/.pyenv/versions/3.6.9/lib/python3.6/runpy.py", line 85, in _run_code
    exec(code, run_globals)
  File "/tmpfs/src/github/synthtool/autosynth/synth.py", line 599, in <module>
    main()
  File "/tmpfs/src/github/synthtool/autosynth/synth.py", line 471, in main
    return _inner_main(temp_dir)
  File "/tmpfs/src/github/synthtool/autosynth/synth.py", line 549, in _inner_main
    ).synthesize(base_synth_log_path)
  File "/tmpfs/src/github/synthtool/autosynth/synthesizer.py", line 118, in synthesize
    synth_proc.check_returncode()  # Raise an exception.
  File "/home/kbuilder/.pyenv/versions/3.6.9/lib/python3.6/subprocess.py", line 389, in check_returncode
    self.stderr)
subprocess.CalledProcessError: Command '['/tmpfs/src/github/synthtool/env/bin/python3', '-m', 'synthtool', '--metadata', 'clients/iam_credentials/synth.metadata', 'synth.py', '--', 'IAMCredentials']' returned non-zero exit status 1.

Google internal developers can see the full log here.

Autosynth passed, closing! :green_heart:


'No such process' error

if self._subprocess.returncode is None:
    self._subprocess.kill()

Unless I add above if-statement in line 728(pybam.py), I get the following error:

Exception OSError: (3, 'No such process') in <bound method read.del of <lib.pybam.pybam.read instance at 0x3b1fcb0>> ignored

I found above workaround on the following documentation page:
https://docs.python.org/2.7/library/subprocess.html#subprocess.Popen.poll
which says

A None value indicates that the process hasn’t terminated yet

I was using Python 2.7.5 with Mixed Parser Example pattern given in the readme file
--mahmut

Thank you for this fix mahmut, I will add your code to pybam immediately :)
I will also add the fix to lines 217 and 221 because in theory the same error could happen there if the user has a binary called pigz/gzip, but it for some reason immediately exits.


Embed VLC rather than floating window?

This project launches a new window for VLC.
Can we embed the VLC player inside another GUI toolkit, like GTK rather than spawning a new window?

Hi @erikherz. Thank you for your interest in the library. It should work if you're on Linux. I have to add another binding for setting the window for the player on Windows.
Here's a quick test I made using https://github.com/mattn/go-gtk:
package main

import (
	"log"

	vlc "github.com/adrg/libvlc-go/v3"
	"github.com/mattn/go-gtk/glib"
	"github.com/mattn/go-gtk/gtk"
)

func main() {
	// Initialize libVLC module.
	if err := vlc.Init("--quiet"); err != nil {
		log.Fatal(err)
	}
	defer vlc.Release()

	// Create GTK window.
	gtk.Init(nil)
	window := gtk.NewWindow(gtk.WINDOW_TOPLEVEL)
	window.SetPosition(gtk.WIN_POS_CENTER)
	window.SetTitle("GTK Go!")
	window.SetIconName("gtk-dialog-info")
	window.Connect("destroy", func(ctx *glib.CallbackContext) {
		gtk.MainQuit()
	}, "foo")

	window.SetSizeRequest(600, 600)
	window.ShowAll()

	// Create a new player.
	player, err := vlc.NewPlayer()
	if err != nil {
		log.Fatal(err)
	}
	defer func() {
		player.Stop()
		player.Release()
	}()

	media, err := player.LoadMediaFromPath("test.mp4")
	if err != nil {
		log.Fatal(err)
	}
	defer media.Release()

	// Set window for the player.
	player.SetXWindow(uint32(window.GetWindow().GetNativeWindowID()))
	if err = player.Play(); err != nil {
		log.Fatal(err)
	}

	gtk.Main()
}

Thank you. How can I attach the player object to a GTK widget? Ideally like so:
grid.Attach(player, 1, 1, 3, 1)
Can I map it to the GtkImage widget?

@erikherz Yes, the player can be attached to a GTK widget. I added a sample GTK player example which hopefully addresses your issue. In this case, I attached the player to a gtk.DrawingArea.
Let me know if the example helps:
https://github.com/adrg/libvlc-go/blob/master/v3/examples/gtk_player.go

@erikherz I added bindings to set the player window for Windows and macOS. Also updated the GTK player example. Can this issue be closed?

Thank you, Adrian-George. I am still having trouble getting VLC to compile against this on Windows.
I installed VLC on Windows as per your suggestion:
https://github.com/adrg/libvlc-go/wiki/Install-on-Windows
I did pull the VLC code from Git and then was able to set these variables:
$ export CGO_CFLAGS="-IC:\libvlc\include"
$ export CGO_LDFLAGS="-LC:\libvlc"

C:\GIT\libvlc-go\v3>set CGO_LDFLAGS=-LC:\libvlc

C:\GIT\libvlc-go\v3>set CGO_CFLAGS=-IC:\libvlc\include

C:\GIT\libvlc-go\v3>go build
# runtime/cgo
gcc_libinit_windows.c: In function 'x_cgo_sys_thread_create':
gcc_libinit_windows.c:57:12: error: implicit declaration of function '_beginthread' [-Werror=implicit-function-declaration]
   57 |  thandle = _beginthread(func, 0, arg);
      |            ^~~~~~~~~~~~
cc1: all warnings being treated as errors
go: failed to remove work dir: GetFileInformationByHandle C:\Users\vivoh\AppData\Local\Temp\2\go-build851553638\NUL: Incorrect function.

C:\GIT\libvlc-go\v3>

C:\GIT\libvlc-go\v3>which go
/cygdrive/c/Go/bin/go

C:\GIT\libvlc-go\v3>go version
go version go1.14 windows/amd64

C:\GIT\libvlc-go\v3>

@erikherz This does not seem related to libvlc. How did you install go? Did you build it from source? This seems like a problem with the C compiler. Can you do which gcc and gcc --version?
Also, it seems you are using cygwin, which might have installed an old version of gcc. The screenshots I took were made in the regular Windows cmd. Did you try building in that?
You could also try installing https://jmeubank.github.io/tdm-gcc.

Will do.
vivoh@windows-gtk-1 /GIT/libvlc-go/v3
$ which gcc
/usr/bin/gcc
vivoh@windows-gtk-1 /GIT/libvlc-go/v3
$ gcc --version
gcc (GCC) 9.2.0
Copyright (C) 2019 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

That's a pretty new version gcc. You could also try ignoring those warnings and see if that works, because they are treated as errors by default it seems.
set CGO_CFLAGS=-IC:\libvlc\include -D LIBSOLV_INTERNAL -Wno-error
set CGO_LDFLAGS=-LC:\libvlc
go build

Or to ignore all warnings:
set CGO_CFLAGS=-IC:\libvlc\include -D LIBSOLV_INTERNAL -w
set CGO_LDFLAGS=-LC:\libvlc
go build

Looks like I need to set up pkg-config?
C:\GIT\libvlc-go\v3\examples>set CGO_CFLAGS=-IC:\libvlc\include -D LIBSOLV_INTERNAL -Wno-error

C:\GIT\libvlc-go\v3\examples>set CGO_LDFLAGS=-LC:\libvlc

C:\GIT\libvlc-go\v3\examples>go build
# pkg-config --cflags  -- pango
pkg-config: exec: "pkg-config": executable file not found in %PATH%
# pkg-config --cflags  -- glib-2.0 gobject-2.0
pkg-config: exec: "pkg-config": executable file not found in %PATH%
# github.com/adrg/libvlc-go/v3
In file included from _cgo_export.c:4:
event_manager.go: In function 'eventAttach':
event_manager.go:11:55: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast]
event_manager.go: In function 'eventDetach':
event_manager.go:14:48: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast]
# github.com/adrg/libvlc-go/v3
..\event_manager.go: In function 'eventAttach':
..\event_manager.go:11:55: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast]
   11 |     return libvlc_event_attach(em, et, eventDispatch, (void*)userData);
      |                                                       ^
..\event_manager.go: In function 'eventDetach':
..\event_manager.go:14:48: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast]
   14 |     libvlc_event_detach(em, et, eventDispatch, (void*)userData);
      |                                                ^
# github.com/adrg/libvlc-go/v3
cgo-gcc-prolog: In function '_cgo_a07b0869c079_Cfunc_libvlc_media_is_parsed':
cgo-gcc-prolog:173:2: warning: 'libvlc_media_is_parsed' is deprecated [-Wdeprecated-declarations]
In file included from C:\libvlc\include/vlc/vlc.h:51,
                 from ..\media.go:4:
C:\libvlc\include/vlc/deprecated.h:249:4: note: declared here
  249 |    libvlc_media_is_parsed( libvlc_media_t *p_md );
      |    ^~~~~~~~~~~~~~~~~~~~~~
cgo-gcc-prolog: In function '_cgo_a07b0869c079_Cfunc_libvlc_media_parse':
cgo-gcc-prolog:226:2: warning: 'libvlc_media_parse' is deprecated [-Wdeprecated-declarations]
In file included from C:\libvlc\include/vlc/vlc.h:51,
                 from ..\media.go:4:
C:\libvlc\include/vlc/deprecated.h:209:1: note: declared here
  209 | libvlc_media_parse( libvlc_media_t *p_md );
      | ^~~~~~~~~~~~~~~~~~
cgo-gcc-prolog: In function '_cgo_a07b0869c079_Cfunc_libvlc_media_parse_async':
cgo-gcc-prolog:238:2: warning: 'libvlc_media_parse_async' is deprecated [-Wdeprecated-declarations]
In file included from C:\libvlc\include/vlc/vlc.h:51,
                 from ..\media.go:4:
C:\libvlc\include/vlc/deprecated.h:233:1: note: declared here
  233 | libvlc_media_parse_async( libvlc_media_t *p_md );
      | ^~~~~~~~~~~~~~~~~~~~~~~~

C:\GIT\libvlc-go\v3\examples>

Yes. It seems that's needed for GTK. See the Windows installation instructions on the go-gtk repository.
But from the output you attached that seems like a warning. Did it build the executable?

I don't see a binary. To be clear, I should now follow these here:
https://github.com/gotk3/gotk3/wiki/Installing-on-Windows

Yes, you most certainly need to install GTK. Try following the installation instructions on the link you mentioned. I'll try running the example on Windows as well.

I got an error in MSYS running the required pacman commands:
vivoh@windows-gtk-1 MSYS ~
$ pacman --noconfirm -Su
      1 [main] bash 491 child_copy: data read copy failed, 0x1004C4000..0x1004CCD40, done 24576, windows pid 1484, Win32 error 299
Segmentation fault

I reinstalled Go after setting the environment variable and now the pacman scripts are running ... I am optimistic. More soon ...

Installing GTK turns out to be a very tedious task. In any case, my advice is to try to get one of the examples mentioned in https://github.com/gotk3/gotk3/wiki/Installing-on-Windows running on Windows first.
The examples in my repository are using go-gtk (which uses GTK2). However, if you get an example from the gotk3 repository up and running, integrating libVLC should be pretty easy.

No luck
C:\GIT\gotk3>cd gtk

C:\GIT\gotk3\gtk>go build
# github.com/gotk3/gotk3/glib
cc1.exe: sorry, unimplemented: 64-bit mode not compiled in

C:\GIT\gotk3\gtk>

and
C:\GIT\libvlc-go\v3\examples>go get github.com/gotk3/gotk3/gtk
go: downloading github.com/gotk3/gotk3 v0.4.0
go: found github.com/gotk3/gotk3/gtk in github.com/gotk3/gotk3 v0.4.0
# github.com/gotk3/gotk3/glib
cc1.exe: sorry, unimplemented: 64-bit mode not compiled in

I'll update the examples to GTK3 and try and get them running on Windows and let you know.
Cross-compiling from Linux is also an alternative: https://github.com/gotk3/gotk3/wiki/Cross-Compiling.

Hi @erikherz. I adapted the player example to GTK3. You can find the example here:
https://github.com/adrg/libvlc-go/tree/master/v3/examples/gtk3_player
I also tested it on Windows and created a wiki page on how to build the GTK 3 examples:
https://github.com/adrg/libvlc-go/wiki/Build-GTK-3-examples

Thank you!


Fix pin violation in FutureGroup

Following up on #187, this problem still persists in FutureGroup itself. I see two options for resolving this and moving forward with a permanent resolution:

We keep the existing architecture for FutureGroup based on a slab structure, but replace it with a more efficient implementation such as the beton crate.
Change the internal architecture of FutureGroup to more closely match FuturesUnordered. I haven't fully paged in how that works yet, but we know it doesn't have the same issues we have, so that might be a lower-risk solution.

cc/ @conradludgate Given you've worked on futures-buffered, and probably know the FuturesUnordered internals better than I do, I'd be interested in your thoughts here.

The slab implementation in beton would still exhibit the same unsoundness that FutureGroup currently does. The core of the issue is that when you inevitably need to realloc the slab, it will move all items that were allocated - this will violate any Pin requirements. You can over come this by requiring F: Unpin, but that's quite limiting.
I'll try give a simplified overview of the internals of futures and futures-buffered and how they overcome this constraint.
futures::future::FuturesUnordered
This implementation uses an intrusive linked list construction. Each future spawned in the group is allocated in it's own arc, and linked into the ready list. When the future is polled and not ready, it is unlinked and linked into the idle list. The task doubles as it's own waker through ArcWake. When woken, the task unlinks itself from the idle list and links into the ready list. It then wakes the waker that is stored in the FuturesUnordered.
This implementation is not unlike how most executors work, although it's not the most efficient. Tokio, for instance, has an additional fixed length ring buffer that it keeps a batch of ready tasks in - since popping from a ring buffer is cheaper than removing from a cache-unfriendly linked list.
futures_buffered::FuturesUnordered
This implementation uses a "triangular array" to amortise some of the allocation cost and potentially allow for allocation re-use. (Similar properties as a Vec, except it is non-contiguous and never re-allocates, which preserves pin properties). This is also what the thread_local crate uses. Simply put, it's a Vec<Box<[T]>> where each subsequent box-slice is double the length of the slice before it:
[[1], [2, 3], [4, 5, 6, 7], [8, 9, 10, 11, 12, 13, 14, 15]]

Although, more accurately we use Vec<FuturesUnorderedBounded<T>> as there is some additionally metadata to store. Notably, we use a SlotMap construction for the box-slice to keep a free-list of slots that are available to insert into.
Because futures_buffered does not have a Arc<Task<F>> that it can use as a waker for each task, I created a novel concurrent data structure for the purpose - although a much simpler construction like your WakerVec works, just is less alloc efficient.
The data-structure that I dubbed the "arc slice" works by allocating an arc for each of the FuturesUnorderedBounded<T>. This arc looks something like
Arc<(Waker, mpsc::Sender<usize>, [0, 1, 2, 3, 4, 5, 6, 7])>

The waker for future 2 in the bounded group is a pointer to the number 2 in that arc. When wake is called, it derefs to read the number 2, then walks back 2 usize lengths to find the start of the arc allocation. It then pushes the number 2 into the mpsc channel and calls wake on the parent waker.
When polling the FuturesUnordered, we update the waker in the "arc slice", then receive the values from the corresponding mpsc::Receiver<usize> for the indexes to wake.
Recommendation
I would probably suggest starting somewhere in the middle - A triangular array is a simple construction - and paired with your WakerVec still allows some amount of allocation re-use without adding an overly complex unsafe data structure. The triangular slot-map construction should still support a generational key for removals like FuturesGroup has, although this is not something I've experimented with yet.


[turborepo] cache not invalidated after changing config

What version of Turborepo are you using?
1.8.3
What package manager are you using / does the bug impact?
pnpm
What operating system are you using?
Mac
Describe the Bug
When changing the eslint config in the shared eslint package, the lint script is still hitting the cache.
This is the output from the process of:

(Running lint script to fill the cache)
Check config - "turbo/no-undeclared-env-vars": "warn"
Run lint script again. Script is fully cached as expected.
Change config - "turbo/no-undeclared-env-vars": "off".
Run lint script again. Still fully cached. Whoops - we now have a false positive.

Expected Behavior
Step 5 above should not have hit the cache.
The eslint-config-custom is a dependency of the apps/web so changes to it should account to the apps inputs, no? I'm guessing the issue here is that we don't build the lint package?
Still, it's kinda weird since the package is symlinked in the node_modules, so the changes are recognized in the apps/web/node_modules:
https://user-images.githubusercontent.com/51714798/222290404-fdf98ec4-6ac2-4d12-97c3-0073612421a2.mp4
To Reproduce

Init a turborepo (I used pnpm create turbo and removed apps/docs and packages/ui to keep the repro minimal)
Run lint script: pnpm turbo lint to "heat up the cache"
Run it again, the script will now be cached.
Change some rule in the packages/eslint-config-custom/index.js file. This should invalidate the cache.
Run the lint script again - the script will continue to be cached even though we have changed a crucial input to the script.

Reproduction Repo
https://github.com/juliusmarminge/turbo-bad-lint-cache

I just tested this, and it is still happening with Turbo 1.8.8.

What is the expected config to tackle this scenarios

I'm experiencing the same issue with 1.9.3, and as a temporary fix I created a dummy task.
{
  "$schema": "https://turbo.build/schema.json",
  "pipeline": {
    "turbo-issues-4041": {}, // https://github.com/vercel/turbo/issues/4041
    "lint": {
      "dependsOn": ["^turbo-issues-4041"]
    }
  }
}

Hey @juliusmarminge, this is happening because a config with no dependsOn won't depend on workspace dependencies by default. This is very confusing and we're working on some config improvements to make this more clear.
The reason this isn't done by default is to allow more granular cache control per script (say you're lint task does not depend on your integration-utils workspace and shouldn't invalidate when that package changes).
To fix this you would either need to:
run with --filter=web... (use the trailing three dots to include workspace dependencies)

or -
add a dummy task (as suggested by @laat)

Going to close this one, and move over to https://github.com/vercel/turbo/issues/2855 for the discussion about the new config operator (current proposal is just ^)


[FeatureRequest] Redundant data selection/Data selection is not visualized

Problem Description
Currently the data selection works great. But the selected data is not visualized in the UI, and sometimes results in selecting redundant data when looking at a complicated flight log

Yeah that is a great idea, have been thinking about that as well. Let me see if I can hack something together.


Document updated attributes

Fixes https://github.com/istio/api/issues/520
Signed-off-by: Kuat Yessenov<EMAIL_ADDRESS>

Deploy preview for preliminary-istio failed.
Built with commit 4dd8d26173ee580eeb175848bbba040adf0dd146
https://app.netlify.com/sites/preliminary-istio/deploys/5b27eccf11b73b5e746b33ec

[APPROVALNOTIFIER] This PR is NOT APPROVED
This pull-request has been approved by: kyessenov
To fully approve this pull request, please assign additional approvers.
We suggest the following additional approver: linsun
Assign the PR to them by writing /assign @linsun in a comment when ready.
The full list of commands accepted by this bot can be found here.
The pull request process is described here

Needs approval from an approver in each of these files:

OWNERS

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

Looks good, thanks for doing this. I'll let Doug give the final lgtm.

[APPROVALNOTIFIER] This PR is NOT APPROVED
This pull-request has been approved by: kyessenov
To fully approve this pull request, please assign additional approvers.
We suggest the following additional approver: sdake
Assign the PR to them by writing /assign @sdake in a comment when ready.
The full list of commands accepted by this bot can be found here.
The pull request process is described here

Needs approval from an approver in each of these files:

content/OWNERS

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

Reviewers, if you are happy please type LGTM (I cannot merge).


Coveralls report not being used

As a result coverage has dropped below 100% and sadness for me since #212 was so hard.
See an example fail when trying to upload the coverage report to coveralls.io:
  File "/home/travis/build/google/oauth2client/.tox/coveralls/lib/python2.7/site-packages/nosegae.py", line 91, in configure
    import dev_appserver
ImportError: No module named dev_appserver

@jonparrott Do you know if /home/travis/.cache/google_appengine needs to be populated in each of the environments? i.e. why does gae work just fine but py27 fails on the coverage report.
Could we "fix" this with a simple cheat of moving the coverage report into gae from py27?

OK as can be seen in #560 this does fix the import issue and brings back the coveralls report.
As seen in the report https://coveralls.io/builds/7092809 we have 97.06% coverage in oauth2client.contrib.sqlalchemy and 99.37% in oauth2client.contrib.appengine`.
It looks like there's a branch mass in contrib.appengine in the 807-809, 806->807 range and some other missed in contrib.sqlalchemy around 150, 144->150, 146->148, 162->165.

Well the good news is we're not significantly below 100%.

Indeed. Any idea who the owners should be to get back to 100%?

I can probably handle it sometime in the next month.
On Wed, Jul 20, 2016, 8:01 PM Danny Hermes<EMAIL_ADDRESS>wrote:

Indeed. Any idea who the owners should be to get back to 100%?
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/google/oauth2client/issues/558#issuecomment-234143813,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AAPUcxq5WhhiYTF72GFYnPgTvMPKYRizks5qXuEMgaJpZM4JRKhl
.

One of those was me in #533.  I just wrote a test to get the appengine part covered.  Haven't looked at the sqlalchemy part yet.
I'll look at that after I finish working on my other PR.


MAINT: post 1.1.0 release

initialize files for 1.2.0dev on master
wheels for 1.1.0 are still building and will be uploaded to PyPI later today

this was only supposed to have the last commit here. I will reopen a new PR from master


the Flesh and Demon enchantment dmg stacks infinitely

as the title says, they stack infinitely and after a while it goes over in to the negatives doing 0 dmg, and its semi permeant, only way to reset it is to relog in the world

wrong mod, thats dlc, but it might be fixed by now also

wrong mod, thats dlc, but it might be fixed by now also


modified method used to get a pointer to the main window

The AppDelegate having a window property is defaulted when creating a new project, but certainly not required.  This adjusts how the pointer to the window is obtained preventing a crash for apps that don't have a window property on their AppDelegate.
Sample stack trace of crash:
-[AppDelegate window]: unrecognized selector sent to instance 0x14550cd10

#0	0x0000000181103f48 in objc_exception_throw ()
#1	0x0000000181a9c61c in -[NSObject(NSObject) doesNotRecognizeSelector:] ()
#2	0x0000000181a993e8 in ___forwarding___ ()
#3	0x000000018199d68c in _CF_forwarding_prep_0 ()
#4	0x0000000100369280 in -[BNCStrongMatchHelper presentSafariVCWithBranchKey:] at /Users/ahmed/Documents/git_repos/iOS-Deferred-Deep-Linking-SDK/Branch-SDK/Branch-SDK/BNCStrongMatchHelper.m:107
#5	0x0000000100368f10 in -[BNCStrongMatchHelper createStrongMatchWithBranchKey:] at /Users/ahmed/Documents/git_repos/iOS-Deferred-Deep-Linking-SDK/Branch-SDK/Branch-SDK/BNCStrongMatchHelper.m:66
#6	0x000000010034f180 in -[Branch registerInstallOrOpen:] at /Users/ahmed/Documents/git_repos/iOS-Deferred-Deep-Linking-SDK/Branch-SDK/Branch-SDK/Branch.m:1382
#7	0x0000000181a3afc4 in __CFNOTIFICATIONCENTER_IS_CALLING_OUT_TO_AN_OBSERVER__ ()
#8	0x0000000181a3a7e4 in _CFXRegistrationPost ()
#9	0x0000000181a3a564 in ___CFXNotificationPost_block_invoke ()
#10	0x0000000181a9fde4 in -[_CFXNotificationRegistrar find:object:observer:enumerator:] ()
#11	0x000000018197b0f4 in _CFXNotificationPost ()
#12	0x000000018236ad2c in -[NSNotificationCenter postNotificationName:object:userInfo:] ()
#13	0x0000000186810e20 in -[UIApplication _stopDeactivatingForReason:] ()
#14	0x0000000186a2ed20 in __62-[UIApplication _sceneSettingsPostLifecycleEventDiffInspector]_block_invoke1155 ()
#15	0x000000018303cb34 in __52-[FBSSettingsDiffInspector inspectDiff:withContext:]_block_invoke27 ()
#16	0x000000018241a018 in __NSIndexSetEnumerate ()
#17	0x0000000182fc7704 in -[BSSettingsDiff inspectChangesWithBlock:] ()
#18	0x0000000183037b84 in -[FBSSettingsDiff inspectOtherChangesWithBlock:] ()
#19	0x000000018303c90c in -[FBSSettingsDiffInspector inspectDiff:withContext:] ()
#20	0x0000000186a2f5b4 in __70-[UIApplication scene:didUpdateWithDiff:transitionContext:completion:]_block_invoke ()
#21	0x0000000186a2f210 in -[UIApplication scene:didUpdateWithDiff:transitionContext:completion:] ()
#22	0x000000018304b790 in -[FBSSerialQueue _performNext] ()
#23	0x000000018304bb10 in -[FBSSerialQueue _performNextFromRunLoopSource] ()
#24	0x0000000181a4cefc in __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ ()
#25	0x0000000181a4c990 in __CFRunLoopDoSources0 ()
#26	0x0000000181a4a690 in __CFRunLoopRun ()
#27	0x0000000181979680 in CFRunLoopRunSpecific ()
#28	0x0000000182e88088 in GSEventRunModal ()
#29	0x00000001867f0d90 in UIApplicationMain ()
#30	0x00000001002bc680 in main at /Users/joe/DevMango/master/Mango/main.m:15
#31	0x000000018151a8b8 in start ()

@aepryus thanks for the PR! will test it out and include it in next release if it passes our tests. Thanks again for your time and effort

@aepryus did you install through pods or you cloned the repo when you found the error?

Cloned the repo when I found the error.

thanks!

closing this because we submitted another PR for formatting reasons


Implement tab close button configuration.

Allows the user to enable/disable per-tab close buttons.
Addresses issue #10739.

Hi @jez9999, I'm your friendly neighborhood Microsoft Pull Request Bot (You can call me MSBOT). Thanks for your contribution!

In order for us to evaluate and accept your PR, we ask that you sign a contribution license agreement. It's all electronic and will take just minutes. I promise there's no faxing. https://cla.microsoft.com.

TTYL, MSBOT;

@jez9999, Thanks for signing the contribution license agreement so quickly! Actual humans will now validate the agreement and then evaluate the PR.
Thanks, MSBOT;

@jez9999 I propose a much simpler change where we simply display: none on the editor close action (see https://github.com/Microsoft/vscode/blob/master/src/vs/workbench/browser/parts/editor/media/tabstitle.css#L168).
I know that initially I thought we want to keep the dirty indicator but actually I noticed ST is also just removing the entire thing and I am fine with that.
Besides the CSS change I do not think anything else is needed?

Erm, who cares what Sublime Text is doing?  Do you always copy them?
The dirty indicator is a very useful thing to have and I strongly disagree with removing it.  What's wrong with my way of doing things?

While we're citing other editors, Visual Studio with the Productivity Power Tools allows you to remove the tab close buttons but keep the dirty indicator.

@jez9999 looking at other editors gives us a chance to predict what users might expect from such a feature. I just picked a random editor that seems to be quite popular in the target audience of developers we have. There are many more indicators throughout the UI that tell you an editor is dirty, it is not just limited to tabs.

@bpasero I don't think the fact that ST implements theirs in a lazy way is an indication that users will be "expecting" the lack of a dirty tab indicator.  And I've done the work for you here so it's not much of an argument to say that it is more complex - the work is done.

@jez9999 I agree with your points mostly but

the work is done

Is never true for a project that goes on unless we make you a team member and you keep maintaining this feature.
I should have a chance later to look more closely at the change.

Thanks for this PR but I decided to implement it differently (see https://github.com/Microsoft/vscode/commit/8185338229f6b14373cb2020fccd5d8f818e2c2d)

Correction: You decided to implement something different which nobody had asked for.


Mededaes a rengum

In the song Bechesiil a Urungulem er a Soam credited to Paulus Olmetelel is the line "Altang e ng di mededaes a rengum / e ngii di el  molebedebek er a / bechesill el uoi mengam a reng."  In the song Ng Olekeda Chomerort credited to Lalii Elbelau, 1947, is the line "ak mlo midii  a ngebard e mei me ng di mededaes a renguk."  In discussing possible translations of this with Felix Okabe and Ongerung Kambes Kesolei we came up with the following for "mededaes a renguk" : "my conscience is clear, nothing is bothering me, nothing is holding me back, I am not dwelling on anything."  Does that make sense?

Makes sense to me.
On Sat, Jun 25, 2022, 2:36 PM JimGeselbracht @.***>
wrote:

In the song Bechesiil a Urungulem er a Soam credited to Paulus Olmetelel
is the line "Altang e ng di mededaes a rengum / e ngii di el molebedebek er
a / bechesill el uoi mengam a reng." In the song Ng Olekeda Chomerort
credited to Lalii Elbelau, 1947, is the line "ak mlo midii a ngebard e mei
me ng di mededaes a renguk." In discussing possible translations of this
with Felix Okabe and Ongerung Kambes Kesolei we came up with the following
for "mededaes a renguk" : "my conscience is clear, nothing is bothering me,
nothing is holding me back, I am not dwelling on anything." Does that make
sense?
—
Reply to this email directly, view it on GitHub
https://github.com/tekinged/missing/issues/27, or unsubscribe
https://github.com/notifications/unsubscribe-auth/AXYSPXUX446ZQXDJIZGED73VQ5UWDANCNFSM5Z2Z364A
.
You are receiving this because you are subscribed to this thread.Message
ID: @.***>


Discord link?

Does using this create a discord link shortcut on the desktop? Had someone report this after using it.
Is there a link to an official discord anywhere for this software?

DXVK does not create Discord links.