From: "Алдан Муханов via ruby-core" Date: 2023-10-02T21:00:18+06:00 Subject: [ruby-core:114941] Re: [Ruby master Feature#18915] New error class: NotImplementedYetError or scope change for NotImplementedError --===============5688660769256682917== Content-Type: multipart/alternative; boundary="000000000000f82ab10606bd08bf" --000000000000f82ab10606bd08bf Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable =F0=9F=99=82=F0=9F=91=8D =D0=BF=D0=BD, 2 =D0=BE=D0=BA=D1=82. 2023=E2=80=AF=D0=B3. =D0=B2 19:12, zden= nis (Zach Dennis) via ruby-core < ruby-core@ml.ruby-lang.org>: > Issue #18915 has been updated by zdennis (Zach Dennis). > > File not-implemented-error-docs.patch added > > Whoops, last patch upload failed. Patch actually applied here. > > ---------------------------------------- > Feature #18915: New error class: NotImplementedYetError or scope change > for NotImplementedError > https://bugs.ruby-lang.org/issues/18915#change-104812 > > * Author: Quintasan (Micha=C5=82 Zaj=C4=85c) > * Status: Open > * Priority: Normal > ---------------------------------------- > # Abstract > > Introduce `NotImplementedYetError` exception that should be used in case > when the codepath has not been implemented by the developer for some reas= on > (maybe they're designing an abstract class or are designing some sort of > interface to reuse later on) OR extend the meaning of `NotImplementedErro= r` > to cover those usecases so we don't have to introduce another exception > > # Background > > `NotImplementedError` is supposed to be raised `if the underlying > operating system or Ruby runtime does not support them` ( > https://ruby-doc.org/core-3.1.2/NotImplementedError.html) > > However it appears that many people are misusing this exception by raisin= g > this in a superclass from which they later inherit from. I do realize tha= t > Ruby promotes duck-typing (the default RuboCop style guide has a cop for > this =E2=80=93 https://github.com/rubocop/ruby-style-guide#duck-typing). = However > I have seen this being discussed numerous times: > > * https://github.com/rubocop/ruby-style-guide/issues/458 > * http://chrisstump.online/2016/03/23/stop-abusing-notimplementederror/ > * > https://oleg0potapov.medium.com/ruby-notimplementederror-dont-use-it-dff1= fd7228e5 > * https://gitlab.com/gitlab-org/gitlab/-/issues/354314 (which I'm the > author of) > * https://github.com/rmosolgo/graphql-ruby/issues/2067 (here the author > actually confused it with Python's `NotImplementedError`) > * > https://stackoverflow.com/questions/13668068/how-to-signal-not-implemente= d-yet > > # Proposal > > Create `NotImplementedYetError` exception > > OR > > Allow raising `NotImplementedError` in cases other than OS or Ruby runtim= e > incompatibilities > > # Evaluation > > ### Add `NotImplementedYetError` > > I think a new exception is a better idea than changing the usage of an > existing one just because "everyone is using it". That said it would > require people to refactor their code which might prevent wider adoption = of > the new exception. > > ### Change scope of `NotImplementedError` > > This would require the least amount of changes possible (only a > documentation change) and I believe there would be no compatibility > problems whatsoever. > > ---Files-------------------------------- > not-implemented-error-docs.patch (0 Bytes) > not-implemented-error-docs.patch (1.57 KB) > > > -- > https://bugs.ruby-lang.org/ > ______________________________________________ > ruby-core mailing list -- ruby-core@ml.ruby-lang.org > To unsubscribe send an email to ruby-core-leave@ml.ruby-lang.org > ruby-core info -- > https://ml.ruby-lang.org/mailman3/postorius/lists/ruby-core.ml.ruby-lang.= org/ --000000000000f82ab10606bd08bf Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
=F0=9F=99=82=F0=9F=91=8D

=D0=BF=D0=BD, 2 =D0=BE=D0=BA= =D1=82. 2023=E2=80=AF=D0=B3. =D0=B2 19:12, zdennis (Zach Dennis) via ruby-c= ore <ruby-core@ml.ruby-lan= g.org>:
I= ssue #18915 has been updated by zdennis (Zach Dennis).

File not-implemented-error-docs.patch added

Whoops, last patch upload failed. Patch actually applied here.

----------------------------------------
Feature #18915: New error class: NotImplementedYetError or scope change for= NotImplementedError
https://bugs.ruby-lang.org/issues/18915#change-= 104812

* Author: Quintasan (Micha=C5=82 Zaj=C4=85c)
* Status: Open
* Priority: Normal
----------------------------------------
# Abstract

Introduce `NotImplementedYetError` exception that should be used in case wh= en the codepath has not been implemented by the developer for some reason (= maybe they're designing an abstract class or are designing some sort of= interface to reuse later on) OR extend the meaning of `NotImplementedError= ` to cover those usecases so we don't have to introduce another excepti= on

# Background

`NotImplementedError` is supposed to be raised `if the underlying operating= system or Ruby runtime does not support them` (https://ruby-doc.org/core-3.1.2/NotImplementedError.html)

However it appears that many people are misusing this exception by raising = this in a superclass from which they later inherit from. I do realize that = Ruby promotes duck-typing (the default RuboCop style guide has a cop for th= is =E2=80=93 https://github.com/rubocop/ruby-= style-guide#duck-typing). However I have seen this being discussed nume= rous times:

* https://github.com/rubocop/ruby-style-guide/= issues/458
* http://chrisstump.online/2016= /03/23/stop-abusing-notimplementederror/
* https://oleg0pota= pov.medium.com/ruby-notimplementederror-dont-use-it-dff1fd7228e5
* https://gitlab.com/gitlab-org/gitlab/-/issues/= 354314 (which I'm the author of)
* https://github.com/rmosolgo/graphql-ruby/issue= s/2067 (here the author actually confused it with Python's `NotImpl= ementedError`)
* https://stackoverflo= w.com/questions/13668068/how-to-signal-not-implemented-yet

# Proposal

Create `NotImplementedYetError` exception

OR

Allow raising `NotImplementedError` in cases other than OS or Ruby runtime = incompatibilities

# Evaluation

### Add `NotImplementedYetError`

I think a new exception is a better idea than changing the usage of an exis= ting one just because "everyone is using it". That said it would = require people to refactor their code which might prevent wider adoption of= the new exception.

### Change scope of `NotImplementedError`

This would require the least amount of changes possible (only a documentati= on change) and I believe there would be no compatibility problems whatsoeve= r.

---Files--------------------------------
not-implemented-error-docs.patch (0 Bytes)
not-implemented-error-docs.patch (1.57 KB)


--
https://bugs.ruby-lang.org/
=C2=A0______________________________________________
=C2=A0ruby-core mailing list -- ruby-core@ml.ruby-lang.org
=C2=A0To unsubscribe send an email to ruby-core-leave@ml.ruby-lang.org
=C2=A0ruby-core info -- https://ml.ruby-lang.org/mailman3/postorius/lists/ruby-core.ml.ruby-lang.o= rg/
--000000000000f82ab10606bd08bf-- --===============5688660769256682917== Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline ______________________________________________ ruby-core mailing list -- ruby-core@ml.ruby-lang.org To unsubscribe send an email to ruby-core-leave@ml.ruby-lang.org ruby-core info -- https://ml.ruby-lang.org/mailman3/postorius/lists/ruby-core.ml.ruby-lang.org/ --===============5688660769256682917==--